示例#1
0
 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)
示例#2
0
 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'])
示例#4
0
 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'])
示例#5
0
 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])
示例#6
0
    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
示例#7
0
 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'])
示例#8
0
 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)
示例#9
0
 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)
示例#10
0
    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)}
示例#11
0
    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)
示例#12
0
 def test_recreate_fails(self):
     group = instance_group.InstanceGroup(context=self.context)
     group.create()
     self.assertRaises(exception.ObjectActionError, group.create)
示例#13
0
 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