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
|
import logging
from cliff.command import Command
from cliff.lister import Lister
from python_moonclient.cli.parser import Parser
from python_moonclient.core import models, policies, pdp
logger = logging.getLogger("moonclient.cli.pdps")
class PoliciesUtils:
def __init__(self):
pass
@staticmethod
def get_policy_id(policies, parsed_id, parsed_name):
_policies = policies.check_policy()
for _policy_key, _policy_value in _policies["policies"].items():
if _policy_key == parsed_id or _policy_value['name'] == parsed_name:
#logger.info("Found {}".format(_policy_key))
return _policy_key
return None
@staticmethod
def get_policy_name(policies, parsed_id, parsed_name):
_policies = policies.check_policy()
for _policy_key, _policy_value in _policies["policies"].items():
if _policy_key == parsed_id or _policy_value['name'] == parsed_name:
#logger.info("Found {}".format(_policy_key))
return _policy_value['name']
return None
class Policies(Lister):
"""show the list of existing policies"""
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):
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)
_policies = policies.check_policy()
return (('Key' , 'Name'),
((_policy_key, _policy_value['name']) for _policy_key, _policy_value in _policies["policies"].items())
)
class DeletePolicy(Command):
"""delete an existing policy"""
def get_parser(self, prog_name):
parser = super().get_parser(prog_name)
Parser.add_common_options(parser)
Parser.add_id_or_name_argument(parser)
return parser
def take_action(self, parsed_args):
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)
policy_id = PoliciesUtils.get_policy_id(policies,parsed_args.id, parsed_args.name)
policy_name = PoliciesUtils.get_policy_name(policies, parsed_args.id, parsed_args.name)
logger.info("Deleting: {}".format(policy_name))
pdp.delete_pdp(policy_id)
_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 == policy_id:
logger.error("Error in deleting {}".format(policy_id))
return (('Key', 'Value'),
((_policy_key, _policy_value) for _policy_key, _policy_value in _policies["policies"].items())
)
|