Add tags implementation

User can link resources to nodes with specific tags
This commit is contained in:
Evgeniy L 2015-04-06 17:11:05 -07:00
parent ab9c4c2aa5
commit d7313ef680
2 changed files with 25 additions and 7 deletions

View File

@ -9,8 +9,5 @@ extensions:
- id: ansible
version: '1.0.0'
define_tags:
tags:
- env/test_env
- rack/1
- rack/2
- datacenter/1

View File

@ -27,8 +27,8 @@ class AnsibleOrchestration(base.BaseExtension):
def __init__(self, *args, **kwargs):
super(AnsibleOrchestration, self).__init__(*args, **kwargs)
self.resources = self.core.get_data('resources')
self.nodes = self._get_nodes()
self.resources = self._get_resources_for_nodes(self.nodes)
def _get_nodes(self):
nodes = []
@ -38,8 +38,29 @@ class AnsibleOrchestration(base.BaseExtension):
return nodes
def _get_resources_for_nodes(self):
pass
def _get_resources_for_nodes(self, nodes):
"""Retrieves resources which required for nodes deployment"""
resources = []
for node in nodes:
node_tags = set(node.get('tags', []))
result_resources = self._get_resources_with_tags(node_tags)
resources.extend(result_resources)
return resources
def _get_resources_with_tags(self, tags):
resources = []
for resource in self.core.get_data('resources'):
resource_tags = set(resource.get('tags', []))
# If resource without tags, it means that it should
# not be assigned to any node
if not resource_tags:
continue
if resource_tags <= tags:
resources.append(resource)
return resources
@property
def inventory(self):