def test_create_with_members(self): group1 = instance_group.InstanceGroup() group1.members = ['instance1', 'instance2'] group1.create(self.context) group2 = instance_group.InstanceGroup.get_by_uuid( self.context, group1.uuid) self.assertEqual(group1.id, group2.id) self.assertEqual(group1.members, group2.members)
def test_create_with_policies(self): group1 = instance_group.InstanceGroup() group1.policies = ['policy1', 'policy2'] group1.create(self.context) group2 = instance_group.InstanceGroup.get_by_uuid( self.context, group1.uuid) self.assertEqual(group1.id, group2.id) self.assertEqual(group1.policies, group2.policies)
def test_obj_make_compatible(self): group = instance_group.InstanceGroup(context=self.context, uuid='fake-uuid', name='fake-name') group.create() group_primitive = group.obj_to_primitive() group.obj_make_compatible(group_primitive, '1.6') self.assertEqual({}, group_primitive['metadetails'])
def test_destroy(self): values = self._get_default_values() result = self._create_instance_group(self.context, values) group = instance_group.InstanceGroup() group.id = result.id group.uuid = result.uuid group.destroy(self.context) self.assertRaises(exception.InstanceGroupNotFound, db.instance_group_get, self.context, result['uuid'])
def test_create_with_metadata(self): group1 = instance_group.InstanceGroup() metadata = {'foo': 'bar'} group1.metadetails = metadata group1.create(self.context) group2 = instance_group.InstanceGroup.get_by_uuid( self.context, group1.uuid) self.assertEqual(group1.id, group2.id) for key, value in metadata.iteritems(): self.assertEqual(value, group2.metadetails[key])
def _create_server_group(self): instance = fake_instance.fake_instance_obj(self.context, params={'host': 'hostA'}) group = instance_group_obj.InstanceGroup() group.name = 'pele' group.uuid = str(uuid.uuid4()) group.members = [instance.uuid] group.policies = ['anti-affinity'] return group
def test_destroy(self): values = self._get_default_values() result = self._create_instance_group(self.context, values) group = instance_group.InstanceGroup(context=self.context) group.id = result.id group.uuid = result.uuid fake_notifier.NOTIFICATIONS = [] group.destroy() self.assertEqual(1, len(fake_notifier.NOTIFICATIONS)) msg = fake_notifier.NOTIFICATIONS[0] self.assertEqual('servergroup.delete', msg.event_type) self.assertEqual(group.uuid, msg.payload['server_group_id']) self.assertRaises(exception.InstanceGroupNotFound, db.instance_group_get, self.context, result['uuid'])
def test_create(self): group1 = instance_group.InstanceGroup() group1.uuid = 'fake-uuid' group1.name = 'fake-name' group1.create(self.context) group2 = instance_group.InstanceGroup.get_by_uuid( self.context, group1.uuid) self.assertEqual(group1.id, group2.id) self.assertEqual(group1.uuid, group2.uuid) self.assertEqual(group1.name, group2.name) result = db.instance_group_get(self.context, group1.uuid) self.assertEqual(group1.id, result.id) self.assertEqual(group1.uuid, result.uuid) self.assertEqual(group1.name, result.name)
def test_create(self): group1 = instance_group.InstanceGroup(context=self.context) group1.uuid = 'fake-uuid' group1.name = 'fake-name' fake_notifier.NOTIFICATIONS = [] group1.create() self.assertEqual(1, len(fake_notifier.NOTIFICATIONS)) msg = fake_notifier.NOTIFICATIONS[0] self.assertEqual(group1.name, msg.payload['name']) self.assertEqual(group1.uuid, msg.payload['server_group_id']) self.assertEqual('servergroup.create', msg.event_type) group2 = instance_group.InstanceGroup.get_by_uuid(self.context, group1.uuid) self.assertEqual(group1.id, group2.id) self.assertEqual(group1.uuid, group2.uuid) self.assertEqual(group1.name, group2.name) result = db.instance_group_get(self.context, group1.uuid) self.assertEqual(group1.id, result.id) self.assertEqual(group1.uuid, result.uuid) self.assertEqual(group1.name, result.name)
def create(self, req, body): """Creates a new server group.""" context = _authorize_context(req) try: self._validate_input_body(body, 'server_group') except nova.exception.InvalidInput as e: raise exc.HTTPBadRequest(explanation=e.format_message()) vals = body['server_group'] sg = instance_group_obj.InstanceGroup() sg.project_id = context.project_id sg.user_id = context.user_id try: sg.name = vals.get('name') sg.policies = vals.get('policies') sg.create(context) except ValueError as e: raise exc.HTTPBadRequest(explanation=e) return {'server_group': self._format_server_group(context, sg)}
def test_server_group_members(self): # Create a server group. instance_group = group_obj.InstanceGroup( self.ctx, policy="anti-affinity") instance_group.name = "foo" instance_group.project_id = self.ctx.project_id instance_group.user_id = self.ctx.user_id instance_group.uuid = uuids.instance_group instance_group.create() # Quota for server group members is 1. server = self._build_server() hints = {'group': uuids.instance_group} req = {'server': server, 'os:scheduler_hints': hints} self.admin_api.post_server(req) # Attempt to create another server in the group should fail because we # are at quota. e = self.assertRaises( client.OpenStackApiException, self.admin_api.post_server, req) self.assertEqual(403, e.response.status_code) self.assertIn('server_group_members', e.response.text)
def test_recreate_fails(self): group = instance_group.InstanceGroup(context=self.context) group.create() self.assertRaises(exception.ObjectActionError, group.create)
def _create_instance_group(self, context, members): ig = instance_group_obj.InstanceGroup(name='fake_name', user_id='fake_user', project_id='fake', members=members) ig.create(context) return ig.uuid