|
|
@@ -0,0 +1,74 @@ |
|
|
|
# -*- coding: utf-8 -*- |
|
|
|
''' |
|
|
|
Salt modules to work with the Architect service. |
|
|
|
''' |
|
|
|
|
|
|
|
# Import python libs |
|
|
|
from __future__ import absolute_import |
|
|
|
import yaml |
|
|
|
from architect_client.libarchitect import ArchitectClient |
|
|
|
import logging |
|
|
|
|
|
|
|
__virtualname__ = 'architect' |
|
|
|
|
|
|
|
logger = logging.getLogger(__name__) |
|
|
|
|
|
|
|
|
|
|
|
def __virtual__(): |
|
|
|
return __virtualname__ |
|
|
|
|
|
|
|
|
|
|
|
def _client(): |
|
|
|
return ArchitectClient() |
|
|
|
|
|
|
|
|
|
|
|
def get_inventory(): |
|
|
|
''' |
|
|
|
Get the Architect metadata inventory for given Salt master. |
|
|
|
|
|
|
|
CLI Examples: |
|
|
|
|
|
|
|
.. code-block:: bash |
|
|
|
|
|
|
|
salt-call architect.get_inventory |
|
|
|
''' |
|
|
|
data = yaml.load(_client().get_data()) |
|
|
|
|
|
|
|
return data |
|
|
|
|
|
|
|
|
|
|
|
def get_node(name): |
|
|
|
''' |
|
|
|
Get the Architect node metadata for given Salt master. |
|
|
|
|
|
|
|
CLI Examples: |
|
|
|
|
|
|
|
.. code-block:: bash |
|
|
|
|
|
|
|
salt-call architect.get_node node.domain |
|
|
|
''' |
|
|
|
|
|
|
|
data = yaml.load(_client().get_data(name)) |
|
|
|
|
|
|
|
return { |
|
|
|
name: data |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
def collect_minion_info(): |
|
|
|
''' |
|
|
|
Get Salt minion metadata and forward it to the Architect master. |
|
|
|
|
|
|
|
CLI Examples: |
|
|
|
|
|
|
|
.. code-block:: bash |
|
|
|
|
|
|
|
salt-call architect.collect_minion_info |
|
|
|
''' |
|
|
|
|
|
|
|
data = { |
|
|
|
'pillar': __salt__['pillar.data'](), |
|
|
|
'grain': __salt__['grains.items'](), |
|
|
|
} |
|
|
|
output = _client().push_salt_minion({data['grain']['id']: data}) |
|
|
|
return output |