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()
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')
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)
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())
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())