Skip to content
This repository was archived by the owner on Jan 23, 2026. It is now read-only.

Commit 09b7515

Browse files
authored
Merge branch 'main' into lease-transfer
2 parents b4c44e6 + 882775c commit 09b7515

38 files changed

Lines changed: 1746 additions & 138 deletions

File tree

.devcontainer/Dockerfile

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,5 @@ COPY --from=ghcr.io/astral-sh/uv:latest /uv /bin/uv
99
COPY --from=ghcr.io/astral-sh/uv:latest /uvx /bin/uvx
1010
COPY ./.python-version ./
1111

12-
RUN uv python pin "$(cat .python-version)"
13-
1412
# Install required tools for development
1513
RUN apt-get update && apt-get install -y iperf3 libusb-dev

.devcontainer/devcontainer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"dockerfile": "Dockerfile"
66
},
77
"postCreateCommand": "make sync",
8-
"postStartCommand": "uv run pre-commit install",
8+
"postStartCommand": "uv python pin 3.12 && uv run pre-commit install",
99
"remoteUser": "vscode",
1010
// Mount USB devices to devcontainer for tests
1111
"mounts": [

.github/workflows/documentation.yaml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,9 @@ jobs:
4242
version: "latest"
4343

4444
- name: Install Python
45-
run: uv python install
45+
run: |
46+
uv python pin 3.12
47+
uv python install
4648
4749
- name: Setup Pages
4850
id: pages
@@ -80,7 +82,9 @@ jobs:
8082
version: "latest"
8183

8284
- name: Install Python
83-
run: uv python install
85+
run: |
86+
uv python pin 3.12
87+
uv python install
8488
8589
- name: Build the documentation for the current version (no warnings allowed)
8690
run: make sync && make docs

.python-version

Lines changed: 0 additions & 1 deletion
This file was deleted.

README.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,17 @@
33
[![Matrix](https://img.shields.io/matrix/jumpstarter%3Amatrix.org?color=blue)](https://matrix.to/#/#jumpstarter:matrix.org)
44
[![Etherpad](https://img.shields.io/badge/Etherpad-Notes-blue?logo=etherpad)](https://etherpad.jumpstarter.dev/pad-lister)
55
[![Community Meeting](https://img.shields.io/badge/Weekly%20Meeting-Google%20Meet-blue?logo=google-meet)](https://meet.google.com/gzd-hhbd-hpu)
6+
![GitHub Release](https://img.shields.io/github/v/release/jumpstarter-dev/jumpstarter)
7+
![PyPI - Version](https://img.shields.io/pypi/v/jumpstarter)
8+
![GitHub Downloads (all assets, all releases)](https://img.shields.io/github/downloads/jumpstarter-dev/jumpstarter/total)
9+
[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/jumpstarter-dev/jumpstarter)
10+
11+
[![E2E Tests](https://github.com/jumpstarter-dev/jumpstarter/actions/workflows/e2e.yaml/badge.svg)](https://github.com/jumpstarter-dev/jumpstarter/actions/workflows/e2e.yaml)
12+
[![Tests](https://github.com/jumpstarter-dev/jumpstarter/actions/workflows/pytest.yaml/badge.svg)](https://github.com/jumpstarter-dev/jumpstarter/actions/workflows/pytest.yaml)
13+
[![documentation](https://github.com/jumpstarter-dev/jumpstarter/actions/workflows/documentation.yaml/badge.svg)](https://github.com/jumpstarter-dev/jumpstarter/actions/workflows/documentation.yaml)<br>
14+
[![Wheels](https://github.com/jumpstarter-dev/jumpstarter/actions/workflows/publish.yaml/badge.svg)](https://github.com/jumpstarter-dev/jumpstarter/actions/workflows/publish.yaml)
15+
[![Flashing bundles](https://github.com/jumpstarter-dev/jumpstarter/actions/workflows/build_oci_bundle.yaml/badge.svg)](https://github.com/jumpstarter-dev/jumpstarter/actions/workflows/build_oci_bundle.yaml)
16+
[![Containers](https://github.com/jumpstarter-dev/jumpstarter/actions/workflows/build.yaml/badge.svg)](https://github.com/jumpstarter-dev/jumpstarter/actions/workflows/build.yaml)
617

718
A free, open source tool for automated testing on real and virtual hardware with
819
CI/CD integration. Simplify device automation with consistent rules across local

docs/source/reference/package-apis/drivers/index.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ Drivers that provide various communication interfaces:
4242
Protocol
4343
* **[TFTP](tftp.md)** (`jumpstarter-driver-tftp`) - Trivial File Transfer
4444
Protocol
45+
* **[VNC](vnc.md)** (`jumpstarter-driver-vnc`) - VNC (Virtual Network Computing) remote desktop protocol
4546

4647
### Storage and Data Drivers
4748

@@ -111,5 +112,6 @@ tmt.md
111112
tftp.md
112113
uboot.md
113114
ustreamer.md
115+
vnc.md
114116
yepkit.md
115117
```
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../../../../../packages/jumpstarter-driver-vnc/README.md

packages/jumpstarter-all/pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ dependencies = [
3535
"jumpstarter-driver-tmt",
3636
"jumpstarter-driver-uboot",
3737
"jumpstarter-driver-ustreamer",
38+
"jumpstarter-driver-vnc",
3839
"jumpstarter-driver-yepkit",
3940
"jumpstarter-imagehash",
4041
"jumpstarter-kubernetes",

packages/jumpstarter-cli/jumpstarter_cli/create.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,17 @@ def create():
2222
@opt_selector
2323
@opt_duration_partial(required=True)
2424
@opt_begin_time
25+
@click.option(
26+
"--lease-id",
27+
type=str,
28+
default=None,
29+
help="Optional lease ID to request (if not provided, server will generate one)",
30+
)
2531
@opt_output_all
2632
@handle_exceptions_with_reauthentication(relogin_client)
27-
def create_lease(config, selector: str, duration: timedelta, begin_time: datetime | None, output: OutputType):
33+
def create_lease(
34+
config, selector: str, duration: timedelta, begin_time: datetime | None, lease_id: str | None, output: OutputType
35+
):
2836
"""
2937
Create a lease
3038
@@ -48,8 +56,14 @@ def create_lease(config, selector: str, duration: timedelta, begin_time: datetim
4856
$$ exit
4957
$ jmp delete lease "${JMP_LEASE}"
5058
59+
You can also specify a unique custom lease ID:
60+
61+
.. code-block:: bash
62+
63+
$ jmp create lease -l foo=bar --duration 1d --lease-id my-custom-lease-id
64+
5165
"""
5266

53-
lease = config.create_lease(selector=selector, duration=duration, begin_time=begin_time)
67+
lease = config.create_lease(selector=selector, duration=duration, begin_time=begin_time, lease_id=lease_id)
5468

5569
model_print(lease, output)

packages/jumpstarter-cli/jumpstarter_cli/shell.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ def _run_shell_with_lease(lease, exporter_logs, config, command):
2020
def launch_remote_shell(path: str) -> int:
2121
return launch_shell(
2222
path, lease.exporter_name, config.drivers.allow, config.drivers.unsafe,
23-
config.shell.use_profiles, command=command
23+
config.shell.use_profiles, command=command, lease=lease
2424
)
2525

2626
with lease.serve_unix() as path:

0 commit comments

Comments
 (0)