[ 
https://issues.apache.org/jira/browse/CLOUDSTACK-9134?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15054685#comment-15054685
 ] 

ASF GitHub Bot commented on CLOUDSTACK-9134:
--------------------------------------------

Github user ustcweizhou commented on a diff in the pull request:

    https://github.com/apache/cloudstack/pull/1209#discussion_r47437641
  
    --- Diff: engine/schema/src/com/cloud/vm/dao/NicDaoImpl.java ---
    @@ -222,11 +222,20 @@ public String getIpAddress(long networkId, long 
instanceId) {
         }
     
         @Override
    -    public int countNics(long instanceId) {
    -        SearchCriteria<Integer> sc = CountBy.create();
    -        sc.setParameters("vmId", instanceId);
    -        List<Integer> results = customSearch(sc, null);
    -        return results.get(0);
    +    public int getFreeDeviceId(long instanceId) {
    +        Filter searchFilter = new Filter(NicVO.class, "deviceId", true, 
null, null);
    +        SearchCriteria<Integer> sc = deviceIdSearch.create();
    +        sc.setParameters("instance", instanceId);
    +        List<Integer> deviceIds = customSearch(sc, searchFilter);
    +
    +        int freeDeviceId = 0;
    +        for (int deviceId : deviceIds) {
    --- End diff --
    
    @borisroman 
    we get the list of deviceId order by asc at first, eg, 0,1,2,4
    then we check the list, for index i, if (deviceIds[i] != i), then i is the 
first free ip.
    in my example, the first free device_id is 3 (because deviceIds[3] = 4, not 
3)
    then we assign 3 as the device_id of new nic.
    



> ip and route are not applied to the right NIC in VR after restarting a VPC 
> tier
> -------------------------------------------------------------------------------
>
>                 Key: CLOUDSTACK-9134
>                 URL: https://issues.apache.org/jira/browse/CLOUDSTACK-9134
>             Project: CloudStack
>          Issue Type: Bug
>      Security Level: Public(Anyone can view this level - this is the 
> default.) 
>            Reporter: Wei Zhou
>            Assignee: Wei Zhou
>
> I created three tiers: tier1 /tier 2/ tier3 with corresponding network:
> tier1: 192.168.0.0/24
> tier2: 192.168.1.0/24
> tier3: 192.168.2.0/24
> when I restart the tier 2 (in network tab, choose the tier, restart it with 
> cleanup), the ip and router are wrong:
> root@r-7587-VM:~# 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:03:1a brd ff:ff:ff:ff:ff:ff
>     inet 169.254.3.26/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:1b:30:00:00:1e brd ff:ff:ff:ff:ff:ff
>     inet 10.11.115.119/24 brd 10.11.115.255 scope global eth1
> 4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP 
> qlen 1000
>     link/ether 02:00:01:59:00:0b brd ff:ff:ff:ff:ff:ff
>     inet 192.168.0.49/24 brd 192.168.0.255 scope global eth2
>     inet 192.168.0.1/24 brd 192.168.0.255 scope global secondary eth2
> 6: eth4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP 
> qlen 1000
>     link/ether 02:00:64:46:00:04 brd ff:ff:ff:ff:ff:ff
>     inet 192.168.2.104/24 brd 192.168.2.255 scope global eth4
>     inet 192.168.1.49/24 brd 192.168.1.255 scope global eth4
>     inet 192.168.2.254/24 brd 192.168.2.255 scope global secondary eth4
>     inet 192.168.1.254/24 brd 192.168.1.255 scope global secondary eth4
> 8: eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP 
> qlen 1000
>     link/ether 02:00:30:af:00:10 brd ff:ff:ff:ff:ff:ff
>     inet 192.168.1.254/24 brd 192.168.1.255 scope global eth3
> root@r-7587-VM:~# ip route
> default via 10.11.115.254 dev eth1
> 10.11.115.0/24 dev eth1  proto kernel  scope link  src 10.11.115.119
> 169.254.0.0/16 dev eth0  proto kernel  scope link  src 169.254.3.26
> 192.168.0.0/24 dev eth2  proto kernel  scope link  src 192.168.0.49
> 192.168.1.0/24 dev eth4  proto kernel  scope link  src 192.168.1.49
> 192.168.1.0/24 dev eth3  proto kernel  scope link  src 192.168.1.254
> 192.168.2.0/24 dev eth4  proto kernel  scope link  src 192.168.2.104
> the ip and router of tier2 should be applied to eth3, but sometimes it is 
> applied to eth4.
> --------------
> if I restart the tier1 after that, the issue continues:
> root@r-7587-VM:~# ip a;ip route
> 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:03:1a brd ff:ff:ff:ff:ff:ff
>     inet 169.254.3.26/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:1b:30:00:00:1e brd ff:ff:ff:ff:ff:ff
>     inet 10.11.115.119/24 brd 10.11.115.255 scope global eth1
> 6: eth4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP 
> qlen 1000
>     link/ether 02:00:64:46:00:04 brd ff:ff:ff:ff:ff:ff
>     inet 192.168.2.104/24 brd 192.168.2.255 scope global eth4
>     inet 192.168.1.49/24 brd 192.168.1.255 scope global eth4
>     inet 192.168.2.254/24 brd 192.168.2.255 scope global secondary eth4
>     inet 192.168.1.254/24 brd 192.168.1.255 scope global secondary eth4
> 8: eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP 
> qlen 1000
>     link/ether 02:00:30:af:00:10 brd ff:ff:ff:ff:ff:ff
>     inet 192.168.1.254/24 brd 192.168.1.255 scope global eth3
> 9: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP 
> qlen 1000
>     link/ether 02:00:07:4c:00:0d brd ff:ff:ff:ff:ff:ff
> default via 10.11.115.254 dev eth1
> 10.11.115.0/24 dev eth1  proto kernel  scope link  src 10.11.115.119
> 169.254.0.0/16 dev eth0  proto kernel  scope link  src 169.254.3.26
> 192.168.1.0/24 dev eth4  proto kernel  scope link  src 192.168.1.49
> 192.168.1.0/24 dev eth3  proto kernel  scope link  src 192.168.1.254
> 192.168.2.0/24 dev eth4  proto kernel  scope link  src 192.168.2.104
> --------
> this also happenes if we change the network offering of vpc tier (the tier 
> will restart)



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to