From 56e48f836019362412f0ece95ada3768dc6ca39c Mon Sep 17 00:00:00 2001 From: Ulysses Souza Date: Thu, 31 Mar 2022 18:14:09 +0200 Subject: [PATCH] Fix down command without any resource to delete A command down without any resource to delete was trying to remove a default network that doesn't exist Signed-off-by: Ulysses Souza --- pkg/compose/down.go | 6 ++++++ pkg/compose/down_test.go | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/pkg/compose/down.go b/pkg/compose/down.go index d86aefc8a..c5e13ce58 100644 --- a/pkg/compose/down.go +++ b/pkg/compose/down.go @@ -23,6 +23,7 @@ import ( "time" "github.com/compose-spec/compose-go/types" + "github.com/docker/cli/cli/registry/client" moby "github.com/docker/docker/api/types" "github.com/docker/docker/errdefs" "golang.org/x/sync/errgroup" @@ -131,6 +132,11 @@ func (s *composeService) ensureNetworksDown(ctx context.Context, project *types. continue } networkName := n.Name + _, err := s.apiClient().NetworkInspect(ctx, networkName, moby.NetworkInspectOptions{}) + if client.IsNotFound(err) { + return nil + } + ops = append(ops, func() error { return s.removeNetwork(ctx, networkName, w) }) diff --git a/pkg/compose/down_test.go b/pkg/compose/down_test.go index e7860fd37..c799975cc 100644 --- a/pkg/compose/down_test.go +++ b/pkg/compose/down_test.go @@ -23,7 +23,6 @@ import ( compose "github.com/docker/compose/v2/pkg/api" "github.com/docker/compose/v2/pkg/mocks" - moby "github.com/docker/docker/api/types" "github.com/docker/docker/api/types/filters" "github.com/docker/docker/api/types/volume" @@ -60,6 +59,7 @@ func TestDown(t *testing.T) { api.EXPECT().ContainerRemove(gomock.Any(), "456", moby.ContainerRemoveOptions{Force: true}).Return(nil) api.EXPECT().ContainerRemove(gomock.Any(), "789", moby.ContainerRemoveOptions{Force: true}).Return(nil) + api.EXPECT().NetworkInspect(gomock.Any(), "myProject_default", moby.NetworkInspectOptions{}).Return(moby.NetworkResource{Name: "myProject_default"}, nil) api.EXPECT().NetworkRemove(gomock.Any(), "myProject_default").Return(nil) err := tested.Down(context.Background(), strings.ToLower(testProject), compose.DownOptions{}) @@ -94,6 +94,7 @@ func TestDownRemoveOrphans(t *testing.T) { api.EXPECT().ContainerRemove(gomock.Any(), "789", moby.ContainerRemoveOptions{Force: true}).Return(nil) api.EXPECT().ContainerRemove(gomock.Any(), "321", moby.ContainerRemoveOptions{Force: true}).Return(nil) + api.EXPECT().NetworkInspect(gomock.Any(), "myProject_default", moby.NetworkInspectOptions{}).Return(moby.NetworkResource{Name: "myProject_default"}, nil) api.EXPECT().NetworkRemove(gomock.Any(), "myProject_default").Return(nil) err := tested.Down(context.Background(), strings.ToLower(testProject), compose.DownOptions{RemoveOrphans: true})