From fe1dea5a89bb3fa2576694727deb75d76fcf3a7d Mon Sep 17 00:00:00 2001 From: Miguel Angel Ajo Pelayo Date: Tue, 18 Feb 2025 14:03:59 +0000 Subject: [PATCH] Update documentation --- .python-version | 2 +- __templates__/driver/pyproject.toml.tmpl | 3 +- docs/source/api-reference/drivers.md | 2 +- docs/source/api-reference/index.md | 2 +- docs/source/architecture.md | 4 + docs/source/cli-reference/index.md | 8 -- docs/source/cli/clients.md | 24 ++-- docs/source/cli/exporters.md | 8 +- docs/source/cli/getting-started.md | 21 --- docs/source/cli/index.md | 7 +- docs/source/cli/reference/index.md | 43 +++++++ docs/source/cli/reference/jmp-admin.md | 7 + .../jmp.md => cli/reference/jmp-client.md} | 5 +- docs/source/cli/reference/jmp-driver.md | 7 + .../reference}/jmp-exporter.md | 2 +- docs/source/cli/shell.md | 4 - docs/source/conf.py | 4 +- docs/source/config.md | 94 +++++++++----- .../getting-started/setup-exporter-client.md | 2 +- docs/source/index.md | 2 - docs/source/installation/container-jmp.md | 45 ------- docs/source/installation/index.md | 22 +--- docs/source/installation/python-package.md | 121 ++++++++++++++++-- docs/source/installation/service-cli.md | 49 ------- packages/jumpstarter-all/README.md | 8 ++ .../jumpstarter_all/noop_test.py | 2 + packages/jumpstarter-all/pyproject.toml | 46 +++++++ .../jumpstarter-driver-shell/pyproject.toml | 30 +++-- .../jumpstarter-driver-yepkit/pyproject.toml | 6 +- pyproject.toml | 2 + uv.lock | 78 ++++++++++- 31 files changed, 418 insertions(+), 242 deletions(-) delete mode 100644 docs/source/cli-reference/index.md delete mode 100644 docs/source/cli/getting-started.md create mode 100644 docs/source/cli/reference/index.md create mode 100644 docs/source/cli/reference/jmp-admin.md rename docs/source/{cli-reference/jmp.md => cli/reference/jmp-client.md} (71%) create mode 100644 docs/source/cli/reference/jmp-driver.md rename docs/source/{cli-reference => cli/reference}/jmp-exporter.md (87%) delete mode 100644 docs/source/cli/shell.md delete mode 100644 docs/source/installation/container-jmp.md delete mode 100644 docs/source/installation/service-cli.md create mode 100644 packages/jumpstarter-all/README.md create mode 100644 packages/jumpstarter-all/jumpstarter_all/noop_test.py create mode 100644 packages/jumpstarter-all/pyproject.toml diff --git a/.python-version b/.python-version index 4c8b864a1..fdcfcfdfc 100644 --- a/.python-version +++ b/.python-version @@ -1 +1 @@ -3.12.3 \ No newline at end of file +3.12 \ No newline at end of file diff --git a/__templates__/driver/pyproject.toml.tmpl b/__templates__/driver/pyproject.toml.tmpl index 2218ef545..bcd70a56f 100644 --- a/__templates__/driver/pyproject.toml.tmpl +++ b/__templates__/driver/pyproject.toml.tmpl @@ -1,8 +1,9 @@ [project] name = "jumpstarter-driver-${DRIVER_NAME}" -version = "0.1.0" +dynamic = ["version", "urls"] description = "Add your description here" readme = "README.md" +license = { text = "Apache-2.0" } authors = [ { name = "${AUTHOR_NAME}", email = "${AUTHOR_EMAIL}" } ] diff --git a/docs/source/api-reference/drivers.md b/docs/source/api-reference/drivers.md index 91eaace06..fb047e8c8 100644 --- a/docs/source/api-reference/drivers.md +++ b/docs/source/api-reference/drivers.md @@ -1,4 +1,4 @@ -# Driver API Reference +# Base Driver classes ```{warning} This project is still evolving, so these docs may be incomplete or out-of-date. diff --git a/docs/source/api-reference/index.md b/docs/source/api-reference/index.md index 55bf42bc0..6422e69ae 100644 --- a/docs/source/api-reference/index.md +++ b/docs/source/api-reference/index.md @@ -3,7 +3,7 @@ This section provides details on the Jumpstarter core API and contrib drivers. ```{toctree} -drivers.md drivers/index.md adapters/index.md +drivers.md ``` diff --git a/docs/source/architecture.md b/docs/source/architecture.md index 73f61e1d6..2457a9cf5 100644 --- a/docs/source/architecture.md +++ b/docs/source/architecture.md @@ -171,3 +171,7 @@ block-beta style hardware fill:#888,stroke:#333,stroke-width:4px ``` + +```{toctree} +drivers.md +``` \ No newline at end of file diff --git a/docs/source/cli-reference/index.md b/docs/source/cli-reference/index.md deleted file mode 100644 index a2fe17487..000000000 --- a/docs/source/cli-reference/index.md +++ /dev/null @@ -1,8 +0,0 @@ -# CLI Reference - -This section provides details on the Jumpstarter CLI. - -```{toctree} -jmp.md -jmp-exporter.md -``` diff --git a/docs/source/cli/clients.md b/docs/source/cli/clients.md index 0a35e0d16..0d5a54480 100644 --- a/docs/source/cli/clients.md +++ b/docs/source/cli/clients.md @@ -1,12 +1,12 @@ # Manage Clients -The `jmpctl` admin CLI can be used to manage your client configurations +The `jmp admin` admin CLI can be used to manage your client configurations on the distributed service. ## Creating a Client If you have configured [a Jumpstarter service](../introduction/service.md) -and you have a kubeconfig, the `jmpctl` CLI will attempt to use +and you have a kubeconfig, the [`jmp admin` CLI](./reference/jmp-admin.md#jmp-admin-create-client) will attempt to use your current credentials to provision the client automatically, and produce a client configuration file. @@ -18,12 +18,7 @@ You can also use the following options to specify kubeconfig and context to use: To create a new client and its associated config, run the following command: ```bash -$ jmpctl client create john --namespace jumpstarter-lab > john.yaml -$ cat >> john.yaml <> tls: ca: '' - insecure: True + insecure: False drivers: allow: [] unsafe: True ``` -In addition we have included a `drivers` section in the configuration file, which -allows you to specify a list of allowed driver packages and enable unsafe mode (allow any driver). +We use the `--unsafe` setting that configures the `drivers` section to allow +any driver packages on the client. ```{warning} This section can be important if you don't trust the exporter's configuration, since every @@ -60,9 +55,6 @@ self-signed certificates. ### Manual Provisioning -If you do not have `jmpctl` installed or don't have direct access to the cluster, -a client can also be provisioned manually on a different machine. - 1. Apply the YAML to your cluster: ```yaml @@ -87,10 +79,10 @@ a client can also be provisioned manually on a different machine. 3. Those details can be installed as a secret on CI, or passed down to the final user. - Then the user can create the client performing: + Then the user can create the client using the [jmp client](./reference/jmp-client.md#jmp-client-create-config) CLI: ```bash - $ jmp create my-client + $ jmp client create-config my-client Enter a valid Jumpstarter service endpoint: devl.jumpstarter.dev Enter a Jumpstarter auth token (hidden): *** Enter a comma-separated list of allowed driver packages (optional): diff --git a/docs/source/cli/exporters.md b/docs/source/cli/exporters.md index 4f5c84510..cb77e9973 100644 --- a/docs/source/cli/exporters.md +++ b/docs/source/cli/exporters.md @@ -1,13 +1,13 @@ # Manage Exporters -The `jmpctl` admin CLI can be used to manage your exporter configurations +The `jmp admin` admin CLI can be used to manage your exporter configurations on the distributed service. ## Creating a exporter If you have configured [a Jumpstarter service](../introduction/service.md) -and you have a kubeconfig, the `jmpctl` CLI will attempt to use -your current credentials to provision the client automatically, and produce +and you have a kubeconfig, the [`jmp admin` CLI](./reference/jmp-admin.md#jmp-admin-create-exporter) +will attempt to use your current credentials to provision the client automatically, and produce a base exporter configuration file. To connect a target device to Jumpstarter, an exporter instance must be registered. @@ -17,7 +17,7 @@ the Kubernetes cluster where the `jumpstarter-controller` service is hosted. ```bash # Create the exporter instance -$ jmpctl exporter create my-exporter --namespace jumpstarter-lab > my-exporter.yaml +$ jmp admin create exporter my-exporter --namespace jumpstarter-lab -o my-exporter.yaml ``` This creates an exporter named `my-exporter` and produces a YAML configuration file `my-exporter.yaml`: diff --git a/docs/source/cli/getting-started.md b/docs/source/cli/getting-started.md deleted file mode 100644 index 77783d726..000000000 --- a/docs/source/cli/getting-started.md +++ /dev/null @@ -1,21 +0,0 @@ -# Getting Started - -To simplify the management and operation of Jumpstarter, we provide several command-line tools for different use cases. These CLI tools can also be installed together through the `jmpstarter-cli` package and accessed using the `jmp` command for simplicity. - -Each tool can also be installed separately for users who want to reduce the dependencies on their developer machine or an embedded exporter with limited available resources. - -## Admin CLI `jmp-admin` - -The `jmp-admin` or `jmp admin` CLI allows administration of exporters and clients -in a Kubernetes cluster. To use this CLI, you must have a valid `kubeconfig` and -access to the cluter/namespace where the Jumpstarter controller resides. - -## Client CLI `jmp-client` - -The `jmp-client` or `jmp client` CLI allows interaction with Jumpstarter clients -and the management of client configs. - -## Exporter CLI `jmp-exporter` - -The `jmp-exporter` or `jmp exporter` CLI allows you to run Jumpstarter exporters -and management of exporter configs. diff --git a/docs/source/cli/index.md b/docs/source/cli/index.md index 06962a297..a7f5e56a2 100644 --- a/docs/source/cli/index.md +++ b/docs/source/cli/index.md @@ -1,9 +1,12 @@ # Command-Line Interface +To simplify the management and operation of Jumpstarter, we provide several command-line tools for different use cases. These CLI tools can also be installed together through the `jmpstarter-cli` package and accessed using the `jmp` command for simplicity. + +Each tool can also be installed separately for users who want to reduce the dependencies on their developer machine or an embedded exporter with limited available resources. + ```{toctree} -getting-started.md +reference/index.md clients.md exporters.md run-tests.md -shell.md ``` diff --git a/docs/source/cli/reference/index.md b/docs/source/cli/reference/index.md new file mode 100644 index 000000000..e413a386c --- /dev/null +++ b/docs/source/cli/reference/index.md @@ -0,0 +1,43 @@ +# Reference + +This section provides details on the Jumpstarter CLI. + +## jmp + +The base jmp command contains a set of subcommands for the different featuers, those +can also be installed and used independently as `jmp-admin`, `jmp-client`, and +`jmp-exporter`, `jmp-driver`. + +```bash +jmp [OPTIONS] COMMAND [ARGS]... +``` + +### commands + +```{toctree} +:maxdepth: 1 +jmp-admin.md +``` + +The `jmp-admin` or `jmp admin` CLI allows administration of exporters and clients in a Kubernetes cluster. To use this CLI, you must have a valid `kubeconfig` and access to the cluter/namespace where the Jumpstarter controller resides. + +```{toctree} +:maxdepth: 1 +jmp-client.md +``` + +The `jmp-client` or `jmp client` CLI allows interaction with Jumpstarter as a clients. + + +```{toctree} +:maxdepth: 1 +jmp-exporter.md +``` +The `jmp-exporter` or `jmp exporter` CLI allows you to run Jumpstarter exporters as services, container, or standalone. + +```{toctree} +:maxdepth: 1 +jmp-driver.md +``` + +The `jmp-driver` or `jmp driver` CLI allows you to list and create Jumpstarter drivers. diff --git a/docs/source/cli/reference/jmp-admin.md b/docs/source/cli/reference/jmp-admin.md new file mode 100644 index 000000000..808d0a96d --- /dev/null +++ b/docs/source/cli/reference/jmp-admin.md @@ -0,0 +1,7 @@ +# admin + +```{eval-rst} +.. click:: jumpstarter_cli_admin:admin + :prog: jmp-admin + :nested: full +``` diff --git a/docs/source/cli-reference/jmp.md b/docs/source/cli/reference/jmp-client.md similarity index 71% rename from docs/source/cli-reference/jmp.md rename to docs/source/cli/reference/jmp-client.md index 352ea9f9e..1b619d2e3 100644 --- a/docs/source/cli-reference/jmp.md +++ b/docs/source/cli/reference/jmp-client.md @@ -1,8 +1,7 @@ -# jmp +# client ```{eval-rst} .. click:: jumpstarter_cli_client:client - :prog: jmp + :prog: jmp-client :nested: full ``` - diff --git a/docs/source/cli/reference/jmp-driver.md b/docs/source/cli/reference/jmp-driver.md new file mode 100644 index 000000000..2d2bec8a7 --- /dev/null +++ b/docs/source/cli/reference/jmp-driver.md @@ -0,0 +1,7 @@ +# driver + +```{eval-rst} +.. click:: jumpstarter_cli_driver:driver + :prog: jmp-driver + :nested: full +``` diff --git a/docs/source/cli-reference/jmp-exporter.md b/docs/source/cli/reference/jmp-exporter.md similarity index 87% rename from docs/source/cli-reference/jmp-exporter.md rename to docs/source/cli/reference/jmp-exporter.md index c7f2f0a08..e6aba2db9 100644 --- a/docs/source/cli-reference/jmp-exporter.md +++ b/docs/source/cli/reference/jmp-exporter.md @@ -1,4 +1,4 @@ -# jmp-exporter +# exporter ```{eval-rst} .. click:: jumpstarter_cli_exporter:exporter diff --git a/docs/source/cli/shell.md b/docs/source/cli/shell.md deleted file mode 100644 index 1e10be334..000000000 --- a/docs/source/cli/shell.md +++ /dev/null @@ -1,4 +0,0 @@ -# Jumpstarter Shell - -The Jumpstarter shell allows you to quickly interact with local hardware without -setting up an exporter, client, or service. diff --git a/docs/source/conf.py b/docs/source/conf.py index 22f35d7f8..76e8ddc68 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -46,8 +46,8 @@ ] myst_substitutions = { "requires_python": ">=3.11", - "version": "0.5.0", - "controller_version": "0.5.0", + "version": "latest", + "controller_version": "0-latest", } doctest_test_doctest_blocks = "" diff --git a/docs/source/config.md b/docs/source/config.md index 90e6da0da..8098bc54e 100644 --- a/docs/source/config.md +++ b/docs/source/config.md @@ -8,8 +8,8 @@ Jumpstarter can be configured as either a client, an exporter, or both depending on your use case and deployment strategy. By default, a local client and exporter session are automatically initialized when -running test scripts through `jmp start` or the `jmp shell` commands. This allows -for easy testing of new drivers, client libraries, or verifying that tests work +running test scripts through `jmp exporter shell` command. +This allows for easy testing of new drivers, client libraries, or verifying that tests work on your local bench. When interacting with remote exporters in a CLI or CI environment, multiple clients @@ -37,12 +37,6 @@ config: current-client: default ``` -## System Configuration - -Jumpstarter stores system configs in the `/etc/jumpstarter` directory. -This configuration directory is primarily used by the exporters -`/etc/jumpstarter/exporters` as they often run as daemon services on the host system. - ## Clients Client configurations are stored in the Jumpstarter user configuration directory @@ -56,6 +50,12 @@ the client name, access token, and any configuration parameters. apiVersion: jumpstarter.dev/v1alpha1 kind: Client +metadata: + name: myclient + namespace: jumpstarter-lab +tls: + insecure: false + ca: "" endpoint: "jumpstarter.my-lab.com:1443" token: "dGhpc2lzYXRva2VuLTEyMzQxMjM0MTIzNEyMzQtc2Rxd3Jxd2VycXdlcnF3ZXJxd2VyLTEyMzQxMjM0MTIz" drivers: @@ -68,8 +68,11 @@ drivers: - `drivers` - Driver client library configuration. - `allow` - A list of allowed driver namespaces to automatically load. - `unsafe: true` - Should all drivers be allowed to load? +- `tls` + - `insecure` - Set to `true` to disable TLS verification of the gRPC endpoint. + - `ca` - Path to a custom CA certificate file to use for TLS verification. -### Multiple Clients +## Multiple Clients Multiple client configs can be added to the `~/.config/jumpstarter/clients` directory manually or by using the Jumpstarter CLI. @@ -78,45 +81,44 @@ Similar to kubectl, Jumpstarter allows you to switch between different client configurations using the CLI tool. A `default` client is automatically configured when installing the Jumpstarter Helm chart with `jmp install`. -### Creating a client in the distributed service +## Creating a client in the distributed service -To create a new client in the distributed service you must use the `jmpctl` command, +To create a new client in the distributed service you must use the `jmp admin create` subcommand, please follow the instructions in the [Jumpstarter service CLI](./cli/clients.md). -### Importing a client created by the administrator +## Importing a client created by the administrator Importing a new client is as simple as copying the administrator provided yaml file to `~/.config/jumpstarter/clients/`, alternatively if we have the token -and endpoint the `jmp create ` command can be used to create +and endpoint the `jmp client create ` command can be used to create the config file. -To switch between different client configs, use the `jmp use ` command: +To switch between different client configs, use the `jmp client use-config ` command: ```bash -$ jmp use another +$ jmp client use-config another Using client config '/home/jdoe/.config/jumpstarter/clients/another.yaml' ``` -All client configurations can be listed with `jmp list`: +All client configurations can be listed with `jmp client list-configs`: ```bash -$ jmp list +$ jmp client list-configs CURRENT NAME ENDPOINT PATH * default jumpstarter1.my-lab.com:1443 /home/jdoe/.config/jumpstarter/clients/default.yaml myclient jumpstarter2.my-lab.com:1443 /home/jdoe/.config/jumpstarter/clients/myclient.yaml another jumpstarter3.my-lab.com:1443 /home/jdoe/.config/jumpstarter/clients/another.yaml ``` -Clients can also be removed using `jmp delete `: +Clients can also be removed using `jmp client delete-config `: ```bash -$ jmp delete myclient +$ jmp client delete-config myclient Deleted client config '/home/jdoe/.config/jumpstarter/clients/myclient.yaml' ``` - -### Client Environment Variables +## Client Environment Variables The client configuration may also be provided by environment variables which may be useful in CI or when writing a script that uses Jumpstarter. @@ -124,6 +126,8 @@ be useful in CI or when writing a script that uses Jumpstarter. - `JUMPSTARTER_GRPC_INSECURE` - Set to `1` to disable TLS verification. - `JMP_CLIENT_CONFIG` - A path to a client configuration YAML file to use. - `JMP_CLIENT` - The name of a registered client config to use. +- `JMP_NAMESPACE` - The namespace in the jumpstarter-controller to use, like `metadata.namespace`. +- `JMP_NAME` - The client/exporter name in the jumpstarter-controller to use, like `metadata.name`. - `JMP_ENDPOINT` - The gRPC endpoint of the Jumpstarter controller server (overrides the config value). - `JMP_TOKEN` - A client auth token generated by the controller @@ -131,6 +135,12 @@ be useful in CI or when writing a script that uses Jumpstarter. - `JMP_DRIVERS_ALLOW` - A comma-separated list of allowed driver namespaces to automatically load. Can be set to `UNSAFE` to allow unsafe loading of drivers. +## System Configuration + +Jumpstarter stores system configs in the `/etc/jumpstarter` directory. +This configuration directory is primarily used by the exporters +`/etc/jumpstarter/exporters` as they often run as daemon services on the host system. + ## Exporters Exporter configurations are by default stored globally in the Jumpstarter config @@ -147,6 +157,12 @@ of built-in drivers and any additional driver packages registered by the user. apiVersion: jumpstarter.dev/v1alpha1 kind: Exporter +metadata: + name: myexporter + namespace: jumpstarter-lab +tls: + insecure: false + ca: "" endpoint: "jumpstarter.my-lab.com:1443" token: "dGhpc2lzYXRva2VuLTEyMzQxMjM0MTIzNEyMzQtc2Rxd3Jxd2VycXdlcnF3ZXJxd2VyLTEyMzQxMjM0MTIz" export: @@ -168,23 +184,27 @@ export: hello: "world" ``` +- `metadata` - Name/namespace information for the jumsptarter controller to identify the exporter along the token. - `endpoint` - The gRPC endpoint of the Jumpstarter controller server. - `token` - An exporter auth token generated by the controller. - `export` - Exporter driver configuration. +- `tls` + - `insecure` - Set to `true` to disable TLS verification of the gRPC endpoint. + - `ca` - Path to a custom CA certificate file to use for TLS verification. ### Exporter CLI Commands ### Creating a exporter in the distributed service -To create a new exporter in the distributed service you must use the `jmpctl` command, +To create a new exporter in the distributed service you must use the `jmp admin create` command, please follow the instructions in the [Jumpstarter service CLI](./cli/exporters.md). ### Creating a exporter configuration file To create a new exporter configuration file from a know endpoint and -token the `jmp-exporter create ` command can be used. +token the `jmp exporter create ` command can be used. ```bash -$ jmp-exporter create myexporter +$ jmp exporter create myexporter Endpoint: grpc.jumpstarter.my.domain.com Token: <> ``` @@ -192,29 +212,29 @@ Token: <> To use a specific config when starting the exporter: ```bash -$ jmp-exporter run my-exporter +$ jmp exporter run my-exporter Using exporter config '/etc/jumpstarter/exporters/another/exporter.yaml' ``` The path to a config can also be provided: ```bash -jmp-exporter run -c /etc/jumpstarter/exporters/another/exporter.yaml +jmp exporter run -c /etc/jumpstarter/exporters/another/exporter.yaml ``` -All exporter configurations can be listed with `jmp-exporter list`: +All exporter configurations can be listed with `jmp exporter list`: ```bash -$ jmp-exporter list +$ jmp exporter list ALIAS PATH test-exporter-2 /etc/jumpstarter/exporters/test-exporter-2.yaml my-exporter /etc/jumpstarter/exporters/my-exporter.yaml ``` -Exporers can also be removed using `jmp-exporter delete `: +Exporers can also be removed using `jmp exporter delete `: ```bash -$ jmp-exporter delete myexporter +$ jmp exporter delete myexporter Deleted exporter config '/etc/jumpstarter/exporters/myexporter.yaml' ``` @@ -229,6 +249,9 @@ to use. (overrides the config value). - `JMP_TOKEN` - An exporter auth token generated by the controller (overrides the config value). +- `JMP_NAMESPACE` - The namespace in the jumpstarter-controller to use, like `metadata.namespace`. +- `JMP_NAME` - The client/exporter name in the jumpstarter-controller to use, like `metadata.name`. + ## Running an Exporter @@ -242,8 +265,7 @@ To run the exporter container on a test runner using Podman: ```{code-block} bash :substitutions: -$ sudo podman run --rm -ti --name my-exporter --net=host --privileged \ - -e JUMPSTARTER_GRPC_INSECURE=1 \ +$ sudo podman run --rm -ti --name my-exporter --net=host --privileged \ -v /run/udev:/run/udev -v /dev:/dev -v /etc/jumpstarter:/etc/jumpstarter \ quay.io/jumpstarter-dev/jumpstarter:{{version}} \ jmp-exporter run my-exporter @@ -273,8 +295,7 @@ Description=My exporter [Container] ContainerName=my-exporter -Environment=JUMPSTARTER_GRPC_INSECURE=1 -Exec=jmp-exporter run my-exporter +Exec=/jumpstarter/bin/jmp exporter run my-exporter Image=quay.io/jumpstarter-dev/jumpstarter:{{version}} Network=host PodmanArgs=--privileged @@ -282,6 +303,10 @@ Volume=/run/udev:/run/udev Volume=/dev:/dev Volume=/etc/jumpstarter:/etc/jumpstarter +[Service] +Restart=always +StartLimitBurst=0 + [Install] WantedBy=multi-user.target default.target ``` @@ -289,5 +314,6 @@ WantedBy=multi-user.target default.target Then enable and start the service: ```bash +sudo systemctl daemon-reload sudo systemctl enable --now my-exporter ``` diff --git a/docs/source/getting-started/setup-exporter-client.md b/docs/source/getting-started/setup-exporter-client.md index 09434d86c..878a5285b 100644 --- a/docs/source/getting-started/setup-exporter-client.md +++ b/docs/source/getting-started/setup-exporter-client.md @@ -5,7 +5,7 @@ controller service, configuring drivers, and running the exporter. ## Prerequisites -Make sure the following packages are installed in your Python environment: +Make sure [the following packages are installed](../installation/python-package.md) in your Python environment: - `jumpstarter-cli` - The core Jumpstarter CLI. - `jumpstarter-driver-opendal` - The OpenDAL storage driver. - `jumpstarter-driver-power` - The base power driver. diff --git a/docs/source/index.md b/docs/source/index.md index 9a10fe992..cebbffd97 100644 --- a/docs/source/index.md +++ b/docs/source/index.md @@ -17,10 +17,8 @@ installation/index.md getting-started/index.md cli/index.md config.md -drivers.md architecture.md glossary.md -cli-reference/index.md api-reference/index.md ``` diff --git a/docs/source/installation/container-jmp.md b/docs/source/installation/container-jmp.md deleted file mode 100644 index a296c012c..000000000 --- a/docs/source/installation/container-jmp.md +++ /dev/null @@ -1,45 +0,0 @@ -# Running in a Container - -For interacting with the Jumpstarter service without installing the Python -packages locally, you can create an alias to run the `jmp` client in a container. - -```{tip} -It is recommended to add the alias to your shell profile. -``` - -```{code-block} bash -:substitutions: -$ alias jmp='podman run --rm -it -e JUMPSTARTER_GRPC_INSECURE=1 \ - -v "${HOME}/.config/jumpstarter/:/root/.config/jumpstarter" \ - quay.io/jumpstarter-dev/jumpstarter:{{version}} jmp' -``` - -Then you can try: - -```bash -$ jmp client list-configs -CURRENT NAME ENDPOINT PATH -* default grpc.devel.jumpstarter.dev:443 /root/.config/jumpstarter/clients/default.yaml - test grpc.devel.jumpstarter.dev:443 /root/.config/jumpstarter/clients/test.yaml -``` - -## Hardware Access for Exporters - -If you need access to your hardware, i.e. because you are running the `jmp exporter` -or you are following the [local-only workflow](../introduction/how-it-works.md#local-only) -(i.e. without a distributed service), you need to mount access to devices into -the container, provide host network access, and run the container in privileged -mode, this probably needs to be run as **root**. - - -```{code-block} bash -:substitutions: -$ mkdir -p "${HOME}/.config/jumpstarter/" /etc/jumpstarter - -# you may want to add this alias to the profile -$ alias jmp-exporter='podman run --rm -it -e JUMPSTARTER_GRPC_INSECURE=1 \ - -v "${HOME}/.config/jumpstarter/:/root/.config/jumpstarter" \ - --net=host --privileged \ - -v /run/udev:/run/udev -v /dev:/dev -v /etc/jumpstarter:/etc/jumpstarter \ - quay.io/jumpstarter-dev/jumpstarter:{{version}} jmp-exporter' -``` diff --git a/docs/source/installation/index.md b/docs/source/installation/index.md index f80a20609..a86c5846c 100644 --- a/docs/source/installation/index.md +++ b/docs/source/installation/index.md @@ -4,24 +4,14 @@ This section contains guides to install the latest version of the Jumpstarter components. For other versions, please select the appropriate release of this documentation. -The Jumpstarter components which can be installed are: - -| Component | Description | -| -------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [`jumpstarter-controller`](https://github.com/jumpstarter-dev/jumpstarter-controller) | The Jumpstarter Controller service, runs in k8s, manages exporters, clients, leases, and provides routing between the clients and exporters. | -| [`jumpstarter`](https://github.com/jumpstarter-dev/jumpstarter/tree/main/packages/jumpstarter) | The core Jumpstarter Python package. This is necessary to lease and interact with the exporters, it's also the component that runs on the exporter hosts as a service. In most cases installation is not necessary and can be consumed through another package such as `jumpstarter-cli`. | -| [`jumpstarter-cli`](https://github.com/jumpstarter-dev/jumpstarter/tree/main/packages/jumpstarter-cli) | A metapackage containing all of the Jumpstarter CLI components including the cluster admin CLI `jumpstarter-cli-admin`, the client CLI `jumpstarter-cli-client`, and exporter CLI `jumpstarter-cli-exporter`. | -| [`jumpstarter-cli-admin`](https://github.com/jumpstarter-dev/jumpstarter/tree/main/packages/jumpstarter-cli-admin) | The Jumpstarter admin CLI (`jmp-admin`). This CLI can be used to install the Jumpstarter controller, manage client/exporter registrations, and monitor/control leases. | -| [`jumpstarter-cli-client`](https://github.com/jumpstarter-dev/jumpstarter/tree/main/packages/jumpstarter-cli-client) | The Jumpstarter client CLI (`jmp-client`/`j`). This CLI can be used to manage local client configs, start a lease on an exporter, and enter an interactive client shell. | -| [`jumpstarter-driver-*`](https://github.com/jumpstarter-dev/jumpstarter/tree/main/packages) | All community and official driver packages that are distributed as part of Jumpstarter are prefixed with `jumpstarter-driver-*`. This includes drivers for PySerial, SD Wire, HTTP, CAN, and more. Driver packages only need to be installed on the exporter/client if they are used by your testing environment. All drivers are optional. | -| [`jumpstarter-testing`](https://github.com/jumpstarter-dev/jumpstarter/tree/main/packages/jumpstarter-testing) | Testing tools for writing Jumpstarter-powered tests with `pytest`. | +There are 2 fundamental components of Jumpstarter, the [`jumpstarter` **python packages**](python-package.md) +and the optional [**service** `jumpstarter-controller`](service/index.md). +The **service** is an optional component that runs in [Kubernetes](https://kubernetes.io) which makes sharing exporters +easier in a lab, while the Python packages are necessary to setup and interact +exporters, and also provide a very helpful set of tools to manage the service. ```{toctree} -service/index.md -service-cli.md python-package.md -container-jmp.md +service/index.md ``` - - diff --git a/docs/source/installation/python-package.md b/docs/source/installation/python-package.md index 5e89f9b51..817c45331 100644 --- a/docs/source/installation/python-package.md +++ b/docs/source/installation/python-package.md @@ -1,23 +1,18 @@ -# Python Packages +# Python Packages and CLI +## Release install The [Jumpstarter Python packages](https://docs.jumpstarter.dev/packages/) contain all the necessary tools to run an exporter or interact with your hardware as a client. -This package includes: -- A client library. -- The client CLI tool. -- An exporter runtime and built-in drivers. - The Python package can be installed using ``pip`` or similar, Python {{requires_python}} is required.: - - ```bash $ pip3 install --extra-index-url https://docs.jumpstarter.dev/packages/simple \ - jumpstarter jumpstarter-driver-ustreamer jumpstarter-driver-can jumpstarter-driver-sdwire \ - jumpstarter-driver-dutlink jumpstarter-driver-raspberrypi \ - jumpstarter-imagehash + jumpstarter-all + +$ mkdir -p "${HOME}/.config/jumpstarter/" +$ sudo mkdir /etc/jumpstarter ``` ```{tip} @@ -32,4 +27,106 @@ $ source ~/.venv/jumpstarter/bin/activate $ pip3 install .... ``` -An alternative to installing the packages is to [use the container package](./container-jmp.md). +An alternative to installing the packages is to [use the container package](#running-in-a-container). + +## Development install +Jumpstarter is under heavy development, and new features are added frequently, we perform basic +e2e testing and thorough unit testing, so we recommend installing the latest version from the +`main` branch. + +For this you will need a few tools like `uv`, `make` and `git`. +```bash +$ sudo dnf install -y uv make git + +# Clone the repository +$ git clone https://github.com/jumpstarter-dev/jumpstarter.git +$ cd jumpstarter + +$ rm .python-version # remove the python version pining + +$ make # creates the dist directory with all the packages +$ make sync # installs the packages in a local .venv + +# create the configuration directories +$ mkdir -p "${HOME}/.config/jumpstarter/" +$ sudo mkdir /etc/jumpstarter + +``` + +Then you can use the jumpstarter cli commands by activating the Python +virtual environment: +```bash +$ source .venv/bin/activate +$ jmp version +``` + +```{tip} +If you configured a jmp / jmp-exporter or jmp-client alias to use the container +please undefine those aliases before running the `jmp` command. + +i.e. `unalias jmp` +``` + + +## Running in a Container + +For interacting with the Jumpstarter service without installing the Python +packages locally, you can create an alias to run the `jmp` client in a container. + +```{tip} +It is recommended to add the alias to your shell profile. +``` + +```{code-block} bash +:substitutions: +$ alias jmp-client='podman run --rm -it -w /home \ + -v "$(pwd):/home":z \ + -v "${HOME}/.config/jumpstarter/:/root/.config/jumpstarter":z \ + quay.io/jumpstarter-dev/jumpstarter:{{version}} jmp-client' +``` + +Then you can try: + +```bash +$ jmp-client list-configs +CURRENT NAME ENDPOINT PATH +* default grpc.devel.jumpstarter.dev:443 /root/.config/jumpstarter/clients/default.yaml + test grpc.devel.jumpstarter.dev:443 /root/.config/jumpstarter/clients/test.yaml +``` + +### Hardware Access for Exporters + +If you need access to your hardware, i.e. because you are running the `jmp exporter` +or you are following the [local-only workflow](../introduction/how-it-works.md#local-only) +(i.e. without a distributed service), you need to mount access to devices into +the container, provide host network access, and run the container in privileged +mode, this probably needs to be run as **root**. + + +```{code-block} bash +:substitutions: +$ mkdir -p "${HOME}/.config/jumpstarter/" /etc/jumpstarter + +# you may want to add this alias to the profile +$ alias jmp-exporter='podman run --rm -it \ + -v "${HOME}/.config/jumpstarter/:/root/.config/jumpstarter":z \ + --net=host --privileged \ + -v /run/udev:/run/udev -v /dev:/dev -v /etc/jumpstarter:/etc/jumpstarter:z \ + quay.io/jumpstarter-dev/jumpstarter:{{version}} jmp-exporter' +``` + +## Python Components + + +The Jumpstarter packages which can be installed are: + +| Component | Description | +| -------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [`jumpstarter`](https://github.com/jumpstarter-dev/jumpstarter/tree/main/packages/jumpstarter) | The core Jumpstarter Python package. This is necessary to lease and interact with the exporters, it's also the component that runs on the exporter hosts as a service. In most cases installation is not necessary and can be consumed through another package such as `jumpstarter-cli`. | +| [`jumpstarter-cli`](https://github.com/jumpstarter-dev/jumpstarter/tree/main/packages/jumpstarter-cli) | A metapackage containing all of the Jumpstarter CLI components including the cluster admin CLI `jumpstarter-cli-admin`, the client CLI `jumpstarter-cli-client`, and exporter CLI `jumpstarter-cli-exporter`. | +| [`jumpstarter-cli-admin`](https://github.com/jumpstarter-dev/jumpstarter/tree/main/packages/jumpstarter-cli-admin) | The Jumpstarter admin CLI (`jmp-admin`). This CLI can be used to install the Jumpstarter controller, manage client/exporter registrations, and monitor/control leases. | +| [`jumpstarter-cli-client`](https://github.com/jumpstarter-dev/jumpstarter/tree/main/packages/jumpstarter-cli-client) | The Jumpstarter client CLI (`jmp-client`/`j`). This CLI can be used to manage local client configs, start a lease on an exporter, and enter an interactive client shell. | +| [`jumpstarter-driver-*`](https://github.com/jumpstarter-dev/jumpstarter/tree/main/packages) | All community and official driver packages that are distributed as part of Jumpstarter are prefixed with `jumpstarter-driver-*`. This includes drivers for PySerial, SD Wire, HTTP, CAN, and more. Driver packages only need to be installed on the exporter/client if they are used by your testing environment. All drivers are optional. | +| [`jumpstarter-adapter-*`](https://github.com/jumpstarter-dev/jumpstarter/tree/main/packages) | All community and official adapter packages that are distributed as part of Jumpstarter are prefixed with `jumpstarter-adapter-*`. This includes adapters to redirect streams to local ports, unix sockets, perform ssh connections, etc. | +| [`jumpstarter-imagehash`](https://github.com/jumpstarter-dev/jumpstarter/tree/main/packages/jumpstarter-imagehash) | A library to perform image checking from video inputs using the simple python imagehash library | +| [`jumpstarter-testing`](https://github.com/jumpstarter-dev/jumpstarter/tree/main/packages/jumpstarter-testing) | Testing tools for writing Jumpstarter-powered tests with `pytest`.| \ No newline at end of file diff --git a/docs/source/installation/service-cli.md b/docs/source/installation/service-cli.md deleted file mode 100644 index 26082ae3e..000000000 --- a/docs/source/installation/service-cli.md +++ /dev/null @@ -1,49 +0,0 @@ -# Service CLI - -The distributed service CLI (jmpctl) is a command line interface that enables easy administration -of your Exporters and Clients. - -Please refer to [the latest release page](https://github.com/jumpstarter-dev/jumpstarter-controller/releases/latest) for -the latest version. - -## Installing the CLI -```{code-block} bash -:substitutions: -export VERSION={{controller_version}} -export ARCH=amd64 # or arm64 (Apple Silicon) -export PLATFORM=linux # or darwin for macOS - -curl -L https://github.com/jumpstarter-dev/jumpstarter-controller/releases/download/v${VERSION}/jmpctl_${VERSION}_${PLATFORM}_${ARCH} -o jmpctl -sudo install jmpctl /usr/local/bin/jmpctl && rm jmpctl -``` - -## Configuration -The `jmpctl` CLI requires a kubeconfig file with permissions to access the jumpstarter installation. - -`jumpstarter-lab` is the default if you followed the previous install sections. - - -## Usage -```bash -$ jmpctl -Admin CLI for managing jumpstarter - -Usage: - jmpctl [command] - -Available Commands: - client Manage clients - completion Generate the autocompletion script for the specified shell - exporter Manage exporters - help Help about any command - -Flags: - -h, --help help for jmpctl - --kubeconfig string Path to the kubeconfig file to use - --namespace string Kubernetes namespace to operate on (default "default") - --timeout string command timeout (default "10s") - -Use "jmpctl [command] --help" for more information about a command. - -``` - diff --git a/packages/jumpstarter-all/README.md b/packages/jumpstarter-all/README.md new file mode 100644 index 000000000..6b115fe2c --- /dev/null +++ b/packages/jumpstarter-all/README.md @@ -0,0 +1,8 @@ +# jumpstarter-all + +The Jumpstarter project is a collection of tools and services to help automate the +testing of/on hardware devices. + +This is a meta-package that pulls installation of all the Python modules produced +in the Jumpstarter project. + diff --git a/packages/jumpstarter-all/jumpstarter_all/noop_test.py b/packages/jumpstarter-all/jumpstarter_all/noop_test.py new file mode 100644 index 000000000..a3e981b51 --- /dev/null +++ b/packages/jumpstarter-all/jumpstarter_all/noop_test.py @@ -0,0 +1,2 @@ +def test_nothing(): + pass diff --git a/packages/jumpstarter-all/pyproject.toml b/packages/jumpstarter-all/pyproject.toml new file mode 100644 index 000000000..99ecbe0b3 --- /dev/null +++ b/packages/jumpstarter-all/pyproject.toml @@ -0,0 +1,46 @@ +[project] +name = "jumpstarter-all" +dynamic = ["version", "urls"] +description = "Jumpstarter meta-package which will install all packages" +authors = [{ name = "Miguel Angel Ajo", email = "majopela@redhat.com" }] +readme = "README.md" +license = { text = "Apache-2.0" } +requires-python = ">=3.11" +dependencies = [ + "jumpstarter", + "jumpstarter-cli", + "jumpstarter-driver-can", + "jumpstarter-driver-composite", + "jumpstarter-driver-dutlink", + "jumpstarter-driver-http", + "jumpstarter-driver-network", + "jumpstarter-driver-opendal", + "jumpstarter-driver-power", + "jumpstarter-driver-pyserial", + "jumpstarter-driver-raspberrypi", + "jumpstarter-driver-sdwire", + "jumpstarter-driver-shell", + "jumpstarter-driver-snmp", + "jumpstarter-driver-tftp", + "jumpstarter-driver-ustreamer", + "jumpstarter-driver-yepkit", + "jumpstarter-imagehash", + "jumpstarter-kubernetes", + "jumpstarter-protocol", + "jumpstarter-testing", +] + +[tool.hatch.build.targets.wheel] +packages = ["jumpstarter_all"] + +[tool.hatch.metadata.hooks.vcs.urls] +Homepage = "https://jumpstarter.dev" +source_archive = "https://github.com/jumpstarter-dev/repo/archive/{commit_hash}.zip" + +[tool.hatch.version] +source = "vcs" +raw-options = { 'root' = '../../' } + +[build-system] +requires = ["hatchling", "hatch-vcs"] +build-backend = "hatchling.build" diff --git a/packages/jumpstarter-driver-shell/pyproject.toml b/packages/jumpstarter-driver-shell/pyproject.toml index 773e95e8a..f35b30447 100644 --- a/packages/jumpstarter-driver-shell/pyproject.toml +++ b/packages/jumpstarter-driver-shell/pyproject.toml @@ -1,38 +1,42 @@ [project] name = "jumpstarter-driver-shell" -version = "0.1.0" +dynamic = ["version", "urls"] description = "Jumpstarter shell driver, for running controlled shell commands on the exporter." readme = "README.md" authors = [ { name = "Miguel Angel Ajo", email = "miguelangel@ajo.es" } ] requires-python = ">=3.11" +license = { text = "Apache-2.0" } dependencies = [ "anyio>=4.6.2.post1", "jumpstarter", ] -[tool.hatch.version] -source = "vcs" -raw-options = { 'root' = '../../'} - -[tool.hatch.metadata.hooks.vcs.urls] -Homepage = "https://jumpstarter.dev" -source_archive = "https://github.com/jumpstarter-dev/repo/archive/{commit_hash}.zip" - +[project.entry-points."jumpstarter.drivers"] +Shell = "jumpstarter_driver_shell.driver:Shell" [tool.pytest.ini_options] addopts = "--cov --cov-report=html --cov-report=xml" log_cli = true log_cli_level = "INFO" testpaths = ["jumpstarter_driver_shell"] -[build-system] -requires = ["hatchling", "hatch-vcs"] -build-backend = "hatchling.build" [dependency-groups] dev = [ "pytest-cov>=6.0.0", "pytest>=8.3.3", - "ruff>=0.7.1", ] + + +[tool.hatch.metadata.hooks.vcs.urls] +Homepage = "https://jumpstarter.dev" +source_archive = "https://github.com/jumpstarter-dev/repo/archive/{commit_hash}.zip" + +[tool.hatch.version] +source = "vcs" +raw-options = { 'root' = '../../'} + +[build-system] +requires = ["hatchling", "hatch-vcs"] +build-backend = "hatchling.build" diff --git a/packages/jumpstarter-driver-yepkit/pyproject.toml b/packages/jumpstarter-driver-yepkit/pyproject.toml index cd8c69d56..84d9df8ca 100644 --- a/packages/jumpstarter-driver-yepkit/pyproject.toml +++ b/packages/jumpstarter-driver-yepkit/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "jumpstarter-driver-yepkit" -version = "0.1.0" +dynamic = ["version", "urls"] description = "Add your description here" readme = "README.md" authors = [ @@ -14,6 +14,10 @@ dependencies = [ "jumpstarter", ] +[project.entry-points."jumpstarter.drivers"] +Ykush = "jumpstarter_driver_yepkit.driver:Ykush" + + [tool.hatch.version] source = "vcs" raw-options = { 'root' = '../../'} diff --git a/pyproject.toml b/pyproject.toml index 7acf8d378..5e5851691 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -21,7 +21,9 @@ jumpstarter-driver-pyserial = { workspace = true } jumpstarter-driver-sdwire = { workspace = true } jumpstarter-driver-tftp = { workspace = true } jumpstarter-driver-snmp = { workspace = true } +jumpstarter-driver-shell = { workspace = true } jumpstarter-driver-ustreamer = { workspace = true } +jumpstarter-driver-yepkit = { workspace = true } jumpstarter-imagehash = { workspace = true } jumpstarter-kubernetes = { workspace = true } jumpstarter-protocol = { workspace = true } diff --git a/uv.lock b/uv.lock index eb57a7c9c..f2557cc51 100644 --- a/uv.lock +++ b/uv.lock @@ -4,6 +4,7 @@ requires-python = ">=3.12.3" [manifest] members = [ "jumpstarter", + "jumpstarter-all", "jumpstarter-cli", "jumpstarter-cli-admin", "jumpstarter-cli-client", @@ -770,6 +771,7 @@ wheels = [ [[package]] name = "jumpstarter" +version = "0.5.1.dev261+ga9c72c3.d20250212" source = { editable = "packages/jumpstarter" } dependencies = [ { name = "aiohttp" }, @@ -814,8 +816,61 @@ dev = [ { name = "pytest-cov", specifier = ">=6.0.0" }, ] +[[package]] +name = "jumpstarter-all" +source = { editable = "packages/jumpstarter-all" } +dependencies = [ + { name = "jumpstarter" }, + { name = "jumpstarter-cli" }, + { name = "jumpstarter-driver-can" }, + { name = "jumpstarter-driver-composite" }, + { name = "jumpstarter-driver-dutlink" }, + { name = "jumpstarter-driver-http" }, + { name = "jumpstarter-driver-network" }, + { name = "jumpstarter-driver-opendal" }, + { name = "jumpstarter-driver-power" }, + { name = "jumpstarter-driver-pyserial" }, + { name = "jumpstarter-driver-raspberrypi" }, + { name = "jumpstarter-driver-sdwire" }, + { name = "jumpstarter-driver-shell" }, + { name = "jumpstarter-driver-snmp" }, + { name = "jumpstarter-driver-tftp" }, + { name = "jumpstarter-driver-ustreamer" }, + { name = "jumpstarter-driver-yepkit" }, + { name = "jumpstarter-imagehash" }, + { name = "jumpstarter-kubernetes" }, + { name = "jumpstarter-protocol" }, + { name = "jumpstarter-testing" }, +] + +[package.metadata] +requires-dist = [ + { name = "jumpstarter", editable = "packages/jumpstarter" }, + { name = "jumpstarter-cli", editable = "packages/jumpstarter-cli" }, + { name = "jumpstarter-driver-can", editable = "packages/jumpstarter-driver-can" }, + { name = "jumpstarter-driver-composite", editable = "packages/jumpstarter-driver-composite" }, + { name = "jumpstarter-driver-dutlink", editable = "packages/jumpstarter-driver-dutlink" }, + { name = "jumpstarter-driver-http", editable = "packages/jumpstarter-driver-http" }, + { name = "jumpstarter-driver-network", editable = "packages/jumpstarter-driver-network" }, + { name = "jumpstarter-driver-opendal", editable = "packages/jumpstarter-driver-opendal" }, + { name = "jumpstarter-driver-power", editable = "packages/jumpstarter-driver-power" }, + { name = "jumpstarter-driver-pyserial", editable = "packages/jumpstarter-driver-pyserial" }, + { name = "jumpstarter-driver-raspberrypi", editable = "packages/jumpstarter-driver-raspberrypi" }, + { name = "jumpstarter-driver-sdwire", editable = "packages/jumpstarter-driver-sdwire" }, + { name = "jumpstarter-driver-shell", editable = "packages/jumpstarter-driver-shell" }, + { name = "jumpstarter-driver-snmp", editable = "packages/jumpstarter-driver-snmp" }, + { name = "jumpstarter-driver-tftp", editable = "packages/jumpstarter-driver-tftp" }, + { name = "jumpstarter-driver-ustreamer", editable = "packages/jumpstarter-driver-ustreamer" }, + { name = "jumpstarter-driver-yepkit", editable = "packages/jumpstarter-driver-yepkit" }, + { name = "jumpstarter-imagehash", editable = "packages/jumpstarter-imagehash" }, + { name = "jumpstarter-kubernetes", editable = "packages/jumpstarter-kubernetes" }, + { name = "jumpstarter-protocol", editable = "packages/jumpstarter-protocol" }, + { name = "jumpstarter-testing", editable = "packages/jumpstarter-testing" }, +] + [[package]] name = "jumpstarter-cli" +version = "0.5.1.dev261+ga9c72c3.d20250212" source = { editable = "packages/jumpstarter-cli" } dependencies = [ { name = "jumpstarter-cli-admin" }, @@ -850,6 +905,7 @@ dev = [ [[package]] name = "jumpstarter-cli-admin" +version = "0.5.1.dev261+ga9c72c3.d20250212" source = { editable = "packages/jumpstarter-cli-admin" } dependencies = [ { name = "jumpstarter-cli-common" }, @@ -880,6 +936,7 @@ dev = [ [[package]] name = "jumpstarter-cli-client" +version = "0.5.1.dev261+ga9c72c3.d20250212" source = { editable = "packages/jumpstarter-cli-client" } dependencies = [ { name = "jumpstarter-cli-common" }, @@ -906,6 +963,7 @@ dev = [ [[package]] name = "jumpstarter-cli-common" +version = "0.5.1.dev291+g22a21c9" source = { editable = "packages/jumpstarter-cli-common" } dependencies = [ { name = "asyncclick" }, @@ -944,6 +1002,7 @@ dev = [ [[package]] name = "jumpstarter-cli-driver" +version = "0.5.1.dev261+ga9c72c3.d20250212" source = { editable = "packages/jumpstarter-cli-driver" } dependencies = [ { name = "asyncclick" }, @@ -974,6 +1033,7 @@ dev = [ [[package]] name = "jumpstarter-cli-exporter" +version = "0.5.1.dev261+ga9c72c3.d20250212" source = { editable = "packages/jumpstarter-cli-exporter" } dependencies = [ { name = "asyncclick" }, @@ -1004,6 +1064,7 @@ dev = [ [[package]] name = "jumpstarter-driver-can" +version = "0.5.1.dev261+ga9c72c3.d20250212" source = { editable = "packages/jumpstarter-driver-can" } dependencies = [ { name = "can-isotp" }, @@ -1032,6 +1093,7 @@ dev = [ [[package]] name = "jumpstarter-driver-composite" +version = "0.5.1.dev261+ga9c72c3.d20250212" source = { editable = "packages/jumpstarter-driver-composite" } dependencies = [ { name = "asyncclick" }, @@ -1060,6 +1122,7 @@ dev = [ [[package]] name = "jumpstarter-driver-dutlink" +version = "0.5.1.dev261+ga9c72c3.d20250212" source = { editable = "packages/jumpstarter-driver-dutlink" } dependencies = [ { name = "asyncclick" }, @@ -1168,6 +1231,7 @@ dev = [ [[package]] name = "jumpstarter-driver-opendal" +version = "0.5.1.dev261+ga9c72c3.d20250212" source = { editable = "packages/jumpstarter-driver-opendal" } dependencies = [ { name = "asyncclick" }, @@ -1196,6 +1260,7 @@ dev = [ [[package]] name = "jumpstarter-driver-power" +version = "0.5.1.dev261+ga9c72c3.d20250212" source = { editable = "packages/jumpstarter-driver-power" } dependencies = [ { name = "asyncclick" }, @@ -1226,6 +1291,7 @@ dev = [ [[package]] name = "jumpstarter-driver-pyserial" +version = "0.5.1.dev291+g22a21c9" source = { editable = "packages/jumpstarter-driver-pyserial" } dependencies = [ { name = "asyncclick" }, @@ -1260,6 +1326,7 @@ dev = [ [[package]] name = "jumpstarter-driver-raspberrypi" +version = "0.5.1.dev261+ga9c72c3.d20250212" source = { editable = "packages/jumpstarter-driver-raspberrypi" } dependencies = [ { name = "gpiozero" }, @@ -1286,6 +1353,7 @@ dev = [ [[package]] name = "jumpstarter-driver-sdwire" +version = "0.5.1.dev261+ga9c72c3.d20250212" source = { editable = "packages/jumpstarter-driver-sdwire" } dependencies = [ { name = "jumpstarter" }, @@ -1316,7 +1384,6 @@ dev = [ [[package]] name = "jumpstarter-driver-shell" -version = "0.1.0" source = { editable = "packages/jumpstarter-driver-shell" } dependencies = [ { name = "anyio" }, @@ -1327,7 +1394,6 @@ dependencies = [ dev = [ { name = "pytest" }, { name = "pytest-cov" }, - { name = "ruff" }, ] [package.metadata] @@ -1340,7 +1406,6 @@ requires-dist = [ dev = [ { name = "pytest", specifier = ">=8.3.3" }, { name = "pytest-cov", specifier = ">=6.0.0" }, - { name = "ruff", specifier = ">=0.7.1" }, ] [[package]] @@ -1415,6 +1480,7 @@ dev = [ [[package]] name = "jumpstarter-driver-ustreamer" +version = "0.5.1.dev261+ga9c72c3.d20250212" source = { editable = "packages/jumpstarter-driver-ustreamer" } dependencies = [ { name = "jumpstarter" }, @@ -1441,7 +1507,7 @@ dev = [ [[package]] name = "jumpstarter-driver-yepkit" -version = "0.1.0" +version = "0.5.1.dev291+g22a21c9.d20250218" source = { editable = "packages/jumpstarter-driver-yepkit" } dependencies = [ { name = "anyio" }, @@ -1506,6 +1572,7 @@ requires-dist = [ [[package]] name = "jumpstarter-imagehash" +version = "0.5.1.dev261+ga9c72c3.d20250212" source = { editable = "packages/jumpstarter-imagehash" } dependencies = [ { name = "imagehash" }, @@ -1532,6 +1599,7 @@ dev = [ [[package]] name = "jumpstarter-kubernetes" +version = "0.5.1.dev261+ga9c72c3.d20250212" source = { editable = "packages/jumpstarter-kubernetes" } dependencies = [ { name = "jumpstarter" }, @@ -1564,6 +1632,7 @@ dev = [ [[package]] name = "jumpstarter-protocol" +version = "0.5.1.dev261+ga9c72c3.d20250212" source = { editable = "packages/jumpstarter-protocol" } dependencies = [ { name = "grpcio" }, @@ -1594,6 +1663,7 @@ dev = [ [[package]] name = "jumpstarter-testing" +version = "0.5.1.dev261+ga9c72c3.d20250212" source = { editable = "packages/jumpstarter-testing" } dependencies = [ { name = "jumpstarter" },