aboutsummaryrefslogtreecommitdiffstats
path: root/python_moonclient/python_moonclient/cli/slaves.py
blob: 1880f4c2e6eae79f29bb753260d64f80787be089 (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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
import logging
from cliff.lister import Lister
from cliff.command import Command

from python_moonclient.core import models, policies, pdp, slaves
from python_moonclient.cli.parser import Parser

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


class SlavesUtils:
    def __init__(self):
        pass

    @staticmethod
    def get_slave_name(slaves, parsed_name):
        _slaves = slaves.get_slaves()
        for _slave_value in _slaves['slaves']:
            if _slave_value['name'] == parsed_name:
                logger.info("Found {}".format(_slave_value['name']))
                return _slave_value['name']
        return None


class Slaves(Lister):
    """show the list of slaves"""
    def get_parser(self, prog_name):
        parser = super().get_parser(prog_name)
        Parser.add_common_options(parser)
        return parser

    def take_action(self, parsed_args):
        requests_log = logging.getLogger("requests.packages.urllib3")
        requests_log.setLevel(logging.WARNING)
        requests_log.propagate = True

        consul_host = parsed_args.consul_host
        consul_port = parsed_args.consul_port

        models.init(consul_host, consul_port)
        policies.init(consul_host, consul_port)
        pdp.init(consul_host, consul_port)
        slaves.init(consul_host, consul_port)

        return (('Name', 'Configured'),
                ((value['name'], value['configured']) for value in slaves.get_slaves().get('slaves', dict()))
                )


class SetSlave(Command):
    """update an existing slave to a configured state"""
    def get_parser(self, prog_name):
        parser = super().get_parser(prog_name)
        Parser.add_common_options(parser)
        Parser.add_name_argument(parser)
        return parser

    def take_action(self, parsed_args):
        requests_log = logging.getLogger("requests.packages.urllib3")
        requests_log.setLevel(logging.WARNING)
        requests_log.propagate = True

        consul_host = parsed_args.consul_host
        consul_port = parsed_args.consul_port

        models.init(consul_host, consul_port)
        policies.init(consul_host, consul_port)
        pdp.init(consul_host, consul_port)
        slaves.init(consul_host, consul_port)

        slave_input_name = parsed_args.name
        if parsed_args.name is None:
            slave_input_name = "kubernetes-admin@kubernetes"
        slaves.set_slave(slave_input_name)

        #if slave_name is None:
        #    slave_name = "kubernetes-admin@kubernetes"

        #if parsed_args.name:
        #    slave_name = parsed_args.name
        print("    {} (configured=True)".format(slave_input_name))

        #for value in slaves.set_slave(slave_name).get('slaves', dict()):
        #    if value['configured']:
        #        print("    {} (configured)".format(value['name']))
        #    else:
        #        print("    {} (not configured)".format(value['name']))#


class DeleteSlave(Command):
    """update an existing slave to a unconfigured state"""
    def get_parser(self, prog_name):
        parser = super().get_parser(prog_name)
        Parser.add_common_options(parser)
        Parser.add_name_argument(parser)
        return parser

    def take_action(self, parsed_args):
        requests_log = logging.getLogger("requests.packages.urllib3")
        requests_log.setLevel(logging.WARNING)
        requests_log.propagate = True

        consul_host = parsed_args.consul_host
        consul_port = parsed_args.consul_port

        models.init(consul_host, consul_port)
        policies.init(consul_host, consul_port)
        pdp.init(consul_host, consul_port)
        slaves.init(consul_host, consul_port)

        slave_input_name = parsed_args.name
        if parsed_args.name is None:
            slave_input_name = "kubernetes-admin@kubernetes"

        slaves.delete_slave(slave_input_name)
        print("    {} (configured=False)".format(slave_input_name))