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:
parent
b722bb7884
commit
b4e5a59fac
|
@ -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)
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -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):
|
||||
|
|
Loading…
Reference in New Issue