| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- import argparse
- import logging
- import requests
- from gpustack.client.generated_clientset import ClientSet
- from gpustack.cmd.start import get_gpustack_env
- from gpustack.schemas.users import UserUpdate
- from gpustack.security import generate_secure_password
- logger = logging.getLogger(__name__)
- def setup_reset_admin_password_cmd(subparsers: argparse._SubParsersAction):
- parser: argparse.ArgumentParser = subparsers.add_parser(
- "reset-admin-password",
- help="Reset the admin user's password.",
- )
- parser.add_argument(
- "-s",
- "--server-url",
- type=str,
- help="Server to connect to.",
- default=get_gpustack_env("SERVER_URL"),
- )
- parser.add_argument(
- "--api-key",
- type=str,
- help="API Key to connect server.",
- default=get_gpustack_env("API_KEY"),
- )
- parser.set_defaults(func=run)
- def run(args):
- try:
- # default using api port instead of web port
- server_url = None
- server_urls = ["http://localhost", "http://localhost:30080"]
- if args.server_url is not None:
- server_url = args.server_url
- else:
- for url in server_urls:
- if test_url_accessible(url):
- server_url = url
- break
- if server_url is None:
- raise Exception(
- "Cannot connect to local gpustack server. Please specify --server-url"
- )
- api_key = None
- if args.api_key is not None:
- api_key = args.api_key
- client = ClientSet(
- base_url=server_url,
- api_key=api_key,
- )
- user_me = client.users.get("me")
- user_update = UserUpdate(**user_me.model_dump())
- reset_password = generate_secure_password()
- user_update.password = reset_password
- user_update.require_password_change = True
- client.users.update("me", user_update)
- print(f"Reset admin password: {reset_password}")
- except Exception as e:
- logger.fatal(f"Failed to reset admin password: {e}")
- def test_url_accessible(url: str) -> bool:
- try:
- resp = requests.get(f"{url}/healthz", timeout=2)
- return resp.status_code == 200
- except Exception:
- return False
|