diff options
-rw-r--r-- | nova/conductor/manager.py | 4 | ||||
-rw-r--r-- | nova/db/sqlalchemy/api.py | 3 | ||||
-rw-r--r-- | nova/network/api.py | 4 | ||||
-rw-r--r-- | nova/virt/firewall.py | 5 |
4 files changed, 11 insertions, 5 deletions
diff --git a/nova/conductor/manager.py b/nova/conductor/manager.py index a986b0415..6202cb8b6 100644 --- a/nova/conductor/manager.py +++ b/nova/conductor/manager.py @@ -208,9 +208,9 @@ class ConductorManager(manager.SchedulerDependentManager): return jsonutils.to_primitive(group) def security_group_rule_get_by_security_group(self, context, secgroup): - rule = self.db.security_group_rule_get_by_security_group( + rules = self.db.security_group_rule_get_by_security_group( context, secgroup['id']) - return jsonutils.to_primitive(rule) + return jsonutils.to_primitive(rules, max_depth=4) def provider_fw_rule_get_all(self, context): rules = self.db.provider_fw_rule_get_all(context) diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py index 2ac08f6eb..c717871d1 100644 --- a/nova/db/sqlalchemy/api.py +++ b/nova/db/sqlalchemy/api.py @@ -3203,7 +3203,8 @@ def security_group_rule_get_by_security_group(context, security_group_id, session=None): return _security_group_rule_get_query(context, session=session).\ filter_by(parent_group_id=security_group_id).\ - options(joinedload_all('grantee_group.instances.instance_type')).\ + options(joinedload_all('grantee_group.instances.' + 'system_metadata')).\ all() diff --git a/nova/network/api.py b/nova/network/api.py index 98387687d..f89cfb8de 100644 --- a/nova/network/api.py +++ b/nova/network/api.py @@ -20,6 +20,7 @@ import functools import inspect +from nova.compute import instance_types from nova.db import base from nova import exception from nova.network import floating_ips @@ -362,8 +363,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) diff --git a/nova/virt/firewall.py b/nova/virt/firewall.py index 6ab4249b1..a36beb7f0 100644 --- a/nova/virt/firewall.py +++ b/nova/virt/firewall.py @@ -19,6 +19,7 @@ from oslo.config import cfg +from nova import conductor from nova import context from nova import network from nova.network import linux_net @@ -398,9 +399,11 @@ class IptablesFirewallDriver(FirewallDriver): # and should be the only one making # making rpc calls. nw_api = network.API() + capi = conductor.API() for instance in rule['grantee_group']['instances']: nw_info = nw_api.get_instance_nw_info(ctxt, - instance) + instance, + capi) ips = [ip['address'] for ip in nw_info.fixed_ips() |