| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- import argparse
- import logging
- import sys
- from gpustack.cmd.start import get_gpustack_env
- from gpustack.logging import setup_logging
- from gpustack.worker.tools_manager import ToolsManager
- logger = logging.getLogger(__name__)
- def setup_download_tools_cmd(subparsers: argparse._SubParsersAction):
- parser: argparse.ArgumentParser = subparsers.add_parser(
- "download-tools",
- description="Download dependency tools.",
- )
- parser.add_argument(
- "--tools-download-base-url",
- type=str,
- help="Base URL to download dependency tools.",
- default=get_gpustack_env("TOOLS_DOWNLOAD_BASE_URL"),
- )
- parser.add_argument(
- "--save-archive",
- type=str,
- help="Path to save downloaded tools as a tar archive.",
- default=get_gpustack_env("SAVE_ARCHIVE"),
- )
- parser.add_argument(
- "--load-archive",
- type=str,
- help="Path to load downloaded tools from a tar archive, instead of downloading.",
- default=get_gpustack_env("LOAD_ARCHIVE"),
- )
- parser.add_argument(
- "--system",
- type=str,
- help="Operating system to download tools for. Default is the current OS. (e.g. linux, windows, darwin)",
- default=get_gpustack_env("SYSTEM"),
- )
- parser.add_argument(
- "--arch",
- type=str,
- help="Architecture to download tools for. Default is the current architecture. (e.g. amd64, arm64)",
- default=get_gpustack_env("ARCH"),
- )
- parser.set_defaults(func=run)
- def run(args):
- setup_logging(False)
- try:
- verify(args)
- tools_download_base_url = None
- if args.tools_download_base_url:
- tools_download_base_url = args.tools_download_base_url.rstrip("/")
- tools_manager = ToolsManager(
- tools_download_base_url=tools_download_base_url,
- system=args.system,
- arch=args.arch,
- )
- if args.load_archive:
- tools_manager.load_archive(args.load_archive)
- return
- tools_manager.remove_cached_tools()
- tools_manager.prepare_tools()
- if args.save_archive:
- tools_manager.save_archive(args.save_archive)
- except KeyboardInterrupt:
- pass
- except ValueError as e:
- logger.fatal(e)
- sys.exit(1)
- except Exception as e:
- logger.fatal(f"Failed to download tools: {e}")
- sys.exit(1)
- def verify(args):
- if args.load_archive and args.tools_download_base_url:
- raise ValueError(
- "Cannot specify both load-archive and tools-download-base-url."
- )
- if args.save_archive and args.load_archive:
- raise ValueError("Cannot specify both save-archive and load-archive.")
|