Skip to content

Commit 73cc270

Browse files
authored
Merge pull request #155 from dmcgowan/update-containerd-latest-dev
Use new shim bootstrap protocol
2 parents 6228c32 + ea581d1 commit 73cc270

9 files changed

Lines changed: 135 additions & 112 deletions

File tree

.github/.tool-versions

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
golang 1.25.8
1+
golang 1.26.2
22
kernel 6.12.44

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
# Build the Linux kernel, initrd ,and containerd shim for running nerbox
1919

2020
ARG XX_VERSION=1.9.0
21-
ARG GO_VERSION=1.25.8
21+
ARG GO_VERSION=1.26.2
2222
ARG BASE_DEBIAN_DISTRO="bookworm"
2323
ARG GOLANG_IMAGE="golang:${GO_VERSION}-${BASE_DEBIAN_DISTRO}"
2424
ARG GOLANGCI_LINT_VERSION=2.7.2

cmd/containerd-shim-nerdbox-v1/main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,5 +31,5 @@ import (
3131
)
3232

3333
func main() {
34-
shim.Run(context.Background(), manager.NewShimManager("io.containerd.nerdbox.v1"))
34+
shim.RunShim(context.Background(), manager.NewShimManager("io.containerd.nerdbox.v1"))
3535
}

go.mod

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
module github.com/containerd/nerdbox
22

3-
go 1.25.0
3+
go 1.26.2
44

55
require (
6-
github.com/Microsoft/go-winio v0.6.2
6+
github.com/Microsoft/go-winio v0.6.3-0.20251027160822-ad3df93bed29
77
github.com/containerd/cgroups/v3 v3.1.3
88
github.com/containerd/console v1.0.5
9-
github.com/containerd/containerd/api v1.11.0-beta.0
9+
github.com/containerd/containerd/api v1.11.0-beta.1
1010
github.com/containerd/containerd/v2 v2.1.4
1111
github.com/containerd/errdefs v1.0.0
1212
github.com/containerd/errdefs/pkg v0.3.0
@@ -29,24 +29,23 @@ require (
2929
golang.org/x/sync v0.20.0
3030
golang.org/x/sys v0.42.0
3131
google.golang.org/grpc v1.80.0
32-
google.golang.org/protobuf v1.36.11
32+
google.golang.org/protobuf v1.36.12-0.20260120151049-f2248ac996af
3333
)
3434

3535
require (
36-
github.com/Microsoft/hcsshim v0.14.0-rc.1 // indirect
36+
github.com/Microsoft/hcsshim v0.15.0-rc.1 // indirect
3737
github.com/cespare/xxhash/v2 v2.3.0 // indirect
3838
github.com/cilium/ebpf v0.16.0 // indirect
3939
github.com/containerd/continuity v0.4.5 // indirect
40-
github.com/containerd/platforms v1.0.0-rc.3 // indirect
40+
github.com/containerd/platforms v1.0.0-rc.4 // indirect
4141
github.com/coreos/go-systemd/v22 v22.7.0 // indirect
42-
github.com/davecgh/go-spew v1.1.1 // indirect
42+
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
4343
github.com/docker/go-units v0.5.0 // indirect
4444
github.com/go-logr/logr v1.4.3 // indirect
4545
github.com/go-logr/stdr v1.2.2 // indirect
4646
github.com/godbus/dbus/v5 v5.1.0 // indirect
4747
github.com/gogo/protobuf v1.3.2 // indirect
4848
github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect
49-
github.com/google/go-cmp v0.7.0 // indirect
5049
github.com/josharian/native v1.1.0 // indirect
5150
github.com/klauspost/compress v1.18.5 // indirect
5251
github.com/mdlayher/packet v1.1.2 // indirect
@@ -61,14 +60,16 @@ require (
6160
github.com/u-root/uio v0.0.0-20230220225925-ffce2a382923 // indirect
6261
go.opencensus.io v0.24.0 // indirect
6362
go.opentelemetry.io/auto/sdk v1.2.1 // indirect
64-
go.opentelemetry.io/otel v1.42.0 // indirect
65-
go.opentelemetry.io/otel/metric v1.42.0 // indirect
66-
go.opentelemetry.io/otel/trace v1.42.0 // indirect
63+
go.opentelemetry.io/otel v1.43.0 // indirect
64+
go.opentelemetry.io/otel/metric v1.43.0 // indirect
65+
go.opentelemetry.io/otel/trace v1.43.0 // indirect
6766
golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect
68-
golang.org/x/net v0.51.0 // indirect
69-
golang.org/x/text v0.34.0 // indirect
70-
google.golang.org/genproto/googleapis/rpc v0.0.0-20260226221140-a57be14db171 // indirect
67+
golang.org/x/net v0.52.0 // indirect
68+
golang.org/x/text v0.35.0 // indirect
69+
google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9 // indirect
7170
gopkg.in/yaml.v3 v3.0.1 // indirect
7271
)
7372

74-
replace github.com/containerd/containerd/v2 => github.com/dmcgowan/containerd/v2 v2.3.0-beta.dmcg.2
73+
replace github.com/containerd/containerd/api => github.com/dmcgowan/containerd/api v1.11.0-beta.dmcg.0
74+
75+
replace github.com/containerd/containerd/v2 => github.com/dmcgowan/containerd/v2 v2.3.0-beta.dmcg.5

go.sum

Lines changed: 30 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
22
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
3-
github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=
4-
github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
5-
github.com/Microsoft/hcsshim v0.14.0-rc.1 h1:qAPXKwGOkVn8LlqgBN8GS0bxZ83hOJpcjxzmlQKxKsQ=
6-
github.com/Microsoft/hcsshim v0.14.0-rc.1/go.mod h1:hTKFGbnDtQb1wHiOWv4v0eN+7boSWAHyK/tNAaYZL0c=
3+
github.com/Microsoft/go-winio v0.6.3-0.20251027160822-ad3df93bed29 h1:0kQAzHq8vLs7Pptv+7TxjdETLf/nIqJpIB4oC6Ba4vY=
4+
github.com/Microsoft/go-winio v0.6.3-0.20251027160822-ad3df93bed29/go.mod h1:ZWa7ssZJT30CCDGJ7fk/2SBTq9BIQrrVjrcss0UW2s0=
5+
github.com/Microsoft/hcsshim v0.15.0-rc.1 h1:FbbwtQmiD+BVHynGkx5S65JkLyhkEiiTP8nrpmg2SZw=
6+
github.com/Microsoft/hcsshim v0.15.0-rc.1/go.mod h1:HWvvUPIy9HF6LotILj1G4VyS065rcLQ6tqj6tMUdOfI=
77
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
88
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
99
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
@@ -15,8 +15,6 @@ github.com/containerd/cgroups/v3 v3.1.3 h1:eUNflyMddm18+yrDmZPn3jI7C5hJ9ahABE5q6
1515
github.com/containerd/cgroups/v3 v3.1.3/go.mod h1:PKZ2AcWmSBsY/tJUVhtS/rluX0b1uq1GmPO1ElCmbOw=
1616
github.com/containerd/console v1.0.5 h1:R0ymNeydRqH2DmakFNdmjR2k0t7UPuiOV/N/27/qqsc=
1717
github.com/containerd/console v1.0.5/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk=
18-
github.com/containerd/containerd/api v1.11.0-beta.0 h1:qtnn2fNjzVl82CRfzt6VvDikwQnMD66eq06Djb+I1Lc=
19-
github.com/containerd/containerd/api v1.11.0-beta.0/go.mod h1:NBm1OAk8ZL+LG8R0ceObGxT5hbUYj7CzTmR3xh0DlMM=
2018
github.com/containerd/continuity v0.4.5 h1:ZRoN1sXq9u7V6QoHMcVWGhOwDFqZ4B9i5H6un1Wh0x4=
2119
github.com/containerd/continuity v0.4.5/go.mod h1:/lNJvtJKUQStBzpVQ1+rasXO1LAWtUQssk28EZvJ3nE=
2220
github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI=
@@ -31,8 +29,8 @@ github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I=
3129
github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo=
3230
github.com/containerd/otelttrpc v0.1.0 h1:UOX68eVTE8H/T45JveIg+I22Ev2aFj4qPITCmXsskjw=
3331
github.com/containerd/otelttrpc v0.1.0/go.mod h1:XhoA2VvaGPW1clB2ULwrBZfXVuEWuyOd2NUD1IM0yTg=
34-
github.com/containerd/platforms v1.0.0-rc.3 h1:YdvwaHtrN6wHcGJ2mYRYP3Nso8OcysuqFe9Hxm1X/tI=
35-
github.com/containerd/platforms v1.0.0-rc.3/go.mod h1:gw0R+alP3nFQPh1L4K9bv13fRWeeyokLGLu2fKuqI10=
32+
github.com/containerd/platforms v1.0.0-rc.4 h1:M42JrUT4zfZTqtkUwkr0GzmUWbfyO5VO0Q5b3op97T4=
33+
github.com/containerd/platforms v1.0.0-rc.4/go.mod h1:lKlMXyLybmBedS/JJm11uDofzI8L2v0J2ZbYvNsbq1A=
3634
github.com/containerd/plugin v1.0.0 h1:c8Kf1TNl6+e2TtMHZt+39yAPDbouRH9WAToRjex483Y=
3735
github.com/containerd/plugin v1.0.0/go.mod h1:hQfJe5nmWfImiqT1q8Si3jLv3ynMUIBB47bQ+KexvO8=
3836
github.com/containerd/ttrpc v1.2.8 h1:xbVu6D4qF2jihdh9rDVOKqUMiFBQk6YctTdo1zk087Y=
@@ -42,10 +40,13 @@ github.com/containerd/typeurl/v2 v2.2.3/go.mod h1:95ljDnPfD3bAbDJRugOiShd/DlAAsx
4240
github.com/coreos/go-systemd/v22 v22.7.0 h1:LAEzFkke61DFROc7zNLX/WA2i5J8gYqe0rSj9KI28KA=
4341
github.com/coreos/go-systemd/v22 v22.7.0/go.mod h1:xNUYtjHu2EDXbsxz1i41wouACIwT7Ybq9o0BQhMwD0w=
4442
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
45-
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
4643
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
47-
github.com/dmcgowan/containerd/v2 v2.3.0-beta.dmcg.2 h1:WoMqKUuEgG81LQApTdCphjB60AZ+XQEJcV9MsjNNoBg=
48-
github.com/dmcgowan/containerd/v2 v2.3.0-beta.dmcg.2/go.mod h1:r4W7eJkZRztKrQvCCAaM1EsytbRbyhucXz4E+W+CNZs=
44+
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
45+
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
46+
github.com/dmcgowan/containerd/api v1.11.0-beta.dmcg.0 h1:YoBiNv9NSx5RMyek/ruxpuKgTbpl9DIQS7nZb9eLjqE=
47+
github.com/dmcgowan/containerd/api v1.11.0-beta.dmcg.0/go.mod h1:CaQFRu+N1MtbgL6JDOJLUB1hCKESU1lD6MuTJhgtdlw=
48+
github.com/dmcgowan/containerd/v2 v2.3.0-beta.dmcg.5 h1:wgrc6kWQZqLL/MvWNkbr2Rnhnf53JsWT5FIOWnVE5iM=
49+
github.com/dmcgowan/containerd/v2 v2.3.0-beta.dmcg.5/go.mod h1:v5gN13blN6XTVUSa3XLRJV6FnkeJxpJaMRTqTVzC0wQ=
4950
github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c h1:+pKlWGMw7gf6bQ+oDZB4KHQFypsfjYlq/C4rfL7D3g8=
5051
github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA=
5152
github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=
@@ -164,18 +165,18 @@ go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
164165
go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
165166
go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64=
166167
go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y=
167-
go.opentelemetry.io/otel v1.42.0 h1:lSQGzTgVR3+sgJDAU/7/ZMjN9Z+vUip7leaqBKy4sho=
168-
go.opentelemetry.io/otel v1.42.0/go.mod h1:lJNsdRMxCUIWuMlVJWzecSMuNjE7dOYyWlqOXWkdqCc=
169-
go.opentelemetry.io/otel/metric v1.42.0 h1:2jXG+3oZLNXEPfNmnpxKDeZsFI5o4J+nz6xUlaFdF/4=
170-
go.opentelemetry.io/otel/metric v1.42.0/go.mod h1:RlUN/7vTU7Ao/diDkEpQpnz3/92J9ko05BIwxYa2SSI=
171-
go.opentelemetry.io/otel/sdk v1.42.0 h1:LyC8+jqk6UJwdrI/8VydAq/hvkFKNHZVIWuslJXYsDo=
172-
go.opentelemetry.io/otel/sdk v1.42.0/go.mod h1:rGHCAxd9DAph0joO4W6OPwxjNTYWghRWmkHuGbayMts=
168+
go.opentelemetry.io/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I=
169+
go.opentelemetry.io/otel v1.43.0/go.mod h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0=
170+
go.opentelemetry.io/otel/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM=
171+
go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY=
172+
go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg=
173+
go.opentelemetry.io/otel/sdk v1.43.0/go.mod h1:P+IkVU3iWukmiit/Yf9AWvpyRDlUeBaRg6Y+C58QHzg=
173174
go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8=
174175
go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew=
175-
go.opentelemetry.io/otel/trace v1.42.0 h1:OUCgIPt+mzOnaUTpOQcBiM/PLQ/Op7oq6g4LenLmOYY=
176-
go.opentelemetry.io/otel/trace v1.42.0/go.mod h1:f3K9S+IFqnumBkKhRJMeaZeNk9epyhnCmQh/EysQCdc=
177-
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
178-
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
176+
go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A=
177+
go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0=
178+
go.uber.org/goleak v1.1.12 h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA=
179+
go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ=
179180
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
180181
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
181182
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
@@ -196,8 +197,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL
196197
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
197198
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
198199
golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
199-
golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo=
200-
golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y=
200+
golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0=
201+
golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw=
201202
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
202203
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
203204
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -218,8 +219,8 @@ golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo=
218219
golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
219220
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
220221
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
221-
golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk=
222-
golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA=
222+
golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8=
223+
golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA=
223224
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
224225
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
225226
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
@@ -239,8 +240,8 @@ google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7
239240
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
240241
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
241242
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
242-
google.golang.org/genproto/googleapis/rpc v0.0.0-20260226221140-a57be14db171 h1:ggcbiqK8WWh6l1dnltU4BgWGIGo+EVYxCaAPih/zQXQ=
243-
google.golang.org/genproto/googleapis/rpc v0.0.0-20260226221140-a57be14db171/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8=
243+
google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9 h1:m8qni9SQFH0tJc1X0vmnpw/0t+AImlSvp30sEupozUg=
244+
google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8=
244245
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
245246
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
246247
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
@@ -257,8 +258,8 @@ google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2
257258
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
258259
google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
259260
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
260-
google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE=
261-
google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
261+
google.golang.org/protobuf v1.36.12-0.20260120151049-f2248ac996af h1:+5/Sw3GsDNlEmu7TfklWKPdQ0Ykja5VEmq2i817+jbI=
262+
google.golang.org/protobuf v1.36.12-0.20260120151049-f2248ac996af/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
262263
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
263264
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
264265
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=

integration/shim_start_test.go

Lines changed: 33 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@
1919
package integration
2020

2121
import (
22+
"bytes"
2223
"context"
23-
"encoding/json"
2424
"io"
2525
"net"
2626
"os"
@@ -32,21 +32,17 @@ import (
3232
"testing"
3333
"time"
3434

35+
bootapi "github.com/containerd/containerd/api/runtime/bootstrap/v1"
3536
"github.com/containerd/nerdbox/internal/ttrpcutil"
37+
"google.golang.org/protobuf/proto"
3638
)
3739

3840
const shimBinary = "containerd-shim-nerdbox-v1"
3941

40-
type shimParams struct {
41-
Version int `json:"version"`
42-
Address string `json:"address"`
43-
Protocol string `json:"protocol"`
44-
}
45-
4642
// startShim launches the shim binary with the "start" subcommand and returns
47-
// the bootstrap parameters. It registers a cleanup function to kill the
43+
// the bootstrap result. It registers a cleanup function to kill the
4844
// spawned shim process.
49-
func startShim(t *testing.T) shimParams {
45+
func startShim(t *testing.T) *bootapi.BootstrapResult {
5046
t.Helper()
5147

5248
shimPath, err := exec.LookPath(shimBinary)
@@ -82,19 +78,30 @@ func startShim(t *testing.T) shimParams {
8278
defer cancel()
8379

8480
shimID := strings.ReplaceAll(t.Name(), "/", "-")
81+
containerdAddr := filepath.Join(socketDir, "containerd.sock")
8582
cmd := exec.CommandContext(ctx, shimPath,
8683
"-namespace", "test",
8784
"-id", shimID,
88-
"-address", filepath.Join(socketDir, "containerd.sock"),
85+
"-address", containerdAddr,
8986
"start",
9087
)
9188
cmd.Dir = bundleDir
92-
cmd.Env = append(os.Environ(),
93-
// SHIM_SOCKET_DIR is read by the containerd shim framework (our
94-
// fork) to populate StartOpts.SocketDir so the shim creates its
95-
// sockets in a writable directory instead of /run/containerd/s.
96-
"SHIM_SOCKET_DIR="+socketDir,
97-
)
89+
cmd.Env = append(os.Environ(), "GOMAXPROCS=4")
90+
91+
// Pass bootstrap params via stdin using the new bootstrap protocol.
92+
// The shim framework reads BootstrapParams from stdin to get the
93+
// socket directory and other configuration.
94+
bparams := &bootapi.BootstrapParams{
95+
InstanceID: shimID,
96+
Namespace: "test",
97+
ContainerdGrpcAddress: containerdAddr,
98+
SocketDir: &socketDir,
99+
}
100+
bdata, err := proto.Marshal(bparams)
101+
if err != nil {
102+
t.Fatalf("failed to marshal bootstrap params: %v", err)
103+
}
104+
cmd.Stdin = bytes.NewReader(bdata)
98105

99106
// Register cleanup before cmd.Output() so that the spawned shim child
100107
// is killed even if later assertions fail or the test times out.
@@ -119,22 +126,22 @@ func startShim(t *testing.T) shimParams {
119126
t.Fatalf("shim start failed: %v\nstderr: %s", err, stderr)
120127
}
121128

122-
var params shimParams
123-
if err := json.Unmarshal(out, &params); err != nil {
124-
t.Fatalf("failed to parse shim output: %v\nraw: %s", err, out)
129+
var result bootapi.BootstrapResult
130+
if err := proto.Unmarshal(out, &result); err != nil {
131+
t.Fatalf("failed to parse shim output: %v\nraw: %x", err, out)
125132
}
126-
if params.Address == "" {
133+
if result.Address == "" {
127134
t.Fatal("shim returned empty address")
128135
}
129-
return params
136+
return &result
130137
}
131138

132139
// TestShimStart exercises the shim manager's Start() code path by invoking
133140
// the real shim binary with the "start" subcommand. This is the same
134141
// invocation containerd uses to launch a shim.
135142
func TestShimStart(t *testing.T) {
136-
params := startShim(t)
137-
t.Logf("shim started: version=%d protocol=%s address=%s", params.Version, params.Protocol, params.Address)
143+
result := startShim(t)
144+
t.Logf("shim started: version=%d protocol=%s address=%s", result.Version, result.Protocol, result.Address)
138145
}
139146

140147
// TestShimConnect verifies that the shim's TTRPC server is reachable after
@@ -143,10 +150,10 @@ func TestShimStart(t *testing.T) {
143150
// "failed to create TTRPC connection: dial unix …: connect: no such file or
144151
// directory" error seen in CI.
145152
func TestShimConnect(t *testing.T) {
146-
params := startShim(t)
147-
t.Logf("shim started: version=%d protocol=%s address=%s", params.Version, params.Protocol, params.Address)
153+
result := startShim(t)
154+
t.Logf("shim started: version=%d protocol=%s address=%s", result.Version, result.Protocol, result.Address)
148155

149-
socketPath := strings.TrimPrefix(params.Address, "unix://")
156+
socketPath := strings.TrimPrefix(result.Address, "unix://")
150157

151158
// Poll for the TTRPC server to become ready, same as containerd does
152159
// after the shim's Start returns.

internal/shim/manager/manager.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ import (
2828

2929
// NewShimManager returns an implementation of the shim manager
3030
// using run_vminitd
31-
func NewShimManager(name string) shim.Manager {
31+
func NewShimManager(name string) shim.Shim {
3232
return &manager{
3333
name: name,
3434
}

0 commit comments

Comments
 (0)