aboutsummaryrefslogtreecommitdiffstats
path: root/python_moonclient/python_moonclient/slaves.py
blob: 3554341d2247219b4f568c6a1d0755017b221c64 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import logging
import requests
import copy
from . import config

logger = logging.getLogger("moonclient.slaves")


URL = None
HEADERS = None


def init(consul_host, consul_port):
    conf_data = config.get_config_data(consul_host, consul_port)
    global URL, HEADERS
    URL = "http://{}:{}".format(
        conf_data['manager_host'],
        conf_data['manager_port'])
    URL = URL + "{}"
    HEADERS = {"content-type": "application/json"}


def get_slaves():
    req = requests.get(URL.format("/slaves"))
    assert req.status_code == 200
    result = req.json()
    assert type(result) is dict
    assert "slaves" in result
    return result


def set_slave(name):
    slaves = get_slaves().get("slaves", [])
    names = map(lambda x: x['name'], slaves)
    assert name in names
    req = requests.patch(URL.format("/slaves/{}".format(name)),
                         headers=HEADERS,
                         json={
                            "op": "replace",
                            "variable": "configured",
                            "value": True
                        })
    assert req.status_code == 200
    result = req.json()
    assert type(result) is dict
    assert "slaves" in result
    return get_slaves()


def delete_slave(name):
    slaves = get_slaves().get("slaves", [])
    names = map(lambda x: x['name'], slaves)
    assert name in names
    req = requests.patch(URL.format("/slaves/{}".format(name)),
                         headers=HEADERS,
                         json={
                            "op": "replace",
                            "variable": "configured",
                            "value": False
                        })
    return get_slaves()