Merge "Handle exception on adding secgroup" into stable/pike
This commit is contained in:
commit
191faf3124
@ -245,7 +245,6 @@ class SecurityGroupAPI(security_group_base.SecurityGroupBase):
|
||||
LOG.exception(_LE("Neutron Error: %s"), e)
|
||||
self.raise_invalid_property(six.text_type(e))
|
||||
else:
|
||||
LOG.exception(_LE("Neutron Error:"))
|
||||
six.reraise(*exc_info)
|
||||
converted_rules = []
|
||||
for rule in rules:
|
||||
@ -443,7 +442,6 @@ class SecurityGroupAPI(security_group_base.SecurityGroupBase):
|
||||
'project': context.project_id})
|
||||
self.raise_not_found(msg)
|
||||
else:
|
||||
LOG.exception(_LE("Neutron Error:"))
|
||||
six.reraise(*exc_info)
|
||||
params = {'device_id': instance.uuid}
|
||||
try:
|
||||
@ -476,6 +474,13 @@ class SecurityGroupAPI(security_group_base.SecurityGroupBase):
|
||||
{'security_group_id': security_group_id,
|
||||
'port_id': port['id']})
|
||||
neutron.update_port(port['id'], {'port': updated_port})
|
||||
except n_exc.NeutronClientException as e:
|
||||
exc_info = sys.exc_info()
|
||||
if e.status_code == 400:
|
||||
raise exception.SecurityGroupCannotBeApplied(
|
||||
six.text_type(e))
|
||||
else:
|
||||
six.reraise(*exc_info)
|
||||
except Exception:
|
||||
with excutils.save_and_reraise_exception():
|
||||
LOG.exception(_LE("Neutron Error:"))
|
||||
@ -497,7 +502,6 @@ class SecurityGroupAPI(security_group_base.SecurityGroupBase):
|
||||
'project': context.project_id})
|
||||
self.raise_not_found(msg)
|
||||
else:
|
||||
LOG.exception(_LE("Neutron Error:"))
|
||||
six.reraise(*exc_info)
|
||||
params = {'device_id': instance.uuid}
|
||||
try:
|
||||
|
@ -395,6 +395,45 @@ class TestNeutronDriver(test.NoDBTestCase):
|
||||
self.mocked_client.list_ports.assert_called_once_with(
|
||||
device_id=[uuids.instance])
|
||||
|
||||
def test_add_to_instance(self):
|
||||
sg_name = 'web_server'
|
||||
sg_id = '85cc3048-abc3-43cc-89b3-377341426ac5'
|
||||
port_id = 1
|
||||
port_list = {'ports': [{'id': port_id, 'device_id': uuids.instance,
|
||||
'fixed_ips': [{'ip_address': '10.0.0.1'}],
|
||||
'port_security_enabled': True, 'security_groups': []}]}
|
||||
self.mocked_client.list_ports.return_value = port_list
|
||||
sg_api = neutron_driver.SecurityGroupAPI()
|
||||
with mock.patch.object(neutronv20, 'find_resourceid_by_name_or_id',
|
||||
return_value=sg_id):
|
||||
sg_api.add_to_instance(
|
||||
self.context, objects.Instance(uuid=uuids.instance), sg_name)
|
||||
self.mocked_client.list_ports.assert_called_once_with(
|
||||
device_id=uuids.instance)
|
||||
self.mocked_client.update_port.assert_called_once_with(
|
||||
port_id, {'port': {'security_groups': [sg_id]}})
|
||||
|
||||
def test_add_to_instance_with_bad_request(self):
|
||||
sg_name = 'web_server'
|
||||
sg_id = '85cc3048-abc3-43cc-89b3-377341426ac5'
|
||||
port_id = 1
|
||||
port_list = {'ports': [{'id': port_id, 'device_id': uuids.instance,
|
||||
'fixed_ips': [{'ip_address': '10.0.0.1'}],
|
||||
'port_security_enabled': True, 'security_groups': []}]}
|
||||
self.mocked_client.list_ports.return_value = port_list
|
||||
sg_api = neutron_driver.SecurityGroupAPI()
|
||||
self.mocked_client.update_port.side_effect = (
|
||||
n_exc.BadRequest(message='error'))
|
||||
with mock.patch.object(neutronv20, 'find_resourceid_by_name_or_id',
|
||||
return_value=sg_id):
|
||||
self.assertRaises(exception.SecurityGroupCannotBeApplied,
|
||||
sg_api.add_to_instance, self.context,
|
||||
objects.Instance(uuid=uuids.instance), sg_name)
|
||||
self.mocked_client.list_ports.assert_called_once_with(
|
||||
device_id=uuids.instance)
|
||||
self.mocked_client.update_port.assert_called_once_with(
|
||||
port_id, {'port': {'security_groups': [sg_id]}})
|
||||
|
||||
|
||||
class TestNeutronDriverWithoutMock(test.NoDBTestCase):
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user