- # -*- 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
|