blob: b1160a73a697064e516eb9fe46c91fc20c0c51ff [file] [log] [blame]
Ales Komarekef0eea32018-02-14 15:47:13 +01001# -*- coding: utf-8 -*-
2'''
3Salt modules to work with the Architect service.
4'''
5
6# Import python libs
7from __future__ import absolute_import
8import yaml
Ales Komarekef0eea32018-02-14 15:47:13 +01009import logging
Ales Komarekc312a292018-02-15 11:01:04 +010010from architect_client.libarchitect import ArchitectClient
Ales Komarekef0eea32018-02-14 15:47:13 +010011
12__virtualname__ = 'architect'
13
14logger = logging.getLogger(__name__)
15
16
17def __virtual__():
18 return __virtualname__
19
20
21def _client():
22 return ArchitectClient()
23
24
Ales Komarekc312a292018-02-15 11:01:04 +010025def inventory():
Ales Komarekef0eea32018-02-14 15:47:13 +010026 '''
Ales Komarekc312a292018-02-15 11:01:04 +010027 Get the Architect metadata inventory
Ales Komarekef0eea32018-02-14 15:47:13 +010028
29 CLI Examples:
30
31 .. code-block:: bash
32
Ales Komarekc312a292018-02-15 11:01:04 +010033 salt-call architect.inventory
Ales Komarekef0eea32018-02-14 15:47:13 +010034 '''
35 data = yaml.load(_client().get_data())
36
37 return data
38
39
Ales Komarekc312a292018-02-15 11:01:04 +010040def node_pillar(name):
Ales Komarekef0eea32018-02-14 15:47:13 +010041 '''
Ales Komarekc312a292018-02-15 11:01:04 +010042 Get the Architect node pillar for given Salt master.
Ales Komarekef0eea32018-02-14 15:47:13 +010043
44 CLI Examples:
45
46 .. code-block:: bash
47
Ales Komarekc312a292018-02-15 11:01:04 +010048 salt-call architect.node_pillar node.domain
Ales Komarekef0eea32018-02-14 15:47:13 +010049 '''
50
51 data = yaml.load(_client().get_data(name))
52
53 return {
54 name: data
55 }
56
57
Ales Komarekc312a292018-02-15 11:01:04 +010058def node_classify(name, data={}):
59 '''
60 CLassify node by given dictionary of parameters
61
62 CLI Examples:
63
64 .. code-block:: bash
65
66 salt-call architect.node_classify minion.net {'param1': 'value2'}
67 '''
68 output = _client().classify_node({
69 'name': name,
70 'data': data
71 })
72 return output
73
74
75def node_info():
Ales Komarekef0eea32018-02-14 15:47:13 +010076 '''
77 Get Salt minion metadata and forward it to the Architect master.
78
79 CLI Examples:
80
81 .. code-block:: bash
82
Ales Komarekc312a292018-02-15 11:01:04 +010083 salt-call architect.minion_info
Ales Komarekef0eea32018-02-14 15:47:13 +010084 '''
Ales Komarekef0eea32018-02-14 15:47:13 +010085 data = {
86 'pillar': __salt__['pillar.data'](),
87 'grain': __salt__['grains.items'](),
Ales Komarek0cbc6792018-02-14 17:12:37 +010088 'lowstate': __salt__['state.show_lowstate'](),
Ales Komarekef0eea32018-02-14 15:47:13 +010089 }
Ales Komarekc312a292018-02-15 11:01:04 +010090 return data