You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by mu...@apache.org on 2014/06/13 12:32:39 UTC

git commit: updated refs/heads/master to cdb3dc9

Repository: cloudstack
Updated Branches:
  refs/heads/master aa21cdcd4 -> cdb3dc97b


CLOUDSTACK-6749: [OVS] xe network-param-get with
param-key=is-ovs-vpc-distributed-vr-network alway returns error

fixing unnecessary errors in the logs


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

Branch: refs/heads/master
Commit: cdb3dc97b577b95b5da9a4ecd21135f5d48279e9
Parents: aa21cdc
Author: Murali Reddy <mu...@gmail.com>
Authored: Fri Jun 13 15:50:41 2014 +0530
Committer: Murali Reddy <mu...@gmail.com>
Committed: Fri Jun 13 16:02:31 2014 +0530

----------------------------------------------------------------------
 .../xenserver/cloudstack_pluginlib.py           | 54 ++++++++++++++------
 .../vm/hypervisor/xenserver/ovs-vif-flows.py    | 19 ++-----
 2 files changed, 40 insertions(+), 33 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/cdb3dc97/scripts/vm/hypervisor/xenserver/cloudstack_pluginlib.py
----------------------------------------------------------------------
diff --git a/scripts/vm/hypervisor/xenserver/cloudstack_pluginlib.py b/scripts/vm/hypervisor/xenserver/cloudstack_pluginlib.py
index d3d234f..44812b2 100644
--- a/scripts/vm/hypervisor/xenserver/cloudstack_pluginlib.py
+++ b/scripts/vm/hypervisor/xenserver/cloudstack_pluginlib.py
@@ -420,23 +420,9 @@ def create_tunnel(bridge, remote_ip, gre_key, src_host, dst_host, network_uuid):
         # find xs network for this bridge, verify is used for ovs tunnel network
         xs_nw_uuid = do_cmd([XE_PATH, "network-list",
 								   "bridge=%s" % bridge, "--minimal"])
-        ovs_tunnel_network = False
-        try:
-            ovs_tunnel_network = do_cmd([XE_PATH,"network-param-get",
-						       "uuid=%s" % xs_nw_uuid,
-						       "param-name=other-config",
-						       "param-key=is-ovs-tun-network", "--minimal"])
-        except:
-            pass
 
-        ovs_vpc_distributed_vr_network = False
-        try:
-            ovs_vpc_distributed_vr_network = do_cmd([XE_PATH,"network-param-get",
-                           "uuid=%s" % xs_nw_uuid,
-                           "param-name=other-config",
-                           "param-key=is-ovs-vpc-distributed-vr-network", "--minimal"])
-        except:
-            pass
+        ovs_tunnel_network = is_regular_tunnel_network(xs_nw_uuid)
+        ovs_vpc_distributed_vr_network = is_vpc_network_with_distributed_routing(xs_nw_uuid)
 
         if ovs_tunnel_network == 'True':
             # add flow entryies for dropping broadcast coming in from gre tunnel
@@ -867,4 +853,38 @@ def update_flooding_rules_on_port_plug_unplug(bridge, interface, command, if_net
         error_message = "An unexpected error occurred while updating the flooding rules for the bridge " + \
                         bridge + " when interface " + " %s" %interface + " is %s" %command
         logging.debug(error_message + " due to " + str(e))
-        raise error_message
\ No newline at end of file
+        raise error_message
+
+
+def is_regular_tunnel_network(xs_nw_uuid):
+    cmd = [XE_PATH,"network-param-get", "uuid=%s" % xs_nw_uuid, "param-name=other-config",
+                            "param-key=is-ovs-tun-network", "--minimal"]
+    logging.debug("Executing:%s", cmd)
+    pipe = subprocess.PIPE
+    proc = subprocess.Popen(cmd, shell=False, stdin=pipe, stdout=pipe,
+                            stderr=pipe, close_fds=True)
+    ret_code = proc.wait()
+    if ret_code:
+        return False
+
+    output = proc.stdout.read()
+    if output.endswith('\n'):
+        output = output[:-1]
+    return output
+
+
+def is_vpc_network_with_distributed_routing(xs_nw_uuid):
+    cmd = [XE_PATH,"network-param-get", "uuid=%s" % xs_nw_uuid, "param-name=other-config",
+                            "param-key=is-ovs-vpc-distributed-vr-network", "--minimal"]
+    logging.debug("Executing:%s", cmd)
+    pipe = subprocess.PIPE
+    proc = subprocess.Popen(cmd, shell=False, stdin=pipe, stdout=pipe,
+                            stderr=pipe, close_fds=True)
+    ret_code = proc.wait()
+    if ret_code:
+        return False
+
+    output = proc.stdout.read()
+    if output.endswith('\n'):
+        output = output[:-1]
+    return output
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/cdb3dc97/scripts/vm/hypervisor/xenserver/ovs-vif-flows.py
----------------------------------------------------------------------
diff --git a/scripts/vm/hypervisor/xenserver/ovs-vif-flows.py b/scripts/vm/hypervisor/xenserver/ovs-vif-flows.py
index ba5f41a..62601bf 100644
--- a/scripts/vm/hypervisor/xenserver/ovs-vif-flows.py
+++ b/scripts/vm/hypervisor/xenserver/ovs-vif-flows.py
@@ -90,24 +90,10 @@ def main(command, vif_raw):
     # find xs network for this bridge, verify is used for ovs tunnel network
     xs_nw_uuid = pluginlib.do_cmd([pluginlib.XE_PATH, "network-list",
 								   "bridge=%s" % bridge, "--minimal"])
-    ovs_tunnel_network = False
-    try:
-        ovs_tunnel_network = pluginlib.do_cmd([pluginlib.XE_PATH,"network-param-get",
-						       "uuid=%s" % xs_nw_uuid,
-						       "param-name=other-config",
-						       "param-key=is-ovs-tun-network", "--minimal"])
-    except:
-        pass
 
-    ovs_vpc_distributed_vr_network = False
-    try:
-        ovs_vpc_distributed_vr_network = pluginlib.do_cmd([pluginlib.XE_PATH,"network-param-get",
-						       "uuid=%s" % xs_nw_uuid,
-						       "param-name=other-config",
-						       "param-key=is-ovs-vpc-distributed-vr-network", "--minimal"])
-    except:
-        pass
+    ovs_tunnel_network = pluginlib.is_regular_tunnel_network(xs_nw_uuid)
 
+    # handle case where network is reguar tunnel network
     if ovs_tunnel_network == 'True':
         vlan = pluginlib.do_cmd([pluginlib.VSCTL_PATH, 'br-to-vlan', bridge])
         if vlan != '0':
@@ -137,6 +123,7 @@ def main(command, vif_raw):
 
 
     # handle case where bridge is setup for VPC which is enabled for distributed routing
+    ovs_vpc_distributed_vr_network = pluginlib.is_vpc_network_with_distributed_routing(xs_nw_uuid)
     if ovs_vpc_distributed_vr_network == 'True':
         vlan = pluginlib.do_cmd([pluginlib.VSCTL_PATH, 'br-to-vlan', bridge])
         if vlan != '0':