[ https://issues.apache.org/jira/browse/CLOUDSTACK-9885?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16022942#comment-16022942 ]
Wei Zhou edited comment on CLOUDSTACK-9885 at 5/24/17 7:54 PM: --------------------------------------------------------------- [~jayapal] thanks for testing. The code I posted cleanup the wrong ips. We do have another commit for the wrong ethernet in keepalived.conf {code} diff --git a/systemvm/patches/debian/config/opt/cloud/bin/cs/CsAddress.py b/systemvm/patches/debian/config/opt/cloud/bin/cs/CsAddress.py index 63c0df6..9f9513d 100755 --- a/systemvm/patches/debian/config/opt/cloud/bin/cs/CsAddress.py +++ b/systemvm/patches/debian/config/opt/cloud/bin/cs/CsAddress.py @@ -53,9 +53,9 @@ class CsAddress(CsDataBag): for ip in self.get_ips(): if ip.is_guest() and ip.is_added(): device = ip.get_device() - device_suffix = int(''.join([digit for digit in device if digit.isdigit()])) - if device_suffix < lowest_device: - lowest_device = device_suffix + device_physical_number = CsHelper.get_physical_device_number(device) + if device_physical_number < lowest_device: + lowest_device = device_physical_number guest_interface = ip logging.debug("Guest interface will be set on device '%s' and IP '%s'" % (guest_interface.get_device(), guest_interface.get_ip())) return guest_interface diff --git a/systemvm/patches/debian/config/opt/cloud/bin/cs/CsHelper.py b/systemvm/patches/debian/config/opt/cloud/bin/cs/CsHelper.py index becad9c..a8ccea2 100755 --- a/systemvm/patches/debian/config/opt/cloud/bin/cs/CsHelper.py +++ b/systemvm/patches/debian/config/opt/cloud/bin/cs/CsHelper.py @@ -128,6 +128,14 @@ def get_ip(device): return vals[1] return "" +def get_physical_device_number(device): + """ Return physical device number on an interface """ + cmd = "ip addr show dev %s" % device + for i in execute(cmd): + vals = i.lstrip().split() + if (vals[1].split(':')[0] == device): + return int(vals[0].split(':')[0]) + return 1000 #lowest_device def definedinfile(filename, val): """ Check if val is defined in the file """ {code} was (Author: weizhou): [~jayapal] thanks for testing. The code I posted cleanup the wrong ips. We do have another commit for the wrong ethernet in keepalived.conf ``` diff --git a/systemvm/patches/debian/config/opt/cloud/bin/cs/CsAddress.py b/systemvm/patches/debian/config/opt/cloud/bin/cs/CsAddress.py index 63c0df6..9f9513d 100755 --- a/systemvm/patches/debian/config/opt/cloud/bin/cs/CsAddress.py +++ b/systemvm/patches/debian/config/opt/cloud/bin/cs/CsAddress.py @@ -53,9 +53,9 @@ class CsAddress(CsDataBag): for ip in self.get_ips(): if ip.is_guest() and ip.is_added(): device = ip.get_device() - device_suffix = int(''.join([digit for digit in device if digit.isdigit()])) - if device_suffix < lowest_device: - lowest_device = device_suffix + device_physical_number = CsHelper.get_physical_device_number(device) + if device_physical_number < lowest_device: + lowest_device = device_physical_number guest_interface = ip logging.debug("Guest interface will be set on device '%s' and IP '%s'" % (guest_interface.get_device(), guest_interface.get_ip())) return guest_interface diff --git a/systemvm/patches/debian/config/opt/cloud/bin/cs/CsHelper.py b/systemvm/patches/debian/config/opt/cloud/bin/cs/CsHelper.py index becad9c..a8ccea2 100755 --- a/systemvm/patches/debian/config/opt/cloud/bin/cs/CsHelper.py +++ b/systemvm/patches/debian/config/opt/cloud/bin/cs/CsHelper.py @@ -128,6 +128,14 @@ def get_ip(device): return vals[1] return "" +def get_physical_device_number(device): + """ Return physical device number on an interface """ + cmd = "ip addr show dev %s" % device + for i in execute(cmd): + vals = i.lstrip().split() + if (vals[1].split(':')[0] == device): + return int(vals[0].split(':')[0]) + return 1000 #lowest_device def definedinfile(filename, val): """ Check if val is defined in the file """ ``` > VPC RVR: On deleting first tier network both VRs becoming MASTER > ---------------------------------------------------------------- > > Key: CLOUDSTACK-9885 > URL: https://issues.apache.org/jira/browse/CLOUDSTACK-9885 > Project: CloudStack > Issue Type: Bug > Security Level: Public(Anyone can view this level - this is the > default.) > Affects Versions: 4.10.0.0 > Reporter: Jayapal Reddy > Assignee: Jayapal Reddy > Priority: Blocker > Fix For: 4.10.0.0 > > > - Configure two tier networks t1 and t2. Delete the t1 network. Both VRs are > getting into MASTER state. > r-269-QA - was BACKUP VR. On deleting t1 network it became MASTER. > {noformat} > root@r-269-QA:~# ip a > 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN > link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 > inet 127.0.0.1/8 scope host lo > 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP > qlen 1000 > link/ether 0e:00:a9:fe:01:dc brd ff:ff:ff:ff:ff:ff > inet 169.254.1.220/16 brd 169.254.255.255 scope global eth0 > 3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000 > link/ether 06:e4:c8:00:00:0e brd ff:ff:ff:ff:ff:ff > inet 10.147.46.102/24 brd 10.147.46.255 scope global eth1 > 4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP > qlen 1000 > link/ether 02:00:5d:a4:00:03 brd ff:ff:ff:ff:ff:ff > inet 10.1.1.33/24 brd 10.1.1.255 scope global eth2 > 5: eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP > qlen 1000 > link/ether 06:de:fc:00:00:29 brd ff:ff:ff:ff:ff:ff > inet 10.147.52.200/24 brd 10.147.52.255 scope global eth3 > 6: eth4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP > qlen 1000 > link/ether 02:00:31:e1:00:03 brd ff:ff:ff:ff:ff:ff > inet 10.1.2.78/24 brd 10.1.2.255 scope global eth4 > root@r-269-QA:~# > root@r-269-QA:~# ip a > 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN > link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 > inet 127.0.0.1/8 scope host lo > 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP > qlen 1000 > link/ether 0e:00:a9:fe:01:dc brd ff:ff:ff:ff:ff:ff > inet 169.254.1.220/16 brd 169.254.255.255 scope global eth0 > 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP > qlen 1000 > link/ether 06:e4:c8:00:00:0e brd ff:ff:ff:ff:ff:ff > inet 10.147.46.102/24 brd 10.147.46.255 scope global eth1 > 5: eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP > qlen 1000 > link/ether 06:de:fc:00:00:29 brd ff:ff:ff:ff:ff:ff > inet 10.147.52.200/24 brd 10.147.52.255 scope global eth3 > inet 10.147.52.100/24 brd 10.147.52.255 scope global secondary eth3 > 6: eth4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP > qlen 1000 > link/ether 02:00:31:e1:00:03 brd ff:ff:ff:ff:ff:ff > inet 10.1.2.78/24 brd 10.1.2.255 scope global eth4 > inet 10.1.2.1/24 brd 10.1.2.255 scope global secondary eth4 > root@r-269-QA:~# checkrouter.sh > Status: MASTER > root@r-269-QA:~# > {noformat} > root@r-268-QA - was MASTER VR. On deleting t1 it deleted its eth2 interface > and delete 10.2.1.1 ip on ethic interface. > After some time it configured 10.2.1.1 ip on eth4 and it became master. > {noformat} > root@r-268-QA:~# ip a > 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN > link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 > inet 127.0.0.1/8 scope host lo > 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP > qlen 1000 > link/ether 0e:00:a9:fe:02:ac brd ff:ff:ff:ff:ff:ff > inet 169.254.2.172/16 brd 169.254.255.255 scope global eth0 > 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP > qlen 1000 > link/ether 06:e4:c8:00:00:0e brd ff:ff:ff:ff:ff:ff > inet 10.147.46.102/24 brd 10.147.46.255 scope global eth1 > 4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP > qlen 1000 > link/ether 02:00:15:ab:00:02 brd ff:ff:ff:ff:ff:ff > inet 10.1.1.189/24 brd 10.1.1.255 scope global eth2 > inet 10.1.1.1/24 brd 10.1.1.255 scope global secondary eth2 > 5: eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP > qlen 1000 > link/ether 06:67:ce:00:00:29 brd ff:ff:ff:ff:ff:ff > inet 10.147.52.200/24 brd 10.147.52.255 scope global eth3 > inet 10.147.52.100/24 brd 10.147.52.255 scope global secondary eth3 > 6: eth4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP > qlen 1000 > link/ether 02:00:09:1d:00:02 brd ff:ff:ff:ff:ff:ff > inet 10.1.2.49/24 brd 10.1.2.255 scope global eth4 > inet 10.1.2.1/24 brd 10.1.2.255 scope global secondary eth4 > root@r-268-QA:~# > root@r-268-QA:~# ip a > 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN > link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 > inet 127.0.0.1/8 scope host lo > 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP > qlen 1000 > link/ether 0e:00:a9:fe:02:ac brd ff:ff:ff:ff:ff:ff > inet 169.254.2.172/16 brd 169.254.255.255 scope global eth0 > 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP > qlen 1000 > link/ether 06:e4:c8:00:00:0e brd ff:ff:ff:ff:ff:ff > inet 10.147.46.102/24 brd 10.147.46.255 scope global eth1 > 4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP > qlen 1000 > link/ether 02:00:15:ab:00:02 brd ff:ff:ff:ff:ff:ff > 5: eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP > qlen 1000 > link/ether 06:67:ce:00:00:29 brd ff:ff:ff:ff:ff:ff > inet 10.147.52.200/24 brd 10.147.52.255 scope global eth3 > 6: eth4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP > qlen 1000 > link/ether 02:00:09:1d:00:02 brd ff:ff:ff:ff:ff:ff > inet 10.1.2.49/24 brd 10.1.2.255 scope global eth4 > root@r-268-QA:~# ip a > 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN > link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 > inet 127.0.0.1/8 scope host lo > 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP > qlen 1000 > link/ether 0e:00:a9:fe:02:ac brd ff:ff:ff:ff:ff:ff > inet 169.254.2.172/16 brd 169.254.255.255 scope global eth0 > 3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000 > link/ether 06:e4:c8:00:00:0e brd ff:ff:ff:ff:ff:ff > inet 10.147.46.102/24 brd 10.147.46.255 scope global eth1 > 5: eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP > qlen 1000 > link/ether 06:67:ce:00:00:29 brd ff:ff:ff:ff:ff:ff > inet 10.147.52.200/24 brd 10.147.52.255 scope global eth3 > 6: eth4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP > qlen 1000 > link/ether 02:00:09:1d:00:02 brd ff:ff:ff:ff:ff:ff > inet 10.1.2.49/24 brd 10.1.2.255 scope global eth4 > root@r-268-QA:~# ip a > 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN > link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 > inet 127.0.0.1/8 scope host lo > 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP > qlen 1000 > link/ether 0e:00:a9:fe:02:ac brd ff:ff:ff:ff:ff:ff > inet 169.254.2.172/16 brd 169.254.255.255 scope global eth0 > 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP > qlen 1000 > link/ether 06:e4:c8:00:00:0e brd ff:ff:ff:ff:ff:ff > inet 10.147.46.102/24 brd 10.147.46.255 scope global eth1 > 5: eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP > qlen 1000 > link/ether 06:67:ce:00:00:29 brd ff:ff:ff:ff:ff:ff > inet 10.147.52.200/24 brd 10.147.52.255 scope global eth3 > inet 10.147.52.100/24 brd 10.147.52.255 scope global secondary eth3 > 6: eth4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP > qlen 1000 > link/ether 02:00:09:1d:00:02 brd ff:ff:ff:ff:ff:ff > inet 10.1.2.49/24 brd 10.1.2.255 scope global eth4 > inet 10.1.2.1/24 brd 10.1.2.255 scope global secondary eth4 > root@r-268-QA:~# checkrouter.sh > Status: MASTER > root@r-268-QA:~# > {noformat} -- This message was sent by Atlassian JIRA (v6.3.15#6346)