Merge "Request objects in security_groups api extensions"

This commit is contained in:
Jenkins 2015-02-24 19:14:17 +00:00 committed by Gerrit Code Review
commit 0a3201dc7e
6 changed files with 27 additions and 13 deletions

View File

@ -364,7 +364,8 @@ class SecurityGroupActionController(wsgi.Controller):
def _invoke(self, method, context, id, group_name):
with translate_exceptions():
instance = self.compute_api.get(context, id)
instance = self.compute_api.get(context, id,
want_objects=True)
method(context, instance, group_name)
return webob.Response(status_int=202)

View File

@ -378,7 +378,7 @@ class SecurityGroupActionController(wsgi.Controller):
return group_name
def _invoke(self, method, context, id, group_name):
instance = self.compute_api.get(context, id)
instance = self.compute_api.get(context, id, want_objects=True)
method(context, instance, group_name)
@extensions.expected_errors((400, 404, 409))

View File

@ -4004,7 +4004,7 @@ class SecurityGroupAPI(base.Base, security_group_base.SecurityGroupBase):
context.project_id,
security_group_name)
instance_uuid = instance['uuid']
instance_uuid = instance.uuid
# check if the security group is associated with the server
if self.is_associated_with_server(security_group, instance_uuid):
@ -4018,7 +4018,7 @@ class SecurityGroupAPI(base.Base, security_group_base.SecurityGroupBase):
# NOTE(comstud): No instance_uuid argument to this compute manager
# call
self.security_group_rpcapi.refresh_security_group_rules(context,
security_group['id'], host=instance['host'])
security_group['id'], host=instance.host)
@wrap_check_security_groups_policy
def remove_from_instance(self, context, instance, security_group_name):
@ -4027,7 +4027,7 @@ class SecurityGroupAPI(base.Base, security_group_base.SecurityGroupBase):
context.project_id,
security_group_name)
instance_uuid = instance['uuid']
instance_uuid = instance.uuid
# check if the security group is associated with the server
if not self.is_associated_with_server(security_group, instance_uuid):
@ -4041,7 +4041,7 @@ class SecurityGroupAPI(base.Base, security_group_base.SecurityGroupBase):
# NOTE(comstud): No instance_uuid argument to this compute manager
# call
self.security_group_rpcapi.refresh_security_group_rules(context,
security_group['id'], host=instance['host'])
security_group['id'], host=instance.host)
def get_rule(self, context, id):
self.ensure_default(context)

View File

@ -420,7 +420,7 @@ class SecurityGroupAPI(security_group_base.SecurityGroupBase):
else:
LOG.exception(_LE("Neutron Error:"))
raise exc_info[0], exc_info[1], exc_info[2]
params = {'device_id': instance['uuid']}
params = {'device_id': instance.uuid}
try:
ports = neutron.list_ports(**params).get('ports')
except n_exc.NeutronClientException:
@ -429,7 +429,7 @@ class SecurityGroupAPI(security_group_base.SecurityGroupBase):
if not ports:
msg = (_("instance_id %s could not be found as device id on"
" any ports") % instance['uuid'])
" any ports") % instance.uuid)
self.raise_not_found(msg)
for port in ports:
@ -438,7 +438,7 @@ class SecurityGroupAPI(security_group_base.SecurityGroupBase):
"%(instance)s since the port %(port_id)s "
"does not meet security requirements"),
{'name': security_group_name,
'instance': instance['uuid'],
'instance': instance.uuid,
'port_id': port['id']})
raise exception.SecurityGroupCannotBeApplied()
if 'security_groups' not in port:
@ -475,7 +475,7 @@ class SecurityGroupAPI(security_group_base.SecurityGroupBase):
else:
LOG.exception(_LE("Neutron Error:"))
raise exc_info[0], exc_info[1], exc_info[2]
params = {'device_id': instance['uuid']}
params = {'device_id': instance.uuid}
try:
ports = neutron.list_ports(**params).get('ports')
except n_exc.NeutronClientException:
@ -484,7 +484,7 @@ class SecurityGroupAPI(security_group_base.SecurityGroupBase):
if not ports:
msg = (_("instance_id %s could not be found as device id on"
" any ports") % instance['uuid'])
" any ports") % instance.uuid)
self.raise_not_found(msg)
found_security_group = False
@ -514,7 +514,7 @@ class SecurityGroupAPI(security_group_base.SecurityGroupBase):
msg = (_("Security group %(security_group_name)s not associated "
"with the instance %(instance)s") %
{'security_group_name': security_group_name,
'instance': instance['uuid']})
'instance': instance.uuid})
self.raise_not_found(msg)
def populate_security_groups(self, instance, security_groups):

View File

@ -212,9 +212,21 @@ class SecurityGroupBase(object):
raise NotImplementedError()
def add_to_instance(self, context, instance, security_group_name):
"""Add security group to the instance.
:param context: The request context.
:param instance: nova.objects.instance.Instance object.
:param security_group_name: security group name to add
"""
raise NotImplementedError()
def remove_from_instance(self, context, instance, security_group_name):
"""Remove the security group associated with the instance.
:param context: The request context.
:param instance: nova.objects.instance.Instance object.
:param security_group_name: security group name to remove
"""
raise NotImplementedError()
@staticmethod

View File

@ -9477,7 +9477,8 @@ class ComputeAPITestCase(BaseTestCase):
self.compute.run_instance(self.context,
instance, {}, {}, None, None,
None, True, None, False)
instance = self.compute_api.get(self.context, instance['uuid'])
instance = self.compute_api.get(self.context, instance.uuid,
want_objects=True)
security_group_name = self._create_group()['name']
self.security_group_api.add_to_instance(self.context,