Merge "Use tags instead of roles"

This commit is contained in:
Jenkins 2017-03-24 11:48:45 +00:00 committed by Gerrit Code Review
commit 36b90eacdc
2 changed files with 10 additions and 2 deletions

View File

@ -868,7 +868,7 @@ class Cluster(NailgunObject):
@classmethod @classmethod
def get_roles_by_tag(cls, tag_name, instance): def get_roles_by_tag(cls, tag_name, instance):
roles = set() roles = set()
for role, meta in six.iteritems(cls.get_own_roles(instance)): for role, meta in six.iteritems(cls.get_roles(instance)):
if tag_name in meta.get('tags', {}): if tag_name in meta.get('tags', {}):
roles.add(role) roles.add(role)
return roles return roles
@ -1036,13 +1036,16 @@ class Cluster(NailgunObject):
return nodegroups[0] return nodegroups[0]
@classmethod @classmethod
def get_node_groups(cls, instance, noderoles): def get_node_groups(cls, instance, nodetags):
"""Returns node groups for given node roles. """Returns node groups for given node roles.
:param instance: a Cluster instance :param instance: a Cluster instance
:param noderoles: a list of node roles :param noderoles: a list of node roles
:returns: a query for list of NodeGroup instances :returns: a query for list of NodeGroup instances
""" """
noderoles = set()
for tag in nodetags:
noderoles.update(cls.get_roles_by_tag(tag, instance) or [tag])
psql_noderoles = sa.cast( psql_noderoles = sa.cast(
psql.array(noderoles), psql.array(noderoles),
psql.ARRAY(sa.String(consts.ROLE_NAME_MAX_SIZE))) psql.ARRAY(sa.String(consts.ROLE_NAME_MAX_SIZE)))

View File

@ -1098,6 +1098,7 @@ class TestClusterObject(BaseTestCase):
super(TestClusterObject, self).setUp() super(TestClusterObject, self).setUp()
self.cluster = self.env.create( self.cluster = self.env.create(
cluster_kwargs={'net_provider': 'neutron'}, cluster_kwargs={'net_provider': 'neutron'},
release_kwargs={'version': 'newton-10.0', 'api': False},
nodes_kwargs=[ nodes_kwargs=[
{'roles': ['controller']}, {'roles': ['controller']},
{'roles': ['controller']}, {'roles': ['controller']},
@ -1240,6 +1241,10 @@ class TestClusterObject(BaseTestCase):
controller.group_id, controller.group_id,
objects.Cluster.get_common_node_group(self.cluster, objects.Cluster.get_common_node_group(self.cluster,
['controller']).id) ['controller']).id)
self.assertEqual(
controller.group_id,
objects.Cluster.get_common_node_group(self.cluster,
['neutron']).id)
def test_get_node_group_multiple_return_same_group(self): def test_get_node_group_multiple_return_same_group(self):
group_id = self.env.create_node_group().json_body['id'] group_id = self.env.create_node_group().json_body['id']