Skip to content

Commit cdb3dc9

Browse files
committed
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
1 parent aa21cdc commit cdb3dc9

2 files changed

Lines changed: 40 additions & 33 deletions

File tree

scripts/vm/hypervisor/xenserver/cloudstack_pluginlib.py

Lines changed: 37 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -420,23 +420,9 @@ def create_tunnel(bridge, remote_ip, gre_key, src_host, dst_host, network_uuid):
420420
# find xs network for this bridge, verify is used for ovs tunnel network
421421
xs_nw_uuid = do_cmd([XE_PATH, "network-list",
422422
"bridge=%s" % bridge, "--minimal"])
423-
ovs_tunnel_network = False
424-
try:
425-
ovs_tunnel_network = do_cmd([XE_PATH,"network-param-get",
426-
"uuid=%s" % xs_nw_uuid,
427-
"param-name=other-config",
428-
"param-key=is-ovs-tun-network", "--minimal"])
429-
except:
430-
pass
431423

432-
ovs_vpc_distributed_vr_network = False
433-
try:
434-
ovs_vpc_distributed_vr_network = do_cmd([XE_PATH,"network-param-get",
435-
"uuid=%s" % xs_nw_uuid,
436-
"param-name=other-config",
437-
"param-key=is-ovs-vpc-distributed-vr-network", "--minimal"])
438-
except:
439-
pass
424+
ovs_tunnel_network = is_regular_tunnel_network(xs_nw_uuid)
425+
ovs_vpc_distributed_vr_network = is_vpc_network_with_distributed_routing(xs_nw_uuid)
440426

441427
if ovs_tunnel_network == 'True':
442428
# add flow entryies for dropping broadcast coming in from gre tunnel
@@ -867,4 +853,38 @@ class tier_ports:
867853
error_message = "An unexpected error occurred while updating the flooding rules for the bridge " + \
868854
bridge + " when interface " + " %s" %interface + " is %s" %command
869855
logging.debug(error_message + " due to " + str(e))
870-
raise error_message
856+
raise error_message
857+
858+
859+
def is_regular_tunnel_network(xs_nw_uuid):
860+
cmd = [XE_PATH,"network-param-get", "uuid=%s" % xs_nw_uuid, "param-name=other-config",
861+
"param-key=is-ovs-tun-network", "--minimal"]
862+
logging.debug("Executing:%s", cmd)
863+
pipe = subprocess.PIPE
864+
proc = subprocess.Popen(cmd, shell=False, stdin=pipe, stdout=pipe,
865+
stderr=pipe, close_fds=True)
866+
ret_code = proc.wait()
867+
if ret_code:
868+
return False
869+
870+
output = proc.stdout.read()
871+
if output.endswith('\n'):
872+
output = output[:-1]
873+
return output
874+
875+
876+
def is_vpc_network_with_distributed_routing(xs_nw_uuid):
877+
cmd = [XE_PATH,"network-param-get", "uuid=%s" % xs_nw_uuid, "param-name=other-config",
878+
"param-key=is-ovs-vpc-distributed-vr-network", "--minimal"]
879+
logging.debug("Executing:%s", cmd)
880+
pipe = subprocess.PIPE
881+
proc = subprocess.Popen(cmd, shell=False, stdin=pipe, stdout=pipe,
882+
stderr=pipe, close_fds=True)
883+
ret_code = proc.wait()
884+
if ret_code:
885+
return False
886+
887+
output = proc.stdout.read()
888+
if output.endswith('\n'):
889+
output = output[:-1]
890+
return output

scripts/vm/hypervisor/xenserver/ovs-vif-flows.py

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -90,24 +90,10 @@ def main(command, vif_raw):
9090
# find xs network for this bridge, verify is used for ovs tunnel network
9191
xs_nw_uuid = pluginlib.do_cmd([pluginlib.XE_PATH, "network-list",
9292
"bridge=%s" % bridge, "--minimal"])
93-
ovs_tunnel_network = False
94-
try:
95-
ovs_tunnel_network = pluginlib.do_cmd([pluginlib.XE_PATH,"network-param-get",
96-
"uuid=%s" % xs_nw_uuid,
97-
"param-name=other-config",
98-
"param-key=is-ovs-tun-network", "--minimal"])
99-
except:
100-
pass
10193

102-
ovs_vpc_distributed_vr_network = False
103-
try:
104-
ovs_vpc_distributed_vr_network = pluginlib.do_cmd([pluginlib.XE_PATH,"network-param-get",
105-
"uuid=%s" % xs_nw_uuid,
106-
"param-name=other-config",
107-
"param-key=is-ovs-vpc-distributed-vr-network", "--minimal"])
108-
except:
109-
pass
94+
ovs_tunnel_network = pluginlib.is_regular_tunnel_network(xs_nw_uuid)
11095

96+
# handle case where network is reguar tunnel network
11197
if ovs_tunnel_network == 'True':
11298
vlan = pluginlib.do_cmd([pluginlib.VSCTL_PATH, 'br-to-vlan', bridge])
11399
if vlan != '0':
@@ -137,6 +123,7 @@ def main(command, vif_raw):
137123

138124

139125
# handle case where bridge is setup for VPC which is enabled for distributed routing
126+
ovs_vpc_distributed_vr_network = pluginlib.is_vpc_network_with_distributed_routing(xs_nw_uuid)
140127
if ovs_vpc_distributed_vr_network == 'True':
141128
vlan = pluginlib.do_cmd([pluginlib.VSCTL_PATH, 'br-to-vlan', bridge])
142129
if vlan != '0':

0 commit comments

Comments
 (0)