"Bryan M. Kearney <bkearney@xxxxxxxxxx>"@redhat.com wrote: > # HG changeset patch > # User "Bryan M. Kearney <bkearney@xxxxxxxxxx>" > # Date 1215006150 14400 > # Node ID cada7b0a146fb7b4c187a9043ac2a33d2350268b > # Parent 5d9cf6c2662494d21d84fbafbc0b7980096b1998 > Add a --remove flag to allow virt-image to install new images when an existing one with the same name is defined > > diff -r 5d9cf6c26624 -r cada7b0a146f virt-image > --- a/virt-image Wed Jul 02 10:50:05 2008 +0100 > +++ b/virt-image Wed Jul 02 09:42:30 2008 -0400 > @@ -142,7 +142,10 @@ def parse_args(): > help=_("The zero-based index of the boot record to use")) > parser.add_option("", "--force", action="store_true", dest="force", > help=_("Do not prompt for input. Answers yes where applicable, terminates for all other prompts"), > - default=False) > + default=False) > + parser.add_option("", "--replace",action="store_true", dest="replace", > + help=_("Overwrite, or destroy, an existing image with the same name"), > + default=False) > > (options,args) = parser.parse_args() > if len(args) < 1: > @@ -211,7 +214,7 @@ def main(): > try: > print _("\n\nCreating guest %s...") % guest.name > > - dom = guest.start_install(None, progresscb) > + dom = guest.start_install(None, progresscb, options.replace) > if dom is None: > print _("Guest creation failed") > sys.exit(1) > diff -r 5d9cf6c26624 -r cada7b0a146f virtinst/Guest.py > --- a/virtinst/Guest.py Wed Jul 02 10:50:05 2008 +0100 > +++ b/virtinst/Guest.py Wed Jul 02 09:42:30 2008 -0400 > @@ -914,7 +914,7 @@ class Guest(object): > "action": action } > > > - def start_install(self, consolecb = None, meter = None): > + def start_install(self, consolecb = None, meter = None, removeOld = False): > """Do the startup of the guest installation.""" > self.validate_parms() > > @@ -924,7 +924,7 @@ class Guest(object): > > self._prepare_install(meter) > try: > - return self._do_install(consolecb, meter) > + return self._do_install(consolecb, meter, removeOld) > finally: > self._installer.cleanup() > > @@ -932,10 +932,22 @@ class Guest(object): > self._install_disks = self.disks[:] > self._install_nics = self.nics[:] > > - def _do_install(self, consolecb, meter): > + def _do_install(self, consolecb, meter ,removeOld = False): > try: > - if self.conn.lookupByName(self.name) is not None: > - raise RuntimeError, _("Domain named %s already exists!") %(self.name,) > + vm = self.conn.lookupByName(self.name) > + if removeOld: > + if vm is not None: > + if vm.ID() != -1: > + logging.info("Destroying image %s" %(self.name)) > + vm.destroy() > + try: > + logging.info("Removing old definition for image %s" %(self.name)) > + vm.undefine() > + except libvirt.libvirtError, e: > + raise RuntimeError, _("Could not remove old vm '%s': %s") %(self.name, str(e)) > + else: > + if vm is not None: > + raise RuntimeError, _("Domain named %s already exists!") %(self.name,) > except libvirt.libvirtError: > pass > Hi, I responded to your initial posting yesterday, but forgot to cc you so maybe you missed it. Most of it is still relevant: https://www.redhat.com/archives/et-mgmt-tools/2008-July/msg00047.html If you address that issue I think the patch will be fine to commit. Thanks, Cole _______________________________________________ et-mgmt-tools mailing list et-mgmt-tools@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/et-mgmt-tools