From 16c876d83fca6de7c24802a449170bd3c59ceb1b Mon Sep 17 00:00:00 2001 From: Pavel Sviderski Date: Tue, 22 Apr 2025 23:31:45 +1000 Subject: [PATCH] fix: compare container specs with equate empty option (nil map == {} map) --- go.mod | 4 ++-- go.sum | 4 ++-- pkg/api/service.go | 5 +++-- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 8e05a7fc..477ad102 100644 --- a/go.mod +++ b/go.mod @@ -11,6 +11,7 @@ require ( github.com/caddyserver/caddy/v2 v2.8.4 github.com/cenkalti/backoff/v4 v4.3.0 github.com/charmbracelet/huh v0.6.0 + github.com/charmbracelet/lipgloss v0.13.0 github.com/compose-spec/compose-go/v2 v2.4.5 github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf github.com/deckarep/golang-set/v2 v2.8.0 @@ -22,6 +23,7 @@ require ( github.com/docker/go-connections v0.5.0 github.com/docker/go-units v0.5.0 github.com/goccy/go-yaml v1.17.1 + github.com/google/go-cmp v0.7.0 github.com/google/go-containerregistry v0.20.2 github.com/hashicorp/memberlist v0.5.1 github.com/hashicorp/serf v0.10.1 @@ -83,7 +85,6 @@ require ( github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/charmbracelet/bubbles v0.20.0 // indirect github.com/charmbracelet/bubbletea v1.1.1 // indirect - github.com/charmbracelet/lipgloss v0.13.0 // indirect github.com/charmbracelet/x/ansi v0.3.2 // indirect github.com/charmbracelet/x/exp/strings v0.0.0-20240919170804-a4978c8e603a // indirect github.com/charmbracelet/x/term v0.2.0 // indirect @@ -136,7 +137,6 @@ require ( github.com/google/btree v1.1.2 // indirect github.com/google/cel-go v0.20.1 // indirect github.com/google/flatbuffers v24.3.25+incompatible // indirect - github.com/google/go-cmp v0.6.0 // indirect github.com/google/pprof v0.0.0-20250317173921-a4b03ec1a45e // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect github.com/google/uuid v1.6.0 // indirect diff --git a/go.sum b/go.sum index b608695c..a0f882cc 100644 --- a/go.sum +++ b/go.sum @@ -399,8 +399,8 @@ github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= -github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/go-containerregistry v0.20.2 h1:B1wPJ1SN/S7pB+ZAimcciVD+r+yV/l/DSArMxlbwseo= github.com/google/go-containerregistry v0.20.2/go.mod h1:z38EKdKh4h7IP2gSfUUqEvalZBqs6AoLeWfUy34nQC8= github.com/google/go-tpm v0.9.0 h1:sQF6YqWMi+SCXpsmS3fd21oPy/vSddwZry4JnmltHVk= diff --git a/pkg/api/service.go b/pkg/api/service.go index 97c9c203..696a9610 100644 --- a/pkg/api/service.go +++ b/pkg/api/service.go @@ -4,11 +4,12 @@ import ( "encoding/json" "fmt" "maps" - "reflect" "regexp" "slices" "github.com/distribution/reference" + "github.com/google/go-cmp/cmp" + "github.com/google/go-cmp/cmp/cmpopts" "github.com/psviderski/uncloud/internal/machine/api/pb" ) @@ -213,7 +214,7 @@ func (s *ContainerSpec) Equals(spec ContainerSpec) bool { sortVolumeMounts(orig.VolumeMounts) sortVolumeMounts(spec.VolumeMounts) - return reflect.DeepEqual(orig, spec) + return cmp.Equal(orig, spec, cmpopts.EquateEmpty()) } func (s *ContainerSpec) Clone() ContainerSpec {