diff options
| author | Dan Smith <danms@us.ibm.com> | 2013-03-06 09:34:40 -0500 |
|---|---|---|
| committer | Dan Smith <danms@us.ibm.com> | 2013-03-08 13:09:52 -0500 |
| commit | fcdd30a5fb99dd272cf29d909c46416f2e5084e1 (patch) | |
| tree | a36ba261c42e7aa75bf3a8f44ead901d6a3b0ca2 | |
| parent | 86e4587fb36aec74102d58c50d614fc6c006ebd3 (diff) | |
| download | nova-fcdd30a5fb99dd272cf29d909c46416f2e5084e1.tar.gz nova-fcdd30a5fb99dd272cf29d909c46416f2e5084e1.tar.xz nova-fcdd30a5fb99dd272cf29d909c46416f2e5084e1.zip | |
Remove uses of instance['instance_type'] from nova/network
This is one change in a series aimed at removing the use of instance-linked
instance_type objects, in favor of the decoupled type data in
system_metadata. See bug 1140119 for more details.
Change-Id: I43c9e9b7d560d8803899360bd7142e393b793f3d
| -rw-r--r-- | nova/network/api.py | 15 | ||||
| -rw-r--r-- | nova/network/api_deprecated.py | 13 | ||||
| -rw-r--r-- | nova/network/quantumv2/api.py | 4 | ||||
| -rw-r--r-- | nova/tests/network/test_api.py | 20 | ||||
| -rw-r--r-- | nova/tests/network/test_quantumv2.py | 8 |
5 files changed, 43 insertions, 17 deletions
diff --git a/nova/network/api.py b/nova/network/api.py index 4f0a2bffa..21d071357 100644 --- a/nova/network/api.py +++ b/nova/network/api.py @@ -258,13 +258,14 @@ class API(base.Base): # this is called from compute.manager which shouldn't # have db access so we do it on the other side of the # rpc. + instance_type = instance_types.extract_instance_type(instance) args = {} args['vpn'] = vpn args['requested_networks'] = requested_networks args['instance_id'] = instance['uuid'] args['project_id'] = instance['project_id'] args['host'] = instance['host'] - args['rxtx_factor'] = instance['instance_type']['rxtx_factor'] + args['rxtx_factor'] = instance_type['rxtx_factor'] args['macs'] = macs nw_info = self.network_rpcapi.allocate_for_instance(context, **args) @@ -307,8 +308,9 @@ class API(base.Base): def add_fixed_ip_to_instance(self, context, instance, network_id, conductor_api=None): """Adds a fixed ip to instance from specified network.""" + instance_type = instance_types.extract_instance_type(instance) args = {'instance_id': instance['uuid'], - 'rxtx_factor': instance['instance_type']['rxtx_factor'], + 'rxtx_factor': instance_type['rxtx_factor'], 'host': instance['host'], 'network_id': network_id} self.network_rpcapi.add_fixed_ip_to_instance(context, **args) @@ -319,8 +321,9 @@ class API(base.Base): conductor_api=None): """Removes a fixed ip from instance from specified network.""" + instance_type = instance_types.extract_instance_type(instance) args = {'instance_id': instance['uuid'], - 'rxtx_factor': instance['instance_type']['rxtx_factor'], + 'rxtx_factor': instance_type['rxtx_factor'], 'host': instance['host'], 'address': address} self.network_rpcapi.remove_fixed_ip_from_instance(context, **args) @@ -480,9 +483,10 @@ class API(base.Base): @wrap_check_policy def migrate_instance_start(self, context, instance, migration): """Start to migrate the network of an instance.""" + instance_type = instance_types.extract_instance_type(instance) args = dict( instance_uuid=instance['uuid'], - rxtx_factor=instance['instance_type']['rxtx_factor'], + rxtx_factor=instance_type['rxtx_factor'], project_id=instance['project_id'], source_compute=migration['source_compute'], dest_compute=migration['dest_compute'], @@ -499,9 +503,10 @@ class API(base.Base): @wrap_check_policy def migrate_instance_finish(self, context, instance, migration): """Finish migrating the network of an instance.""" + instance_type = instance_types.extract_instance_type(instance) args = dict( instance_uuid=instance['uuid'], - rxtx_factor=instance['instance_type']['rxtx_factor'], + rxtx_factor=instance_type['rxtx_factor'], project_id=instance['project_id'], source_compute=migration['source_compute'], dest_compute=migration['dest_compute'], diff --git a/nova/network/api_deprecated.py b/nova/network/api_deprecated.py index 1f23d90f7..2a6ea0b47 100644 --- a/nova/network/api_deprecated.py +++ b/nova/network/api_deprecated.py @@ -22,6 +22,7 @@ This version of the api is deprecated in Grizzly and will be removed. It is provided just in case a third party manager is in use. """ +from nova.compute import instance_types from nova.db import base from nova import exception from nova.network import api as shiny_api @@ -185,13 +186,14 @@ class API(base.Base): NB: macs is ignored by nova-network. :returns: network info as from get_instance_nw_info() below """ + instance_type = instance_types.extract_instance_type(instance) args = {} args['vpn'] = vpn args['requested_networks'] = requested_networks args['instance_id'] = instance['uuid'] args['project_id'] = instance['project_id'] args['host'] = instance['host'] - args['rxtx_factor'] = instance['instance_type']['rxtx_factor'] + args['rxtx_factor'] = instance_type['rxtx_factor'] nw_info = self.network_rpcapi.allocate_for_instance(context, **args) return network_model.NetworkInfo.hydrate(nw_info) @@ -257,8 +259,9 @@ class API(base.Base): def _get_instance_nw_info(self, context, instance): """Returns all network info related to an instance.""" + instance_type = instance_types.extract_instance_type(instance) args = {'instance_id': instance['uuid'], - 'rxtx_factor': instance['instance_type']['rxtx_factor'], + 'rxtx_factor': instance_type['rxtx_factor'], 'host': instance['host'], 'project_id': instance['project_id']} nw_info = self.network_rpcapi.get_instance_nw_info(context, **args) @@ -373,9 +376,10 @@ class API(base.Base): @wrap_check_policy def migrate_instance_start(self, context, instance, migration): """Start to migrate the network of an instance.""" + instance_type = instance_types.extract_instance_type(instance) args = dict( instance_uuid=instance['uuid'], - rxtx_factor=instance['instance_type']['rxtx_factor'], + rxtx_factor=instance_type['rxtx_factor'], project_id=instance['project_id'], source_compute=migration['source_compute'], dest_compute=migration['dest_compute'], @@ -392,9 +396,10 @@ class API(base.Base): @wrap_check_policy def migrate_instance_finish(self, context, instance, migration): """Finish migrating the network of an instance.""" + instance_type = instance_types.extract_instance_type(instance) args = dict( instance_uuid=instance['uuid'], - rxtx_factor=instance['instance_type']['rxtx_factor'], + rxtx_factor=instance_type['rxtx_factor'], project_id=instance['project_id'], source_compute=migration['source_compute'], dest_compute=migration['dest_compute'], diff --git a/nova/network/quantumv2/api.py b/nova/network/quantumv2/api.py index 5537048a7..53e22c077 100644 --- a/nova/network/quantumv2/api.py +++ b/nova/network/quantumv2/api.py @@ -20,6 +20,7 @@ import time from oslo.config import cfg +from nova.compute import instance_types from nova import conductor from nova import context from nova.db import base @@ -303,7 +304,8 @@ class API(base.Base): def _populate_quantum_extension_values(self, instance, port_req_body): self._refresh_quantum_extensions_cache() if 'nvp-qos' in self.extensions: - rxtx_factor = instance['instance_type'].get('rxtx_factor') + instance_type = instance_types.extract_instance_type(instance) + rxtx_factor = instance_type.get('rxtx_factor') port_req_body['port']['rxtx_factor'] = rxtx_factor def deallocate_for_instance(self, context, instance, **kwargs): diff --git a/nova/tests/network/test_api.py b/nova/tests/network/test_api.py index 2d32d5ad9..7a53dc8d4 100644 --- a/nova/tests/network/test_api.py +++ b/nova/tests/network/test_api.py @@ -22,6 +22,7 @@ import random import mox +from nova.compute import instance_types from nova import context from nova import exception from nova import network @@ -30,7 +31,7 @@ from nova.network import floating_ips from nova.network import rpcapi as network_rpcapi from nova import policy from nova import test - +from nova import utils FAKE_UUID = 'a47ae74e-ab08-547f-9eee-ffd23fc46c16' @@ -80,8 +81,11 @@ class ApiTestCase(test.TestCase): self.network_api.network_rpcapi.allocate_for_instance( mox.IgnoreArg(), **kwargs).AndReturn([]) self.mox.ReplayAll() + inst_type = instance_types.get_default_instance_type() + inst_type['rxtx_factor'] = 0 + sys_meta = instance_types.save_instance_type_info({}, inst_type) instance = dict(id='id', uuid='uuid', project_id='project_id', - host='host', instance_type={'rxtx_factor': 0}) + host='host', system_metadata=utils.dict_to_metadata(sys_meta)) self.network_api.allocate_for_instance( self.context, instance, 'vpn', 'requested_networks', macs=macs) @@ -136,10 +140,14 @@ class ApiTestCase(test.TestCase): self._do_test_associate_floating_ip(None) def _stub_migrate_instance_calls(self, method, multi_host, info): - fake_instance_type = {'rxtx_factor': 'fake_factor'} + fake_instance_type = instance_types.get_default_instance_type() + fake_instance_type['rxtx_factor'] = 1.21 + sys_meta = utils.dict_to_metadata( + instance_types.save_instance_type_info({}, fake_instance_type)) fake_instance = {'uuid': 'fake_uuid', - 'instance_type': fake_instance_type, - 'project_id': 'fake_project_id'} + 'instance_type_id': fake_instance_type['id'], + 'project_id': 'fake_project_id', + 'system_metadata': sys_meta} fake_migration = {'source_compute': 'fake_compute_source', 'dest_compute': 'fake_compute_dest'} @@ -162,7 +170,7 @@ class ApiTestCase(test.TestCase): expected = {'instance_uuid': 'fake_uuid', 'source_compute': 'fake_compute_source', 'dest_compute': 'fake_compute_dest', - 'rxtx_factor': 'fake_factor', + 'rxtx_factor': 1.21, 'project_id': 'fake_project_id', 'floating_addresses': None} if multi_host: diff --git a/nova/tests/network/test_quantumv2.py b/nova/tests/network/test_quantumv2.py index 167b418ad..660123866 100644 --- a/nova/tests/network/test_quantumv2.py +++ b/nova/tests/network/test_quantumv2.py @@ -21,12 +21,14 @@ import mox from oslo.config import cfg from quantumclient.v2_0 import client +from nova.compute import instance_types from nova import context from nova import exception from nova.network import model from nova.network import quantumv2 from nova.network.quantumv2 import api as quantumapi from nova import test +from nova import utils CONF = cfg.CONF @@ -366,7 +368,11 @@ class TestQuantumv2(test.TestCase): self.moxed_client.list_extensions().AndReturn( {'extensions': [{'name': 'nvp-qos'}]}) self.mox.ReplayAll() - instance = {'instance_type': {'rxtx_factor': 1}} + instance_type = instance_types.get_default_instance_type() + instance_type['rxtx_factor'] = 1 + sys_meta = utils.dict_to_metadata( + instance_types.save_instance_type_info({}, instance_type)) + instance = {'system_metadata': sys_meta} port_req_body = {'port': {}} api._populate_quantum_extension_values(instance, port_req_body) self.assertEquals(port_req_body['port']['rxtx_factor'], 1) |
