You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by hu...@apache.org on 2013/07/01 13:49:03 UTC

[1/3] git commit: updated refs/heads/4.1.1-sbp to 45b691a

Updated Branches:
  refs/heads/4.1.1-sbp [created] 45b691a6c


CLOUDSTACK-2601 : xen.heartbeat.interval doesn't change the parameter passed to xenheartbeat.sh. Made changes to read the parameter from config and to pass it to the resource.

Signed-off-by: Devdeep Singh <de...@gmail.com>

Conflicts:
	plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/discoverer/XcpServerDiscoverer.java
	server/src/com/cloud/resource/DiscovererBase.java


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

Branch: refs/heads/4.1.1-sbp
Commit: 8f709813615e77d082653cae58e0085c12a28895
Parents: c1bdaf4
Author: Devdeep Singh <de...@gmail.com>
Authored: Tue May 21 13:32:09 2013 +0530
Committer: Hugo Trippaers <ht...@schubergphilis.com>
Committed: Mon Jul 1 10:45:45 2013 +0200

----------------------------------------------------------------------
 .../com/cloud/hypervisor/xen/discoverer/XcpServerDiscoverer.java    | 1 +
 server/src/com/cloud/resource/DiscovererBase.java                   | 1 +
 2 files changed, 2 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/8f709813/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/discoverer/XcpServerDiscoverer.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/discoverer/XcpServerDiscoverer.java b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/discoverer/XcpServerDiscoverer.java
index 9417d57..e9d118b 100755
--- a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/discoverer/XcpServerDiscoverer.java
+++ b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/discoverer/XcpServerDiscoverer.java
@@ -314,6 +314,7 @@ public class XcpServerDiscoverer extends DiscovererBase implements Discoverer, L
                 params.put("wait", Integer.toString(_wait));
                 details.put("wait", Integer.toString(_wait));
                 params.put("migratewait", _configDao.getValue(Config.MigrateWait.toString()));
+                params.put(Config.XenHeartBeatInterval.toString().toLowerCase(), _configDao.getValue(Config.XenHeartBeatInterval.toString()));
                 params.put(Config.InstanceName.toString().toLowerCase(), _instance);
                 details.put(Config.InstanceName.toString().toLowerCase(), _instance);
                 try {

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/8f709813/server/src/com/cloud/resource/DiscovererBase.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/resource/DiscovererBase.java b/server/src/com/cloud/resource/DiscovererBase.java
index 940608c..8a586f4 100644
--- a/server/src/com/cloud/resource/DiscovererBase.java
+++ b/server/src/com/cloud/resource/DiscovererBase.java
@@ -128,6 +128,7 @@ public abstract class DiscovererBase extends AdapterBase implements Discoverer {
         params.put("secondary.storage.vm", "false");
         params.put("max.template.iso.size", _configDao.getValue(Config.MaxTemplateAndIsoSize.toString()));
         params.put("migratewait", _configDao.getValue(Config.MigrateWait.toString()));
+        params.put(Config.XenHeartBeatInterval.toString().toLowerCase(), _configDao.getValue(Config.XenHeartBeatInterval.toString()));
         return params;
 
     }


[2/3] git commit: updated refs/heads/4.1.1-sbp to 45b691a

Posted by hu...@apache.org.
Improve tracelogging and exception handling in CitrixResourceBase.

Custom fix for SBP

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

Branch: refs/heads/4.1.1-sbp
Commit: 5702b9b6fd85c43d148e57a2a0fcbc552728d93a
Parents: 8f70981
Author: Hugo Trippaers <ht...@schubergphilis.com>
Authored: Mon Jul 1 13:47:38 2013 +0200
Committer: Hugo Trippaers <ht...@schubergphilis.com>
Committed: Mon Jul 1 13:47:38 2013 +0200

----------------------------------------------------------------------
 .../xen/resource/CitrixResourceBase.java        | 162 +++++++++++++------
 1 file changed, 110 insertions(+), 52 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5702b9b6/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
index 2a0b6d2..f0ca691 100644
--- a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
+++ b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
@@ -680,8 +680,12 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
                 _host.vswitchNetwork = vswitchNw;
             }
             return _host.vswitchNetwork;
-        } catch (Exception e) {
-            e.printStackTrace();
+        } catch (BadServerResponse e) {
+            s_logger.error("Failure in setupvSwitchNetwork", e);
+        } catch (XenAPIException e) {
+            s_logger.error("Failure in setupvSwitchNetwork", e);
+        } catch (XmlRpcException e) {
+            s_logger.error("Failure in setupvSwitchNetwork", e);
         }
 
         return null;
@@ -2493,14 +2497,11 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
                 try {
                     host_uuid = host.getUuid(conn);
                 } catch (BadServerResponse e) {
-                    // TODO Auto-generated catch block
-                    e.printStackTrace();
+                    s_logger.error("Failure when calling getUuid on host", e);
                 } catch (XenAPIException e) {
-                    // TODO Auto-generated catch block
-                    e.printStackTrace();
+                    s_logger.error("Failure when calling getUuid on host", e);
                 } catch (XmlRpcException e) {
-                    // TODO Auto-generated catch block
-                    e.printStackTrace();
+                    s_logger.error("Failure when calling getUuid on host", e);
                 }
                 vmStates.put(record.nameLabel, new Pair<String, State>(host_uuid, state));
             }
@@ -2585,7 +2586,13 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
             s_logger.debug("4. The VM " +  vm.getName() + " is in Migrating state");
 
             return new PrepareForMigrationAnswer(cmd);
-        } catch (Exception e) {
+        } catch (BadServerResponse e) {
+            s_logger.warn("Catch Exception " + e.getClass().getName() + " prepare for migration failed due to " + e.toString(), e);
+            return new PrepareForMigrationAnswer(cmd, e);
+        } catch (XenAPIException e) {
+            s_logger.warn("Catch Exception " + e.getClass().getName() + " prepare for migration failed due to " + e.toString(), e);
+            return new PrepareForMigrationAnswer(cmd, e);
+        } catch (XmlRpcException e) {
             s_logger.warn("Catch Exception " + e.getClass().getName() + " prepare for migration failed due to " + e.toString(), e);
             return new PrepareForMigrationAnswer(cmd, e);
         }
@@ -2677,9 +2684,11 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
                 try {
                     vdi.destroy(conn);
                 } catch (Exception e) {
+                    s_logger.warn("Ignoring exception in vdi.detroy", e);
                 }
             }
         } catch (Exception e){
+            s_logger.warn("Ignoring exception in vdi.detroy", e);
         }
     }
 
@@ -2738,14 +2747,27 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
             poolsr.scan(conn);
             try{
                 Thread.sleep(5000);
-            } catch (Exception e) {
+            } catch (InterruptedException e) {
             }
             return new PrimaryStorageDownloadAnswer(snapshotvdi.getUuid(conn), phySize);
-        } catch (Exception e) {
+        } catch (BadServerResponse e) {
             String msg = "Catch Exception " + e.getClass().getName() + " on host:" + _host.uuid + " for template: "
-                    + tmplturl + " due to " + e.toString();
+                    + tmplturl;
             s_logger.warn(msg, e);
             return new PrimaryStorageDownloadAnswer(msg);
+        } catch (XenAPIException e) {
+            String msg = "Catch Exception " + e.getClass().getName() + " on host:" + _host.uuid + " for template: "
+                    + tmplturl;
+            s_logger.warn(msg, e);
+            return new PrimaryStorageDownloadAnswer(msg);
+        } catch (XmlRpcException e) {
+            String msg = "Catch Exception " + e.getClass().getName() + " on host:" + _host.uuid + " for template: "
+                    + tmplturl;
+            s_logger.warn(msg, e);
+            return new PrimaryStorageDownloadAnswer(msg);
+        } catch (URISyntaxException e1) {
+            s_logger.error("Failed to parse template uri: " + tmplturl, e1);
+            return new PrimaryStorageDownloadAnswer("Failed to parse template uri : " + e1.getMessage());
         }
     }
 
@@ -2882,7 +2904,15 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
                 state = State.Stopping;
             }
             return new MigrateAnswer(cmd, true, "migration succeeded", null);
-        } catch (Exception e) {
+        } catch (BadServerResponse e) {
+            String msg = "Catch Exception " + e.getClass().getName() + ": Migration failed due to " + e.toString();
+            s_logger.warn(msg, e);
+            return new MigrateAnswer(cmd, false, msg, null);
+        } catch (XenAPIException e) {
+            String msg = "Catch Exception " + e.getClass().getName() + ": Migration failed due to " + e.toString();
+            s_logger.warn(msg, e);
+            return new MigrateAnswer(cmd, false, msg, null);
+        } catch (XmlRpcException e) {
             String msg = "Catch Exception " + e.getClass().getName() + ": Migration failed due to " + e.toString();
             s_logger.warn(msg, e);
             return new MigrateAnswer(cmd, false, msg, null);
@@ -2957,7 +2987,12 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
             for ( VM vm : vms ) {
                 destroyPatchVbd(conn, vm.getNameLabel(conn));
             }
-        } catch (Exception e) {
+        } catch (BadServerResponse e) {
+            s_logger.warn("Ignoring exception during execution of ReadyCommand", e);
+        } catch (XenAPIException e) {
+            s_logger.warn("Ignoring exception during execution of ReadyCommand", e);
+        } catch (XmlRpcException e) {
+            s_logger.warn("Ignoring exception during execution of ReadyCommand", e);
         }
         try {
             boolean result = cleanupHaltedVms(conn);
@@ -3057,11 +3092,11 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
             try {
                 vms = VM.getByNameLabel(conn, cmd.getVmName());
             } catch (XenAPIException e0) {
-                s_logger.debug("getByNameLabel failed " + e0.toString());
+                s_logger.error("getByNameLabel failed " + e0.toString(), e0);
                 return new RebootAnswer(cmd, "getByNameLabel failed " + e0.toString(), false);
-            } catch (Exception e0) {
-                s_logger.debug("getByNameLabel failed " + e0.getMessage());
-                return new RebootAnswer(cmd, "getByNameLabel failed", false);
+            } catch (XmlRpcException e) {
+                s_logger.error("getByNameLabel failed " + e.toString(), e);
+                return new RebootAnswer(cmd, "getByNameLabel failed " + e.toString(), false);
             }
             for (VM vm : vms) {
                 try {
@@ -3153,8 +3188,16 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
 
     private void waitForTask(Connection c, Task task, long pollInterval, long timeout) throws XenAPIException, XmlRpcException {
         long beginTime = System.currentTimeMillis();
+        if (s_logger.isTraceEnabled()) {
+            s_logger.trace("Task " + task.getNameLabel(c) + " (" + task.getUuid(c) + ") sent to " + c.getSessionReference()
+                    + " is pending completion with a " + timeout + "ms timeout");
+        }
         while (task.getStatus(c) == Types.TaskStatusType.PENDING) {
             try {
+                if (s_logger.isTraceEnabled()) {
+                    s_logger.trace("Task " + task.getNameLabel(c) + " (" + task.getUuid(c) + ") is pending, sleeping for "
+                            + pollInterval + "ms");
+                }
                 Thread.sleep(pollInterval);
             } catch (InterruptedException e) {
             }
@@ -3169,6 +3212,9 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
 
     private void checkForSuccess(Connection c, Task task) throws XenAPIException, XmlRpcException {
         if (task.getStatus(c) == Types.TaskStatusType.SUCCESS) {
+            if (s_logger.isTraceEnabled()) {
+                s_logger.trace("Task " + task.getNameLabel(c) + " (" + task.getUuid(c) + ") completed");
+            }
             return;
         } else {
             String msg = "Task failed! Task record: " + task.getRecord(c);
@@ -3178,6 +3224,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
         }
     }
 
+
     void rebootVM(Connection conn, VM vm, String vmName) throws XmlRpcException {
         Task task = null;
         try {
@@ -5214,39 +5261,37 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
             } else {
                 return new Answer(cmd, false, result);
             }
-        } catch (Exception e) {
-            e.printStackTrace();
+        } catch (BadServerResponse e) {
+            s_logger.error("Failure during execution of OvsDeleteFlowCommand", e);
+        } catch (XenAPIException e) {
+            s_logger.error("Failure during execution of OvsDeleteFlowCommand", e);
+        } catch (XmlRpcException e) {
+            s_logger.error("Failure during execution of OvsDeleteFlowCommand", e);
         }
         return new Answer(cmd, false, "failed to delete flow for " + cmd.getVmName());
     }
 
     private List<Pair<String, Long>> ovsFullSyncStates() {
         Connection conn = getConnection();
-        try {
-            String result = callHostPlugin(conn, "ovsgre", "ovs_get_vm_log", "host_uuid", _host.uuid);
-            String [] logs = result != null ?result.split(";"): new String [0];
-            List<Pair<String, Long>> states = new ArrayList<Pair<String, Long>>();
-            for (String log: logs){
-                String [] info = log.split(",");
-                if (info.length != 5) {
-                    s_logger.warn("Wrong element number in ovs log(" + log +")");
-                    continue;
-                }
-
-                //','.join([bridge, vmName, vmId, seqno, tag])
-                try {
-                    states.add(new Pair<String,Long>(info[0], Long.parseLong(info[3])));
-                } catch (NumberFormatException nfe) {
-                    states.add(new Pair<String,Long>(info[0], -1L));
-                }
+        String result = callHostPlugin(conn, "ovsgre", "ovs_get_vm_log", "host_uuid", _host.uuid);
+        String [] logs = result != null ?result.split(";"): new String [0];
+        List<Pair<String, Long>> states = new ArrayList<Pair<String, Long>>();
+        for (String log: logs){
+            String [] info = log.split(",");
+            if (info.length != 5) {
+                s_logger.warn("Wrong element number in ovs log(" + log +")");
+                continue;
             }
 
-            return states;
-        } catch (Exception e) {
-            e.printStackTrace();
+            //','.join([bridge, vmName, vmId, seqno, tag])
+            try {
+                states.add(new Pair<String,Long>(info[0], Long.parseLong(info[3])));
+            } catch (NumberFormatException nfe) {
+                states.add(new Pair<String,Long>(info[0], -1L));
+            }
         }
 
-        return null;
+        return states;
     }
 
     private OvsSetTagAndFlowAnswer execute(OvsSetTagAndFlowCommand cmd) {
@@ -5271,8 +5316,12 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
             } else {
                 return new OvsSetTagAndFlowAnswer(cmd, false, result);
             }
-        } catch (Exception e) {
-            e.printStackTrace();
+        } catch (BadServerResponse e) {
+            s_logger.error("Failure during execution of OvsSetTagAndFlowCommand", e);
+        } catch (XenAPIException e) {
+            s_logger.error("Failure during execution of OvsSetTagAndFlowCommand", e);
+        } catch (XmlRpcException e) {
+            s_logger.error("Failure during execution of OvsSetTagAndFlowCommand", e);
         }
 
         return new OvsSetTagAndFlowAnswer(cmd, false, "EXCEPTION");
@@ -5292,11 +5341,17 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
             s_logger.debug("PIF object:" + pifRec.uuid + "(" + pifRec.device + ")");
             return new OvsFetchInterfaceAnswer(cmd, true, "Interface " + pifRec.device + " retrieved successfully", 
                     pifRec.IP, pifRec.netmask, pifRec.MAC);
-        } catch (Exception e) {
-            e.printStackTrace();
+        } catch (BadServerResponse e) {
+            s_logger.error("An error occurred while fetching the interface for " +
+                    label + " on host " + _host.ip, e);
+            return new OvsFetchInterfaceAnswer(cmd, false, "EXCEPTION:" + e.getMessage());
+        } catch (XenAPIException e) {
             s_logger.error("An error occurred while fetching the interface for " +
-                    label + " on host " + _host.ip + ":" + e.toString() + 
-                    "(" + e.getClass() + ")");
+                    label + " on host " + _host.ip, e);
+            return new OvsFetchInterfaceAnswer(cmd, false, "EXCEPTION:" + e.getMessage());
+        } catch (XmlRpcException e) {
+            s_logger.error("An error occurred while fetching the interface for " +
+                    label + " on host " + _host.ip, e);
             return new OvsFetchInterfaceAnswer(cmd, false, "EXCEPTION:" + e.getMessage());
         }
     }
@@ -5321,12 +5376,15 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
             } else {
                 return new OvsCreateGreTunnelAnswer(cmd, true, result, _host.ip, bridge, Integer.parseInt(res[1]));
             }
-        } catch (Exception e) {
-            e.printStackTrace();
+        } catch (BadServerResponse e) {
             s_logger.error("An error occurred while creating a GRE tunnel to " +
-                    cmd.getRemoteIp() + " on host " + _host.ip + ":" + e.getMessage() + 
-                    "(" + e.getClass() + ")");
-
+                    cmd.getRemoteIp() + " on host " + _host.ip, e);
+        } catch (XenAPIException e) {
+            s_logger.error("An error occurred while creating a GRE tunnel to " +
+                    cmd.getRemoteIp() + " on host " + _host.ip, e);
+        } catch (XmlRpcException e) {
+            s_logger.error("An error occurred while creating a GRE tunnel to " +
+                    cmd.getRemoteIp() + " on host " + _host.ip, e);
         }
 
         return new OvsCreateGreTunnelAnswer(cmd, false, "EXCEPTION", _host.ip, bridge);


[3/3] git commit: updated refs/heads/4.1.1-sbp to 45b691a

Posted by hu...@apache.org.
CLOUDSTACK-2804 getEthByIp function in vpc_func.sh can return the wrong
network interface


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

Branch: refs/heads/4.1.1-sbp
Commit: 45b691a6c14716dfeb761ebb1364325d4dba5318
Parents: 5702b9b
Author: Hugo Trippaers <ht...@schubergphilis.com>
Authored: Mon Jun 3 10:52:41 2013 +0200
Committer: Hugo Trippaers <ht...@schubergphilis.com>
Committed: Mon Jul 1 13:48:38 2013 +0200

----------------------------------------------------------------------
 patches/systemvm/debian/config/opt/cloud/bin/vpc_func.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/45b691a6/patches/systemvm/debian/config/opt/cloud/bin/vpc_func.sh
----------------------------------------------------------------------
diff --git a/patches/systemvm/debian/config/opt/cloud/bin/vpc_func.sh b/patches/systemvm/debian/config/opt/cloud/bin/vpc_func.sh
index 17cb078..2f88351 100755
--- a/patches/systemvm/debian/config/opt/cloud/bin/vpc_func.sh
+++ b/patches/systemvm/debian/config/opt/cloud/bin/vpc_func.sh
@@ -22,7 +22,7 @@ getEthByIp (){
   local ip=$1
   for dev in `ls -1 /sys/class/net | grep eth`
   do
-    sudo ip addr show dev $dev | grep $ip > /dev/null
+    sudo ip addr show dev $dev | grep $ip\/ > /dev/null
     if [ $? -eq 0 ]
     then
       echo $dev