Skip to content

Commit

Permalink
Merge pull request #3117 from apostasie/dev-compose-v2
Browse files Browse the repository at this point in the history
Bump compose-go to v2
  • Loading branch information
AkihiroSuda authored Jun 20, 2024
2 parents a0e0363 + 9755298 commit 3bf7c4f
Show file tree
Hide file tree
Showing 21 changed files with 75 additions and 67 deletions.
1 change: 0 additions & 1 deletion .golangci.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
---
run:
concurrency: 6
deadline: 5m
linters:
disable-all: true
enable:
Expand Down
4 changes: 2 additions & 2 deletions cmd/nerdctl/compose_up.go
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ func composeUpAction(cmd *cobra.Command, services []string) error {
if err != nil {
return err
}
scale := make(map[string]uint64)
scale := make(map[string]int)
for _, s := range scaleSlice {
parts := strings.Split(s, "=")
if len(parts) != 2 {
Expand All @@ -110,7 +110,7 @@ func composeUpAction(cmd *cobra.Command, services []string) error {
if err != nil {
return err
}
scale[parts[0]] = uint64(replicas)
scale[parts[0]] = replicas
}

client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), globalOptions.Namespace, globalOptions.Address)
Expand Down
7 changes: 4 additions & 3 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ require (
github.com/Microsoft/go-winio v0.6.2
github.com/Microsoft/hcsshim v0.12.4
github.com/awslabs/soci-snapshotter v0.6.1
github.com/compose-spec/compose-go v1.20.2
github.com/compose-spec/compose-go/v2 v2.1.3
github.com/containerd/accelerated-container-image v1.1.3
github.com/containerd/cgroups/v3 v3.0.3
github.com/containerd/console v1.0.4
Expand Down Expand Up @@ -65,6 +65,8 @@ require (
gotest.tools/v3 v3.5.1
)

require github.com/go-viper/mapstructure/v2 v2.0.0 // indirect

require (
github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 // indirect
github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20230306123547-8075edf89bb0 // indirect
Expand Down Expand Up @@ -92,7 +94,6 @@ require (
github.com/google/uuid v1.6.0 // indirect
github.com/hashicorp/errwrap v1.1.0 // indirect
github.com/hashicorp/go-multierror v1.1.1 // indirect
github.com/imdario/mergo v0.3.16 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/klauspost/compress v1.17.9
github.com/klauspost/cpuid/v2 v2.2.3 // indirect
Expand Down Expand Up @@ -134,7 +135,7 @@ require (
go.opentelemetry.io/otel v1.19.0 // indirect
go.opentelemetry.io/otel/metric v1.19.0 // indirect
go.opentelemetry.io/otel/trace v1.19.0 // indirect
golang.org/x/exp v0.0.0-20231006140011-7918f672742d // indirect
golang.org/x/exp v0.0.0-20240112132812-db7319d0e0e3 // indirect
google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 // indirect
google.golang.org/grpc v1.62.0 // indirect
Expand Down
12 changes: 6 additions & 6 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ github.com/cilium/ebpf v0.11.0 h1:V8gS/bTCCjX9uUnkUFUpPsksM8n1lXBAvHcpiFk1X2Y=
github.com/cilium/ebpf v0.11.0/go.mod h1:WE7CZAnqOL2RouJ4f1uyNhqr2P4CCvXFIqdRDUgWsVs=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
github.com/compose-spec/compose-go v1.20.2 h1:u/yfZHn4EaHGdidrZycWpxXgFffjYULlTbRfJ51ykjQ=
github.com/compose-spec/compose-go v1.20.2/go.mod h1:+MdqXV4RA7wdFsahh/Kb8U0pAJqkg7mr4PM9tFKU8RM=
github.com/compose-spec/compose-go/v2 v2.1.3 h1:bD67uqLuL/XgkAK6ir3xZvNLFPxPScEi1KW7R5esrLE=
github.com/compose-spec/compose-go/v2 v2.1.3/go.mod h1:lFN0DrMxIncJGYAXTfWuajfwj5haBJqrBkarHcnjJKc=
github.com/containerd/accelerated-container-image v1.1.3 h1:4fw0FsGB3YPHzth8H8WalJxnVuUU566+UCTXnoIZRCQ=
github.com/containerd/accelerated-container-image v1.1.3/go.mod h1:9mpTpL4W4yAsq2giHgo4B7wTFJgE59qCPh7dZTSpGCA=
github.com/containerd/cgroups/v3 v3.0.3 h1:S5ByHZ/h9PMe5IOQoN7E+nMc2UcLEM/V48DGDJ9kip0=
Expand Down Expand Up @@ -121,6 +121,8 @@ github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI=
github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8=
github.com/go-viper/mapstructure/v2 v2.0.0 h1:dhn8MZ1gZ0mzeodTG3jt5Vj/o87xZKuNAprG2mQfMfc=
github.com/go-viper/mapstructure/v2 v2.0.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM=
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk=
github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
Expand Down Expand Up @@ -163,8 +165,6 @@ github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY
github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo=
github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM=
github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4=
github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY=
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s=
Expand Down Expand Up @@ -339,8 +339,8 @@ golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDf
golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI=
golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20231006140011-7918f672742d h1:jtJma62tbqLibJ5sFQz8bKtEM8rJBtfilJ2qTU199MI=
golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo=
golang.org/x/exp v0.0.0-20240112132812-db7319d0e0e3 h1:hNQpMuAJe5CtcUqCXaWga3FHu+kQvCqcsoVaQgSV60o=
golang.org/x/exp v0.0.0-20240112132812-db7319d0e0e3/go.mod h1:idGWGoKP1toJGkd5/ig9ZLuPcZBC3ewk7SzmH0uou08=
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
Expand Down
6 changes: 3 additions & 3 deletions pkg/composer/build.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import (
"fmt"
"os"

"github.com/compose-spec/compose-go/types"
"github.com/compose-spec/compose-go/v2/types"
"github.com/containerd/log"
"github.com/containerd/nerdctl/v2/pkg/composer/serviceparser"
)
Expand All @@ -33,8 +33,8 @@ type BuildOptions struct {
}

func (c *Composer) Build(ctx context.Context, bo BuildOptions, services []string) error {
return c.project.WithServices(services, func(svc types.ServiceConfig) error {
ps, err := serviceparser.Parse(c.project, svc)
return c.project.ForEachService(services, func(names string, svc *types.ServiceConfig) error {
ps, err := serviceparser.Parse(c.project, *svc)
if err != nil {
return err
}
Expand Down
20 changes: 13 additions & 7 deletions pkg/composer/composer.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ import (
"fmt"
"os/exec"

composecli "github.com/compose-spec/compose-go/cli"
compose "github.com/compose-spec/compose-go/types"
composecli "github.com/compose-spec/compose-go/v2/cli"
compose "github.com/compose-spec/compose-go/v2/types"
"github.com/containerd/containerd"
"github.com/containerd/containerd/identifiers"
"github.com/containerd/log"
Expand Down Expand Up @@ -79,6 +79,7 @@ func New(o Options, client *containerd.Client) (*Composer, error) {
optionsFn = append(optionsFn,
composecli.WithConfigFileEnv,
composecli.WithDefaultConfigPath,
composecli.WithEnvFiles(),
composecli.WithDotEnv,
composecli.WithName(o.Project),
)
Expand All @@ -87,7 +88,7 @@ func New(o Options, client *containerd.Client) (*Composer, error) {
if err != nil {
return nil, err
}
project, err := composecli.ProjectFromOptions(projectOptions)
project, err := projectOptions.LoadProject(context.TODO())
if err != nil {
return nil, err
}
Expand All @@ -99,7 +100,11 @@ func New(o Options, client *containerd.Client) (*Composer, error) {
}
o.Profiles = append(o.Profiles, s.GetProfiles()...)
}
project.ApplyProfiles(o.Profiles)

project, err = project.WithProfiles(o.Profiles)
if err != nil {
return nil, err
}

if o.DebugPrintFull {
projectJSON, _ := json.MarshalIndent(project, "", " ")
Expand Down Expand Up @@ -153,8 +158,9 @@ func (c *Composer) runNerdctlCmd(ctx context.Context, args ...string) error {
// Services returns the parsed Service objects in dependency order.
func (c *Composer) Services(ctx context.Context, svcs ...string) ([]*serviceparser.Service, error) {
var services []*serviceparser.Service
if err := c.project.WithServices(svcs, func(svc compose.ServiceConfig) error {
parsed, err := serviceparser.Parse(c.project, svc)

if err := c.project.ForEachService(svcs, func(name string, svc *compose.ServiceConfig) error {
parsed, err := serviceparser.Parse(c.project, *svc)
if err != nil {
return err
}
Expand All @@ -169,7 +175,7 @@ func (c *Composer) Services(ctx context.Context, svcs ...string) ([]*servicepars
// ServiceNames returns service names in dependency order.
func (c *Composer) ServiceNames(svcs ...string) ([]string, error) {
var names []string
if err := c.project.WithServices(svcs, func(svc compose.ServiceConfig) error {
if err := c.project.ForEachService(svcs, func(name string, svc *compose.ServiceConfig) error {
names = append(names, svc.Name)
return nil
}); err != nil {
Expand Down
13 changes: 7 additions & 6 deletions pkg/composer/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ import (
"io"
"strings"

"github.com/compose-spec/compose-go/types"
"github.com/compose-spec/compose-go/v2/types"
"github.com/opencontainers/go-digest"
"gopkg.in/yaml.v3"
)
Expand Down Expand Up @@ -59,13 +59,13 @@ func (c *Composer) Config(ctx context.Context, w io.Writer, co ConfigOptions) er
if co.Hash != "*" {
services = strings.Split(co.Hash, ",")
}
return c.project.WithServices(services, func(svc types.ServiceConfig) error {
hash, err := ServiceHash(svc)
return c.project.ForEachService(services, func(names string, svc *types.ServiceConfig) error {
hash, err := ServiceHash(*svc)
if err != nil {
return err
}
fmt.Fprintf(w, "%s %s\n", svc.Name, hash)
return nil
_, err = fmt.Fprintf(w, "%s %s\n", svc.Name, hash)
return err
})
}
projectYAML, err := yaml.Marshal(c.project)
Expand All @@ -81,7 +81,8 @@ func ServiceHash(o types.ServiceConfig) (string, error) {
// remove the Build config when generating the service hash
o.Build = nil
o.PullPolicy = ""
o.Scale = 1
o.Scale = new(int)
*(o.Scale) = 1
bytes, err := json.Marshal(o)
if err != nil {
return "", err
Expand Down
2 changes: 1 addition & 1 deletion pkg/composer/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import (
"path/filepath"
"strings"

"github.com/compose-spec/compose-go/types"
"github.com/compose-spec/compose-go/v2/types"
"github.com/containerd/log"
"github.com/containerd/nerdctl/v2/pkg/composer/serviceparser"
"github.com/containerd/nerdctl/v2/pkg/labels"
Expand Down
4 changes: 2 additions & 2 deletions pkg/composer/down.go
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ func (c *Composer) downNetwork(ctx context.Context, shortName string) error {
if !ok {
return fmt.Errorf("invalid network name %q", shortName)
}
if net.External.External {
if net.External {
// NOP
return nil
}
Expand Down Expand Up @@ -117,7 +117,7 @@ func (c *Composer) downVolume(ctx context.Context, shortName string) error {
if !ok {
return fmt.Errorf("invalid volume name %q", shortName)
}
if vol.External.External {
if vol.External {
// NOP
return nil
}
Expand Down
4 changes: 2 additions & 2 deletions pkg/composer/logs.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ import (
"os/signal"
"strings"

"github.com/compose-spec/compose-go/types"
"github.com/compose-spec/compose-go/v2/types"
"github.com/containerd/containerd"
"github.com/containerd/log"
"github.com/containerd/nerdctl/v2/pkg/composer/pipetagger"
Expand All @@ -43,7 +43,7 @@ type LogsOptions struct {

func (c *Composer) Logs(ctx context.Context, lo LogsOptions, services []string) error {
var serviceNames []string
err := c.project.WithServices(services, func(svc types.ServiceConfig) error {
err := c.project.ForEachService(services, func(name string, svc *types.ServiceConfig) error {
serviceNames = append(serviceNames, svc.Name)
return nil
}, types.IgnoreDependencies)
Expand Down
7 changes: 4 additions & 3 deletions pkg/composer/projectloader/projectloader.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,12 @@
package projectloader

import (
"context"
"os"
"path/filepath"

"github.com/compose-spec/compose-go/loader"
compose "github.com/compose-spec/compose-go/types"
"github.com/compose-spec/compose-go/v2/loader"
compose "github.com/compose-spec/compose-go/v2/types"
)

// Load is used only for unit testing.
Expand All @@ -41,7 +42,7 @@ func Load(fileName, projectName string, envMap map[string]string) (*compose.Proj
}
var files []compose.ConfigFile
files = append(files, compose.ConfigFile{Filename: fileName, Content: b})
return loader.Load(compose.ConfigDetails{
return loader.LoadWithContext(context.TODO(), compose.ConfigDetails{
WorkingDir: wd,
ConfigFiles: files,
Environment: envMap,
Expand Down
6 changes: 3 additions & 3 deletions pkg/composer/pull.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import (
"fmt"
"os"

"github.com/compose-spec/compose-go/types"
"github.com/compose-spec/compose-go/v2/types"
"github.com/containerd/log"
"github.com/containerd/nerdctl/v2/pkg/composer/serviceparser"
)
Expand All @@ -31,8 +31,8 @@ type PullOptions struct {
}

func (c *Composer) Pull(ctx context.Context, po PullOptions, services []string) error {
return c.project.WithServices(services, func(svc types.ServiceConfig) error {
ps, err := serviceparser.Parse(c.project, svc)
return c.project.ForEachService(services, func(name string, svc *types.ServiceConfig) error {
ps, err := serviceparser.Parse(c.project, *svc)
if err != nil {
return err
}
Expand Down
6 changes: 3 additions & 3 deletions pkg/composer/push.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import (
"fmt"
"os"

"github.com/compose-spec/compose-go/types"
"github.com/compose-spec/compose-go/v2/types"
"github.com/containerd/log"
"github.com/containerd/nerdctl/v2/pkg/composer/serviceparser"
)
Expand All @@ -30,8 +30,8 @@ type PushOptions struct {
}

func (c *Composer) Push(ctx context.Context, po PushOptions, services []string) error {
return c.project.WithServices(services, func(svc types.ServiceConfig) error {
ps, err := serviceparser.Parse(c.project, svc)
return c.project.ForEachService(services, func(name string, svc *types.ServiceConfig) error {
ps, err := serviceparser.Parse(c.project, *svc)
if err != nil {
return err
}
Expand Down
4 changes: 2 additions & 2 deletions pkg/composer/restart.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import (
"fmt"
"sync"

"github.com/compose-spec/compose-go/types"
"github.com/compose-spec/compose-go/v2/types"
"github.com/containerd/containerd"
"github.com/containerd/log"
"github.com/containerd/nerdctl/v2/pkg/labels"
Expand All @@ -36,7 +36,7 @@ type RestartOptions struct {
// `nerdctl restart CONTAINER_ID` to do the actual job.
func (c *Composer) Restart(ctx context.Context, opt RestartOptions, services []string) error {
// in dependency order
return c.project.WithServices(services, func(svc types.ServiceConfig) error {
return c.project.ForEachService(services, func(name string, svc *types.ServiceConfig) error {
containers, err := c.Containers(ctx, svc.Name)
if err != nil {
return err
Expand Down
10 changes: 5 additions & 5 deletions pkg/composer/run.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ import (
"fmt"
"sync"

"github.com/compose-spec/compose-go/loader"
"github.com/compose-spec/compose-go/types"
"github.com/compose-spec/compose-go/v2/format"
"github.com/compose-spec/compose-go/v2/types"
"github.com/containerd/log"
"github.com/containerd/nerdctl/v2/pkg/composer/serviceparser"
"github.com/containerd/nerdctl/v2/pkg/idgen"
Expand Down Expand Up @@ -93,8 +93,8 @@ func (c *Composer) Run(ctx context.Context, ro RunOptions) error {
}
svcs = append(svcs, svc)
} else {
if err := c.project.WithServices([]string{ro.ServiceName}, func(svc types.ServiceConfig) error {
svcs = append(svcs, svc)
if err := c.project.ForEachService([]string{ro.ServiceName}, func(name string, svc *types.ServiceConfig) error {
svcs = append(svcs, *svc)
return nil
}); err != nil {
return err
Expand Down Expand Up @@ -128,7 +128,7 @@ func (c *Composer) Run(ctx context.Context, ro RunOptions) error {
}
if ro.Volume != nil && len(ro.Volume) > 0 {
for _, v := range ro.Volume {
vc, err := loader.ParseVolume(v)
vc, err := format.ParseVolume(v)
if err != nil {
return err
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/composer/serviceparser/build.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import (
"path/filepath"
"strings"

"github.com/compose-spec/compose-go/types"
"github.com/compose-spec/compose-go/v2/types"
"github.com/containerd/containerd/errdefs"
"github.com/containerd/containerd/identifiers"
"github.com/containerd/log"
Expand Down
Loading

0 comments on commit 3bf7c4f

Please sign in to comment.