Add tags implementation
User can link resources to nodes with specific tags
This commit is contained in:
parent
ab9c4c2aa5
commit
d7313ef680
@ -9,8 +9,5 @@ extensions:
|
|||||||
- id: ansible
|
- id: ansible
|
||||||
version: '1.0.0'
|
version: '1.0.0'
|
||||||
|
|
||||||
define_tags:
|
tags:
|
||||||
- env/test_env
|
- env/test_env
|
||||||
- rack/1
|
|
||||||
- rack/2
|
|
||||||
- datacenter/1
|
|
||||||
|
@ -27,8 +27,8 @@ class AnsibleOrchestration(base.BaseExtension):
|
|||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super(AnsibleOrchestration, self).__init__(*args, **kwargs)
|
super(AnsibleOrchestration, self).__init__(*args, **kwargs)
|
||||||
|
|
||||||
self.resources = self.core.get_data('resources')
|
|
||||||
self.nodes = self._get_nodes()
|
self.nodes = self._get_nodes()
|
||||||
|
self.resources = self._get_resources_for_nodes(self.nodes)
|
||||||
|
|
||||||
def _get_nodes(self):
|
def _get_nodes(self):
|
||||||
nodes = []
|
nodes = []
|
||||||
@ -38,8 +38,29 @@ class AnsibleOrchestration(base.BaseExtension):
|
|||||||
|
|
||||||
return nodes
|
return nodes
|
||||||
|
|
||||||
def _get_resources_for_nodes(self):
|
def _get_resources_for_nodes(self, nodes):
|
||||||
pass
|
"""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
|
@property
|
||||||
def inventory(self):
|
def inventory(self):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user