aboutsummaryrefslogtreecommitdiffstats
path: root/python_moonclient/python_moonclient/cli/projects.py
blob: c4653a51aa9596b91f808a538e7230439dd8a738 (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
import logging
from python_moonclient.core import models, policies, pdp
from python_moonclient.cli.parser import Parser
from cliff.lister import Lister

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


class ProjectsUtils:
    def __init__(self):
        pass

    @staticmethod
    def get_project_id(pdp, parsed_id, parsed_name):
        projects = pdp.get_keystone_projects()
        for _project_value in projects['projects']:
            if _project_value['id'] == parsed_id or _project_value['name'] == parsed_name:
                #logger.info("Found project : [key='{}' , name='{}']".format(_project_value['id'], _project_value['name']))
                return _project_value['id']
        return None

    @staticmethod
    def get_project_name(pdp, parsed_id, parsed_name):
        projects = pdp.get_keystone_projects()
        for _project_value in projects['projects']:
            if _project_value['id'] == parsed_id or _project_value['name'] == parsed_name:
                #logger.info("Found project : [key='{}' , name='{}']".format(_project_value['id'], _project_value['name']))
                return _project_value['name']
        return None


class Projects(Lister):
    """show the list of projects"""

    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)

        projects = pdp.get_keystone_projects()

        return (('Id' , 'Name'),
                   ((_project['id'],  _project['name']) for _project in projects['projects'])
               )