import getpass from argparse import Namespace from typing import Any from mdrsclient.api import UsersApi from mdrsclient.commands.base import BaseCommand from mdrsclient.config import ConfigFile from mdrsclient.connection import MDRSConnection from mdrsclient.exceptions import MissingConfigurationException class LoginCommand(BaseCommand): @classmethod def register(cls, parsers: Any) -> None: login_parser = parsers.add_parser("login", help="login to remote host") login_parser.add_argument("-u", "--username", help="login username") login_parser.add_argument("-p", "--password", help="login password") login_parser.add_argument("remote", help="label of remote host") login_parser.set_defaults(func=cls.func) @classmethod def func(cls, args: Namespace) -> None: remote = str(args.remote) username = str(args.username) if args.username else input("Username: ").strip() password = str(args.password) if args.password else getpass.getpass("Password: ").strip() cls.login(remote, username, password) @classmethod def login(cls, remote: str, username: str, password: str) -> None: remote_host = cls._parse_remote_host(remote) from mdrsclient.client import MdrsClient client = MdrsClient.from_remote(remote_host) client.login(username, password) print("Login Successful")