in case vm doesn't exist on kvm host, getconnectionbyname will throw exception, 
need to catch the exception, and return the default connection


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

Branch: refs/heads/marvin_refactor
Commit: 435f4bceb27f7b7bc96ad1ee46f4688b9a971355
Parents: cdd459b
Author: Edison Su <sudi...@gmail.com>
Authored: Wed Apr 24 10:38:14 2013 -0700
Committer: Edison Su <sudi...@gmail.com>
Committed: Wed Apr 24 10:39:07 2013 -0700

----------------------------------------------------------------------
 .../hypervisor/kvm/resource/LibvirtConnection.java |   14 ++++++++++----
 1 files changed, 10 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/435f4bce/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtConnection.java
----------------------------------------------------------------------
diff --git 
a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtConnection.java
 
b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtConnection.java
index 2ad1616..2fc5425 100644
--- 
a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtConnection.java
+++ 
b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtConnection.java
@@ -61,13 +61,19 @@ public class LibvirtConnection {
     static public Connect getConnectionByVmName(String vmName) throws 
LibvirtException {
         HypervisorType[] hypervisors = new HypervisorType[] 
{HypervisorType.KVM, Hypervisor.HypervisorType.LXC};
 
+        
         for (HypervisorType hypervisor : hypervisors) {
-          Connect conn = 
LibvirtConnection.getConnectionByType(hypervisor.toString());
-          if 
(conn.domainLookupByUUID(UUID.nameUUIDFromBytes(vmName.getBytes())) != null) {
-             return conn;
-          }
+            try {
+                Connect conn = 
LibvirtConnection.getConnectionByType(hypervisor.toString());
+                if 
(conn.domainLookupByUUID(UUID.nameUUIDFromBytes(vmName.getBytes())) != null) {
+                    return conn;
+                }
+            } catch (Exception e) {
+               s_logger.debug("can't find connection: " + 
hypervisor.toString() + ", for vm: " + vmName + ", continue");
+            }
         }
 
+        s_logger.debug("can't find which hypervisor the vm used , then use the 
default hypervisor");
         // return the default connection
         return getConnection();
     }

Reply via email to