Re: [PATCH] Resend: Add a --remove flag to allow virt-image to install new imageswhen an existing one with the same name is defined

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





Cole Robinson wrote:
"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


I thought it did... the internal libvirt errors from the undefine/destroy are turned into a Rentime error which should be propegated up.

-- bk

_______________________________________________
et-mgmt-tools mailing list
et-mgmt-tools@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/et-mgmt-tools

[Index of Archives]     [Fedora Users]     [Fedora Legacy List]     [Fedora Maintainers]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux