Skip to content

Commit

Permalink
Add instance_group_get_by_instance to db.api
Browse files Browse the repository at this point in the history
Add a new method to the db.api that lets you get an instance group by
instance UUID.

Change-Id: I3d2a019c8f97166ec55574c610d12f572afb2bd1
Related-bug: #1379451
  • Loading branch information
russellb committed Oct 13, 2014
1 parent b722bb7 commit b4e5a59
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 0 deletions.
5 changes: 5 additions & 0 deletions nova/db/api.py
Expand Up @@ -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)
Expand Down
19 changes: 19 additions & 0 deletions nova/db/sqlalchemy/api.py
Expand Up @@ -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.
Expand Down
12 changes: 12 additions & 0 deletions nova/tests/db/test_db_api.py
Expand Up @@ -7092,6 +7092,18 @@ def test_instance_group_update(self):
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):
Expand Down

0 comments on commit b4e5a59

Please sign in to comment.