← Back to team overview

openstack team mailing list archive

Re: how to decide orders of multiple nic

 

The api doesn't support any way to order these, so they are being returned in db order. In essex we retrieved each network individually, but now they are retrieved together. I believe the following will fix your issue:

diff --git a/nova/network/manager.py b/nova/network/manager.py
index d032fe1..4866803 100644
--- a/nova/network/manager.py
+++ b/nova/network/manager.py
@@ -1797,8 +1797,10 @@ class NetworkManager(manager.SchedulerDependentManager):
                                    project_only="allow_none")
 
     def _get_networks_by_uuids(self, context, network_uuids):
-        return self.db.network_get_all_by_uuids(context, network_uuids,
-                                                project_only="allow_none")
+        networks = self.db.network_get_all_by_uuids(context, network_uuids,
+                                                    project_only="allow_none")
+        networks.sort(key=lambda x: network_uuids.index(x['uuid']))
+        return networks
 
     @wrap_check_policy
     def get_vifs_by_instance(self, context, instance_id):
@@ -2114,8 +2116,10 @@ class VlanManager(RPCAllocateFixedIP, FloatingIP, NetworkManager):
         # NOTE(vish): Don't allow access to networks with project_id=None as
         #             these are networksa that haven't been allocated to a
         #             project yet.
-        return self.db.network_get_all_by_uuids(context, network_uuids,
-                                                project_only=True)
+        networks = self.db.network_get_all_by_uuids(context, network_uuids,
+                                                    project_only=True)
+        networks.sort(key=lambda x: network_uuids.index(x['uuid']))
+        return networks
 
     def _get_networks_for_instance(self, context, instance_id, project_id,
                                    requested_networks=None):

If you could verify that it helps and report a bug, I would be happy to propose it into essex and backport it.

Vish

On Nov 9, 2012, at 11:57 AM, Yi Sun <beyounn@xxxxxxxxx> wrote:

> I have two nic cards, I want eth0 to always be connected to network1
> and eth1 to always be connected to network2.
> In the essex, I can do this by arrange the order of --nic options in
> the "nova boot" command. But in the folsom,it does not seem to work
> anymore, the following commands connect eth0 to the same network
> nova --no-cache boot --image db64c7ed-3496-499e-a097-73362cb5f447
> --flavor 2 --nic net-id=ff899ad7-a0c2-4e46-a0a4-bf086eda9164 --nic
> net-id=12e964db-14e3-4e85-98c8-45987c89e1d1 user-host-2
> nova --no-cache boot --image db64c7ed-3496-499e-a097-73362cb5f447
> --flavor 2  --nic net-id=12e964db-14e3-4e85-98c8-45987c89e1d1 --nic
> net-id=ff899ad7-a0c2-4e46-a0a4-bf086eda9164 user-host-2
> 
> Could someone tell me how to solve this problem?
> Thanks
> Yi
> -- 
> Android-x86
> http://www.android-x86.org
> 
> _______________________________________________
> Mailing list: https://launchpad.net/~openstack
> Post to     : openstack@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~openstack
> More help   : https://help.launchpad.net/ListHelp



Follow ups

References