def show(): """Show the current cli, client, and user configs.""" _config = ClientConfigManager.get_config_or_default() Printer.print_header("Client config:") dict_tabulate(_config.to_dict()) _config = CliConfigManager.get_config_or_default() if _config: Printer.print_header("CLI config:") if _config.current_version: click.echo("Version {}".format(_config.current_version)) else: Printer.print_warning("This cli is not configured.") if _config.installation: config_installation = dict_to_tabulate( _config.installation, humanize_values=True, exclude_attrs=["hmac", "auth", "host"], ) dict_tabulate(config_installation) else: Printer.print_warning( "This cli is not connected to a Polyaxon Host.") _config = UserConfigManager.get_config_or_default() if _config: Printer.print_header("User config:") config_user = dict_to_tabulate( _config.to_dict(), humanize_values=True, exclude_attrs=["theme"], ) dict_tabulate(config_user)
def port_forward(port, namespace, deployment_type, release_name): """If you deploy Polyaxon using ClusterIP, you can use this command to access the gateway through `localhost:port`. """ from polyaxon.deploy.operators.kubectl import KubectlOperator if not port and deployment_type in [ DeploymentTypes.MICRO_K8S, DeploymentTypes.MINIKUBE, ]: port = 31833 port = port or 8000 namespace = namespace or "polyaxon" release_name = release_name or "polyaxon" kubectl = KubectlOperator() args = [ "port-forward", "-n", namespace, "svc/{}-polyaxon-gateway".format(release_name), "{}:80".format(port), ] try: _config = ClientConfigManager.get_config_or_default() except Exception as e: handle_cli_error(e, message="Polyaxon load configuration.") Printer.print_header( "You can reset your config by running: polyaxon config purge") sys.exit(1) _config.host = "http://localhost:{}".format(port) ClientConfigManager.set_config(_config) CliConfigManager.purge() AuthConfigManager.purge() UserConfigManager.purge() Printer.print_header("Client configuration is updated!") Printer.print_success("Polyaxon will be available at: {}".format( _config.host)) stdout = kubectl.execute(args=args, is_json=False, stream=settings.CLIENT_CONFIG.debug) click.echo(stdout)
def login(token, username, password): """Login to Polyaxon Cloud or Polyaxon EE.""" if not settings.CLI_CONFIG or settings.CLI_CONFIG.is_ce: handle_command_not_in_ce() polyaxon_client = PolyaxonClient() if username and not token: # Use user or email / password login if not password: password = click.prompt("Please enter your password", type=str, hide_input=True) password = password.strip() if not password: logger.info( "You entered an empty string. " "Please make sure you enter your password correctly.") sys.exit(1) try: body = V1Credentials(username=username, password=password) access_auth = polyaxon_client.auth_v1.login(body=body) except (ApiException, HTTPError) as e: AuthConfigManager.purge() UserConfigManager.purge() CliConfigManager.purge() handle_cli_error(e, message="Could not login.") sys.exit(1) if not access_auth.token: Printer.print_error("Failed to login") return else: if not token: token_url = get_dashboard_url(subpath="profile/token") click.confirm( "Authentication token page will now open in your browser. Continue?", abort=True, default=True, ) click.launch(token_url) logger.info("Please copy and paste the authentication token.") token = click.prompt( "This is an invisible field. Paste token and press ENTER", type=str, hide_input=True, ) if not token: logger.info( "Empty token received. " "Make sure your shell is handling the token appropriately.") logger.info( "See docs for help: http://polyaxon.com/docs/polyaxon_cli/commands/auth" ) return access_auth = polyaxon_sdk.models.V1Auth(token=token.strip(" ")) # Set user try: AuthConfigManager.purge() UserConfigManager.purge() polyaxon_client = PolyaxonClient(token=access_auth.token) user = polyaxon_client.users_v1.get_user() except (ApiException, HTTPError) as e: handle_cli_error(e, message="Could not load user info.") sys.exit(1) access_token = AccessTokenConfig(username=user.username, token=access_auth.token) AuthConfigManager.set_config(access_token) UserConfigManager.set_config(user) polyaxon_client.config.token = access_auth.token Printer.print_success("Login successful") set_versions_config(polyaxon_client=polyaxon_client, set_handler=True)
def logout(): """Logout from Polyaxon Cloud or Polyaxon EE.""" AuthConfigManager.purge() UserConfigManager.purge() CliConfigManager.purge() Printer.print_success("You are logged out")
def session_expired(): AuthConfigManager.purge() UserConfigManager.purge() CliConfigManager.purge() click.echo("Session has expired, please try again.") sys.exit(1)
def test_default_props(self): assert UserConfigManager.is_global() is True assert UserConfigManager.IS_POLYAXON_DIR is True assert UserConfigManager.CONFIG_FILE_NAME == ".user" assert UserConfigManager.CONFIG == V1User