Skip to content

Commit 2226516

Browse files
kirkbrauerclaude
andcommitted
Merge origin/main into rust-core-rewrite
Brings the 41 commits that landed on main since the branch point (Jun 12): CI/renovate/container configs, the new jumpstarter-driver-obd, sdwire/flashers/ble driver updates, JEP-0014 docs, and Go-controller deploy changes — all of which are orthogonal to the Rust rewrite and merged cleanly. Conflict resolution (our Rust rewrite supersedes the Python these patches touched): - exporter/hooks.py, hooks_test.py, client/lease.py, common/utils_test.py: kept deleted (hooks, lease lifecycle, and shell launching are owned by the Rust core). - common/utils.py, utils/env.py: kept ours (thin client; utils/env.py retains the #53 ExporterMetadata/env_with_metadata helper ported in the previous commit). - config/env.py: union of both (JMP_EXPORTER/JMP_EXPORTER_LABELS + JMP_LEASE). - python/Makefile: kept both new .PHONY targets (sync-native + test-report). - uv.lock: regenerated from the merged pyprojects. The two main patches that DID touch rewritten logic were hand-ported first: #53 (exporter-context shell env vars) and #823 (hooks endLease release, already satisfied). Verified: 128 Python tests pass across core + the merged drivers; no dangling references to the deleted modules; uv sync reconciles the env (obd installed). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2 parents a0c68e3 + 86c308e commit 2226516

81 files changed

Lines changed: 4842 additions & 369 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.devcontainer/Containerfile

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
FROM mcr.microsoft.com/devcontainers/base:2.1.10-bookworm@sha256:aba0f2e0730af481edf2db5582a80c0ed2591bee78ec177f7fa7a38e8f5e1105
2+
3+
ENV PYTHONUNBUFFERED=True
4+
ENV UV_LINK_MODE=copy
5+
6+
WORKDIR /opt
7+
8+
COPY --from=ghcr.io/astral-sh/uv:0.11.23@sha256:d0a0a753ab981624b49c97abc98821c1c09f4ca69d1ef5cee69c501be3d88479 /uv /uvx /bin/
9+
COPY ./.py-version ./.python-version
10+
11+
RUN apt-get update && apt-get install -y iperf3 libusb-dev

.devcontainer/Dockerfile

Lines changed: 0 additions & 13 deletions
This file was deleted.

.devcontainer/devcontainer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "uv",
33
"build": {
44
"context": "..",
5-
"dockerfile": "Dockerfile"
5+
"dockerfile": "Containerfile"
66
},
77
"postCreateCommand": "cd python && make sync",
88
"postStartCommand": "cd python && uv python pin $(cat ../.py-version) && uv run pre-commit install",

.github/workflows/backport.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@ jobs:
2525
app-id: ${{ secrets.JUMPSTARTER_BACKPORT_BOT_APP_ID }}
2626
private-key: ${{ secrets.JUMPSTARTER_BACKPORT_BOT_PRIVATE_KEY }}
2727

28-
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
28+
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
2929
with:
30-
ref: ${{ github.event.pull_request.head.sha }}
30+
ref: ${{ github.event.pull_request.merge_commit_sha }}
3131
token: ${{ steps.app-token.outputs.token }}
3232

3333
- name: Create backport PRs

.github/workflows/build-images.yaml

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -32,15 +32,15 @@ jobs:
3232
# Controller images
3333
- image_name: jumpstarter-dev/jumpstarter-controller
3434
label: jumpstarter-controller
35-
dockerfile: controller/Dockerfile
35+
dockerfile: controller/Containerfile
3636
context: controller
3737
- image_name: jumpstarter-dev/jumpstarter-operator
3838
label: jumpstarter-operator
39-
dockerfile: controller/Dockerfile.operator
39+
dockerfile: controller/Containerfile.operator
4040
context: controller
4141
- image_name: jumpstarter-dev/jumpstarter-operator-bundle
4242
label: jumpstarter-operator-bundle
43-
dockerfile: controller/deploy/operator/bundle.Dockerfile
43+
dockerfile: controller/deploy/operator/Containerfile.bundle
4444
context: controller/deploy/operator
4545
generate_bundle: true
4646
- image_name: jumpstarter-dev/microshift/bootc
@@ -50,23 +50,23 @@ jobs:
5050
# Python images (use repo root context for .git access needed by hatch-vcs)
5151
- image_name: jumpstarter-dev/jumpstarter
5252
label: jumpstarter
53-
dockerfile: python/Dockerfile
53+
dockerfile: python/Containerfile
5454
context: .
5555
- image_name: jumpstarter-dev/jumpstarter-utils
5656
label: jumpstarter-utils
57-
dockerfile: python/Dockerfile.utils
57+
dockerfile: python/Containerfile.utils
5858
context: python
5959
- image_name: jumpstarter-dev/jumpstarter-dev
6060
label: jumpstarter-dev
6161
dockerfile: python/.devfile/Containerfile
62-
context: python
62+
context: .
6363
- image_name: jumpstarter-dev/jumpstarter-devspace
6464
label: jumpstarter-devspace
6565
dockerfile: python/.devfile/Containerfile.client
6666
context: .
6767
steps:
6868
- name: Checkout repository
69-
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
69+
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
7070
with:
7171
fetch-depth: 0
7272

@@ -152,14 +152,14 @@ jobs:
152152
153153
- name: Set up QEMU
154154
if: steps.check.outputs.skip != 'true'
155-
uses: docker/setup-qemu-action@v4
155+
uses: docker/setup-qemu-action@06116385d9baf250c9f4dcb4858b16962ea869c3 # v4
156156

157157
- name: Set up Docker Buildx
158158
if: steps.check.outputs.skip != 'true'
159-
uses: docker/setup-buildx-action@v4
159+
uses: docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4
160160

161161
- name: Log in to the Container registry
162-
uses: docker/login-action@v4
162+
uses: docker/login-action@650006c6eb7dba73a995cc03b0b2d7f5ca915bee # v4
163163
if: ${{ env.PUSH == 'true' && steps.check.outputs.skip != 'true' }}
164164
with:
165165
registry: ${{ env.REGISTRY }}
@@ -169,7 +169,7 @@ jobs:
169169
- name: Extract metadata (tags, labels) for Docker
170170
if: steps.check.outputs.skip != 'true'
171171
id: meta
172-
uses: docker/metadata-action@v6
172+
uses: docker/metadata-action@80c7e94dd9b9319bd5eb7a0e0fe9291e23a2a2e9 # v6
173173
with:
174174
images: ${{ env.REGISTRY }}/${{ matrix.image_name }}
175175
tags: |
@@ -180,7 +180,7 @@ jobs:
180180
- name: Build and push Docker image
181181
if: steps.check.outputs.skip != 'true'
182182
id: push
183-
uses: docker/build-push-action@v7
183+
uses: docker/build-push-action@f9f3042f7e2789586610d6e8b85c8f03e5195baf # v7
184184
with:
185185
context: ${{ matrix.context }}
186186
file: ${{ matrix.dockerfile }}

.github/workflows/build-oci-bundle.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ on:
66
jobs:
77
build-fits:
88
runs-on: ubuntu-24.04-arm
9-
container: fedora:43@sha256:762d73ba1c455232b0272c5d445a34f36c4b9f421cbc05ce8102552325b6a222
9+
container: registry.fedoraproject.org/fedora:44
1010
steps:
1111
- name: Checkout repository
12-
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
12+
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
1313
with:
1414
fetch-depth: 0
1515

.github/workflows/controller-kind.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ jobs:
1111
runs-on: ubuntu-latest
1212
steps:
1313
- name: Checkout repository
14-
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
14+
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
1515
with:
1616
fetch-depth: 0
1717

@@ -23,7 +23,7 @@ jobs:
2323
runs-on: ubuntu-latest
2424
steps:
2525
- name: Checkout repository
26-
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
26+
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
2727
with:
2828
fetch-depth: 0
2929

.github/workflows/controller-tests.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ jobs:
1212
runs-on: ubuntu-latest
1313
steps:
1414
- name: Checkout repository
15-
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
15+
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
1616
with:
1717
fetch-depth: 0
1818

.github/workflows/documentation.yaml

Lines changed: 10 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -40,15 +40,18 @@ jobs:
4040
build:
4141
runs-on: ubuntu-latest
4242
steps:
43-
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
43+
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
4444
with:
4545
fetch-depth: 0
4646
fetch-tags: true
4747

48+
- id: uv
49+
run: echo "version=$(cat .uv-version)" >> "$GITHUB_OUTPUT"
50+
working-directory: .
4851
- name: Install uv
4952
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
5053
with:
51-
version: "0.11.20"
54+
version: ${{ steps.uv.outputs.version }}
5255
python-version-file: .py-version
5356

5457
- name: Setup Pages
@@ -76,15 +79,18 @@ jobs:
7679
check-warnings:
7780
runs-on: ubuntu-latest
7881
steps:
79-
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
82+
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
8083
with:
8184
fetch-depth: 0
8285
fetch-tags: true
8386

87+
- id: uv
88+
run: echo "version=$(cat .uv-version)" >> "$GITHUB_OUTPUT"
89+
working-directory: .
8490
- name: Install uv
8591
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
8692
with:
87-
version: "0.11.20"
93+
version: ${{ steps.uv.outputs.version }}
8894
python-version-file: .py-version
8995

9096
- name: Verify generated gRPC docs are up to date
@@ -93,25 +99,6 @@ jobs:
9399
- name: Build the documentation for the current version (no warnings allowed)
94100
run: make sync && make docs
95101

96-
linkcheck:
97-
runs-on: ubuntu-latest
98-
continue-on-error: true
99-
timeout-minutes: 15
100-
steps:
101-
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
102-
with:
103-
fetch-depth: 0
104-
fetch-tags: true
105-
106-
- name: Install uv
107-
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
108-
with:
109-
version: "0.11.20"
110-
python-version-file: .py-version
111-
112-
- name: Check documentation links
113-
run: make sync && make docs-linkcheck
114-
115102
# Deployment job
116103
deploy:
117104
environment:

.github/workflows/e2e.yaml

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ jobs:
2121
outputs:
2222
should_run: ${{ steps.filter.outputs.e2e }}
2323
steps:
24-
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
24+
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
2525
with:
2626
fetch-depth: 0
2727
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4
@@ -56,7 +56,7 @@ jobs:
5656
timeout-minutes: 30
5757
steps:
5858
- name: Checkout repository
59-
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
59+
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
6060
with:
6161
fetch-depth: 0
6262

@@ -70,7 +70,7 @@ jobs:
7070
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5
7171
with:
7272
path: /tmp/controller-image.tar
73-
key: controller-image-${{ matrix.arch }}-${{ hashFiles('controller/Makefile', 'controller/Dockerfile', 'controller/go.mod', 'controller/go.sum', 'controller/cmd/**', 'controller/api/**', 'controller/internal/**') }}
73+
key: controller-image-${{ matrix.arch }}-${{ hashFiles('controller/Makefile', 'controller/Containerfile', 'controller/go.mod', 'controller/go.sum', 'controller/cmd/**', 'controller/api/**', 'controller/internal/**') }}
7474

7575
- name: Build controller image
7676
if: steps.cache.outputs.cache-hit != 'true'
@@ -99,7 +99,7 @@ jobs:
9999
timeout-minutes: 30
100100
steps:
101101
- name: Checkout repository
102-
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
102+
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
103103
with:
104104
fetch-depth: 0
105105

@@ -115,7 +115,7 @@ jobs:
115115
path: |
116116
/tmp/operator-image.tar
117117
/tmp/operator-install.yaml
118-
key: operator-image-${{ matrix.arch }}-${{ hashFiles('controller/Makefile', 'controller/Dockerfile.operator', 'controller/go.mod', 'controller/go.sum', 'controller/deploy/operator/**', 'controller/api/**', 'controller/internal/**') }}
118+
key: operator-image-${{ matrix.arch }}-${{ hashFiles('controller/Makefile', 'controller/Containerfile.operator', 'controller/go.mod', 'controller/go.sum', 'controller/deploy/operator/**', 'controller/api/**', 'controller/internal/**') }}
119119

120120
- name: Build operator image and installer manifest
121121
if: steps.cache.outputs.cache-hit != 'true'
@@ -140,13 +140,16 @@ jobs:
140140
timeout-minutes: 15
141141
steps:
142142
- name: Checkout repository
143-
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
143+
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
144144
with:
145145
fetch-depth: 0
146146

147+
- id: uv
148+
run: echo "version=$(cat .uv-version)" >> "$GITHUB_OUTPUT"
147149
- name: Install uv
148150
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
149151
with:
152+
version: ${{ steps.uv.outputs.version }}
150153
python-version-file: .py-version
151154

152155
- name: Cache python wheels
@@ -185,11 +188,14 @@ jobs:
185188
timeout-minutes: 60
186189
steps:
187190
- name: Checkout repository
188-
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
191+
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
189192

193+
- id: uv
194+
run: echo "version=$(cat .uv-version)" >> "$GITHUB_OUTPUT"
190195
- name: Install uv
191196
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
192197
with:
198+
version: ${{ steps.uv.outputs.version }}
193199
python-version-file: .py-version
194200

195201
- name: Install Go
@@ -243,11 +249,14 @@ jobs:
243249
timeout-minutes: 60
244250
steps:
245251
- name: Checkout repository
246-
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
252+
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
247253

254+
- id: uv
255+
run: echo "version=$(cat .uv-version)" >> "$GITHUB_OUTPUT"
248256
- name: Install uv
249257
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
250258
with:
259+
version: ${{ steps.uv.outputs.version }}
251260
python-version-file: .py-version
252261

253262
- name: Install Go
@@ -279,11 +288,14 @@ jobs:
279288
timeout-minutes: 60
280289
steps:
281290
- name: Checkout repository
282-
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
291+
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
283292

293+
- id: uv
294+
run: echo "version=$(cat .uv-version)" >> "$GITHUB_OUTPUT"
284295
- name: Install uv
285296
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
286297
with:
298+
version: ${{ steps.uv.outputs.version }}
287299
python-version-file: .py-version
288300

289301
- name: Install Go

0 commit comments

Comments
 (0)