def test_security_group_two_sg_in_list(self): name = "fake_name" fake_secgroup1 = fake_compute.FakeSecurityGroup(name=name) fake_secgroup2 = fake_compute.FakeSecurityGroup(name=name) self.stubs.Set( self._manager.compute_api, 'security_group_list', mock.Mock(return_value=[fake_secgroup1, fake_secgroup2])) self.assertRaises(exception.ServiceInstanceException, self._manager._get_or_create_security_group, self._context, name) self._manager.compute_api.security_group_list.assert_called_once_with( self._context)
def test_create_service_instance_failed_setup_connectivity(self): fake_server = fake_compute.FakeServer(status='ERROR') fake_port = fake_network.FakePort() fake_security_group = fake_compute.FakeSecurityGroup() fake_network_data = {'ports': [fake_port]} self.stubs.Set(self._manager, '_get_service_image', mock.Mock(return_value='fake_image_id')) self.stubs.Set( self._manager, '_get_key', mock.Mock(return_value=('fake_key_name', 'fake_key_path'))) self.stubs.Set(self._manager, '_get_or_create_security_group', mock.Mock(return_value=fake_security_group)) self.stubs.Set(self._manager, '_setup_network_for_instance', mock.Mock(return_value=fake_network_data)) self.stubs.Set(self._manager, '_setup_connectivity_with_service_instances', mock.Mock(side_effect=exception.ManilaException)) self.stubs.Set(self._manager.neutron_api, 'delete_port', mock.Mock()) self.stubs.Set(self._manager.compute_api, 'server_create', mock.Mock(return_value=fake_server)) self.stubs.Set(self._manager.compute_api, 'server_get', mock.Mock(return_value=fake_server)) self.stubs.Set(service_instance.socket, 'socket', mock.Mock()) self.assertRaises(exception.ManilaException, self._manager._create_service_instance, self._context, 'fake-inst-name', 'fake-neutron-net', 'fake-neutron-subnet') self._manager.neutron_api.delete_port.assert_called_once_with( fake_port['id']) self.assertFalse(self._manager.compute_api.server_create.called) self.assertFalse(self._manager.compute_api.server_get.called) self.assertFalse(service_instance.socket.socket.called)
def test_security_group_creation_with_name_from_config(self): name = "fake_sg_name" desc = "fake_sg_description" fake_secgroup = fake_compute.FakeSecurityGroup(name=name, description=desc) self.stubs.Set(self._manager, 'get_config_option', mock.Mock(return_value=name)) self.stubs.Set(self._manager.compute_api, 'security_group_list', mock.Mock(return_value=[])) self.stubs.Set(self._manager.compute_api, 'security_group_create', mock.Mock(return_value=fake_secgroup)) self.stubs.Set(self._manager.compute_api, 'security_group_rule_create', mock.Mock()) result = self._manager._get_or_create_security_group( context=self._context, name=None, description=desc, ) self.assertEqual(result, fake_secgroup) self._manager.compute_api.security_group_list.assert_called_once_with( self._context) self._manager.compute_api.security_group_create.\ assert_called_once_with(self._context, name, desc) self._manager.get_config_option.assert_has_calls([ mock.call('service_instance_security_group'), ])
def test_create_service_instance(self): fake_server = fake_compute.FakeServer() fake_port = fake_network.FakePort(fixed_ips=[{ 'ip_address': '127.0.0.1' }]) fake_security_group = fake_compute.FakeSecurityGroup() fake_instance_name = 'fake_instance_name' fake_router = {'id': 'fake-router-id'} fake_service_subnet = {'id': 'fake-service-subnet-id'} fake_network_data = { 'router': fake_router, 'service_subnet': fake_service_subnet, 'service_port': fake_port, 'ports': [fake_port], } self.stubs.Set(self._manager, '_get_service_image', mock.Mock(return_value='fake_image_id')) self.stubs.Set( self._manager, '_get_key', mock.Mock(return_value=('fake_key_name', 'fake_key_path'))) self.stubs.Set(self._manager, '_setup_network_for_instance', mock.Mock(return_value=fake_network_data)) self.stubs.Set(self._manager, '_setup_connectivity_with_service_instances', mock.Mock()) self.stubs.Set(self._manager.compute_api, 'server_create', mock.Mock(return_value=fake_server)) self.stubs.Set(self._manager, '_get_server_ip', mock.Mock(return_value='fake_ip')) self.stubs.Set(self._manager, '_get_or_create_security_group', mock.Mock(return_value=fake_security_group)) self.stubs.Set(service_instance.socket, 'socket', mock.Mock()) self.stubs.Set(self._manager, '_get_service_instance_name', mock.Mock(return_value=fake_instance_name)) result = self._manager._create_service_instance( self._context, fake_instance_name, 'fake-net', 'fake-subnet') self._manager._get_service_image.assert_called_once_with(self._context) self._manager._get_key.assert_called_once_with(self._context) self._manager._setup_network_for_instance.assert_called_once_with( 'fake-net', 'fake-subnet') self._manager._setup_connectivity_with_service_instances.\ assert_called_once_with() self._manager.compute_api.server_create.assert_called_once_with( self._context, name=fake_instance_name, image='fake_image_id', flavor=CONF.service_instance_flavor_id, key_name='fake_key_name', nics=[{ 'port-id': fake_port['id'] }]) service_instance.socket.socket.assert_called_once_with() self.assertIs(result, fake_server) self.assertEqual(result['public_address'], '127.0.0.1')
def test_create_service_instance_error(self): fake_server = fake_compute.FakeServer(status='ERROR') fake_port = fake_network.FakePort() fake_security_group = fake_compute.FakeSecurityGroup() fake_network_data = { 'ports': [fake_port], } self.stubs.Set(self._manager, '_get_service_image', mock.Mock(return_value='fake_image_id')) self.stubs.Set( self._manager, '_get_key', mock.Mock(return_value=('fake_key_name', 'fake_key_path'))) self.stubs.Set(self._manager, '_get_or_create_security_group', mock.Mock(return_value=fake_security_group)) self.stubs.Set(self._manager, '_setup_network_for_instance', mock.Mock(return_value=fake_network_data)) self.stubs.Set(self._manager, '_setup_connectivity_with_service_instances', mock.Mock()) self.stubs.Set(self._manager.compute_api, 'server_create', mock.Mock(return_value=fake_server)) self.stubs.Set(self._manager.compute_api, 'server_get', mock.Mock(return_value=fake_server)) self.stubs.Set(service_instance.socket, 'socket', mock.Mock()) self.assertRaises(exception.ManilaException, self._manager._create_service_instance, self._context, 'fake-inst-name', 'fake-neutron-net', 'fake-neutron-subnet') self._manager._get_service_image.assert_called_once_with(self._context) self._manager._get_key.assert_called_once_with(self._context) self._manager._get_or_create_security_group.assert_called_once_with( self._context) self._manager._setup_network_for_instance.assert_called_once_with( 'fake-neutron-net', 'fake-neutron-subnet') self._manager._setup_connectivity_with_service_instances.\ assert_called_once_with() self._manager.compute_api.server_create.assert_called_once_with( self._context, name='fake-inst-name', image='fake_image_id', flavor=100, key_name='fake_key_name', nics=[{ 'port-id': fake_port['id'] }]) self.assertFalse(self._manager.compute_api.server_get.called) self.assertFalse(service_instance.socket.socket.called)
def test_security_group_name_from_config_and_sg_exist(self): fake_secgroup = fake_compute.FakeSecurityGroup(name="fake_sg_name") self.stubs.Set(self._manager, 'get_config_option', mock.Mock(return_value="fake_sg_name")) self.stubs.Set(self._manager.compute_api, 'security_group_list', mock.Mock(return_value=[ fake_secgroup, ])) result = self._manager._get_or_create_security_group(self._context) self.assertEqual(result, fake_secgroup) self._manager.get_config_option.assert_has_calls([ mock.call('service_instance_security_group'), ]) self._manager.compute_api.security_group_list.assert_called_once_with( self._context)
def test_create_service_instance(self): fake_server = fake_compute.FakeServer() fake_port = fake_network.FakePort() fake_security_group = fake_compute.FakeSecurityGroup() fake_instance_name = 'fake_instance_name' self.stubs.Set(self._manager, '_get_service_image', mock.Mock(return_value='fake_image_id')) self.stubs.Set( self._manager, '_get_key', mock.Mock(return_value=('fake_key_name', 'fake_key_path'))) self.stubs.Set( self._manager, '_setup_network_for_instance', mock.Mock(return_value=('fake-subnet', 'fake-router', fake_port['id']))) self.stubs.Set(self._manager, '_setup_connectivity_with_service_instances', mock.Mock()) self.stubs.Set(self._manager.compute_api, 'server_create', mock.Mock(return_value=fake_server)) self.stubs.Set(self._manager, '_get_server_ip', mock.Mock(return_value='fake_ip')) self.stubs.Set(self._manager, '_get_or_create_security_group', mock.Mock(return_value=fake_security_group)) self.stubs.Set(service_instance.socket, 'socket', mock.Mock()) self.stubs.Set(self._manager, '_get_service_instance_name', mock.Mock(return_value=fake_instance_name)) result = self._manager._create_service_instance( self._context, fake_instance_name, 'fake-net', 'fake-subnet') self._manager._get_service_image.assert_called_once() self._manager._get_key.assert_called_once() self._manager._setup_network_for_instance.assert_called_once() self._manager._setup_connectivity_with_service_instances.\ assert_called_once() self._manager.compute_api.server_create.assert_called_once_with( self._context, name=fake_instance_name, image='fake_image_id', flavor=CONF.service_instance_flavor_id, key_name='fake_key_name', nics=[{ 'port-id': fake_port['id'] }]) service_instance.socket.socket.assert_called_once() self.assertEqual(result, fake_server)
def test_security_group_creation_with_provided_name(self): name = "fake_sg_name" desc = "fake_sg_description" fake_secgroup = fake_compute.FakeSecurityGroup(name=name, description=desc) self.stubs.Set(self._manager.compute_api, 'security_group_list', mock.Mock(return_value=[])) self.stubs.Set(self._manager.compute_api, 'security_group_create', mock.Mock(return_value=fake_secgroup)) self.stubs.Set(self._manager.compute_api, 'security_group_rule_create', mock.Mock()) result = self._manager._get_or_create_security_group( context=self._context, name=name, description=desc, ) self._manager.compute_api.security_group_list.assert_called_once_with( self._context) self._manager.compute_api.security_group_create.\ assert_called_once_with(self._context, name, desc) self.assertEqual(result, fake_secgroup)