def setUp(self): super(TestVolumeValidation, self).setUp() bdm_v2 = [ { 'volume_size': 1, 'uuid': '6ce0be68', 'source_type': 'volume', 'destination_type': 'volume', 'boot_index': 0, }, ] volume_spec = { 'type': 'os.nova.server', 'version': '1.0', 'properties': { 'flavor': 'FLAV', 'name': 'FAKE_SERVER_NAME', 'security_groups': ['HIGH_SECURITY_GROUP'], 'block_device_mapping_v2': bdm_v2, } } self.vc = mock.Mock() self.profile = server.ServerProfile('t', volume_spec) self.profile._block_storageclient = self.vc
def test_do_create_failed(self): cc = mock.Mock() profile = server.ServerProfile('t', self.spec) profile._computeclient = cc self._stubout_profile(profile, mock_image=True, mock_flavor=True, mock_keypair=True, mock_net=True) node_obj = mock.Mock(id='FAKE_NODE_ID', index=123, cluster_id='FAKE_CLUSTER_ID', data={ 'placement': { 'zone': 'AZ1', 'servergroup': 'SERVER_GROUP_1' } }) node_obj.name = 'TEST_SERVER' cc.server_create.side_effect = exc.InternalError( code=500, message="creation failed.") ex = self.assertRaises(exc.EResourceCreation, profile.do_create, node_obj) self.assertEqual('Failed in creating server: creation failed.', six.text_type(ex)) self.assertEqual(0, cc.wait_for_server.call_count)
def test_do_delete_no_physical_id(self): profile = server.ServerProfile('t', self.spec) test_server = mock.Mock(physical_id=None) res = profile.do_delete(test_server) self.assertTrue(res)
def test_do_recover_bad_operation(self, mock_base_recover): profile = server.ServerProfile('t', self.spec) node_obj = mock.Mock(physical_id='FAKE_ID') res = profile.do_recover(node_obj, operation=[{'name': 'BLAHBLAH'}]) self.assertFalse(res)
def setUp(self): super(TestAvailabilityZoneValidation, self).setUp() self.cc = mock.Mock() prof = server.ServerProfile('t', spec) prof._computeclient = self.cc self.profile = prof
def test_do_get_details_with_no_network_or_sg(self): cc = mock.Mock() profile = server.ServerProfile('t', self.spec) profile._computeclient = cc node_obj = mock.Mock(physical_id='FAKE_ID') # Test normal path nova_server = mock.Mock() nova_server.to_dict.return_value = { 'addresses': {}, 'flavor': { 'id': 'FAKE_FLAVOR', }, 'id': 'FAKE_ID', 'image': { 'id': 'FAKE_IMAGE', }, 'security_groups': [], } cc.server_get.return_value = nova_server res = profile.do_get_details(node_obj) expected = { 'flavor': 'FAKE_FLAVOR', 'id': 'FAKE_ID', 'image': 'FAKE_IMAGE', 'addresses': {}, 'security_groups': '', } self.assertEqual(expected, res) cc.server_get.assert_called_once_with('FAKE_ID')
def test__build_metadata(self): obj = mock.Mock(id='NODE_ID', cluster_id='') profile = server.ServerProfile('t', self.spec) res = profile._build_metadata(obj, None) self.assertEqual({'cluster_node_id': 'NODE_ID'}, res)
def test_do_leave_no_physical_id(self): # Test path where server not specified profile = server.ServerProfile('t', self.spec) profile._novaclient = mock.Mock() obj = mock.Mock() obj.physical_id = None self.assertIsNone(profile.do_leave(obj))
def test_do_leave_no_physical_id(self): profile = server.ServerProfile('t', self.spec) node_obj = mock.Mock(physical_id=None) res = profile.do_leave(node_obj) self.assertFalse(res)
def test__build_metadata_with_inputs(self): obj = mock.Mock(id='NODE_ID', cluster_id='') profile = server.ServerProfile('t', self.spec) res = profile._build_metadata(obj, {'foo': 'bar'}) self.assertEqual({'cluster_node_id': 'NODE_ID', 'foo': 'bar'}, res)
def test_do_join_server_not_created(self): # Test path where server not specified profile = server.ServerProfile('t', self.spec) node_obj = mock.Mock(physical_id=None) res = profile.do_join(node_obj, 'FAKE_CLUSTER_ID') self.assertFalse(res)
def test_do_recover_with_list(self, mock_rebuild): profile = server.ServerProfile('t', self.spec) node_obj = mock.Mock(physical_id='FAKE_ID') res = profile.do_recover(node_obj, operation=['REBUILD']) self.assertEqual(mock_rebuild.return_value, res) mock_rebuild.assert_called_once_with(node_obj)
def setUp(self): super(TestImageValidation, self).setUp() self.cc = mock.Mock() self.gc = mock.Mock() self.profile = server.ServerProfile('t', spec) self.profile._computeclient = self.cc self.profile._glanceclient = self.gc
def test_do_join_server_not_created(self): # Test path where server not specified profile = server.ServerProfile('t', self.spec) obj = mock.Mock() obj.physical_id = None res = profile.do_join(obj, 'FAKE_CLUSTER_ID') self.assertEqual({}, res)
def test_handle_reboot_no_physical_id(self): obj = mock.Mock(physical_id=None) profile = server.ServerProfile('t', self.spec) # do it res = profile.handle_reboot(obj, type='SOFT') self.assertFalse(res)
def test_handle_change_password_no_physical_id(self): obj = mock.Mock(physical_id=None) profile = server.ServerProfile('t', self.spec) # do it res = profile.handle_change_password(obj, admin_pass='******') self.assertFalse(res)
def test_do_get_details_no_physical_id(self): # Test path for server not created profile = server.ServerProfile('t', self.spec) node_obj = mock.Mock(physical_id='') self.assertEqual({}, profile.do_get_details(node_obj)) node_obj.physical_id = None self.assertEqual({}, profile.do_get_details(node_obj))
def test_do_get_details_with_more_network_or_sg(self): cc = mock.Mock() profile = server.ServerProfile('t', self.spec) profile._computeclient = cc node_obj = mock.Mock(physical_id='FAKE_ID') # Test normal path nova_server = mock.Mock() nova_server.to_dict.return_value = { 'addresses': { 'private': [{ 'version': 4, 'addr': '10.0.0.3', }, { 'version': 4, 'addr': '192.168.43.3' }], 'public': [{ 'version': 4, 'addr': '172.16.5.3', }] }, 'flavor': { 'id': 'FAKE_FLAVOR', }, 'id': 'FAKE_ID', 'image': { 'id': 'FAKE_IMAGE', }, 'security_groups': [{ 'name': 'default', }, { 'name': 'webserver', }], } cc.server_get.return_value = nova_server res = profile.do_get_details(node_obj) expected = { 'flavor': 'FAKE_FLAVOR', 'id': 'FAKE_ID', 'image': 'FAKE_IMAGE', 'addresses': { 'private': [{ 'version': 4, 'addr': '10.0.0.3', }, { 'version': 4, 'addr': '192.168.43.3' }], 'public': [{ 'version': 4, 'addr': '172.16.5.3', }] }, 'security_groups': ['default', 'webserver'], } self.assertEqual(expected, res) cc.server_get.assert_called_once_with('FAKE_ID')
def test_do_recover_fallback(self, mock_base_recover): profile = server.ServerProfile('t', self.spec) node_obj = mock.Mock(physical_id='FAKE_ID') res = profile.do_recover(node_obj, operation='blahblah') self.assertEqual(mock_base_recover.return_value, res) mock_base_recover.assert_called_once_with(node_obj, operation='blahblah')
def test_validate(self): cfg.CONF.set_override('default_action_timeout', 119) profile = server.ServerProfile('t', self.spec) ex = self.assertRaises(exception.InvalidSpec, profile.validate) self.assertEqual( "Value of the 'timeout' property must be lower than " "the upper limit (119).", six.text_type(ex))
def test_do_rebuild_no_physical_id(self): profile = server.ServerProfile('t', self.spec) profile._computeclient = mock.Mock() test_server = mock.Mock() test_server.physical_id = None # Test path where server doesn't already exist res = profile.do_rebuild(test_server) self.assertFalse(res)
def test_handle_change_password_no_password(self): obj = mock.Mock(physical_id='FAKE_ID') profile = server.ServerProfile('t', self.spec) profile._computeclient = mock.Mock() # do it res = profile.handle_change_password(obj) self.assertFalse(res)
def test_do_delete_no_physical_id(self): # Test path where server doesn't already exist nc = mock.Mock() profile = server.ServerProfile('t', self.spec) profile._novaclient = nc test_server = mock.Mock() test_server.physical_id = None self.assertTrue(profile.do_delete(test_server))
def test_handle_rebuild_no_physical_id(self): profile = server.ServerProfile('t', self.spec) profile._computeclient = mock.Mock() test_server = mock.Mock() test_server.physical_id = None res = profile.handle_rebuild(test_server) self.assertFalse(res)
def test_handle_reboot_bad_type(self): obj = mock.Mock(physical_id='FAKE_ID') profile = server.ServerProfile('t', self.spec) profile._computeclient = mock.Mock() # do it res = profile.handle_reboot(obj, type=['foo']) self.assertFalse(res) res = profile.handle_reboot(obj, type='foo') self.assertFalse(res)
def test_do_create_invalid_image(self): profile = server.ServerProfile('s2', self.spec) err = exc.EResourceCreation(type='server', message='boom') mock_image = self.patchobject(profile, '_validate_image', side_effect=err) node_obj = mock.Mock() self.assertRaises(exc.EResourceCreation, profile.do_create, node_obj) mock_image.assert_called_once_with(node_obj, 'FAKE_IMAGE', 'create')
def test_handle_change_password_bad_param(self): obj = mock.Mock(physical_id='FAKE_ID') profile = server.ServerProfile('t', self.spec) profile._computeclient = mock.Mock() # do it res = profile.handle_change_password(obj, admin_pass=['foo']) self.assertFalse(res) res = profile.handle_change_password(obj, foo='bar') self.assertFalse(res)
def test_do_create_port_and_fixedip_not_defined(self, mock_random_name): mock_random_name.return_value = '12345678' novaclient = mock.Mock() neutronclient = mock.Mock() test_server = mock.Mock() test_server.name = 'TEST_SERVER' test_server.cluster_id = 'FAKE_CLUSTER_ID' image = mock.Mock() image.id = 'FAKE_IMAGE_ID' novaclient.image_get_by_name.return_value = image flavor = mock.Mock() flavor.id = 'FAKE_FLAVOR_ID' novaclient.flavor_find.return_value = flavor net = mock.Mock() net.id = 'FAKE_NETWORK_ID' neutronclient.network_get.return_value = net nova_server = mock.Mock() nova_server.id = 'FAKE_NOVA_SERVER_ID' novaclient.server_create.return_value = nova_server spec = { 'type': 'os.nova.server', 'version': '1.0', 'properties': { 'flavor': 'FLAV', 'image': 'FAKE_IMAGE', 'key_name': 'FAKE_KEYNAME', 'name': 'FAKE_SERVER_NAME', 'networks': [{ 'network': 'FAKE_NET' }] } } profile = server.ServerProfile('s2', spec) profile._novaclient = novaclient profile._neutronclient = neutronclient server_id = profile.do_create(test_server) mock_random_name.assert_called_once_with(8) attrs = dict(auto_disk_config=True, flavorRef='FAKE_FLAVOR_ID', imageRef='FAKE_IMAGE_ID', key_name='FAKE_KEYNAME', metadata={'cluster': 'FAKE_CLUSTER_ID'}, name='TEST_SERVER-12345678', networks=[{ 'uuid': 'FAKE_NETWORK_ID' }], timeout=120) novaclient.server_create.assert_called_once_with(**attrs) self.assertEqual(nova_server.id, server_id)
def test__build_metadata_for_cluster_node(self): obj = mock.Mock(id='NODE_ID', cluster_id='CLUSTER_ID', index=123) profile = server.ServerProfile('t', self.spec) res = profile._build_metadata(obj, None) self.assertEqual( { 'cluster_id': 'CLUSTER_ID', 'cluster_node_id': 'NODE_ID', 'cluster_node_index': '123' }, res)
def test_do_create_invalid_keypair(self): profile = server.ServerProfile('s2', self.spec) self._stubout_profile(profile, mock_image=True, mock_flavor=True) err = exc.EResourceCreation(type='server', message='boom') mock_kp = self.patchobject(profile, '_validate_keypair', side_effect=err) node_obj = mock.Mock() self.assertRaises(exc.EResourceCreation, profile.do_create, node_obj) mock_kp.assert_called_once_with(node_obj, 'FAKE_KEYNAME', 'create')