Skip to content

Commit 181a9a6

Browse files
committed
refactor(convert): restructure Nydus-to-OCI conversion workflow
Signed-off-by: jxr <[email protected]>
1 parent 6e49ad0 commit 181a9a6

File tree

5 files changed

+88
-1288
lines changed

5 files changed

+88
-1288
lines changed

contrib/nydusify/cmd/nydusify.go

Lines changed: 7 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,15 @@ import (
1111
"context"
1212
"encoding/json"
1313
"fmt"
14-
"io"
15-
"os"
16-
"runtime"
17-
"strconv"
18-
"strings"
19-
"time"
20-
2114
"github.com/distribution/reference"
2215
"github.com/dustin/go-humanize"
2316
"github.com/pkg/errors"
2417
"github.com/sirupsen/logrus"
2518
"github.com/urfave/cli/v2"
19+
"io"
20+
"os"
21+
"runtime"
22+
"strings"
2623

2724
"github.com/dragonflyoss/nydus/contrib/nydusify/pkg/checker"
2825
"github.com/dragonflyoss/nydus/contrib/nydusify/pkg/chunkdict/generator"
@@ -1540,33 +1537,8 @@ func tryReverseConvert(c *cli.Context, targetRef string) (bool, error) {
15401537
// Source image is in Nydus format, perform reverse conversion
15411538
logrus.Info("Detected Nydus source image, performing reverse conversion to OCI")
15421539

1543-
// Parse retry delay parameter from string to seconds (int)
1544-
retryDelayStr := c.String("push-retry-delay")
1545-
retryDelaySeconds := 0
1546-
if retryDelayStr != "" {
1547-
// Try to parse as duration first (e.g., "5s", "1m", "1h")
1548-
duration, err := time.ParseDuration(retryDelayStr)
1549-
if err == nil {
1550-
retryDelaySeconds = int(duration.Seconds())
1551-
} else {
1552-
// Fallback to parsing as plain integer (for backward compatibility)
1553-
seconds, err := strconv.Atoi(retryDelayStr)
1554-
if err != nil || seconds < 0 {
1555-
logrus.Warnf("failed to parse push-retry-delay(%s): %+v\nusing default value(0 seconds)", retryDelayStr, err)
1556-
retryDelaySeconds = 0
1557-
} else {
1558-
retryDelaySeconds = seconds
1559-
}
1560-
}
1561-
1562-
if retryDelaySeconds < 0 {
1563-
logrus.Warnf("invalid push-retry-delay value(%s): must be non-negative\nusing default value(0 seconds)", retryDelayStr)
1564-
retryDelaySeconds = 0
1565-
}
1566-
}
1567-
1568-
// Build reverse conversion options
1569-
reverseOpt := converter.ReverseOpt{
1540+
// Build reverse conversion options using unified Opt
1541+
reverseOpt := converter.Opt{
15701542
WorkDir: c.String("work-dir"),
15711543
NydusImagePath: c.String("nydus-image"),
15721544
Source: c.String("source"),
@@ -1577,7 +1549,7 @@ func tryReverseConvert(c *cli.Context, targetRef string) (bool, error) {
15771549
Platforms: c.String("platform"),
15781550
OutputJSON: c.String("output-json"),
15791551
PushRetryCount: c.Int("push-retry-count"),
1580-
PushRetryDelay: retryDelaySeconds,
1552+
PushRetryDelay: c.String("push-retry-delay"),
15811553
WithPlainHTTP: c.Bool("plain-http"),
15821554
}
15831555
// Execute reverse conversion

contrib/nydusify/go.mod

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ require (
1212
github.com/aws/aws-sdk-go-v2/credentials v1.17.27
1313
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.8
1414
github.com/aws/aws-sdk-go-v2/service/s3 v1.58.2
15-
github.com/containerd/containerd v1.7.23
16-
github.com/containerd/containerd/v2 v2.0.5
15+
github.com/containerd/containerd v1.7.27
16+
github.com/containerd/containerd/v2 v2.1.2
1717
github.com/containerd/continuity v0.4.5
1818
github.com/containerd/errdefs v1.0.0
1919
github.com/containerd/nydus-snapshotter v0.15.3
@@ -35,7 +35,7 @@ require (
3535
github.com/stretchr/testify v1.10.0
3636
github.com/urfave/cli/v2 v2.27.6
3737
github.com/vmihailenco/msgpack/v5 v5.4.1
38-
golang.org/x/sync v0.14.0
38+
golang.org/x/sync v0.15.0
3939
golang.org/x/sys v0.33.0
4040
lukechampine.com/blake3 v1.2.1
4141
)
@@ -124,9 +124,11 @@ require (
124124
golang.org/x/text v0.24.0 // indirect
125125
golang.org/x/time v0.11.0 // indirect
126126
google.golang.org/genproto/googleapis/rpc v0.0.0-20250218202821-56aae31c358a // indirect
127-
google.golang.org/grpc v1.72.0 // indirect
127+
google.golang.org/grpc v1.72.2 // indirect
128128
google.golang.org/protobuf v1.36.6 // indirect
129129
gopkg.in/yaml.v3 v3.0.1 // indirect
130130
)
131131

132132
replace github.com/containerd/containerd/v2 => github.com/nydusaccelerator/containerd/v2 v2.0.0-20250528024712-b96732f49d37
133+
134+
replace github.com/containerd/nydus-snapshotter => github.com/BraveY/nydus-snapshotter v0.0.0-20251009061430-bb6f37c05f7c

contrib/nydusify/go.sum

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
22
github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6 h1:He8afgbRMd7mFxO99hRNu+6tazq8nFF9lIwo9JFroBk=
33
github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8=
4+
github.com/BraveY/nydus-snapshotter v0.0.0-20251009061430-bb6f37c05f7c h1:E2WdVMp+7pBDQ7gnOP7fglxKwDiIun7O4v7870+5/Mc=
5+
github.com/BraveY/nydus-snapshotter v0.0.0-20251009061430-bb6f37c05f7c/go.mod h1:PViRoa1/BA/OobsrZezqbQQbqqY1l4RN1wD2xVDxd1Y=
46
github.com/BraveY/snapshotter-converter v0.0.5 h1:h3zAB31u16EOkshS2J9Nx40RiWSjH6zd5baOSmjLCOg=
57
github.com/BraveY/snapshotter-converter v0.0.5/go.mod h1:nOVwsdXqdeltxr12x0t0JIbYDD+cdmdBx0HA2pYpxQY=
68
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
@@ -63,8 +65,8 @@ github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDk
6365
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
6466
github.com/containerd/cgroups/v3 v3.0.5 h1:44na7Ud+VwyE7LIoJ8JTNQOa549a8543BmzaJHo6Bzo=
6567
github.com/containerd/cgroups/v3 v3.0.5/go.mod h1:SA5DLYnXO8pTGYiAHXz94qvLQTKfVM5GEVisn4jpins=
66-
github.com/containerd/containerd v1.7.23 h1:H2CClyUkmpKAGlhQp95g2WXHfLYc7whAuvZGBNYOOwQ=
67-
github.com/containerd/containerd v1.7.23/go.mod h1:7QUzfURqZWCZV7RLNEn1XjUCQLEf0bkaK4GjUaZehxw=
68+
github.com/containerd/containerd v1.7.27 h1:yFyEyojddO3MIGVER2xJLWoCIn+Up4GaHFquP7hsFII=
69+
github.com/containerd/containerd v1.7.27/go.mod h1:xZmPnl75Vc+BLGt4MIfu6bp+fy03gdHAn9bz+FreFR0=
6870
github.com/containerd/containerd/api v1.9.0 h1:HZ/licowTRazus+wt9fM6r/9BQO7S0vD5lMcWspGIg0=
6971
github.com/containerd/containerd/api v1.9.0/go.mod h1:GhghKFmTR3hNtyznBoQ0EMWr9ju5AqHjcZPsSpTKutI=
7072
github.com/containerd/continuity v0.4.5 h1:ZRoN1sXq9u7V6QoHMcVWGhOwDFqZ4B9i5H6un1Wh0x4=
@@ -77,8 +79,6 @@ github.com/containerd/fifo v1.1.0 h1:4I2mbh5stb1u6ycIABlBw9zgtlK8viPI9QkQNRQEEmY
7779
github.com/containerd/fifo v1.1.0/go.mod h1:bmC4NWMbXlt2EZ0Hc7Fx7QzTFxgPID13eH0Qu+MAb2o=
7880
github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I=
7981
github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo=
80-
github.com/containerd/nydus-snapshotter v0.15.3 h1:dgeroRQnfgpTgnw2MgsWZCHr71bDbZhlH7cHD4FebHI=
81-
github.com/containerd/nydus-snapshotter v0.15.3/go.mod h1:eRJqnxQDr48HNop15kZdLZpFF5B6vf6Q11Aq1K0E4Ms=
8282
github.com/containerd/platforms v1.0.0-rc.1 h1:83KIq4yy1erSRgOVHNk1HYdPvzdJ5CnsWaRoJX4C41E=
8383
github.com/containerd/platforms v1.0.0-rc.1/go.mod h1:J71L7B+aiM5SdIEqmd9wp6THLVRzJGXfNuWCZCllLA4=
8484
github.com/containerd/plugin v1.0.0 h1:c8Kf1TNl6+e2TtMHZt+39yAPDbouRH9WAToRjex483Y=
@@ -340,8 +340,8 @@ golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
340340
golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
341341
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
342342
golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
343-
golang.org/x/sync v0.14.0 h1:woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ=
344-
golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
343+
golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8=
344+
golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
345345
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
346346
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
347347
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -420,8 +420,8 @@ google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyac
420420
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
421421
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
422422
google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
423-
google.golang.org/grpc v1.72.0 h1:S7UkcVa60b5AAQTaO6ZKamFp1zMZSU0fGDK2WZLbBnM=
424-
google.golang.org/grpc v1.72.0/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM=
423+
google.golang.org/grpc v1.72.2 h1:TdbGzwb82ty4OusHWepvFWGLgIbNo1/SUynEN0ssqv8=
424+
google.golang.org/grpc v1.72.2/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM=
425425
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
426426
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
427427
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=

0 commit comments

Comments
 (0)