Blob Blame Raw
diff -rup virt-manager-0.8.4/src/virtManager/create.py new/src/virtManager/create.py
--- virt-manager-0.8.4/src/virtManager/create.py	2010-05-27 15:46:28.064880000 -0400
+++ new/src/virtManager/create.py	2010-05-27 15:47:11.751259000 -0400
@@ -1603,10 +1603,16 @@ class vmmCreate(gobject.GObject):
                     # out handler, removing the virtinst_guest which
                     # will force one final restart.
                     virtinst_guest.continue_install()
+
                     util.connect_opt_out(vm, "status-changed",
                                          self.check_install_status, None)
                     return True
 
+            if vm.get_install_abort():
+                logging.debug("User manually shutdown VM, not restarting "
+                              "guest after install.")
+                return True
+
             logging.debug("Install should be completed, starting VM.")
             vm.startup()
         except Exception, e:
diff -rup virt-manager-0.8.4/src/virtManager/domain.py new/src/virtManager/domain.py
--- virt-manager-0.8.4/src/virtManager/domain.py	2010-05-27 15:46:28.008912000 -0400
+++ new/src/virtManager/domain.py	2010-05-27 15:47:48.539183000 -0400
@@ -75,6 +75,7 @@ class vmmDomainBase(vmmLibvirtObject):
         self._backend = backend
         self.uuid = uuid
 
+        self._install_abort = False
         self._startup_vcpus = None
 
         self._network_traffic = None
@@ -120,6 +121,13 @@ class vmmDomainBase(vmmLibvirtObject):
     def get_autostart(self):
         raise NotImplementedError()
 
+    # If manual shutdown or destroy specified, make sure we don't continue
+    # install process
+    def set_install_abort(self, val):
+        self._install_abort = bool(val)
+    def get_install_abort(self):
+        return bool(self._install_abort)
+
     # Device/XML altering API
     def set_autostart(self, val):
         raise NotImplementedError()
@@ -1274,11 +1282,13 @@ class vmmDomain(vmmDomainBase):
                                                     reboot_listener, self)
 
     def shutdown(self):
+        self.set_install_abort(True)
         self._unregister_reboot_listener()
         self._backend.shutdown()
         self._update_status()
 
     def reboot(self):
+        self.set_install_abort(True)
         self._backend.reboot(0)
         self._update_status()
 
@@ -1298,6 +1308,7 @@ class vmmDomain(vmmDomainBase):
         self._update_status()
 
     def save(self, filename, background=True):
+        self.set_install_abort(True)
         if background:
             conn = util.dup_conn(self.config, self.connection)
             vm = conn.lookupByID(self.get_id())
@@ -1308,6 +1319,7 @@ class vmmDomain(vmmDomainBase):
         self._update_status()
 
     def destroy(self):
+        self.set_install_abort(True)
         self._unregister_reboot_listener()
         self._backend.destroy()
         self._update_status()