# -*- 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'](), 'lowstate': __salt__['state.show_lowstate'](), } output = _client().push_salt_minion({data['grain']['id']: data}) return output