From 00ceafe47fd9ff4e147c94a9f5b77b2fa7d74b7e Mon Sep 17 00:00:00 2001 From: Wei Zhou Date: Tue, 22 Sep 2020 17:26:54 +0200 Subject: [PATCH] securitygroup: Ubuntu 20.04 fix systemvm cannot start up (#4303) * security_group.py: fix SyntaxWarning: "is" with a literal. 2020-04-27 09:43:54,172 DEBUG [kvm.resource.LibvirtComputingResource] (Agent-Handler-2:null) (logid:c33ba330) /usr/share/cloudstack-common/scripts/vm/network/security_group.py:513: SyntaxWarning: "is" with a literal. Did you mean "=="? if rules is None or rules is "": /usr/share/cloudstack-common/scripts/vm/network/security_group.py:522: SyntaxWarning: "is" with a literal. Did you mean "=="? if rules is None or rules is "": /usr/share/cloudstack-common/scripts/vm/network/security_group.py:823: SyntaxWarning: "is" with a literal. Did you mean "=="? if brName is None or brName is "": * Ubuntu 20.04: Fix systemvm cannot start up in Ubuntu 16.04: root@node13:~# bridge -o link show 2: eth0 state UP : mtu 1500 master cloudbr0 state forwarding priority 32 cost 100 5: vnet0 state UNKNOWN : mtu 1500 master cloud0 state forwarding priority 32 cost 100 6: vnet1 state UNKNOWN : mtu 1500 master cloudbr0 state forwarding priority 32 cost 100 7: vnet2 state UNKNOWN : mtu 1500 master cloudbr0 state forwarding priority 32 cost 100 root@node13:~# bridge -o link show | awk '/master cloudbr0 / && !/^[0-9]+: vnet/ {print $2}' | head -1 eth0 root@node13:~# bridge -o link show | awk '/master cloudbr0 / && !/^[0-9]+: vnet/ {print $2}' | head -1 |cut -d ":" -f1 eth0 in Ubuntu 20.04: root@node62:~# bridge -o link show 2: ens3: mtu 1500 master cloudbr0 state forwarding priority 32 cost 100 10: vnet3: mtu 1500 master cloud0 state forwarding priority 32 cost 100 11: vnet4: mtu 1500 master cloudbr0 state forwarding priority 32 cost 100 12: vnet5: mtu 1500 master cloudbr0 state forwarding priority 32 cost 100 root@node62:~# bridge -o link show | awk '/master cloudbr0 / && !/^[0-9]+: vnet/ {print $2}' | head -1 ens3: root@node62:~# bridge -o link show | awk '/master cloudbr0 / && !/^[0-9]+: vnet/ {print $2}' | head -1 |cut -d ':' -f1 ens3 * security_group.py: use 'if not' instead --- scripts/vm/network/security_group.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/scripts/vm/network/security_group.py b/scripts/vm/network/security_group.py index b3b58e9d490..6732f642c05 100755 --- a/scripts/vm/network/security_group.py +++ b/scripts/vm/network/security_group.py @@ -185,7 +185,7 @@ def destroy_network_rules_for_nic(vm_name, vm_ip, vm_mac, vif, sec_ips): logging.debug("Ignoring failure to delete ebtable rules for vm: " + vm_name) def get_bridge_physdev(brname): - physdev = execute("bridge -o link show | awk '/master %s / && !/^[0-9]+: vnet/ {print $2}' | head -1" % brname) + physdev = execute("bridge -o link show | awk '/master %s / && !/^[0-9]+: vnet/ {print $2}' | head -1 | cut -d ':' -f1" % brname) return physdev.strip() @@ -510,7 +510,7 @@ def check_default_network_rules(vm_name, vm_id, vm_ip, vm_ip6, vm_mac, vif, brna rules = execute("iptables-save |grep -w %s |grep -w %s |grep -w %s" % (brfw, vif, vmchain_default)) except: rules = None - if rules is None or rules is "": + if not rules: logging.debug("iptables rules do not exist, programming default rules for %s %s" % (vm_name,vif)) default_network_rules(vm_name, vm_id, vm_ip, vm_ip6, vm_mac, vif, brname, sec_ips, is_first_nic) else: @@ -519,7 +519,7 @@ def check_default_network_rules(vm_name, vm_id, vm_ip, vm_ip6, vm_mac, vif, brna rules = execute("ebtables -t nat -L PREROUTING | grep %s |grep -w %s" % (vmchain_in, vif)) except: rules = None - if rules is None or rules is "": + if not rules: logging.debug("ebtables rules do not exist, programming default ebtables rules for %s %s" % (vm_name,vif)) default_ebtables_rules(vm_name, vm_ip, vm_mac, vif, is_first_nic) ips = sec_ips.split(';') @@ -820,7 +820,7 @@ def network_rules_for_rebooted_vm(vmName): delete_rules_for_vm_in_bridge_firewall_chain(vm_name) brName = execute("iptables-save | awk -F '-j ' '/FORWARD -o(.*)physdev-is-bridged(.*)BF/ {print $2}'").strip() - if brName is None or brName is "": + if not brName: brName = "cloudbr0" else: brName = execute("iptables-save |grep physdev-is-bridged |grep FORWARD |grep BF |grep '\-o' |awk '{print $4}' | head -1").strip() @@ -1368,13 +1368,13 @@ def verify_network_rules(vm_name, vm_id, vm_ip, vm_ip6, vm_mac, vif, brname, sec if brname is None: brname = execute("virsh domiflist %s |grep -w '%s' |tr -s ' '|cut -d ' ' -f3" % (vm_name, vm_mac)).strip() - if brname is None or brname == "": + if not brname: print("Cannot find bridge") sys.exit(1) if vif is None: vif = execute("virsh domiflist %s |grep -w '%s' |tr -s ' '|cut -d ' ' -f1" % (vm_name, vm_mac)).strip() - if vif is None or vif == "": + if not vif: print("Cannot find vif") sys.exit(1)