Пример #1
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()
Пример #2
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')
Пример #3
0
def do_user_list(cs, args):
    """Get registered users of Harbor."""
    try:
        users = cs.users.list()
    except exp.Forbidden as e:
        raise exp.CommandError(e.message)
    # Get admin user
    try:
        admin = cs.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)
Пример #4
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_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

        # Update username & password from subcommand if given
        if hasattr(args, "username") and args.username:
            os_username = args.username
            os_password = args.password
        # Recreate client object with discovered version.
        self.cs = client.Client(
            api_version,
            os_username,
            os_password,
            os_baseurl,
            timings=args.timings,
            http_log_debug=args.debug,
            timeout=args.timeout,
        )

        try:
            self.cs.authenticate()
        except exc.Unauthorized:
            raise exc.CommandError(_("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())
Пример #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())