summaryrefslogtreecommitdiffstats
path: root/nova
diff options
context:
space:
mode:
Diffstat (limited to 'nova')
-rw-r--r--nova/network/model.py5
-rw-r--r--nova/network/quantumv2/api.py3
-rw-r--r--nova/tests/network/test_manager.py1
-rw-r--r--nova/tests/network/test_network_info.py26
4 files changed, 33 insertions, 2 deletions
diff --git a/nova/network/model.py b/nova/network/model.py
index fc20489b5..f427a04bd 100644
--- a/nova/network/model.py
+++ b/nova/network/model.py
@@ -194,12 +194,14 @@ class Network(Model):
class VIF(Model):
"""Represents a Virtual Interface in Nova"""
- def __init__(self, id=None, address=None, network=None, **kwargs):
+ def __init__(self, id=None, address=None, network=None, type=None,
+ **kwargs):
super(VIF, self).__init__()
self['id'] = id
self['address'] = address
self['network'] = network or None
+ self['type'] = type
self._set_meta(kwargs)
@@ -363,6 +365,7 @@ class NetworkInfo(list):
info_dict = {'label': network['label'],
'broadcast': str(subnet_v4.as_netaddr().broadcast),
'mac': vif['address'],
+ 'vif_type': vif['type'],
'vif_uuid': vif['id'],
'rxtx_cap': vif.get_meta('rxtx_cap', 0),
'dns': [get_ip(ip) for ip in subnet_v4['dns']],
diff --git a/nova/network/quantumv2/api.py b/nova/network/quantumv2/api.py
index 8c802b9fc..180d14c0f 100644
--- a/nova/network/quantumv2/api.py
+++ b/nova/network/quantumv2/api.py
@@ -574,7 +574,8 @@ class API(base.Base):
nw_info.append(network_model.VIF(
id=port['id'],
address=port['mac_address'],
- network=network))
+ network=network,
+ type=port.get('binding:vif_type')))
return nw_info
def _get_subnets_from_port(self, context, port):
diff --git a/nova/tests/network/test_manager.py b/nova/tests/network/test_manager.py
index 700b74141..596c88f13 100644
--- a/nova/tests/network/test_manager.py
+++ b/nova/tests/network/test_manager.py
@@ -180,6 +180,7 @@ class FlatNetworkTestCase(test.TestCase):
'label': 'test%d' % nid,
'mac': 'DE:AD:BE:EF:00:%02x' % nid,
'rxtx_cap': 30,
+ 'vif_type': None,
'vif_uuid':
'00000000-0000-0000-0000-00000000000000%02d' % nid,
'should_create_vlan': False,
diff --git a/nova/tests/network/test_network_info.py b/nova/tests/network/test_network_info.py
index c9b17306d..3e19a4461 100644
--- a/nova/tests/network/test_network_info.py
+++ b/nova/tests/network/test_network_info.py
@@ -259,6 +259,19 @@ class VIFTests(test.TestCase):
self.assertEqual(vif['network'],
fake_network_cache_model.new_network())
+ def test_create_vif_with_type(self):
+ vif_dict = dict(
+ id=1,
+ address='aa:aa:aa:aa:aa:aa',
+ network=fake_network_cache_model.new_network(),
+ type='bridge')
+ vif = fake_network_cache_model.new_vif(vif_dict)
+ self.assertEqual(vif['id'], 1)
+ self.assertEqual(vif['address'], 'aa:aa:aa:aa:aa:aa')
+ self.assertEqual(vif['type'], 'bridge')
+ self.assertEqual(vif['network'],
+ fake_network_cache_model.new_network())
+
def test_vif_get_fixed_ips(self):
vif = fake_network_cache_model.new_vif()
fixed_ips = vif.fixed_ips()
@@ -296,6 +309,19 @@ class VIFTests(test.TestCase):
self.assertEqual(vif['network'],
fake_network_cache_model.new_network())
+ def test_hydrate_vif_with_type(self):
+ vif_dict = dict(
+ id=1,
+ address='aa:aa:aa:aa:aa:aa',
+ network=fake_network_cache_model.new_network(),
+ type='bridge')
+ vif = model.VIF.hydrate(fake_network_cache_model.new_vif(vif_dict))
+ self.assertEqual(vif['id'], 1)
+ self.assertEqual(vif['address'], 'aa:aa:aa:aa:aa:aa')
+ self.assertEqual(vif['type'], 'bridge')
+ self.assertEqual(vif['network'],
+ fake_network_cache_model.new_network())
+
class NetworkInfoTests(test.TestCase):
def test_create_model(self):