import requests
from python_moonclient import config
-logger = logging.getLogger("moonforming.utils.policies")
+logger = logging.getLogger("python_moonclient.utils.pdp")
URL = None
-HEADER = None
+HEADERS = None
KEYSTONE_USER = None
KEYSTONE_PASSWORD = None
KEYSTONE_PROJECT = None
def init(consul_host, consul_port):
conf_data = config.get_config_data(consul_host, consul_port)
- global URL, HEADER, KEYSTONE_USER, KEYSTONE_PASSWORD, KEYSTONE_PROJECT, KEYSTONE_SERVER
+ global URL, HEADERS, KEYSTONE_USER, KEYSTONE_PASSWORD, KEYSTONE_PROJECT, KEYSTONE_SERVER
URL = "http://{}:{}".format(
conf_data['manager_host'],
conf_data['manager_port'])
# URL = URL + "{}"
- HEADER = {"content-type": "application/json"}
+ HEADERS = {"content-type": "application/json"}
KEYSTONE_USER = conf_data['keystone_user']
KEYSTONE_PASSWORD = conf_data['keystone_password']
KEYSTONE_PROJECT = conf_data['keystone_project']
def map_to_keystone(pdp_id, keystone_project_id):
- req = requests.patch(URL + "/pdp/{}".format(pdp_id), json={"keystone_project_id": keystone_project_id},
+ req = requests.patch(URL + "/pdp/{}".format(pdp_id),
+ json={"keystone_project_id": keystone_project_id},
headers=HEADERS)
assert req.status_code == 200
result = req.json()
if "result" in result:
assert result["result"]
assert pdp_id in result['pdps']
- assert "name" in result['pdps'][pdp_id]
- assert pdp_template["name"] == result['pdps'][pdp_id]["name"]
+ # assert "name" in result['pdps'][pdp_id]
+ # assert pdp_template["name"] == result['pdps'][pdp_id]["name"]
return pdp_id
def create_pdp(scenario, policy_id=None, project_id=None):
logger.info("Creating PDP {}".format(scenario.pdp_name))
projects = get_keystone_projects()
- if not project_id:
- for _project in projects['projects']:
- if _project['name'] == "admin":
- project_id = _project['id']
- assert project_id
+ # if not project_id:
+ # for _project in projects['projects']:
+ # if _project['name'] == "admin":
+ # project_id = _project['id']
+ # assert project_id
pdps = check_pdp()["pdps"]
for pdp_id, pdp_value in pdps.items():
if scenario.pdp_name == pdp_value["name"]:
logger.debug("Found existing PDP named {} (will add policy {})".format(scenario.pdp_name, policy_id))
return pdp_id
_pdp_id = add_pdp(name=scenario.pdp_name, policy_id=policy_id)
- map_to_keystone(pdp_id=_pdp_id, keystone_project_id=project_id)
+ # map_to_keystone(pdp_id=_pdp_id, keystone_project_id=project_id)
return _pdp_id
\ No newline at end of file
from . import parse, models, policies, pdp, authz
-logger = logging.getLogger("moonclient.scripts")
+logger = logging.getLogger("python_moonclient.scripts")
def get_keystone_projects():
projects = pdp.get_keystone_projects()
for _project in projects['projects']:
- print("{} {}".format(_project['id'], _project['name']))
+ print(" {} {}".format(_project['id'], _project['name']))
-def populate_values():
+def create_pdp():
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
- project_id = args.keystone_pid
+ # project_id = args.keystone_pid
models.init(consul_host, consul_port)
policies.init(consul_host, consul_port)
pdp.init(consul_host, consul_port)
if args.filename:
- print("Loading: {}".format(args.filename[0]))
+ logger.info("Loading: {}".format(args.filename[0]))
m = SourceFileLoader("scenario", args.filename[0])
scenario = m.load_module()
else:
model_id, meta_rule_list = models.create_model(scenario)
policy_id = policies.create_policy(scenario, model_id, meta_rule_list)
- pdp_id = pdp.create_pdp(scenario, policy_id=policy_id, project_id=project_id)
+ pdp_id = pdp.create_pdp(scenario, policy_id=policy_id)
-def send_authz():
+def send_authz_to_wrapper():
args = parse.parse()
consul_host = args.consul_host
consul_port = args.consul_port
pdp.init(consul_host, consul_port)
if args.filename:
- print("Loading: {}".format(args.filename[0]))
+ logger.info("Loading: {}".format(args.filename[0]))
m = SourceFileLoader("scenario", args.filename[0])
scenario = m.load_module()
)
if not args.dry_run:
authz.save_data(args.write, time_data)
+
+
+def get_pdp():
+ 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)
+
+ pdps = pdp.check_pdp()
+ for _pdp_key, _pdp_value in pdps["pdps"].items():
+ print(" {} {} ({})".format(_pdp_key, _pdp_value['name'],
+ _pdp_value['keystone_project_id']))
+
+
+def delete_pdp():
+ 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)
+
+ if args.filename:
+ logger.info("Deleting: {}".format(args.filename[0]))
+ _search = args.filename[0]
+ pdps = pdp.check_pdp()
+ for _pdp_key, _pdp_value in pdps["pdps"].items():
+ if _pdp_key == _search or _pdp_value['name'] == _search:
+ logger.info("Found {}".format(_pdp_key))
+ pdp.delete_pdp(_pdp_key)
+ pdps = pdp.check_pdp()
+ logger.info("Listing all PDP:")
+ for _pdp_key, _pdp_value in pdps["pdps"].items():
+ print(" {} {}".format(_pdp_key, _pdp_value['name']))
+ if _pdp_key == _search or _pdp_value['name'] == _search:
+ logger.error("Error in deleting {}".format(_search))
+
+
+def delete_policy():
+ 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)
+
+ if args.filename:
+ logger.info("Deleting: {}".format(args.filename[0]))
+ _search = args.filename[0]
+ _policies = policies.check_policy()
+ for _policy_key, _policy_value in _policies["policies"].items():
+ if _policy_key == _search or _policy_value['name'] == _search:
+ logger.info("Found {}".format(_policy_key))
+ pdp.delete_pdp(_policy_key)
+ _policies = policies.check_policy()
+ logger.info("Listing all Policies:")
+ for _policy_key, _policy_value in _policies["policies"].items():
+ print(" {} {}".format(_policy_key, _policy_value['name']))
+ if _policy_key == _search or _policy_value['name'] == _search:
+ logger.error("Error in deleting {}".format(_search))
+
+
+def map_pdp_to_project():
+ 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)
+
+ if args.filename and len(args.filename) == 2:
+ 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])