blob: b1160a73a697064e516eb9fe46c91fc20c0c51ff [file] [log] [blame]
# -*- coding: utf-8 -*-
'''
Salt modules to work with the Architect service.
'''
# Import python libs
from __future__ import absolute_import
import yaml
import logging
from architect_client.libarchitect import ArchitectClient
__virtualname__ = 'architect'
logger = logging.getLogger(__name__)
def __virtual__():
return __virtualname__
def _client():
return ArchitectClient()
def inventory():
'''
Get the Architect metadata inventory
CLI Examples:
.. code-block:: bash
salt-call architect.inventory
'''
data = yaml.load(_client().get_data())
return data
def node_pillar(name):
'''
Get the Architect node pillar for given Salt master.
CLI Examples:
.. code-block:: bash
salt-call architect.node_pillar node.domain
'''
data = yaml.load(_client().get_data(name))
return {
name: data
}
def node_classify(name, data={}):
'''
CLassify node by given dictionary of parameters
CLI Examples:
.. code-block:: bash
salt-call architect.node_classify minion.net {'param1': 'value2'}
'''
output = _client().classify_node({
'name': name,
'data': data
})
return output
def node_info():
'''
Get Salt minion metadata and forward it to the Architect master.
CLI Examples:
.. code-block:: bash
salt-call architect.minion_info
'''
data = {
'pillar': __salt__['pillar.data'](),
'grain': __salt__['grains.items'](),
'lowstate': __salt__['state.show_lowstate'](),
}
return data