Esempio n. 1
0
def get_harbor_client(api_version=None,
                      username=None,
                      password=None,
                      project=None,
                      base_url=None):
    if not api_version:
        api_version = api_versions.get_api_version(
            DEFAULT_MAJOR_OS_COMPUTE_API_VERSION)
    if not username:
        username = utils.env('HARBOR_USERNAME')
    if not password:
        password = utils.env('HARBOR_PASSWORD')
    if not project:
        project = utils.env('HARBOR_PROJECT')
    if not base_url:
        base_url = utils.env('HARBOR_URL')

    clients = client.Client(api_version, username, password, project, base_url)
    try:
        clients.authenticate()
    except exc.Unauthorized:
        raise exc.CommandError("Invalid Harbor credentials.")
    except exc.AuthorizationFailure as e:
        raise exc.CommandError("Unable to authorize user '%s': %s" %
                               (username, e))
    return clients
Esempio n. 2
0
 def do_help(self, args):
     """Display help about this program or one of its subcommands."""
     if args.command:
         if args.command in self.subcommands:
             self.subcommands[args.command].print_help()
         else:
             raise exc.CommandError(
                 ("'%s' is not a valid subcommand") % args.command)
     else:
         self.parser.print_help()
Esempio n. 3
0
def do_get_conf(cs, args):
    """Get system configurations."""
    try:
        configurations = cs.configurations.get()
    except exp.Forbidden:
        raise exp.CommandError("Only admin can perform this operation.")
    data = []
    for key in configurations:
        item = {}
        item['name'] = key
        item['value'] = configurations[key]['value']
        item['editable'] = configurations[key]['editable']
        data.append(item)
    utils.print_list(data, ['name', 'value', 'editable'], sortby='name')
Esempio n. 4
0
def do_user_list(cs, args):
    """Get registered users of Harbor."""
    try:
        users = harbor_client.users.list()
    except exp.Forbidden as e:
        raise exp.CommandError(e.message)
    # Get admin user
    try:
        admin = harbor_client.users.get(1)
        users.append(admin)
    except Exception:
        pass
    fields = ['user_id', 'username', 'is_admin',
              'email', 'realname', 'comment']
    formatters = {"is_admin": 'has_admin_role'}
    utils.print_list(users, fields, formatters=formatters, sortby=args.sortby)
Esempio n. 5
0
    def main(self, argv):
        # Parse args once to find version and debug settings
        parser = self.get_base_parser(argv)
        (args, args_list) = parser.parse_known_args(argv)
        self.setup_debugging(args.debug)
        do_help = ('help' in argv) or ('--help'
                                       in argv) or ('-h' in argv) or not argv

        # bash-completion should not require authentication
        if not args.os_api_version:
            api_version = api_versions.get_api_version(
                DEFAULT_MAJOR_OS_COMPUTE_API_VERSION)
        else:
            api_version = api_versions.get_api_version(args.os_api_version)

        os_username = args.os_username
        os_password = args.os_password
        os_project = args.os_project
        os_baseurl = args.os_baseurl
        subcommand_parser = self.get_subcommand_parser(api_version,
                                                       do_help=do_help,
                                                       argv=argv)
        self.parser = subcommand_parser

        if args.help or not argv:
            subcommand_parser.print_help()
            return 0

        args = subcommand_parser.parse_args(argv)

        # Short-circuit and deal with help right away.
        if args.func == self.do_help:
            self.do_help(args)
            return 0
        elif args.func == self.do_bash_completion:
            self.do_bash_completion(args)
            return 0
        insecure = args.insecure
        cacert = args.os_cacert
        if not os_baseurl:
            print(("ERROR (CommandError): You must provide harbor url via "
                   "either --os-baseurl or env[HARBOR_URL]."))
            return 1
        if not os_username:
            print(("ERROR (CommandError): You must provide username via "
                   "either --os-username or env[HARBOR_USERNAME]."))
            return 1
        if not os_project:
            print(("ERROR (CommandError): You must provide project via "
                   "either --os-project or env[HARBOR_PROJECT]."))
            return 1
        while not os_password:
            os_password = getpass.getpass("password: "******"Invalid Harbor credentials.")
        except exc.AuthorizationFailure as e:
            raise exc.CommandError("Unable to authorize user '%s': %s" %
                                   (os_username, e))
        args.func(self.cs, args)
        if args.timings:
            self._dump_timings(self.times + self.cs.get_timings())