Skip to content

Commit cd5e029

Browse files
authored
CLOUDP-200475 Leftover containers when setup/delete fails (#2300)
1 parent e3cd6ed commit cd5e029

File tree

13 files changed

+294
-90
lines changed

13 files changed

+294
-90
lines changed

go.mod

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,14 +87,18 @@ require (
8787
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.16.0 // indirect
8888
github.com/aws/aws-sdk-go-v2/service/sts v1.22.0 // indirect
8989
github.com/aws/smithy-go v1.14.2 // indirect
90+
github.com/blang/semver/v4 v4.0.0 // indirect
9091
github.com/cloudflare/circl v1.3.3 // indirect
9192
github.com/container-orchestrated-devices/container-device-interface v0.5.4 // indirect
9293
github.com/containers/common v0.55.3 // indirect
9394
github.com/containers/image/v5 v5.26.1 // indirect
95+
github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01 // indirect
96+
github.com/containers/ocicrypt v1.1.7 // indirect
9497
github.com/containers/storage v1.48.1 // indirect
9598
github.com/coreos/stream-metadata-go v0.4.2 // indirect
9699
github.com/cyphar/filepath-securejoin v0.2.4 // indirect
97100
github.com/davecgh/go-spew v1.1.1 // indirect
101+
github.com/docker/docker v24.0.2+incompatible // indirect
98102
github.com/docker/go-units v0.5.0 // indirect
99103
github.com/emicklei/go-restful/v3 v3.9.0 // indirect
100104
github.com/evanphx/json-patch/v5 v5.6.0 // indirect
@@ -141,6 +145,7 @@ require (
141145
github.com/montanaflynn/stats v0.7.0 // indirect
142146
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
143147
github.com/opencontainers/go-digest v1.0.0 // indirect
148+
github.com/opencontainers/image-spec v1.1.0-rc3 // indirect
144149
github.com/opencontainers/runc v1.1.7 // indirect
145150
github.com/opencontainers/runtime-spec v1.1.0-rc.3 // indirect
146151
github.com/opencontainers/runtime-tools v0.9.1-0.20230317050512-e931285f4b69 // indirect

go.sum

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@ github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLj
122122
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
123123
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
124124
github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=
125+
github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ=
125126
github.com/briandowns/spinner v1.23.0 h1:alDF2guRWqa/FOZZYWjlMIx2L6H0wyewPxo/CH4Pt2A=
126127
github.com/briandowns/spinner v1.23.0/go.mod h1:rPG4gmXeN3wQV/TsAY4w8lPdIM6RX3yqeBQJSrbXjuE=
127128
github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0=
@@ -148,6 +149,10 @@ github.com/containers/common v0.55.3 h1:mhNQRU4OgW1wpmmKMFSYRn42+hr8SEVSPFdKML3W
148149
github.com/containers/common v0.55.3/go.mod h1:ZKPllYOZ2xj2rgWRdnHHVvWg6ru4BT28En8mO8DMMPk=
149150
github.com/containers/image/v5 v5.26.1 h1:8y3xq8GO/6y8FR+nAedHPsAFiAtOrab9qHTBpbqaX8g=
150151
github.com/containers/image/v5 v5.26.1/go.mod h1:IwlOGzTkGnmfirXxt0hZeJlzv1zVukE03WZQ203Z9GA=
152+
github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01 h1:Qzk5C6cYglewc+UyGf6lc8Mj2UaPTHy/iF2De0/77CA=
153+
github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01/go.mod h1:9rfv8iPl1ZP7aqh9YA68wnZv2NUDbXdcdPHVz0pFbPY=
154+
github.com/containers/ocicrypt v1.1.7 h1:thhNr4fu2ltyGz8aMx8u48Ae0Pnbip3ePP9/mzkZ/3U=
155+
github.com/containers/ocicrypt v1.1.7/go.mod h1:7CAhjcj2H8AYp5YvEie7oVSK2AhBY8NscCYRawuDNtw=
151156
github.com/containers/podman/v4 v4.6.2 h1:tUHH6RfavqH0QZJHA9JoiMtMatjUSe4LjkvQYD8AhMs=
152157
github.com/containers/podman/v4 v4.6.2/go.mod h1:RszjaonNv/hLayX58T06xci2ixrcCoR5hfdfN6PQWmc=
153158
github.com/containers/storage v1.48.1 h1:mMdr6whnMu8jJ1dO+tKaeSNbu6XJYSufWQF20uLr9Og=
@@ -168,6 +173,8 @@ github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs
168173
github.com/denisbrodbeck/machineid v1.0.1 h1:geKr9qtkB876mXguW2X6TU4ZynleN6ezuMSRhl4D7AQ=
169174
github.com/denisbrodbeck/machineid v1.0.1/go.mod h1:dJUwb7PTidGDeYyUBmXZ2GphQBbjJCrnectwCyxcUSI=
170175
github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI=
176+
github.com/docker/docker v24.0.2+incompatible h1:eATx+oLz9WdNVkQrr0qjQ8HvRJ4bOOxfzEo8R+dA3cg=
177+
github.com/docker/docker v24.0.2+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
171178
github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=
172179
github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
173180
github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE=
@@ -391,6 +398,7 @@ github.com/matttproud/golang_protobuf_extensions v1.0.2 h1:hAHbPm5IJGijwng3PWk09
391398
github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE=
392399
github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d h1:5PJl274Y63IEHC+7izoQE9x6ikvDFZS2mDVS3drnohI=
393400
github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE=
401+
github.com/miekg/pkcs11 v1.1.1/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs=
394402
github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
395403
github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
396404
github.com/moby/sys/mountinfo v0.6.2 h1:BzJjoreD5BMFNmD9Rus6gdd1pLuecOFPt8wC+Vygl78=
@@ -416,6 +424,9 @@ github.com/onsi/ginkgo/v2 v2.11.0 h1:WgqUCUt/lT6yXoQ8Wef0fsNn5cAuMK7+KT9UFRz2tcU
416424
github.com/onsi/gomega v1.27.8 h1:gegWiwZjBsf2DgiSbf5hpokZ98JVDMcWkUiigk6/KXc=
417425
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
418426
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
427+
github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0=
428+
github.com/opencontainers/image-spec v1.1.0-rc3 h1:fzg1mXZFj8YdPeNkRXMg+zb88BFV0Ys52cJydRwBkb8=
429+
github.com/opencontainers/image-spec v1.1.0-rc3/go.mod h1:X4pATf0uXsnn3g5aiGIsVnJBR4mxhKzfwmvK/B2NTm8=
419430
github.com/opencontainers/runc v1.1.7 h1:y2EZDS8sNng4Ksf0GUYNhKbTShZJPJg1FiXJNH/uoCk=
420431
github.com/opencontainers/runc v1.1.7/go.mod h1:CbUumNnWCuTGFukNXahoo/RFBZvDAgRh/smNYNOhA50=
421432
github.com/opencontainers/runtime-spec v1.1.0-rc.3 h1:l04uafi6kxByhbxev7OWiuUv0LZxEsYUfDWZ6bztAuU=
@@ -455,6 +466,7 @@ github.com/shirou/gopsutil/v3 v3.23.8 h1:xnATPiybo6GgdRoC4YoGnxXZFRc3dqQTGi73oLv
455466
github.com/shirou/gopsutil/v3 v3.23.8/go.mod h1:7hmCaBn+2ZwaZOr6jmPBZDfawwMGuo1id3C6aM8EDqQ=
456467
github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ=
457468
github.com/shoenig/test v0.6.4/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k=
469+
github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
458470
github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
459471
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
460472
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
@@ -471,6 +483,7 @@ github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
471483
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
472484
github.com/spf13/viper v1.16.0 h1:rGGH0XDZhdUOryiDWjmIvUSWpbNqisK8Wk0Vyefw8hc=
473485
github.com/spf13/viper v1.16.0/go.mod h1:yg78JgCJcbrQOvV9YLXgkLaZqUidkY9K+Dd1FofRzQg=
486+
github.com/stefanberger/go-pkcs11uri v0.0.0-20201008174630-78d3cae3a980/go.mod h1:AO3tvPzVZ/ayst6UlUKUv6rcPQInYe3IknH3jYhAKu8=
474487
github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8=
475488
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
476489
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
@@ -534,6 +547,7 @@ go.mongodb.org/mongo-driver v1.12.1 h1:nLkghSU8fQNaK7oUmDhQFsnrtcoNy7Z6LVFKsEecq
534547
go.mongodb.org/mongo-driver v1.12.1/go.mod h1:/rGBTebI3XYboVmgz+Wv3Bcbl3aD0QF9zl6kDDw18rQ=
535548
go.mongodb.org/ops-manager v0.53.0 h1:e5MZsqTH+Pr/QQKWr0FHkCnkIjhKxdlES6zdlfN/JLs=
536549
go.mongodb.org/ops-manager v0.53.0/go.mod h1:U0IM51rHLDGZFBBvUIVpDq50K5xRzPsdfDYWTQSo1yI=
550+
go.mozilla.org/pkcs7 v0.0.0-20200128120323-432b2356ecb1/go.mod h1:SNgMg+EgDFwmvSmLRTNKC5fegJjB7v23qTQ0XLGUNHk=
537551
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
538552
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
539553
go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
@@ -561,6 +575,7 @@ golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8U
561575
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
562576
golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
563577
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
578+
golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
564579
golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
565580
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
566581
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
@@ -680,6 +695,7 @@ golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7w
680695
golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
681696
golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
682697
golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
698+
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
683699
golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
684700
golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
685701
golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -928,6 +944,7 @@ gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
928944
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
929945
gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=
930946
gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
947+
gopkg.in/square/go-jose.v2 v2.5.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI=
931948
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
932949
gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
933950
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
@@ -937,6 +954,7 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
937954
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
938955
gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
939956
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
957+
gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
940958
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
941959
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
942960
gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo=

internal/cli/atlas/deployments/delete.go

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,7 @@ func (opts *DeleteOpts) Run(ctx context.Context) error {
4242
}
4343

4444
telemetry.AppendOption(telemetry.WithDeploymentType(options.LocalCluster)) // always local
45-
if opts.DeploymentName != "" {
46-
if err := opts.DeploymentOpts.CheckIfDeploymentExists(ctx); err != nil {
47-
return err
48-
}
49-
} else {
45+
if opts.DeploymentName == "" {
5046
if err := opts.DeploymentOpts.Select(ctx); err != nil {
5147
return err
5248
}

internal/cli/atlas/deployments/options/deployment_opts_connect_string.go

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,23 +17,25 @@ package options
1717
import (
1818
"context"
1919
"fmt"
20+
"strconv"
2021

21-
"github.com/mongodb/mongodb-atlas-cli/internal/podman"
22+
"github.com/containers/podman/v4/libpod/define"
2223
)
2324

2425
const deploymentTypeLocal = "local"
2526

26-
func (opts *DeploymentOpts) updateFields(c *podman.Container) {
27+
func (opts *DeploymentOpts) updateFields(c *define.InspectContainerData) {
2728
opts.DeploymentType = deploymentTypeLocal
28-
opts.MdbVersion = c.Labels["version"]
29-
if len(c.Ports) > 0 {
30-
opts.Port = c.Ports[0].HostPort
29+
opts.MdbVersion = c.Config.Labels["version"]
30+
portBind, ok := c.HostConfig.PortBindings["27017/tcp"]
31+
if ok && len(portBind) > 0 {
32+
opts.Port, _ = strconv.Atoi(portBind[0].HostPort)
3133
}
3234
}
3335

3436
func (opts *DeploymentOpts) ConnectionString(ctx context.Context) (string, error) {
3537
if opts.Port == 0 {
36-
c, err := opts.findContainer(ctx)
38+
c, err := opts.findMongoDContainer(ctx)
3739
if err != nil {
3840
return "", err
3941
}

internal/cli/atlas/deployments/options/deployment_opts_remove.go

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,27 @@ package options
1616
import "context"
1717

1818
func (opts *DeploymentOpts) Remove(ctx context.Context) error {
19-
if _, err := opts.PodmanClient.RemoveContainers(ctx, opts.LocalMongodHostname(), opts.LocalMongotHostname()); err != nil {
20-
return err
19+
volumes := []string{opts.LocalMongodDataVolume(), opts.LocalMongotDataVolume(), opts.LocalMongoMetricsVolume()}
20+
21+
if c, _ := opts.PodmanClient.ContainerInspect(ctx, opts.LocalMongodHostname()); c != nil {
22+
for _, m := range c[0].Mounts {
23+
if m.Name != opts.LocalMongodDataVolume() {
24+
volumes = append(volumes, m.Name)
25+
break
26+
}
27+
}
28+
}
29+
30+
if _, errRemove := opts.PodmanClient.RemoveContainers(ctx, opts.LocalMongodHostname(), opts.LocalMongotHostname()); errRemove != nil {
31+
return errRemove
2132
}
2233

23-
if _, err := opts.PodmanClient.RemoveNetworks(ctx, opts.LocalNetworkName()); err != nil {
24-
return err
34+
if _, errRemove := opts.PodmanClient.RemoveNetworks(ctx, opts.LocalNetworkName()); errRemove != nil {
35+
return errRemove
2536
}
2637

27-
if _, err := opts.PodmanClient.RemoveVolumes(ctx, opts.LocalMongodDataVolume(), opts.LocalMongotDataVolume(), opts.LocalMongoMetricsVolume()); err != nil {
28-
return err
38+
if _, errRemove := opts.PodmanClient.RemoveVolumes(ctx, volumes...); errRemove != nil {
39+
return errRemove
2940
}
3041

3142
return nil

internal/cli/atlas/deployments/options/deployment_opts_select.go

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -20,33 +20,25 @@ import (
2020
"fmt"
2121

2222
"github.com/AlecAivazis/survey/v2"
23-
"github.com/mongodb/mongodb-atlas-cli/internal/podman"
23+
"github.com/containers/podman/v4/libpod/define"
2424
"github.com/mongodb/mongodb-atlas-cli/internal/telemetry"
2525
"github.com/mongodb/mongodb-atlas-cli/internal/usage"
2626
)
2727

2828
var errEmptyDeployments = errors.New("currently there are no deployment in your local system")
2929
var ErrDeploymentNotFound = errors.New("deployment not found")
3030

31-
func (opts *DeploymentOpts) findContainer(ctx context.Context) (*podman.Container, error) {
32-
containers, err := opts.PodmanClient.ListContainers(ctx, MongodHostnamePrefix)
31+
func (opts *DeploymentOpts) findMongoDContainer(ctx context.Context) (*define.InspectContainerData, error) {
32+
containers, err := opts.PodmanClient.ContainerInspect(ctx, opts.LocalMongodHostname())
3333
if err != nil {
34-
return nil, err
35-
}
36-
37-
for _, c := range containers {
38-
for _, n := range c.Names {
39-
if n == opts.LocalMongodHostname() {
40-
return c, nil
41-
}
42-
}
34+
return nil, fmt.Errorf("%w: %s", ErrDeploymentNotFound, opts.DeploymentName)
4335
}
4436

45-
return nil, fmt.Errorf("%w: %s", ErrDeploymentNotFound, opts.DeploymentName)
37+
return containers[0], nil
4638
}
4739

4840
func (opts *DeploymentOpts) CheckIfDeploymentExists(ctx context.Context) error {
49-
c, err := opts.findContainer(ctx)
41+
c, err := opts.findMongoDContainer(ctx)
5042
if err != nil {
5143
return err
5244
}

internal/cli/atlas/deployments/search/indexes/create_test.go

Lines changed: 51 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
"context"
2222
"testing"
2323

24+
"github.com/containers/podman/v4/libpod/define"
2425
"github.com/golang/mock/gomock"
2526
"github.com/mongodb/mongodb-atlas-cli/internal/cli"
2627
"github.com/mongodb/mongodb-atlas-cli/internal/cli/atlas/deployments/options"
@@ -29,7 +30,6 @@ import (
2930
"github.com/mongodb/mongodb-atlas-cli/internal/flag"
3031
"github.com/mongodb/mongodb-atlas-cli/internal/mocks"
3132
"github.com/mongodb/mongodb-atlas-cli/internal/mongodbclient"
32-
"github.com/mongodb/mongodb-atlas-cli/internal/podman"
3333
"github.com/mongodb/mongodb-atlas-cli/internal/test"
3434
"github.com/stretchr/testify/assert"
3535
atlasv2 "go.mongodb.org/atlas-sdk/v20230201008/admin"
@@ -73,15 +73,33 @@ func TestCreate_RunLocal(t *testing.T) {
7373

7474
mockPodman.
7575
EXPECT().
76-
ListContainers(ctx, options.MongodHostnamePrefix).
77-
Return([]*podman.Container{
76+
ContainerInspect(ctx, options.MongodHostnamePrefix+"-"+expectedLocalDeployment).
77+
Return([]*define.InspectContainerData{
7878
{
79-
Names: []string{options.MongodHostnamePrefix + "-" + expectedLocalDeployment},
80-
State: "running",
81-
Labels: map[string]string{"version": "6.0.9"},
79+
Name: options.MongodHostnamePrefix + "-" + expectedLocalDeployment,
80+
Config: &define.InspectContainerConfig{
81+
Labels: map[string]string{
82+
"version": "7.0.1",
83+
},
84+
},
85+
HostConfig: &define.InspectContainerHostConfig{
86+
PortBindings: map[string][]define.InspectHostPort{
87+
"27017/tcp": {
88+
{
89+
HostIP: "127.0.0.1",
90+
HostPort: "27017",
91+
},
92+
},
93+
},
94+
},
95+
Mounts: []define.InspectMount{
96+
{
97+
Name: opts.DeploymentOpts.LocalMongodDataVolume(),
98+
},
99+
},
82100
},
83101
}, nil).
84-
Times(2)
102+
Times(1)
85103

86104
mockPodman.
87105
EXPECT().
@@ -91,7 +109,7 @@ func TestCreate_RunLocal(t *testing.T) {
91109

92110
mockMongodbClient.
93111
EXPECT().
94-
Connect("mongodb://localhost:0/?directConnection=true", int64(10)).
112+
Connect("mongodb://localhost:27017/?directConnection=true", int64(10)).
95113
Return(nil).
96114
Times(1)
97115
mockMongodbClient.
@@ -182,15 +200,33 @@ func TestCreate_Duplicated(t *testing.T) {
182200

183201
mockPodman.
184202
EXPECT().
185-
ListContainers(ctx, options.MongodHostnamePrefix).
186-
Return([]*podman.Container{
203+
ContainerInspect(ctx, options.MongodHostnamePrefix+"-"+expectedLocalDeployment).
204+
Return([]*define.InspectContainerData{
187205
{
188-
Names: []string{options.MongodHostnamePrefix + "-" + expectedLocalDeployment},
189-
State: "running",
190-
Labels: map[string]string{"version": "6.0.9"},
206+
Name: options.MongodHostnamePrefix + "-" + expectedLocalDeployment,
207+
Config: &define.InspectContainerConfig{
208+
Labels: map[string]string{
209+
"version": "7.0.1",
210+
},
211+
},
212+
HostConfig: &define.InspectContainerHostConfig{
213+
PortBindings: map[string][]define.InspectHostPort{
214+
"27017/tcp": {
215+
{
216+
HostIP: "127.0.0.1",
217+
HostPort: "27017",
218+
},
219+
},
220+
},
221+
},
222+
Mounts: []define.InspectMount{
223+
{
224+
Name: opts.DeploymentOpts.LocalMongodDataVolume(),
225+
},
226+
},
191227
},
192228
}, nil).
193-
Times(2)
229+
Times(1)
194230

195231
mockPodman.
196232
EXPECT().
@@ -200,7 +236,7 @@ func TestCreate_Duplicated(t *testing.T) {
200236

201237
mockMongodbClient.
202238
EXPECT().
203-
Connect("mongodb://localhost:0/?directConnection=true", int64(10)).
239+
Connect("mongodb://localhost:27017/?directConnection=true", int64(10)).
204240
Return(nil).
205241
Times(1)
206242
mockMongodbClient.

0 commit comments

Comments
 (0)