import logging
from importlib.machinery import SourceFileLoader
-from . import parse, models, policies, pdp, authz
+from . import parse, models, policies, pdp, authz, slaves
logger = logging.getLogger("moonclient.scripts")
logger.info("Mapping: {}=>{}".format(args.filename[0], args.filename[1]))
# TODO: check if pdp_id and keystone_project_id exist
pdp.map_to_keystone(pdp_id=args.filename[0], keystone_project_id=args.filename[1])
+
+
+def get_slaves():
+ requests_log = logging.getLogger("requests.packages.urllib3")
+ requests_log.setLevel(logging.WARNING)
+ requests_log.propagate = True
+
+ args = parse.parse()
+ consul_host = args.consul_host
+ consul_port = 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)
+
+ for value in slaves.get_slaves().get('slaves', dict()):
+ if value['configured']:
+ print(" {} (configured)".format(value['name']))
+ else:
+ print(" {} (not configured)".format(value['name']))
+
+
+def set_slave():
+ requests_log = logging.getLogger("requests.packages.urllib3")
+ requests_log.setLevel(logging.WARNING)
+ requests_log.propagate = True
+
+ args = parse.parse()
+ consul_host = args.consul_host
+ consul_port = 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_name = "kubernetes-admin@kubernetes"
+ if args.filename:
+ slave_name = args.filename
+ 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']))
+
+
+def delete_slave():
+ requests_log = logging.getLogger("requests.packages.urllib3")
+ requests_log.setLevel(logging.WARNING)
+ requests_log.propagate = True
+
+ args = parse.parse()
+ consul_host = args.consul_host
+ consul_port = 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_name = "kubernetes-admin@kubernetes"
+ if args.filename:
+ slave_name = args.filename
+ for value in slaves.delete_slave(slave_name).get('slaves', dict()):
+ if value['configured']:
+ print(" {} (configured)".format(value['name']))
+ else:
+ print(" {} (not configured)".format(value['name']))
+
+
+
--- /dev/null
+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()
'moon_delete_pdp = python_moonclient.scripts:delete_pdp',
'moon_delete_policy = python_moonclient.scripts:delete_policy',
'moon_map_pdp_to_project = python_moonclient.scripts:map_pdp_to_project',
- 'moon_send_authz_to_wrapper = python_moonclient.scripts:send_authz_to_wrapper'
+ 'moon_send_authz_to_wrapper = python_moonclient.scripts:send_authz_to_wrapper',
+ 'moon_get_slaves = python_moonclient.scripts:get_slaves',
+ 'moon_set_slave = python_moonclient.scripts:set_slave',
+ 'moon_delete_slave = python_moonclient.scripts:delete_slave'
],
}