Updated Branches:
  refs/heads/master 2feda05ec -> 8d7d1cd56

Summary: KVM - undefine persistent VMs on stop

Detail: A previous patch fixed an issue where we are defining VMs to persist
locally on KVM hosts, which can cause issues if the agent isn't running and
libvirt decides to start the VM unbeknownst to cloudstack. The previous patch
stopped defining VMs as persistent. This patch adds compatibility for existing
cloudstack environments, removing the persistent definition on stop if needed.

BUG-ID: CLOUDSTACK-600
Signed-off-by: Marcus Sorensen <[email protected]> 1363194656 -0600


Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/8d7d1cd5
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/8d7d1cd5
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/8d7d1cd5

Branch: refs/heads/master
Commit: 8d7d1cd5623a6744a954fb35eeff8408d6381083
Parents: 2feda05
Author: Marcus Sorensen <[email protected]>
Authored: Wed Mar 13 11:10:56 2013 -0600
Committer: Marcus Sorensen <[email protected]>
Committed: Wed Mar 13 11:10:56 2013 -0600

----------------------------------------------------------------------
 .../kvm/resource/LibvirtComputingResource.java     |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/8d7d1cd5/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
----------------------------------------------------------------------
diff --git 
a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
 
b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
index 0a25bab..af4ae37 100755
--- 
a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
+++ 
b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
@@ -3937,9 +3937,13 @@ ServerResource {
         try {
             dm = conn.domainLookupByUUID(UUID.nameUUIDFromBytes(vmName
                     .getBytes()));
+            int persist = dm.isPersistent();
             if (force) {
                 if (dm.getInfo().state != 
DomainInfo.DomainState.VIR_DOMAIN_SHUTOFF) {
                     dm.destroy();
+                    if (persist == 1) {
+                        dm.undefine();
+                    }
                 }
             } else {
                 if (dm.getInfo().state == 
DomainInfo.DomainState.VIR_DOMAIN_SHUTOFF) {
@@ -3957,6 +3961,10 @@ ServerResource {
                     s_logger.warn("Timed out waiting for domain " + vmName
                             + " to shutdown gracefully");
                     return Script.ERR_TIMEOUT;
+                } else {
+                    if (persist == 1) {
+                        dm.undefine();
+                    }
                 }
             }
         } catch (LibvirtException e) {

Reply via email to