diff --git a/conftest.py b/conftest.py index d43484a57..cc89157a9 100644 --- a/conftest.py +++ b/conftest.py @@ -7,8 +7,7 @@ try: from jumpstarter.common.utils import serve - from jumpstarter.config import ExporterConfigV1Alpha1DriverInstance - from jumpstarter.config.exporter import ExporterConfigV1Alpha1 + from jumpstarter.config.exporter import ExporterConfigV1Alpha1, ExporterConfigV1Alpha1DriverInstance except ImportError: # some packages in the workspace does not depend on jumpstarter pass diff --git a/docs/source/api-reference/drivers/dbus.md b/docs/source/api-reference/drivers/dbus.md index 952811798..9348197c8 100644 --- a/docs/source/api-reference/drivers/dbus.md +++ b/docs/source/api-reference/drivers/dbus.md @@ -18,7 +18,7 @@ Example configuration: ```{doctest} :hide: ->>> from jumpstarter.config import ExporterConfigV1Alpha1DriverInstance +>>> from jumpstarter.config.exporter import ExporterConfigV1Alpha1DriverInstance >>> ExporterConfigV1Alpha1DriverInstance.from_path("source/api-reference/drivers/dbus.yaml").instantiate() DbusNetwork(...) ``` diff --git a/docs/source/api-reference/drivers/proxy.md b/docs/source/api-reference/drivers/proxy.md index dd7bacf82..610ab2fba 100644 --- a/docs/source/api-reference/drivers/proxy.md +++ b/docs/source/api-reference/drivers/proxy.md @@ -24,7 +24,7 @@ Example configuration: ``` ```{testsetup} * -from jumpstarter.config import ExporterConfigV1Alpha1DriverInstance +from jumpstarter.config.exporter import ExporterConfigV1Alpha1DriverInstance from jumpstarter.common.utils import serve instance = serve( diff --git a/packages/jumpstarter-cli-admin/jumpstarter_cli_admin/__init__.py b/packages/jumpstarter-cli-admin/jumpstarter_cli_admin/__init__.py index 7badfbcc7..3c643268c 100644 --- a/packages/jumpstarter-cli-admin/jumpstarter_cli_admin/__init__.py +++ b/packages/jumpstarter-cli-admin/jumpstarter_cli_admin/__init__.py @@ -1,5 +1,6 @@ import asyncclick as click -from jumpstarter_cli_common import AliasedGroup, version +from jumpstarter_cli_common.alias import AliasedGroup +from jumpstarter_cli_common.version import version from .create import create from .delete import delete diff --git a/packages/jumpstarter-cli-admin/jumpstarter_cli_admin/create.py b/packages/jumpstarter-cli-admin/jumpstarter_cli_admin/create.py index cbd95667b..45c167b36 100644 --- a/packages/jumpstarter-cli-admin/jumpstarter_cli_admin/create.py +++ b/packages/jumpstarter-cli-admin/jumpstarter_cli_admin/create.py @@ -2,8 +2,8 @@ from typing import Optional import asyncclick as click -from jumpstarter_cli_common import ( - AliasedGroup, +from jumpstarter_cli_common.alias import AliasedGroup +from jumpstarter_cli_common.opt import ( OutputMode, OutputType, opt_context, @@ -22,7 +22,9 @@ handle_k8s_api_exception, handle_k8s_config_exception, ) -from jumpstarter.config import ClientConfigV1Alpha1, ExporterConfigV1Alpha1, UserConfigV1Alpha1 +from jumpstarter.config.client import ClientConfigV1Alpha1 +from jumpstarter.config.exporter import ExporterConfigV1Alpha1 +from jumpstarter.config.user import UserConfigV1Alpha1 opt_oidc_username = click.option("--oidc-username", "oidc_username", type=str, default=None, help="OIDC username") diff --git a/packages/jumpstarter-cli-admin/jumpstarter_cli_admin/create_test.py b/packages/jumpstarter-cli-admin/jumpstarter_cli_admin/create_test.py index 5781321d2..e5ca6e6f2 100644 --- a/packages/jumpstarter-cli-admin/jumpstarter_cli_admin/create_test.py +++ b/packages/jumpstarter-cli-admin/jumpstarter_cli_admin/create_test.py @@ -14,12 +14,9 @@ from kubernetes_asyncio.client.models import V1ObjectMeta, V1ObjectReference from .create import create -from jumpstarter.config import ( - ClientConfigV1Alpha1, - ClientConfigV1Alpha1Drivers, - ExporterConfigV1Alpha1, - ObjectMeta, -) +from jumpstarter.config.client import ClientConfigV1Alpha1, ClientConfigV1Alpha1Drivers +from jumpstarter.config.common import ObjectMeta +from jumpstarter.config.exporter import ExporterConfigV1Alpha1 # Generate a random client name CLIENT_NAME = uuid.uuid4().hex diff --git a/packages/jumpstarter-cli-admin/jumpstarter_cli_admin/delete.py b/packages/jumpstarter-cli-admin/jumpstarter_cli_admin/delete.py index 9b86d8f9f..e1942f8ca 100644 --- a/packages/jumpstarter-cli-admin/jumpstarter_cli_admin/delete.py +++ b/packages/jumpstarter-cli-admin/jumpstarter_cli_admin/delete.py @@ -2,8 +2,8 @@ from typing import Optional import asyncclick as click -from jumpstarter_cli_common import ( - AliasedGroup, +from jumpstarter_cli_common.alias import AliasedGroup +from jumpstarter_cli_common.opt import ( NameOutputType, opt_context, opt_kubeconfig, @@ -20,7 +20,9 @@ handle_k8s_api_exception, handle_k8s_config_exception, ) -from jumpstarter.config import ClientConfigV1Alpha1, ExporterConfigV1Alpha1, UserConfigV1Alpha1 +from jumpstarter.config.client import ClientConfigV1Alpha1 +from jumpstarter.config.exporter import ExporterConfigV1Alpha1 +from jumpstarter.config.user import UserConfigV1Alpha1 @click.group(cls=AliasedGroup) diff --git a/packages/jumpstarter-cli-admin/jumpstarter_cli_admin/delete_test.py b/packages/jumpstarter-cli-admin/jumpstarter_cli_admin/delete_test.py index daf4a4820..c1eb3ce64 100644 --- a/packages/jumpstarter-cli-admin/jumpstarter_cli_admin/delete_test.py +++ b/packages/jumpstarter-cli-admin/jumpstarter_cli_admin/delete_test.py @@ -11,14 +11,10 @@ from kubernetes_asyncio.client.models import V1ObjectMeta, V1ObjectReference from .delete import delete -from jumpstarter.config import ( - ClientConfigV1Alpha1, - ClientConfigV1Alpha1Drivers, - ExporterConfigV1Alpha1, - ObjectMeta, - UserConfigV1Alpha1, - UserConfigV1Alpha1Config, -) +from jumpstarter.config.client import ClientConfigV1Alpha1, ClientConfigV1Alpha1Drivers +from jumpstarter.config.common import ObjectMeta +from jumpstarter.config.exporter import ExporterConfigV1Alpha1 +from jumpstarter.config.user import UserConfigV1Alpha1, UserConfigV1Alpha1Config # Generate a random client name CLIENT_NAME = "test" diff --git a/packages/jumpstarter-cli-admin/jumpstarter_cli_admin/get.py b/packages/jumpstarter-cli-admin/jumpstarter_cli_admin/get.py index a5358b1e5..28d913272 100644 --- a/packages/jumpstarter-cli-admin/jumpstarter_cli_admin/get.py +++ b/packages/jumpstarter-cli-admin/jumpstarter_cli_admin/get.py @@ -2,8 +2,8 @@ from typing import Optional import asyncclick as click -from jumpstarter_cli_common import ( - AliasedGroup, +from jumpstarter_cli_common.alias import AliasedGroup +from jumpstarter_cli_common.opt import ( OutputType, opt_context, opt_kubeconfig, diff --git a/packages/jumpstarter-cli-admin/jumpstarter_cli_admin/import_res.py b/packages/jumpstarter-cli-admin/jumpstarter_cli_admin/import_res.py index 08f5bfb36..c9513cb6d 100644 --- a/packages/jumpstarter-cli-admin/jumpstarter_cli_admin/import_res.py +++ b/packages/jumpstarter-cli-admin/jumpstarter_cli_admin/import_res.py @@ -1,7 +1,7 @@ from typing import Optional import asyncclick as click -from jumpstarter_cli_common import ( +from jumpstarter_cli_common.opt import ( PathOutputType, opt_context, opt_kubeconfig, @@ -17,11 +17,9 @@ handle_k8s_api_exception, handle_k8s_config_exception, ) -from jumpstarter.config import ( - ClientConfigV1Alpha1, - UserConfigV1Alpha1, -) +from jumpstarter.config.client import ClientConfigV1Alpha1 from jumpstarter.config.exporter import ExporterConfigV1Alpha1 +from jumpstarter.config.user import UserConfigV1Alpha1 @click.group("import") diff --git a/packages/jumpstarter-cli-admin/jumpstarter_cli_admin/import_res_test.py b/packages/jumpstarter-cli-admin/jumpstarter_cli_admin/import_res_test.py index 4c6fd1a69..7082f57a2 100644 --- a/packages/jumpstarter-cli-admin/jumpstarter_cli_admin/import_res_test.py +++ b/packages/jumpstarter-cli-admin/jumpstarter_cli_admin/import_res_test.py @@ -10,12 +10,9 @@ ) from .import_res import import_res -from jumpstarter.config import ( - ClientConfigV1Alpha1, - ClientConfigV1Alpha1Drivers, - ExporterConfigV1Alpha1, - ObjectMeta, -) +from jumpstarter.config.client import ClientConfigV1Alpha1, ClientConfigV1Alpha1Drivers +from jumpstarter.config.common import ObjectMeta +from jumpstarter.config.exporter import ExporterConfigV1Alpha1 # Generate a random client name CLIENT_NAME = uuid.uuid4().hex diff --git a/packages/jumpstarter-cli-admin/jumpstarter_cli_admin/install.py b/packages/jumpstarter-cli-admin/jumpstarter_cli_admin/install.py index f52a98579..0c14fdf1e 100644 --- a/packages/jumpstarter-cli-admin/jumpstarter_cli_admin/install.py +++ b/packages/jumpstarter-cli-admin/jumpstarter_cli_admin/install.py @@ -1,7 +1,8 @@ from typing import Literal, Optional import asyncclick as click -from jumpstarter_cli_common import get_client_version, opt_context, opt_kubeconfig +from jumpstarter_cli_common.opt import opt_context, opt_kubeconfig +from jumpstarter_cli_common.version import get_client_version from jumpstarter_kubernetes import get_ip_address, helm_installed, install_helm_chart diff --git a/packages/jumpstarter-cli-admin/jumpstarter_cli_admin/print.py b/packages/jumpstarter-cli-admin/jumpstarter_cli_admin/print.py index fc0a4cb38..81b4e749e 100644 --- a/packages/jumpstarter-cli-admin/jumpstarter_cli_admin/print.py +++ b/packages/jumpstarter-cli-admin/jumpstarter_cli_admin/print.py @@ -1,10 +1,7 @@ import asyncclick as click -from jumpstarter_cli_common import ( - OutputMode, - OutputType, - make_table, - time_since, -) +from jumpstarter_cli_common.opt import OutputMode, OutputType +from jumpstarter_cli_common.table import make_table +from jumpstarter_cli_common.time import time_since from jumpstarter_kubernetes import ( V1Alpha1Client, V1Alpha1Exporter, diff --git a/packages/jumpstarter-cli-common/jumpstarter_cli_common/__init__.py b/packages/jumpstarter-cli-common/jumpstarter_cli_common/__init__.py index afd6343c8..e69de29bb 100644 --- a/packages/jumpstarter-cli-common/jumpstarter_cli_common/__init__.py +++ b/packages/jumpstarter-cli-common/jumpstarter_cli_common/__init__.py @@ -1,42 +0,0 @@ -from .alias import AliasedGroup -from .config import opt_config -from .opt import ( - NameOutputType, - OutputMode, - OutputType, - PathOutputType, - opt_context, - opt_kubeconfig, - opt_labels, - opt_log_level, - opt_namespace, - opt_nointeractive, - opt_output_all, - opt_output_name_only, - opt_output_path_only, -) -from .table import make_table -from .time import time_since -from .version import get_client_version, version - -__all__ = [ - "AliasedGroup", - "make_table", - "opt_config", - "opt_context", - "opt_log_level", - "opt_kubeconfig", - "opt_namespace", - "opt_nointeractive", - "opt_labels", - "opt_output_all", - "opt_output_name_only", - "opt_output_path_only", - "OutputMode", - "OutputType", - "NameOutputType", - "PathOutputType", - "time_since", - "version", - "get_client_version", -] diff --git a/packages/jumpstarter-cli-common/jumpstarter_cli_common/config.py b/packages/jumpstarter-cli-common/jumpstarter_cli_common/config.py index ee200457a..e26c67c35 100644 --- a/packages/jumpstarter-cli-common/jumpstarter_cli_common/config.py +++ b/packages/jumpstarter-cli-common/jumpstarter_cli_common/config.py @@ -3,11 +3,9 @@ import asyncclick as click -from jumpstarter.config import ( - ClientConfigV1Alpha1, - ExporterConfigV1Alpha1, - UserConfigV1Alpha1, -) +from jumpstarter.config.client import ClientConfigV1Alpha1 +from jumpstarter.config.exporter import ExporterConfigV1Alpha1 +from jumpstarter.config.user import UserConfigV1Alpha1 def opt_config_inner( # noqa: C901 diff --git a/packages/jumpstarter-cli-driver/jumpstarter_cli_driver/__init__.py b/packages/jumpstarter-cli-driver/jumpstarter_cli_driver/__init__.py index 4eaa8f8b4..520c883d9 100644 --- a/packages/jumpstarter-cli-driver/jumpstarter_cli_driver/__init__.py +++ b/packages/jumpstarter-cli-driver/jumpstarter_cli_driver/__init__.py @@ -2,7 +2,9 @@ from typing import Optional import asyncclick as click -from jumpstarter_cli_common import AliasedGroup, opt_log_level, version +from jumpstarter_cli_common.alias import AliasedGroup +from jumpstarter_cli_common.opt import opt_log_level +from jumpstarter_cli_common.version import version from .driver import list_drivers diff --git a/packages/jumpstarter-cli-driver/jumpstarter_cli_driver/driver.py b/packages/jumpstarter-cli-driver/jumpstarter_cli_driver/driver.py index 984316597..04510acf2 100644 --- a/packages/jumpstarter-cli-driver/jumpstarter_cli_driver/driver.py +++ b/packages/jumpstarter-cli-driver/jumpstarter_cli_driver/driver.py @@ -1,7 +1,7 @@ from importlib.metadata import entry_points import asyncclick as click -from jumpstarter_cli_common import make_table +from jumpstarter_cli_common.table import make_table @click.command("list") diff --git a/packages/jumpstarter-cli/jumpstarter_cli/__init__.py b/packages/jumpstarter-cli/jumpstarter_cli/__init__.py index 8120cb099..e69de29bb 100644 --- a/packages/jumpstarter-cli/jumpstarter_cli/__init__.py +++ b/packages/jumpstarter-cli/jumpstarter_cli/__init__.py @@ -1,3 +0,0 @@ -from .jmp import jmp - -__all__ = ["jmp"] diff --git a/packages/jumpstarter-cli/jumpstarter_cli/config_client.py b/packages/jumpstarter-cli/jumpstarter_cli/config_client.py index 714381a35..220b9ed4f 100644 --- a/packages/jumpstarter-cli/jumpstarter_cli/config_client.py +++ b/packages/jumpstarter-cli/jumpstarter_cli/config_client.py @@ -1,23 +1,19 @@ from typing import Optional import asyncclick as click -from jumpstarter_cli_common import ( +from jumpstarter_cli_common.exceptions import handle_exceptions +from jumpstarter_cli_common.opt import ( OutputMode, OutputType, PathOutputType, - make_table, opt_output_all, opt_output_path_only, ) -from jumpstarter_cli_common.exceptions import handle_exceptions +from jumpstarter_cli_common.table import make_table -from jumpstarter.config import ( - ClientConfigListV1Alpha1, - ClientConfigV1Alpha1, - ClientConfigV1Alpha1Drivers, - ObjectMeta, - UserConfigV1Alpha1, -) +from jumpstarter.config.client import ClientConfigListV1Alpha1, ClientConfigV1Alpha1, ClientConfigV1Alpha1Drivers +from jumpstarter.config.common import ObjectMeta +from jumpstarter.config.user import UserConfigV1Alpha1 @click.group("client") diff --git a/packages/jumpstarter-cli/jumpstarter_cli/config_exporter.py b/packages/jumpstarter-cli/jumpstarter_cli/config_exporter.py index 84063f1e7..a57659c03 100644 --- a/packages/jumpstarter-cli/jumpstarter_cli/config_exporter.py +++ b/packages/jumpstarter-cli/jumpstarter_cli/config_exporter.py @@ -1,12 +1,12 @@ import asyncclick as click -from jumpstarter_cli_common import ( +from jumpstarter_cli_common.opt import ( OutputMode, OutputType, PathOutputType, - make_table, opt_output_all, opt_output_path_only, ) +from jumpstarter_cli_common.table import make_table from jumpstarter.config.exporter import ExporterConfigListV1Alpha1, ExporterConfigV1Alpha1, ObjectMeta diff --git a/packages/jumpstarter-cli/jumpstarter_cli/create.py b/packages/jumpstarter-cli/jumpstarter_cli/create.py index 43fba15ec..26cdb82d9 100644 --- a/packages/jumpstarter-cli/jumpstarter_cli/create.py +++ b/packages/jumpstarter-cli/jumpstarter_cli/create.py @@ -1,14 +1,10 @@ from datetime import timedelta import asyncclick as click -from jumpstarter_cli_common import ( - OutputMode, - OutputType, - make_table, - opt_config, - opt_output_all, -) +from jumpstarter_cli_common.config import opt_config from jumpstarter_cli_common.exceptions import handle_exceptions +from jumpstarter_cli_common.opt import OutputMode, OutputType, opt_output_all +from jumpstarter_cli_common.table import make_table from .common import opt_duration_partial, opt_selector diff --git a/packages/jumpstarter-cli/jumpstarter_cli/delete.py b/packages/jumpstarter-cli/jumpstarter_cli/delete.py index 5109309eb..97ed7fd81 100644 --- a/packages/jumpstarter-cli/jumpstarter_cli/delete.py +++ b/packages/jumpstarter-cli/jumpstarter_cli/delete.py @@ -1,6 +1,7 @@ import asyncclick as click -from jumpstarter_cli_common import OutputMode, OutputType, opt_config, opt_output_name_only +from jumpstarter_cli_common.config import opt_config from jumpstarter_cli_common.exceptions import handle_exceptions +from jumpstarter_cli_common.opt import OutputMode, OutputType, opt_output_name_only from .common import opt_selector diff --git a/packages/jumpstarter-cli/jumpstarter_cli/get.py b/packages/jumpstarter-cli/jumpstarter_cli/get.py index 570f8fd4e..9d3f252c8 100644 --- a/packages/jumpstarter-cli/jumpstarter_cli/get.py +++ b/packages/jumpstarter-cli/jumpstarter_cli/get.py @@ -1,6 +1,8 @@ import asyncclick as click -from jumpstarter_cli_common import OutputMode, OutputType, make_table, opt_config, opt_output_all +from jumpstarter_cli_common.config import opt_config from jumpstarter_cli_common.exceptions import handle_exceptions +from jumpstarter_cli_common.opt import OutputMode, OutputType, opt_output_all +from jumpstarter_cli_common.table import make_table from .common import opt_selector diff --git a/packages/jumpstarter-cli/jumpstarter_cli/j.py b/packages/jumpstarter-cli/jumpstarter_cli/j.py index 3f01bcf25..1b29256f7 100644 --- a/packages/jumpstarter-cli/jumpstarter_cli/j.py +++ b/packages/jumpstarter-cli/jumpstarter_cli/j.py @@ -3,7 +3,7 @@ import asyncclick as click from jumpstarter_cli_common.exceptions import handle_exceptions -from jumpstarter.common.utils import env +from jumpstarter.utils.env import env def j(): diff --git a/packages/jumpstarter-cli/jumpstarter_cli/jmp.py b/packages/jumpstarter-cli/jumpstarter_cli/jmp.py index ebb4e5290..69489dd0b 100644 --- a/packages/jumpstarter-cli/jumpstarter_cli/jmp.py +++ b/packages/jumpstarter-cli/jumpstarter_cli/jmp.py @@ -2,7 +2,9 @@ import asyncclick as click from jumpstarter_cli_admin import admin -from jumpstarter_cli_common import AliasedGroup, opt_log_level, version +from jumpstarter_cli_common.alias import AliasedGroup +from jumpstarter_cli_common.opt import opt_log_level +from jumpstarter_cli_common.version import version from jumpstarter_cli_driver import driver from .config import config diff --git a/packages/jumpstarter-cli/jumpstarter_cli/login.py b/packages/jumpstarter-cli/jumpstarter_cli/login.py index 06140432a..22e5c4b95 100644 --- a/packages/jumpstarter-cli/jumpstarter_cli/login.py +++ b/packages/jumpstarter-cli/jumpstarter_cli/login.py @@ -1,8 +1,9 @@ import asyncclick as click -from jumpstarter_cli_common import opt_config +from jumpstarter_cli_common.config import opt_config from jumpstarter_cli_common.oidc import Config, decode_jwt_issuer, opt_oidc -from jumpstarter.config import ClientConfigV1Alpha1, ClientConfigV1Alpha1Drivers, ObjectMeta +from jumpstarter.config.client import ClientConfigV1Alpha1, ClientConfigV1Alpha1Drivers +from jumpstarter.config.common import ObjectMeta from jumpstarter.config.exporter import ExporterConfigV1Alpha1 diff --git a/packages/jumpstarter-cli/jumpstarter_cli/run.py b/packages/jumpstarter-cli/jumpstarter_cli/run.py index 219222476..e9edc13a3 100644 --- a/packages/jumpstarter-cli/jumpstarter_cli/run.py +++ b/packages/jumpstarter-cli/jumpstarter_cli/run.py @@ -2,7 +2,7 @@ import traceback import asyncclick as click -from jumpstarter_cli_common import opt_config +from jumpstarter_cli_common.config import opt_config from jumpstarter_cli_common.exceptions import handle_exceptions diff --git a/packages/jumpstarter-cli/jumpstarter_cli/shell.py b/packages/jumpstarter-cli/jumpstarter_cli/shell.py index 43eb1a600..715e97857 100644 --- a/packages/jumpstarter-cli/jumpstarter_cli/shell.py +++ b/packages/jumpstarter-cli/jumpstarter_cli/shell.py @@ -2,12 +2,13 @@ from datetime import timedelta import asyncclick as click -from jumpstarter_cli_common import opt_config +from jumpstarter_cli_common.config import opt_config from jumpstarter_cli_common.exceptions import handle_exceptions from .common import opt_duration_partial, opt_selector from jumpstarter.common.utils import launch_shell -from jumpstarter.config import ClientConfigV1Alpha1, ExporterConfigV1Alpha1 +from jumpstarter.config.client import ClientConfigV1Alpha1 +from jumpstarter.config.exporter import ExporterConfigV1Alpha1 @click.command("shell") diff --git a/packages/jumpstarter-cli/jumpstarter_cli/update.py b/packages/jumpstarter-cli/jumpstarter_cli/update.py index f4f3badbf..b902abd1e 100644 --- a/packages/jumpstarter-cli/jumpstarter_cli/update.py +++ b/packages/jumpstarter-cli/jumpstarter_cli/update.py @@ -1,8 +1,10 @@ from datetime import timedelta import asyncclick as click -from jumpstarter_cli_common import OutputMode, OutputType, make_table, opt_config, opt_output_all +from jumpstarter_cli_common.config import opt_config from jumpstarter_cli_common.exceptions import handle_exceptions +from jumpstarter_cli_common.opt import OutputMode, OutputType, opt_output_all +from jumpstarter_cli_common.table import make_table from .common import opt_duration_partial diff --git a/packages/jumpstarter-driver-network/jumpstarter_driver_network/adapters/novnc.py b/packages/jumpstarter-driver-network/jumpstarter_driver_network/adapters/novnc.py index c163a8783..1a64c478b 100644 --- a/packages/jumpstarter-driver-network/jumpstarter_driver_network/adapters/novnc.py +++ b/packages/jumpstarter-driver-network/jumpstarter_driver_network/adapters/novnc.py @@ -5,7 +5,7 @@ from jumpstarter.client import DriverClient from jumpstarter.client.adapters import blocking from jumpstarter.common import TemporaryTcpListener -from jumpstarter.streams import forward_stream +from jumpstarter.streams.common import forward_stream @blocking diff --git a/packages/jumpstarter-driver-network/jumpstarter_driver_network/adapters/portforward.py b/packages/jumpstarter-driver-network/jumpstarter_driver_network/adapters/portforward.py index 7a13e2f6a..41771c591 100644 --- a/packages/jumpstarter-driver-network/jumpstarter_driver_network/adapters/portforward.py +++ b/packages/jumpstarter-driver-network/jumpstarter_driver_network/adapters/portforward.py @@ -5,7 +5,7 @@ from jumpstarter.client import DriverClient from jumpstarter.client.adapters import blocking from jumpstarter.common import TemporaryTcpListener, TemporaryUnixListener -from jumpstarter.streams import forward_stream +from jumpstarter.streams.common import forward_stream async def handler(client, method, conn): diff --git a/packages/jumpstarter-driver-opendal/README.md b/packages/jumpstarter-driver-opendal/README.md index 8639d8a3f..d13d497f2 100644 --- a/packages/jumpstarter-driver-opendal/README.md +++ b/packages/jumpstarter-driver-opendal/README.md @@ -29,7 +29,7 @@ Example configuration: ``` ```{testsetup} * -from jumpstarter.config import ExporterConfigV1Alpha1DriverInstance +from jumpstarter.config.exporter import ExporterConfigV1Alpha1DriverInstance from jumpstarter.common.utils import serve instance = serve( diff --git a/packages/jumpstarter-driver-sdwire/README.md b/packages/jumpstarter-driver-sdwire/README.md index 11dd8450d..6b42bd3b8 100644 --- a/packages/jumpstarter-driver-sdwire/README.md +++ b/packages/jumpstarter-driver-sdwire/README.md @@ -18,7 +18,7 @@ Example configuration: ```{doctest} :hide: ->>> from jumpstarter.config import ExporterConfigV1Alpha1DriverInstance +>>> from jumpstarter.config.exporter import ExporterConfigV1Alpha1DriverInstance >>> ExporterConfigV1Alpha1DriverInstance.from_path("source/api-reference/drivers/sdwire.yaml").instantiate() Traceback (most recent call last): ... diff --git a/packages/jumpstarter-driver-uboot/README.md b/packages/jumpstarter-driver-uboot/README.md index 41392bff2..a24dff85b 100644 --- a/packages/jumpstarter-driver-uboot/README.md +++ b/packages/jumpstarter-driver-uboot/README.md @@ -18,7 +18,7 @@ Example configuration: ```{doctest} :hide: ->>> from jumpstarter.config import ExporterConfigV1Alpha1DriverInstance +>>> from jumpstarter.config.exporter import ExporterConfigV1Alpha1DriverInstance >>> ExporterConfigV1Alpha1DriverInstance.from_path("source/api-reference/drivers/uboot.yaml").instantiate() UbootConsole(...) ``` diff --git a/packages/jumpstarter-driver-ustreamer/README.md b/packages/jumpstarter-driver-ustreamer/README.md index e25bc2882..d64b67aaa 100644 --- a/packages/jumpstarter-driver-ustreamer/README.md +++ b/packages/jumpstarter-driver-ustreamer/README.md @@ -18,7 +18,7 @@ Example configuration: ```{doctest} :hide: ->>> from jumpstarter.config import ExporterConfigV1Alpha1DriverInstance +>>> from jumpstarter.config.exporter import ExporterConfigV1Alpha1DriverInstance >>> ExporterConfigV1Alpha1DriverInstance.from_path("source/api-reference/drivers/ustreamer.yaml").instantiate() Traceback (most recent call last): ... diff --git a/packages/jumpstarter-kubernetes/jumpstarter_kubernetes/clients.py b/packages/jumpstarter-kubernetes/jumpstarter_kubernetes/clients.py index 836e44b6d..c97e5c7a8 100644 --- a/packages/jumpstarter-kubernetes/jumpstarter_kubernetes/clients.py +++ b/packages/jumpstarter-kubernetes/jumpstarter_kubernetes/clients.py @@ -10,7 +10,8 @@ from .list import V1Alpha1List from .serialize import SerializeV1ObjectMeta, SerializeV1ObjectReference from .util import AbstractAsyncCustomObjectApi -from jumpstarter.config import ClientConfigV1Alpha1, ClientConfigV1Alpha1Drivers, ObjectMeta +from jumpstarter.config.client import ClientConfigV1Alpha1, ClientConfigV1Alpha1Drivers +from jumpstarter.config.common import ObjectMeta logger = logging.getLogger(__name__) diff --git a/packages/jumpstarter-kubernetes/jumpstarter_kubernetes/exporters.py b/packages/jumpstarter-kubernetes/jumpstarter_kubernetes/exporters.py index 56cb3af84..a88f4877b 100644 --- a/packages/jumpstarter-kubernetes/jumpstarter_kubernetes/exporters.py +++ b/packages/jumpstarter-kubernetes/jumpstarter_kubernetes/exporters.py @@ -9,7 +9,8 @@ from .list import V1Alpha1List from .serialize import SerializeV1ObjectMeta, SerializeV1ObjectReference from .util import AbstractAsyncCustomObjectApi -from jumpstarter.config import ExporterConfigV1Alpha1, ObjectMeta +from jumpstarter.config.common import ObjectMeta +from jumpstarter.config.exporter import ExporterConfigV1Alpha1 CREATE_EXPORTER_DELAY = 1 CREATE_EXPORTER_COUNT = 10 diff --git a/packages/jumpstarter/conftest.py b/packages/jumpstarter/conftest.py index ff38bae4a..18e262443 100644 --- a/packages/jumpstarter/conftest.py +++ b/packages/jumpstarter/conftest.py @@ -19,7 +19,8 @@ router_pb2_grpc, ) -from jumpstarter.streams import RouterStream, forward_stream +from jumpstarter.streams.common import forward_stream +from jumpstarter.streams.router import RouterStream @dataclass(kw_only=True) diff --git a/packages/jumpstarter/jumpstarter/client/base.py b/packages/jumpstarter/jumpstarter/client/base.py index f57ce0917..1616d4c02 100644 --- a/packages/jumpstarter/jumpstarter/client/base.py +++ b/packages/jumpstarter/jumpstarter/client/base.py @@ -12,7 +12,7 @@ from pydantic.dataclasses import dataclass from .core import AsyncDriverClient -from jumpstarter.streams import BlockingStream +from jumpstarter.streams.blocking import BlockingStream @dataclass(kw_only=True, config=ConfigDict(arbitrary_types_allowed=True)) diff --git a/packages/jumpstarter/jumpstarter/client/core.py b/packages/jumpstarter/jumpstarter/client/core.py index 91a125233..052be09f0 100644 --- a/packages/jumpstarter/jumpstarter/client/core.py +++ b/packages/jumpstarter/jumpstarter/client/core.py @@ -21,13 +21,10 @@ ResourceStreamRequest, StreamRequestMetadata, ) -from jumpstarter.streams import ( - MetadataStream, - MetadataStreamAttributes, - ProgressStream, - RouterStream, - forward_stream, -) +from jumpstarter.streams.common import forward_stream +from jumpstarter.streams.metadata import MetadataStream, MetadataStreamAttributes +from jumpstarter.streams.progress import ProgressStream +from jumpstarter.streams.router import RouterStream class DriverError(JumpstarterException): diff --git a/packages/jumpstarter/jumpstarter/common/streams.py b/packages/jumpstarter/jumpstarter/common/streams.py index cddd9f374..b37ba6d8a 100644 --- a/packages/jumpstarter/jumpstarter/common/streams.py +++ b/packages/jumpstarter/jumpstarter/common/streams.py @@ -7,7 +7,8 @@ from pydantic import BaseModel, Field, Json from jumpstarter.common.grpc import aio_secure_channel, ssl_channel_credentials -from jumpstarter.streams import RouterStream, forward_stream +from jumpstarter.streams.common import forward_stream +from jumpstarter.streams.router import RouterStream class ResourceStreamRequest(BaseModel): diff --git a/packages/jumpstarter/jumpstarter/common/utils.py b/packages/jumpstarter/jumpstarter/common/utils.py index 6984e78ac..236aa04ef 100644 --- a/packages/jumpstarter/jumpstarter/common/utils.py +++ b/packages/jumpstarter/jumpstarter/common/utils.py @@ -6,10 +6,12 @@ from anyio.from_thread import BlockingPortal, start_blocking_portal from jumpstarter.client import client_from_path -from jumpstarter.config.client import _allow_from_env from jumpstarter.config.env import JMP_DRIVERS_ALLOW, JUMPSTARTER_HOST from jumpstarter.driver import Driver from jumpstarter.exporter import Session +from jumpstarter.utils.env import env + +__all__ = ["env"] @asynccontextmanager @@ -37,42 +39,6 @@ def serve(root_device: Driver): client.close() -@asynccontextmanager -async def env_async(portal, stack): - """Provide a client for an existing JUMPSTARTER_HOST environment variable. - - Async version of env() - - This is useful when interacting with an already established Jumpstarter shell, - to either a local exporter or a remote one. - """ - host = os.environ.get(JUMPSTARTER_HOST, None) - if host is None: - raise RuntimeError(f"{JUMPSTARTER_HOST} not set") - - allow, unsafe = _allow_from_env() - - async with client_from_path(host, portal, stack, allow=allow, unsafe=unsafe) as client: - try: - yield client - finally: - if hasattr(client, "close"): - client.close() - - -@contextmanager -def env(): - """Provide a client for an existing JUMPSTARTER_HOST environment variable. - - This is useful when interacting with an already established Jumpstarter shell, - to either a local exporter or a remote one. - """ - with start_blocking_portal() as portal: - with ExitStack() as stack: - with portal.wrap_async_context_manager(env_async(portal, stack)) as client: - yield client - - ANSI_GRAY = "\\[\\e[90m\\]" ANSI_YELLOW = "\\[\\e[93m\\]" ANSI_WHITE = "\\[\\e[97m\\]" diff --git a/packages/jumpstarter/jumpstarter/config/__init__.py b/packages/jumpstarter/jumpstarter/config/__init__.py index b61613a8d..e69de29bb 100644 --- a/packages/jumpstarter/jumpstarter/config/__init__.py +++ b/packages/jumpstarter/jumpstarter/config/__init__.py @@ -1,28 +0,0 @@ -from .client import ( - ClientConfigListV1Alpha1, - ClientConfigV1Alpha1, - ClientConfigV1Alpha1Drivers, -) -from .common import CONFIG_API_VERSION, CONFIG_PATH, ObjectMeta -from .env import JMP_CLIENT_CONFIG, JMP_DRIVERS_ALLOW, JMP_ENDPOINT, JMP_TOKEN -from .exporter import ExporterConfigListV1Alpha1, ExporterConfigV1Alpha1, ExporterConfigV1Alpha1DriverInstance -from .user import UserConfigV1Alpha1, UserConfigV1Alpha1Config - -__all__ = [ - "CONFIG_API_VERSION", - "CONFIG_PATH", - "JMP_CLIENT_CONFIG", - "JMP_ENDPOINT", - "JMP_TOKEN", - "JMP_DRIVERS_ALLOW", - "JMP_DRIVERS_ALLOW_UNSAFE", - "ObjectMeta", - "UserConfigV1Alpha1", - "UserConfigV1Alpha1Config", - "ClientConfigListV1Alpha1", - "ClientConfigV1Alpha1", - "ClientConfigV1Alpha1Drivers", - "ExporterConfigListV1Alpha1", - "ExporterConfigV1Alpha1", - "ExporterConfigV1Alpha1DriverInstance", -] diff --git a/packages/jumpstarter/jumpstarter/config/client_config_test.py b/packages/jumpstarter/jumpstarter/config/client_config_test.py index a83d0d89e..24652a53c 100644 --- a/packages/jumpstarter/jumpstarter/config/client_config_test.py +++ b/packages/jumpstarter/jumpstarter/config/client_config_test.py @@ -8,7 +8,8 @@ from pydantic import ValidationError from jumpstarter.common.exceptions import FileNotFoundError -from jumpstarter.config import ClientConfigV1Alpha1, ClientConfigV1Alpha1Drivers, ObjectMeta +from jumpstarter.config.client import ClientConfigV1Alpha1, ClientConfigV1Alpha1Drivers +from jumpstarter.config.common import ObjectMeta from jumpstarter.config.env import JMP_DRIVERS_ALLOW, JMP_ENDPOINT, JMP_NAME, JMP_NAMESPACE, JMP_TOKEN diff --git a/packages/jumpstarter/jumpstarter/config/user_config_test.py b/packages/jumpstarter/jumpstarter/config/user_config_test.py index 882ae01d0..28b7cdf62 100644 --- a/packages/jumpstarter/jumpstarter/config/user_config_test.py +++ b/packages/jumpstarter/jumpstarter/config/user_config_test.py @@ -4,13 +4,9 @@ import pytest -from jumpstarter.config import ( - ClientConfigV1Alpha1, - ClientConfigV1Alpha1Drivers, - ObjectMeta, - UserConfigV1Alpha1, - UserConfigV1Alpha1Config, -) +from jumpstarter.config.client import ClientConfigV1Alpha1, ClientConfigV1Alpha1Drivers +from jumpstarter.config.common import ObjectMeta +from jumpstarter.config.user import UserConfigV1Alpha1, UserConfigV1Alpha1Config def test_user_config_exists(monkeypatch: pytest.MonkeyPatch): diff --git a/packages/jumpstarter/jumpstarter/driver/base.py b/packages/jumpstarter/jumpstarter/driver/base.py index 5cb2c9d2d..ea7ea6838 100644 --- a/packages/jumpstarter/jumpstarter/driver/base.py +++ b/packages/jumpstarter/jumpstarter/driver/base.py @@ -33,7 +33,9 @@ DriverStreamRequest, ResourceStreamRequest, ) -from jumpstarter.streams import AiohttpStreamReaderStream, MetadataStream, create_memory_stream +from jumpstarter.streams.aiohttp import AiohttpStreamReaderStream +from jumpstarter.streams.common import create_memory_stream +from jumpstarter.streams.metadata import MetadataStream @dataclass(kw_only=True) diff --git a/packages/jumpstarter/jumpstarter/exporter/session.py b/packages/jumpstarter/jumpstarter/exporter/session.py index 55d52f471..9affa83e7 100644 --- a/packages/jumpstarter/jumpstarter/exporter/session.py +++ b/packages/jumpstarter/jumpstarter/exporter/session.py @@ -18,7 +18,9 @@ from jumpstarter.common import Metadata, TemporarySocket from jumpstarter.common.streams import StreamRequestMetadata from jumpstarter.driver import Driver -from jumpstarter.streams import MetadataStreamAttributes, RouterStream, forward_stream +from jumpstarter.streams.common import forward_stream +from jumpstarter.streams.metadata import MetadataStreamAttributes +from jumpstarter.streams.router import RouterStream logger = logging.getLogger(__name__) diff --git a/packages/jumpstarter/jumpstarter/streams/__init__.py b/packages/jumpstarter/jumpstarter/streams/__init__.py index 6fa9c68d7..e69de29bb 100644 --- a/packages/jumpstarter/jumpstarter/streams/__init__.py +++ b/packages/jumpstarter/jumpstarter/streams/__init__.py @@ -1,17 +0,0 @@ -from .aiohttp import AiohttpStreamReaderStream -from .blocking import BlockingStream -from .common import create_memory_stream, forward_stream -from .metadata import MetadataStream, MetadataStreamAttributes -from .progress import ProgressStream -from .router import RouterStream - -__all__ = [ - "create_memory_stream", - "forward_stream", - "BlockingStream", - "RouterStream", - "ProgressStream", - "MetadataStream", - "MetadataStreamAttributes", - "AiohttpStreamReaderStream", -] diff --git a/packages/jumpstarter/jumpstarter/utils/__init__.py b/packages/jumpstarter/jumpstarter/utils/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/packages/jumpstarter/jumpstarter/utils/env.py b/packages/jumpstarter/jumpstarter/utils/env.py new file mode 100644 index 000000000..9c00bc29d --- /dev/null +++ b/packages/jumpstarter/jumpstarter/utils/env.py @@ -0,0 +1,44 @@ +import os +from contextlib import ExitStack, asynccontextmanager, contextmanager + +from anyio.from_thread import start_blocking_portal + +from jumpstarter.client import client_from_path +from jumpstarter.config.client import _allow_from_env +from jumpstarter.config.env import JUMPSTARTER_HOST + + +@asynccontextmanager +async def env_async(portal, stack): + """Provide a client for an existing JUMPSTARTER_HOST environment variable. + + Async version of env() + + This is useful when interacting with an already established Jumpstarter shell, + to either a local exporter or a remote one. + """ + host = os.environ.get(JUMPSTARTER_HOST, None) + if host is None: + raise RuntimeError(f"{JUMPSTARTER_HOST} not set") + + allow, unsafe = _allow_from_env() + + async with client_from_path(host, portal, stack, allow=allow, unsafe=unsafe) as client: + try: + yield client + finally: + if hasattr(client, "close"): + client.close() + + +@contextmanager +def env(): + """Provide a client for an existing JUMPSTARTER_HOST environment variable. + + This is useful when interacting with an already established Jumpstarter shell, + to either a local exporter or a remote one. + """ + with start_blocking_portal() as portal: + with ExitStack() as stack: + with portal.wrap_async_context_manager(env_async(portal, stack)) as client: + yield client