Add instance_group_get_by_instance to db.api

Add a new method to the db.api that lets you get an instance group by
instance UUID.

Change-Id: I3d2a019c8f97166ec55574c610d12f572afb2bd1
Related-bug: #1379451
This commit is contained in:
Russell Bryant 2014-10-09 19:31:39 +00:00
parent b722bb7884
commit b4e5a59fac
3 changed files with 36 additions and 0 deletions

View File

@ -781,6 +781,11 @@ def instance_group_get(context, group_uuid):
return IMPL.instance_group_get(context, group_uuid)
def instance_group_get_by_instance(context, instance_uuid):
"""Get the group an instance is a member of."""
return IMPL.instance_group_get_by_instance(context, instance_uuid)
def instance_group_update(context, group_uuid, values):
"""Update the attributes of an group."""
return IMPL.instance_group_update(context, group_uuid, values)

View File

@ -5932,6 +5932,25 @@ def instance_group_get(context, group_uuid):
return group
def instance_group_get_by_instance(context, instance_uuid):
session = get_session()
with session.begin():
group_member = model_query(context, models.InstanceGroupMember,
session=session).\
filter_by(instance_id=instance_uuid).\
first()
if not group_member:
raise exception.InstanceGroupNotFound(group_uuid='')
group = _instance_group_get_query(context, models.InstanceGroup,
models.InstanceGroup.id,
group_member.group_id,
session=session).first()
if not group:
raise exception.InstanceGroupNotFound(
group_uuid=group_member.group_id)
return group
def instance_group_update(context, group_uuid, values):
"""Update the attributes of an group.

View File

@ -7092,6 +7092,18 @@ class InstanceGroupDBApiTestCase(test.TestCase, ModelsObjectComparatorMixin):
db.instance_group_update, self.context,
'invalid_id', values)
def test_instance_group_get_by_instance(self):
values = self._get_default_values()
group1 = self._create_instance_group(self.context, values)
members = ['instance_id1', 'instance_id2']
db.instance_group_members_add(self.context, group1.uuid, members)
group2 = db.instance_group_get_by_instance(self.context,
'instance_id1')
self.assertEqual(group2.uuid, group1.uuid)
class InstanceGroupMembersDBApiTestCase(InstanceGroupDBApiTestCase):
def test_instance_group_members_on_create(self):