Skip to content

Commit b50441f

Browse files
committed
Migrated urunc from containerd v1.x to v2.x
This commit: 1. Upgrades dependency and fixes file structure - go.mod, go.sum, vendor/ 2. Upgraded shim bootstrapping logic - containerd-shim-urunc-v2/main.go 3. Added backward compatible TTRPC Protocol layer - pkg/containerd-shim/task_service.go 4. Migrated init function and error mapping to accomodate containerd's v2 changes. - task_plugin.go, task_service.go Signed-off-by: Arijit Dubey <arijitdubey2018@gmail.com>
1 parent e2b45cd commit b50441f

8 files changed

Lines changed: 281 additions & 121 deletions

File tree

cmd/containerd-shim-urunc-v2/main.go

Lines changed: 44 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,53 @@ package main
1616

1717
import (
1818
"context"
19+
"io"
20+
"os"
21+
"sync"
1922

20-
"github.com/containerd/containerd/runtime/v2/runc/manager"
21-
"github.com/containerd/containerd/runtime/v2/shim"
23+
bootapi "github.com/containerd/containerd/api/runtime/bootstrap/v1"
24+
"github.com/containerd/containerd/v2/cmd/containerd-shim-runc-v2/manager"
25+
"github.com/containerd/containerd/v2/pkg/protobuf/proto"
26+
"github.com/containerd/containerd/v2/pkg/shim"
2227
_ "github.com/urunc-dev/urunc/pkg/containerd-shim"
2328
)
2429

2530
func main() {
26-
shim.RunManager(context.Background(), manager.NewShimManager("io.containerd.urunc.v2"))
31+
var isStart bool
32+
for _, arg := range os.Args {
33+
if arg == "start" {
34+
isStart = true
35+
break
36+
}
37+
}
38+
39+
if isStart {
40+
r, w, err := os.Pipe()
41+
if err == nil {
42+
oldStdout := os.Stdout
43+
os.Stdout = w
44+
45+
var wg sync.WaitGroup
46+
wg.Add(1)
47+
go func() {
48+
defer wg.Done()
49+
data, _ := io.ReadAll(r)
50+
var result bootapi.BootstrapResult
51+
if err := proto.Unmarshal(data, &result); err == nil && result.Address != "" {
52+
oldStdout.WriteString(result.Address)
53+
} else {
54+
oldStdout.Write(data)
55+
}
56+
}()
57+
58+
shim.RunShim(context.Background(), manager.NewShimManager("io.containerd.urunc.v2"))
59+
60+
os.Stdout = oldStdout
61+
w.Close()
62+
wg.Wait()
63+
return
64+
}
65+
}
66+
67+
shim.RunShim(context.Background(), manager.NewShimManager("io.containerd.urunc.v2"))
2768
}

go.mod

Lines changed: 24 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
11
module github.com/urunc-dev/urunc
22

3-
go 1.25.0
3+
go 1.26.3
44

55
require (
66
github.com/BurntSushi/toml v1.6.0
77
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2
88
github.com/cavaliergopher/cpio v1.0.1
9-
github.com/containerd/containerd v1.7.30
10-
github.com/containerd/containerd/api v1.10.0
9+
github.com/containerd/containerd/api v1.11.1
10+
github.com/containerd/containerd/v2 v2.3.1
11+
github.com/containerd/errdefs/pkg v0.3.0
1112
github.com/containerd/log v0.1.0
12-
github.com/containerd/ttrpc v1.2.7
13+
github.com/containerd/plugin v1.1.0
14+
github.com/containerd/ttrpc v1.2.8
1315
github.com/creack/pty v1.1.24
1416
github.com/elastic/go-seccomp-bpf v1.6.0
1517
github.com/hashicorp/go-version v1.9.0
@@ -21,7 +23,7 @@ require (
2123
github.com/onsi/gomega v1.39.1
2224
github.com/opencontainers/image-spec v1.1.1
2325
github.com/opencontainers/runc v1.3.4
24-
github.com/opencontainers/runtime-spec v1.2.1
26+
github.com/opencontainers/runtime-spec v1.3.0
2527
github.com/prometheus-community/pro-bing v0.8.0
2628
github.com/rs/zerolog v1.35.1
2729
github.com/sirupsen/logrus v1.9.4
@@ -30,27 +32,25 @@ require (
3032
github.com/vishvananda/netlink v1.3.1
3133
github.com/vishvananda/netns v0.0.5
3234
golang.org/x/sys v0.43.0
33-
google.golang.org/grpc v1.79.3
34-
k8s.io/cri-api v0.35.4
35+
google.golang.org/grpc v1.80.0
36+
k8s.io/cri-api v0.36.0
3537
)
3638

3739
require (
3840
github.com/Masterminds/semver/v3 v3.4.0 // indirect
39-
github.com/Microsoft/go-winio v0.6.2 // indirect
40-
github.com/Microsoft/hcsshim v0.13.0 // indirect
41+
github.com/Microsoft/go-winio v0.6.3-0.20251027160822-ad3df93bed29 // indirect
42+
github.com/Microsoft/hcsshim v0.15.0-rc.1 // indirect
4143
github.com/cilium/ebpf v0.20.0 // indirect
42-
github.com/containerd/cgroups/v3 v3.1.0 // indirect
44+
github.com/containerd/cgroups/v3 v3.1.3 // indirect
4345
github.com/containerd/console v1.0.5 // indirect
44-
github.com/containerd/continuity v0.4.5 // indirect
46+
github.com/containerd/continuity v0.5.0 // indirect
4547
github.com/containerd/errdefs v1.0.0 // indirect
46-
github.com/containerd/errdefs/pkg v0.3.0 // indirect
4748
github.com/containerd/fifo v1.1.0 // indirect
48-
github.com/containerd/go-runc v1.0.0 // indirect
49-
github.com/containerd/platforms v0.2.1 // indirect
49+
github.com/containerd/go-runc v1.1.0 // indirect
50+
github.com/containerd/platforms v1.0.0-rc.4 // indirect
5051
github.com/containerd/typeurl/v2 v2.2.3 // indirect
5152
github.com/coreos/go-systemd/v22 v22.7.0 // indirect
5253
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
53-
github.com/docker/go-events v0.0.0-20250808211157-605354379745 // indirect
5454
github.com/docker/go-units v0.5.0 // indirect
5555
github.com/go-logr/logr v1.4.3 // indirect
5656
github.com/go-task/slim-sprig/v3 v3.0.0 // indirect
@@ -60,26 +60,24 @@ require (
6060
github.com/google/go-cmp v0.7.0 // indirect
6161
github.com/google/pprof v0.0.0-20260115054156-294ebfa9ad83 // indirect
6262
github.com/google/uuid v1.6.0 // indirect
63-
github.com/klauspost/compress v1.18.3 // indirect
63+
github.com/klauspost/compress v1.18.5 // indirect
6464
github.com/mattn/go-colorable v0.1.14 // indirect
6565
github.com/mattn/go-isatty v0.0.20 // indirect
6666
github.com/mdlayher/socket v0.5.1 // indirect
67+
github.com/mdlayher/vsock v1.2.1 // indirect
6768
github.com/moby/sys/mountinfo v0.7.2 // indirect
68-
github.com/moby/sys/sequential v0.6.0 // indirect
69-
github.com/moby/sys/user v0.4.0 // indirect
7069
github.com/opencontainers/go-digest v1.0.0 // indirect
7170
github.com/pkg/errors v0.9.1 // indirect
7271
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
7372
github.com/stretchr/objx v0.5.3 // indirect
7473
go.opencensus.io v0.24.0 // indirect
7574
go.yaml.in/yaml/v3 v3.0.4 // indirect
76-
golang.org/x/mod v0.32.0 // indirect
77-
golang.org/x/net v0.49.0 // indirect
78-
golang.org/x/sync v0.19.0 // indirect
79-
golang.org/x/text v0.33.0 // indirect
80-
golang.org/x/tools v0.41.0 // indirect
81-
google.golang.org/genproto v0.0.0-20260128011058-8636f8732409 // indirect
82-
google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 // indirect
83-
google.golang.org/protobuf v1.36.11 // indirect
75+
golang.org/x/mod v0.35.0 // indirect
76+
golang.org/x/net v0.52.0 // indirect
77+
golang.org/x/sync v0.20.0 // indirect
78+
golang.org/x/text v0.35.0 // indirect
79+
golang.org/x/tools v0.43.0 // indirect
80+
google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d // indirect
81+
google.golang.org/protobuf v1.36.12-0.20260120151049-f2248ac996af // indirect
8482
gopkg.in/yaml.v3 v3.0.1 // indirect
8583
)

0 commit comments

Comments
 (0)