diff --git a/Dockerfile b/Dockerfile
index 7b60fa8..82ef8ea 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -92,7 +92,7 @@ LABEL org.opencontainers.image.title="Volumes Backup & Share" \
]" \
com.docker.desktop.extension.icon="https://raw.githubusercontent.com/docker/volumes-backup-extension/main/icon.svg" \
com.docker.extension.changelog="
\
- - Fixed style on grid buttons.
\
+ - Fixed current image vulnerabilities (CVEs) using Docker Scout.
\
" \
com.docker.extension.categories="volumes"
diff --git a/client/go.mod b/client/go.mod
index 4e920c1..d81f25f 100644
--- a/client/go.mod
+++ b/client/go.mod
@@ -3,43 +3,47 @@ module github.com/docker/docker-credentials-client
go 1.17
require (
- github.com/docker/cli v20.10.9+incompatible
- github.com/docker/distribution v2.8.0+incompatible
- github.com/docker/docker v20.10.8+incompatible
- github.com/sirupsen/logrus v1.8.1
- github.com/urfave/cli/v2 v2.3.0
+ github.com/docker/cli v24.0.2+incompatible
+ github.com/docker/distribution v2.8.2+incompatible
+ github.com/docker/docker v24.0.2+incompatible
+ github.com/sirupsen/logrus v1.9.3
+ github.com/urfave/cli/v2 v2.25.5
)
require (
- github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78 // indirect
- github.com/Microsoft/go-winio v0.4.17 // indirect
+ github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 // indirect
+ github.com/Microsoft/go-winio v0.6.1 // indirect
github.com/beorn7/perks v1.0.1 // indirect
- github.com/cespare/xxhash/v2 v2.1.2 // indirect
- github.com/containerd/containerd v1.5.13 // indirect
- github.com/cpuguy83/go-md2man/v2 v2.0.0 // indirect
- github.com/docker/docker-credential-helpers v0.6.4 // indirect
+ github.com/cespare/xxhash/v2 v2.2.0 // indirect
+ github.com/containerd/containerd v1.7.2 // indirect
+ github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect
+ github.com/docker/docker-credential-helpers v0.7.0 // indirect
github.com/docker/go-connections v0.4.0 // indirect
github.com/docker/go-metrics v0.0.1 // indirect
- github.com/docker/go-units v0.4.0 // indirect
+ github.com/docker/go-units v0.5.0 // indirect
github.com/docker/libtrust v0.0.0-20160708172513-aabc10ec26b7 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
- github.com/golang/protobuf v1.5.2 // indirect
- github.com/gorilla/mux v1.7.2 // indirect
- github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect
- github.com/moby/term v0.0.0-20200312100748-672ec06f55cd // indirect
+ github.com/golang/protobuf v1.5.3 // indirect
+ github.com/gorilla/mux v1.8.0 // indirect
+ github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
+ github.com/moby/term v0.5.0 // indirect
github.com/morikuni/aec v1.0.0 // indirect
github.com/opencontainers/go-digest v1.0.0 // indirect
- github.com/opencontainers/image-spec v1.0.2 // indirect
+ github.com/opencontainers/image-spec v1.1.0-rc3 // indirect
github.com/pkg/errors v0.9.1 // indirect
- github.com/prometheus/client_golang v1.11.1 // indirect
- github.com/prometheus/client_model v0.2.0 // indirect
- github.com/prometheus/common v0.32.1 // indirect
- github.com/prometheus/procfs v0.8.0 // indirect
- github.com/russross/blackfriday/v2 v2.0.1 // indirect
+ github.com/prometheus/client_golang v1.15.1 // indirect
+ github.com/prometheus/client_model v0.4.0 // indirect
+ github.com/prometheus/common v0.44.0 // indirect
+ github.com/prometheus/procfs v0.10.1 // indirect
+ github.com/russross/blackfriday/v2 v2.1.0 // indirect
github.com/shurcooL/sanitized_anchor_name v1.0.0 // indirect
- golang.org/x/net v0.0.0-20220906165146-f3363e06e74c // indirect
- golang.org/x/sys v0.0.0-20220804214406-8e32c043e418 // indirect
- google.golang.org/genproto v0.0.0-20201110150050-8816d57aaa9a // indirect
- google.golang.org/grpc v1.33.2 // indirect
- google.golang.org/protobuf v1.28.1 // indirect
+ github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect
+ golang.org/x/mod v0.10.0 // indirect
+ golang.org/x/net v0.10.0 // indirect
+ golang.org/x/sys v0.8.0 // indirect
+ golang.org/x/tools v0.9.3 // indirect
+ google.golang.org/genproto v0.0.0-20230525234025-438c736192d0 // indirect
+ google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc // indirect
+ google.golang.org/grpc v1.55.0 // indirect
+ google.golang.org/protobuf v1.30.0 // indirect
)
diff --git a/client/go.sum b/client/go.sum
index 6b6641d..861273d 100644
--- a/client/go.sum
+++ b/client/go.sum
@@ -33,10 +33,14 @@ cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78 h1:w+iIsaOQNcT7OZ575w+acHgRric5iCyQh+xv+KJ4HB8=
github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8=
+github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0=
+github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
github.com/Microsoft/go-winio v0.4.17 h1:iT12IBVClFevaf8PuVyi3UmZOVh4OqnaLxDTW2O6j3w=
github.com/Microsoft/go-winio v0.4.17/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84=
+github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow=
+github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM=
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
@@ -50,6 +54,8 @@ github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE=
github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
+github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44=
+github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
@@ -57,27 +63,41 @@ github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDk
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
github.com/containerd/containerd v1.5.13 h1:XqvKw9i4P7/mFrC3TSM7yV5cwFZ9avXe6M3YANKnzEE=
github.com/containerd/containerd v1.5.13/go.mod h1:3AlCrzKROjIuP3JALsY14n8YtntaUDBu7vek+rPN5Vc=
+github.com/containerd/containerd v1.7.2 h1:UF2gdONnxO8I6byZXDi5sXWiWvlW3D/sci7dTQimEJo=
+github.com/containerd/containerd v1.7.2/go.mod h1:afcz74+K10M/+cjGHIVQrCt3RAQhUSCAjJ9iMYhhkuI=
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM=
github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
+github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w=
+github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/danieljoos/wincred v1.1.0/go.mod h1:XYlo+eRTsVA9aHGp7NGjFkPla4m+DCL7hqDjlFjiygg=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/docker/cli v20.10.9+incompatible h1:OJ7YkwQA+k2Oi51lmCojpjiygKpi76P7bg91b2eJxYU=
github.com/docker/cli v20.10.9+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
+github.com/docker/cli v24.0.2+incompatible h1:QdqR7znue1mtkXIJ+ruQMGQhpw2JzMJLRXp6zpzF6tM=
+github.com/docker/cli v24.0.2+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
github.com/docker/distribution v2.8.0+incompatible h1:l9EaZDICImO1ngI+uTifW+ZYvvz7fKISBAKpg+MbWbY=
github.com/docker/distribution v2.8.0+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
+github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8=
+github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
github.com/docker/docker v20.10.8+incompatible h1:RVqD337BgQicVCzYrrlhLDWhq6OAD2PJDUg2LsEUvKM=
github.com/docker/docker v20.10.8+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
+github.com/docker/docker v24.0.2+incompatible h1:eATx+oLz9WdNVkQrr0qjQ8HvRJ4bOOxfzEo8R+dA3cg=
+github.com/docker/docker v24.0.2+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
github.com/docker/docker-credential-helpers v0.6.4 h1:axCks+yV+2MR3/kZhAmy07yC56WZ2Pwu/fKWtKuZB0o=
github.com/docker/docker-credential-helpers v0.6.4/go.mod h1:ofX3UI0Gz1TteYBjtgs07O36Pyasyp66D2uKT7H8W1c=
+github.com/docker/docker-credential-helpers v0.7.0 h1:xtCHsjxogADNZcdv1pKUHXryefjlVRqWqIhk/uXJp0A=
+github.com/docker/docker-credential-helpers v0.7.0/go.mod h1:rETQfLdHNT3foU5kuNkFR1R1V12OJRRO5lzt2D1b5X0=
github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ=
github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec=
github.com/docker/go-metrics v0.0.1 h1:AgB/0SvBxihN0X8OR4SjsblXkbMvalQ8cjmtKQ2rQV8=
github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw=
github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw=
github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
+github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=
+github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
github.com/docker/libtrust v0.0.0-20160708172513-aabc10ec26b7 h1:UhxFibDNY/bfvqU5CAUmr9zpesgbU6SWc8/B4mflAE4=
github.com/docker/libtrust v0.0.0-20160708172513-aabc10ec26b7/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE=
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
@@ -125,6 +145,8 @@ github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw=
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
+github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
+github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
@@ -153,6 +175,8 @@ github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
github.com/gorilla/mux v1.7.2 h1:zoNxOV7WjqXptQOVngLmcSQgXmgk4NMz1HibBchjl/I=
github.com/gorilla/mux v1.7.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
+github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI=
+github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
@@ -176,8 +200,12 @@ github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI=
github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
+github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo=
+github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
github.com/moby/term v0.0.0-20200312100748-672ec06f55cd h1:aY7OQNf2XqY/JQ6qREWamhI/81os/agb2BAGpcx5yWI=
github.com/moby/term v0.0.0-20200312100748-672ec06f55cd/go.mod h1:DdlQx2hp0Ss5/fLikoLlEeIYiATotOjgB//nb973jeo=
+github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0=
+github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
@@ -190,6 +218,8 @@ github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
github.com/opencontainers/image-spec v1.0.2 h1:9yCKha/T5XdGtO0q9Q9a6T5NUCsTn/DrBg0D7ufOcFM=
github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0=
+github.com/opencontainers/image-spec v1.1.0-rc3 h1:fzg1mXZFj8YdPeNkRXMg+zb88BFV0Ys52cJydRwBkb8=
+github.com/opencontainers/image-spec v1.1.0-rc3/go.mod h1:X4pATf0uXsnn3g5aiGIsVnJBR4mxhKzfwmvK/B2NTm8=
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
@@ -203,17 +233,23 @@ github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP
github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0=
github.com/prometheus/client_golang v1.11.1 h1:+4eQaD7vAZ6DsfsxB15hbE0odUjGI5ARs9yskGu1v4s=
github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0=
+github.com/prometheus/client_golang v1.15.1 h1:8tXpTmJbyH5lydzFPoxSIJ0J46jdh3tylbvM1xCv0LI=
+github.com/prometheus/client_golang v1.15.1/go.mod h1:e9yaBhRPU2pPNsZwE+JdQl0KEt1N9XgF6zxWmaC0xOk=
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M=
github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
+github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY=
+github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU=
github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc=
github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo=
github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc=
github.com/prometheus/common v0.32.1 h1:hWIdL3N2HoUx3B8j3YN9mWor0qhY/NlEKZEaXxuIRh4=
github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls=
+github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY=
+github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY=
github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ=
@@ -221,9 +257,14 @@ github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4O
github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=
github.com/prometheus/procfs v0.8.0 h1:ODq8ZFEaYeCaZOJlZZdJA2AbQR98dSHSM1KW/You5mo=
github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4=
+github.com/prometheus/procfs v0.10.1 h1:kYK1Va/YMlutzCGazswoHKo//tZVlFpKYh+PymziUAg=
+github.com/prometheus/procfs v0.10.1/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPHWJq+XBB/FM=
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
+github.com/russross/blackfriday v1.6.0 h1:KqfZb0pUVN2lYqZUYRddxF4OR8ZMURnJIG5Y3VRLtww=
github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q=
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
+github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
+github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo=
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
@@ -232,6 +273,8 @@ github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrf
github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE=
github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
+github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
+github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
@@ -240,8 +283,13 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
+github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/urfave/cli/v2 v2.3.0 h1:qph92Y649prgesehzOrQjdWyxFOp/QVM+6imKHad91M=
github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI=
+github.com/urfave/cli/v2 v2.25.5 h1:d0NIAyhh5shGscroL7ek/Ya9QYQE0KNabJgiUinIQkc=
+github.com/urfave/cli/v2 v2.25.5/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc=
+github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU=
+github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8=
github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
@@ -287,6 +335,8 @@ golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzB
golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk=
+golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -319,6 +369,8 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY
golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20220906165146-f3363e06e74c h1:yKufUcDwucU5urd+50/Opbt4AYpqthk7wHpHok8f1lo=
golang.org/x/net v0.0.0-20220906165146-f3363e06e74c/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
+golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M=
+golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -374,8 +426,12 @@ golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220804214406-8e32c043e418 h1:9vYwv7OjYaky/tlAeD7C4oC9EsPTlaFl1H2jS++V+ME=
golang.org/x/sys v0.0.0-20220804214406-8e32c043e418/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU=
+golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -388,6 +444,7 @@ golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxb
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e h1:EHBhcS0mlXEAVwNyO2dLfjToGsyY4j24pTs2ScHnX7s=
+golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 h1:vVKdlvoWBphwdxWKrFZEuM0kGgGLxUOYcY4U/2Vjg44=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
@@ -431,6 +488,8 @@ golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc
golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+golang.org/x/tools v0.9.3 h1:Gn1I8+64MsuTb/HpH+LmQtNas23LhUVr3rYZ0eKuaMM=
+golang.org/x/tools v0.9.3/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
@@ -488,6 +547,10 @@ google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6D
google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20201110150050-8816d57aaa9a h1:pOwg4OoaRYScjmR4LlLgdtnyoHYTSAVhhqe5uPdpII8=
google.golang.org/genproto v0.0.0-20201110150050-8816d57aaa9a/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20230525234025-438c736192d0 h1:x1vNwUhVOcsYoKyEGCZBH694SBmmBjA2EfauFVEI2+M=
+google.golang.org/genproto v0.0.0-20230525234025-438c736192d0/go.mod h1:9ExIQyXL5hZrHzQceCwuSYwZZ5QZBazOcprJ5rgs3lY=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc h1:XSJ8Vk1SWuNr8S18z1NZSziL0CPIXLCCMDOEFtHBOFc=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
@@ -502,6 +565,8 @@ google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM
google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
google.golang.org/grpc v1.33.2 h1:EQyQC3sa8M+p6Ulc8yy9SWSS2GVwyRc83gAbG8lrl4o=
google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
+google.golang.org/grpc v1.55.0 h1:3Oj82/tFSCeUrRTg/5E/7d/W5A1tj6Ky1ABAuZuv5ag=
+google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGONTY8=
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
@@ -516,6 +581,8 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w=
google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
+google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng=
+google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
@@ -529,6 +596,7 @@ gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo=
gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw=
gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk=
diff --git a/vm/go.mod b/vm/go.mod
index 080c9e9..e56f109 100644
--- a/vm/go.mod
+++ b/vm/go.mod
@@ -3,28 +3,27 @@ module github.com/docker/volumes-backup-extension
go 1.17
require (
- github.com/docker/distribution v2.8.1+incompatible
- github.com/docker/docker v20.10.17+incompatible
+ github.com/docker/distribution v2.8.2+incompatible
+ github.com/docker/docker v24.0.2+incompatible
github.com/docker/go-connections v0.4.0
github.com/klauspost/compress v1.15.10
- github.com/sirupsen/logrus v1.8.1
- github.com/stretchr/testify v1.7.0
- golang.org/x/sync v0.0.0-20201207232520-09787c993a3a
+ github.com/sirupsen/logrus v1.9.3
+ github.com/stretchr/testify v1.8.1
+ golang.org/x/sync v0.2.0
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect
)
require (
- github.com/Microsoft/go-winio v0.5.2 // indirect
- github.com/bugsnag/bugsnag-go/v2 v2.1.2
+ github.com/Microsoft/go-winio v0.6.1 // indirect
+ github.com/bugsnag/bugsnag-go/v2 v2.2.0
github.com/bugsnag/panicwrap v1.3.4 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
- github.com/docker/go-units v0.4.0 // indirect
- github.com/gofrs/uuid v4.0.0+incompatible // indirect
+ github.com/docker/go-units v0.5.0 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 // indirect
github.com/labstack/gommon v0.4.0 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
- github.com/mattn/go-isatty v0.0.16 // indirect
+ github.com/mattn/go-isatty v0.0.19 // indirect
github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6 // indirect
github.com/morikuni/aec v1.0.0 // indirect
github.com/opencontainers/go-digest v1.0.0 // indirect
@@ -33,16 +32,22 @@ require (
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/valyala/bytebufferpool v1.0.0 // indirect
github.com/valyala/fasttemplate v1.2.2 // indirect
- golang.org/x/crypto v0.3.0 // indirect
- golang.org/x/net v0.2.0 // indirect
- golang.org/x/sys v0.2.0 // indirect
- golang.org/x/text v0.4.0 // indirect; indirect v0.0.0-20220708220712-1185a9018129
- golang.org/x/time v0.0.0-20220609170525-579cf78fd858 // indirect
- gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect
+ golang.org/x/crypto v0.9.0 // indirect
+ golang.org/x/net v0.10.0 // indirect
+ golang.org/x/sys v0.8.0 // indirect
+ golang.org/x/text v0.9.0 // indirect; indirect v0.0.0-20220708220712-1185a9018129
+ golang.org/x/time v0.3.0 // indirect
+ gopkg.in/yaml.v3 v3.0.1 // indirect
gotest.tools/v3 v3.3.0 // indirect
)
require (
github.com/golang-jwt/jwt v3.2.2+incompatible // indirect
- github.com/labstack/echo/v4 v4.9.1
+ github.com/labstack/echo/v4 v4.10.2
+)
+
+require (
+ github.com/google/uuid v1.3.0 // indirect
+ golang.org/x/mod v0.10.0 // indirect
+ golang.org/x/tools v0.9.3 // indirect
)
diff --git a/vm/go.sum b/vm/go.sum
index e6dabbc..fa81826 100644
--- a/vm/go.sum
+++ b/vm/go.sum
@@ -1,28 +1,26 @@
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8=
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
-github.com/Microsoft/go-winio v0.5.2 h1:a9IhgEQBCUEk6QCdml9CiJGhAws+YwffDHEMp1VMrpA=
-github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY=
+github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow=
+github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM=
github.com/bitly/go-simplejson v0.5.0 h1:6IH+V8/tVMab511d5bn4M7EwGXZf9Hj6i2xSwkNEM+Y=
github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA=
github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4=
-github.com/bugsnag/bugsnag-go/v2 v2.1.2 h1:R5rgYn5w5LhVIere+n+Ah49pa4E1b3OP2bSwHtURmv8=
-github.com/bugsnag/bugsnag-go/v2 v2.1.2/go.mod h1:mJCnw33SPVYPFTsAeSR/kpwuyvjTXrPK5w/XZfTUwMU=
+github.com/bugsnag/bugsnag-go/v2 v2.2.0 h1:y4JJ6xNJiK4jbmq/BLXe09MGUNRp/r1Zpye6RKcPJJ8=
+github.com/bugsnag/bugsnag-go/v2 v2.2.0/go.mod h1:Aoi1ax1kGbbkArShzXUQjxp6jM8gMh4qOtHLis/jY1E=
github.com/bugsnag/panicwrap v1.3.4 h1:A6sXFtDGsgU/4BLf5JT0o5uYg3EeKgGx3Sfs+/uk3pU=
github.com/bugsnag/panicwrap v1.3.4/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE=
github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/docker/distribution v2.8.1+incompatible h1:Q50tZOPR6T/hjNsyc9g8/syEs6bk8XXApsHjKukMl68=
-github.com/docker/distribution v2.8.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
-github.com/docker/docker v20.10.17+incompatible h1:JYCuMrWaVNophQTOrMMoSwudOVEfcegoZZrleKc1xwE=
-github.com/docker/docker v20.10.17+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
+github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8=
+github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
+github.com/docker/docker v24.0.2+incompatible h1:eATx+oLz9WdNVkQrr0qjQ8HvRJ4bOOxfzEo8R+dA3cg=
+github.com/docker/docker v24.0.2+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ=
github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec=
-github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw=
-github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
-github.com/gofrs/uuid v4.0.0+incompatible h1:1SD/1F5pU8p29ybwgQSwpQk+mwdRrXCYuPhW6m+TnJw=
-github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
+github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=
+github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY=
@@ -31,6 +29,8 @@ github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
+github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 h1:iQTw/8FWTuc7uiaSepXwyf3o52HaUYcV+Tu66S3F5GA=
github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8=
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
@@ -42,16 +42,18 @@ github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfn
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
-github.com/labstack/echo/v4 v4.9.1 h1:GliPYSpzGKlyOhqIbG8nmHBo3i1saKWFOgh41AN3b+Y=
-github.com/labstack/echo/v4 v4.9.1/go.mod h1:Pop5HLc+xoc4qhTZ1ip6C0RtP7Z+4VzRLWZZFKqbbjo=
+github.com/labstack/echo/v4 v4.10.2 h1:n1jAhnq/elIFTHr1EYpiYtyKgx4RW9ccVgkqByZaN2M=
+github.com/labstack/echo/v4 v4.10.2/go.mod h1:OEyqf2//K1DFdE57vw2DRgWY0M7s65IVQO2FzvI4J5k=
github.com/labstack/gommon v0.4.0 h1:y7cvthEAEbU0yHOf4axH8ZG2NH8knB9iNSoTO8dyIk8=
github.com/labstack/gommon v0.4.0/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM=
github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
-github.com/mattn/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ=
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
+github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
+github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA=
+github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6 h1:dcztxKSvZ4Id8iPpHERQBbIJfabdt4wUm5qy3wOL2Zc=
github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6/go.mod h1:E2VnQOmVuvZB6UYnnDB0qG5Nq/1tD9acaOpo6xmt0Kw=
github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A=
@@ -65,14 +67,18 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
-github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE=
-github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
+github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
+github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
+github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
-github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
+github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
+github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
+github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=
+github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
@@ -80,50 +86,78 @@ github.com/valyala/fasttemplate v1.2.2 h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQ
github.com/valyala/fasttemplate v1.2.2/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.3.0 h1:a06MkbcxBrEFc0w0QIZWXrH/9cCX6KJyWbBOIwAn+7A=
-golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
+golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58=
+golang.org/x/crypto v0.9.0 h1:LF6fAI+IutBocDJ2OT0Q1g8plpYljMZ4+lty+dsqw3g=
+golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0=
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
+golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
+golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk=
+golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
-golang.org/x/net v0.2.0 h1:sZfSu1wtKLGlWI4ZZayP0ck9Y73K1ynO6gqzTdBVdPU=
-golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
+golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
+golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
+golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
+golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
+golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M=
+golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20201207232520-09787c993a3a h1:DcqTD9SDLc+1P/r1EmRBwnVsrOwW+kk2vWf9n+1sGhs=
-golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.2.0 h1:PUR+T4wwASmuSTYdKjYHI5TD22Wy5ogLU5qZCOLxBrI=
+golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.2.0 h1:ljd4t30dBnAvMZaQCevtY0xLLD0A+bRZXbgLMLU1F/A=
-golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU=
+golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
+golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
+golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
+golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.4.0 h1:BrVqGRd7+k1DiOgtnFvAkoQEWQvBc25ouMJM6429SFg=
-golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
-golang.org/x/time v0.0.0-20220609170525-579cf78fd858 h1:Dpdu/EMxGMFgq0CeYMh4fazTD2vtlZRYE7wyynxJb9U=
-golang.org/x/time v0.0.0-20220609170525-579cf78fd858/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
+golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
+golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE=
+golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
+golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4=
+golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
+golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
+golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
+golang.org/x/tools v0.9.3 h1:Gn1I8+64MsuTb/HpH+LmQtNas23LhUVr3rYZ0eKuaMM=
+golang.org/x/tools v0.9.3/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
@@ -132,8 +166,9 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk=
gotest.tools/v3 v3.3.0 h1:MfDY1b1/0xN1CyMlQDac0ziEy9zJQd9CXBRRDHw2jJo=
gotest.tools/v3 v3.3.0/go.mod h1:Mcr9QNxkg0uMvy/YElmo4SpXgJKWgQvYrT7Kw5RzJ1A=
diff --git a/vm/internal/backend/containers.go b/vm/internal/backend/containers.go
index 1b7e6e4..85d3b2b 100644
--- a/vm/internal/backend/containers.go
+++ b/vm/internal/backend/containers.go
@@ -6,16 +6,16 @@ import (
"os"
"runtime"
"strings"
- "time"
"github.com/bugsnag/bugsnag-go/v2"
"github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/container"
"github.com/docker/docker/api/types/filters"
"github.com/docker/docker/client"
+ "golang.org/x/sync/errgroup"
+
"github.com/docker/volumes-backup-extension/internal"
"github.com/docker/volumes-backup-extension/internal/log"
- "golang.org/x/sync/errgroup"
)
func GetContainersForVolume(ctx context.Context, cli *client.Client, volumeName string, specialFilters filters.Args) []string {
@@ -41,7 +41,7 @@ func GetContainersForVolume(ctx context.Context, cli *client.Client, volumeName
func StopRunningContainersAttachedToVolume(ctx context.Context, cli *client.Client, volumeName string) ([]string, error) {
var stoppedContainersByExtension []string
- var timeout = 10 * time.Second
+ var timeout = 10 // seconds
containerNames := GetContainersForVolume(ctx, cli, volumeName,
filters.NewArgs(
@@ -67,7 +67,9 @@ func StopRunningContainersAttachedToVolume(ctx context.Context, cli *client.Clie
}
log.Infof("stopping container %s...", containerName)
- err = cli.ContainerStop(gCtx, containerName, &timeout)
+ err = cli.ContainerStop(gCtx, containerName, container.StopOptions{
+ Timeout: &timeout,
+ })
if err != nil {
return err
}
diff --git a/vm/internal/handler/clone.go b/vm/internal/handler/clone.go
index 87cce69..53b626a 100644
--- a/vm/internal/handler/clone.go
+++ b/vm/internal/handler/clone.go
@@ -83,7 +83,7 @@ func (h *Handler) CloneVolume(ctx echo.Context) error {
if err != nil {
return err
}
- _, err = cli.VolumeCreate(ctx.Request().Context(), volumetypes.VolumeCreateBody{
+ _, err = cli.VolumeCreate(ctx.Request().Context(), volumetypes.CreateOptions{
Labels: volInspect.Labels,
Name: destVolume,
})
diff --git a/vm/internal/handler/clone_test.go b/vm/internal/handler/clone_test.go
index 2b6fd55..2759498 100644
--- a/vm/internal/handler/clone_test.go
+++ b/vm/internal/handler/clone_test.go
@@ -13,7 +13,7 @@ import (
"github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/container"
"github.com/docker/docker/api/types/filters"
- volumetypes "github.com/docker/docker/api/types/volume"
+ "github.com/docker/docker/api/types/volume"
"github.com/docker/docker/client"
"github.com/labstack/echo/v4"
"github.com/stretchr/testify/require"
@@ -23,15 +23,15 @@ import (
func TestCloneVolume(t *testing.T) {
var containerID string
- volume := "e6b2874a1b4ced2344d53b75e93346f60e1c363fe3e4cd9c6cb5bd8b975b9a45"
- destVolume := volume + "-cloned"
+ volumeID := "e6b2874a1b4ced2344d53b75e93346f60e1c363fe3e4cd9c6cb5bd8b975b9a45"
+ destVolume := volumeID + "-cloned"
cli := setupDockerClient(t)
defer func() {
_ = cli.ContainerRemove(context.Background(), containerID, types.ContainerRemoveOptions{
Force: true,
})
- _ = cli.VolumeRemove(context.Background(), volume, true)
+ _ = cli.VolumeRemove(context.Background(), volumeID, true)
_ = cli.VolumeRemove(context.Background(), destVolume, true)
}()
@@ -44,13 +44,13 @@ func TestCloneVolume(t *testing.T) {
c := e.NewContext(req, rec)
c.SetPath("/volumes/:volume/clone")
c.SetParamNames("volume")
- c.SetParamValues(volume)
+ c.SetParamValues(volumeID)
h := New(c.Request().Context(), func() (*client.Client, error) { return setupDockerClient(t), nil })
// Create volume
- _, err := cli.VolumeCreate(c.Request().Context(), volumetypes.VolumeCreateBody{
+ _, err := cli.VolumeCreate(c.Request().Context(), volume.CreateOptions{
Driver: "local",
- Name: volume,
+ Name: volumeID,
Labels: map[string]string{
"com.docker.compose.project": "my-compose-project",
"com.docker.compose.version": "2.10.2",
@@ -78,7 +78,7 @@ func TestCloneVolume(t *testing.T) {
Image: "docker.io/library/nginx:1.21",
}, &container.HostConfig{
Binds: []string{
- volume + ":" + "/usr/share/nginx/html:ro",
+ volumeID + ":" + "/usr/share/nginx/html:ro",
},
}, nil, nil, "")
if err != nil {
@@ -97,7 +97,7 @@ func TestCloneVolume(t *testing.T) {
t.Fatal(err)
}
// Check volume has been cloned and contains the expected data
- clonedVolumeResp, err := dockerClient.VolumeList(context.Background(), filters.NewArgs(filters.Arg("name", destVolume)))
+ clonedVolumeResp, err := dockerClient.VolumeList(context.Background(), volume.ListOptions{Filters: filters.NewArgs(filters.Arg("name", destVolume))})
if err != nil {
t.Fatal(err)
}
diff --git a/vm/internal/handler/containers.go b/vm/internal/handler/containers.go
index 62f9afd..b844dee 100644
--- a/vm/internal/handler/containers.go
+++ b/vm/internal/handler/containers.go
@@ -5,6 +5,7 @@ import (
"sync"
"github.com/docker/docker/api/types/filters"
+ "github.com/docker/docker/api/types/volume"
"github.com/labstack/echo/v4"
@@ -18,7 +19,7 @@ func (h *Handler) VolumesContainer(ctx echo.Context) error {
return err
}
- v, err := cli.VolumeList(ctxReq, filters.NewArgs())
+ v, err := cli.VolumeList(ctxReq, volume.ListOptions{Filters: filters.NewArgs()})
if err != nil {
return err
}
diff --git a/vm/internal/handler/delete_test.go b/vm/internal/handler/delete_test.go
index 6f9935e..ef7fdbc 100644
--- a/vm/internal/handler/delete_test.go
+++ b/vm/internal/handler/delete_test.go
@@ -8,7 +8,7 @@ import (
"github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/filters"
- volumetypes "github.com/docker/docker/api/types/volume"
+ "github.com/docker/docker/api/types/volume"
"github.com/docker/docker/client"
"github.com/labstack/echo/v4"
"github.com/stretchr/testify/require"
@@ -16,14 +16,14 @@ import (
func TestDeleteVolume(t *testing.T) {
var containerID string
- volume := "dc0c85c49196932194dcf34e2a1280dcd4a8c46653c407c4e06845ffad3109ba"
+ volumeID := "dc0c85c49196932194dcf34e2a1280dcd4a8c46653c407c4e06845ffad3109ba"
cli := setupDockerClient(t)
defer func() {
_ = cli.ContainerRemove(context.Background(), containerID, types.ContainerRemoveOptions{
Force: true,
})
- _ = cli.VolumeRemove(context.Background(), volume, true)
+ _ = cli.VolumeRemove(context.Background(), volumeID, true)
}()
// Setup
@@ -33,13 +33,13 @@ func TestDeleteVolume(t *testing.T) {
c := e.NewContext(req, rec)
c.SetPath("/volumes/:volume/delete")
c.SetParamNames("volume")
- c.SetParamValues(volume)
+ c.SetParamValues(volumeID)
h := New(c.Request().Context(), func() (*client.Client, error) { return setupDockerClient(t), nil })
// Create volume
- _, err := cli.VolumeCreate(c.Request().Context(), volumetypes.VolumeCreateBody{
+ _, err := cli.VolumeCreate(c.Request().Context(), volume.CreateOptions{
Driver: "local",
- Name: volume,
+ Name: volumeID,
})
if err != nil {
t.Fatal(err)
@@ -51,7 +51,7 @@ func TestDeleteVolume(t *testing.T) {
require.Equal(t, http.StatusNoContent, rec.Code)
// Check the volume has been deleted
- clonedVolumeResp, err := cli.VolumeList(context.Background(), filters.NewArgs(filters.Arg("name", volume)))
+ clonedVolumeResp, err := cli.VolumeList(context.Background(), volume.ListOptions{Filters: filters.NewArgs(filters.Arg("name", volumeID))})
if err != nil {
t.Fatal(err)
}
diff --git a/vm/internal/handler/export_test.go b/vm/internal/handler/export_test.go
index 9809912..0dbc3fe 100644
--- a/vm/internal/handler/export_test.go
+++ b/vm/internal/handler/export_test.go
@@ -23,7 +23,7 @@ import (
"github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/container"
- volumetypes "github.com/docker/docker/api/types/volume"
+ "github.com/docker/docker/api/types/volume"
"github.com/docker/docker/client"
"github.com/labstack/echo/v4"
"github.com/stretchr/testify/require"
@@ -239,11 +239,11 @@ func export(cli *client.Client, volume, path, compression string) *httptest.Resp
}
// setupVolume creates a volume and fills it with data from an image.
-func setupVolume(ctx context.Context, cli *client.Client, volume, image, mountPath string) {
+func setupVolume(ctx context.Context, cli *client.Client, volumeID, image, mountPath string) {
// Create volume
- _, err := cli.VolumeCreate(ctx, volumetypes.VolumeCreateBody{
+ _, err := cli.VolumeCreate(ctx, volume.CreateOptions{
Driver: "local",
- Name: volume,
+ Name: volumeID,
})
if err != nil {
log.Fatal(err)
@@ -266,7 +266,7 @@ func setupVolume(ctx context.Context, cli *client.Client, volume, image, mountPa
Image: image,
}, &container.HostConfig{
Binds: []string{
- volume + ":" + mountPath,
+ volumeID + ":" + mountPath,
},
}, nil, nil, "")
if err != nil {
diff --git a/vm/internal/handler/import_test.go b/vm/internal/handler/import_test.go
index 5b09db2..dc7035e 100644
--- a/vm/internal/handler/import_test.go
+++ b/vm/internal/handler/import_test.go
@@ -13,7 +13,7 @@ import (
"github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/container"
- volumetypes "github.com/docker/docker/api/types/volume"
+ "github.com/docker/docker/api/types/volume"
"github.com/docker/docker/client"
"github.com/labstack/echo/v4"
"github.com/stretchr/testify/require"
@@ -24,11 +24,11 @@ import (
// TestImportTarGzFileFromPreviousVersion tests the backwards compatibility of importing a tar.gz archive generated from version 1.0.0 of the Volumes Backup extension.
// See https://github.com/docker/volumes-backup-extension/pull/63.
func TestImportTarGzFileFromExtensionVersion1_0_0(t *testing.T) {
- volume := "d022054e9eff40145acba93f2787c3d91113319c3df7f9115e441f0ce2af167b"
+ volumeID := "d022054e9eff40145acba93f2787c3d91113319c3df7f9115e441f0ce2af167b"
cli := setupDockerClient(t)
defer func() {
- _ = cli.VolumeRemove(context.Background(), volume, true)
+ _ = cli.VolumeRemove(context.Background(), volumeID, true)
}()
fileName := "postgres_pgdata.tar.gz"
@@ -47,13 +47,13 @@ func TestImportTarGzFileFromExtensionVersion1_0_0(t *testing.T) {
c := e.NewContext(req, rec)
c.SetPath("/volumes/:volume/import")
c.SetParamNames("volume")
- c.SetParamValues(volume)
+ c.SetParamValues(volumeID)
h := New(c.Request().Context(), func() (*client.Client, error) { return setupDockerClient(t), nil })
// Create volume
- _, err = cli.VolumeCreate(c.Request().Context(), volumetypes.VolumeCreateBody{
+ _, err = cli.VolumeCreate(c.Request().Context(), volume.CreateOptions{
Driver: "local",
- Name: volume,
+ Name: volumeID,
})
if err != nil {
t.Fatal(err)
@@ -64,18 +64,18 @@ func TestImportTarGzFileFromExtensionVersion1_0_0(t *testing.T) {
require.NoError(t, err)
require.Equal(t, http.StatusOK, rec.Code)
- sizes, err := backend.GetVolumesSize(c.Request().Context(), cli, volume)
+ sizes, err := backend.GetVolumesSize(c.Request().Context(), cli, volumeID)
require.NoError(t, err)
- require.Equal(t, int64(50764000), sizes[volume].Bytes)
- require.Equal(t, "50.8 MB", sizes[volume].Human)
+ require.Equal(t, int64(50764000), sizes[volumeID].Bytes)
+ require.Equal(t, "50.8 MB", sizes[volumeID].Human)
}
func TestImportTarGzFile(t *testing.T) {
- volume := "9a66f7e879b539462d372feee03588aed95fe03236be950b0b1ed55ec7b995d1"
+ volumeID := "9a66f7e879b539462d372feee03588aed95fe03236be950b0b1ed55ec7b995d1"
cli := setupDockerClient(t)
defer func() {
- _ = cli.VolumeRemove(context.Background(), volume, true)
+ _ = cli.VolumeRemove(context.Background(), volumeID, true)
}()
fileName := "nginx.tar.gz"
@@ -94,13 +94,13 @@ func TestImportTarGzFile(t *testing.T) {
c := e.NewContext(req, rec)
c.SetPath("/volumes/:volume/import")
c.SetParamNames("volume")
- c.SetParamValues(volume)
+ c.SetParamValues(volumeID)
h := New(c.Request().Context(), func() (*client.Client, error) { return setupDockerClient(t), nil })
// Create volume
- _, err = cli.VolumeCreate(c.Request().Context(), volumetypes.VolumeCreateBody{
+ _, err = cli.VolumeCreate(c.Request().Context(), volume.CreateOptions{
Driver: "local",
- Name: volume,
+ Name: volumeID,
})
if err != nil {
t.Fatal(err)
@@ -111,18 +111,18 @@ func TestImportTarGzFile(t *testing.T) {
require.NoError(t, err)
require.Equal(t, http.StatusOK, rec.Code)
- sizes, err := backend.GetVolumesSize(c.Request().Context(), cli, volume)
+ sizes, err := backend.GetVolumesSize(c.Request().Context(), cli, volumeID)
require.NoError(t, err)
- require.Equal(t, int64(16000), sizes[volume].Bytes)
- require.Equal(t, "16.0 kB", sizes[volume].Human)
+ require.Equal(t, int64(16000), sizes[volumeID].Bytes)
+ require.Equal(t, "16.0 kB", sizes[volumeID].Human)
}
func TestImportTarGzFileShouldRemovePreviousVolumeData(t *testing.T) {
- volume := "2744b01d1dfca0353a9f717988518d03307a119fe34d6fe5948f8a984f7f8d1f"
+ volumeID := "2744b01d1dfca0353a9f717988518d03307a119fe34d6fe5948f8a984f7f8d1f"
cli := setupDockerClient(t)
defer func() {
- _ = cli.VolumeRemove(context.Background(), volume, true)
+ _ = cli.VolumeRemove(context.Background(), volumeID, true)
}()
fileName := "nginx.tar.gz"
@@ -141,13 +141,13 @@ func TestImportTarGzFileShouldRemovePreviousVolumeData(t *testing.T) {
c := e.NewContext(req, rec)
c.SetPath("/volumes/:volume/import")
c.SetParamNames("volume")
- c.SetParamValues(volume)
+ c.SetParamValues(volumeID)
h := New(c.Request().Context(), func() (*client.Client, error) { return setupDockerClient(t), nil })
// Create volume
- _, err = cli.VolumeCreate(c.Request().Context(), volumetypes.VolumeCreateBody{
+ _, err = cli.VolumeCreate(c.Request().Context(), volume.CreateOptions{
Driver: "local",
- Name: volume,
+ Name: volumeID,
})
if err != nil {
t.Fatal(err)
@@ -171,7 +171,7 @@ func TestImportTarGzFileShouldRemovePreviousVolumeData(t *testing.T) {
Env: []string{"POSTGRES_PASSWORD=password"},
}, &container.HostConfig{
Binds: []string{
- volume + ":" + "/var/lib/postgresql/data",
+ volumeID + ":" + "/var/lib/postgresql/data",
},
}, nil, nil, "")
if err != nil {
@@ -193,8 +193,8 @@ func TestImportTarGzFileShouldRemovePreviousVolumeData(t *testing.T) {
require.NoError(t, err)
require.Equal(t, http.StatusOK, rec.Code)
- sizes, err := backend.GetVolumesSize(c.Request().Context(), cli, volume)
+ sizes, err := backend.GetVolumesSize(c.Request().Context(), cli, volumeID)
require.NoError(t, err)
- require.Equal(t, int64(16000), sizes[volume].Bytes)
- require.Equal(t, "16.0 kB", sizes[volume].Human)
+ require.Equal(t, int64(16000), sizes[volumeID].Bytes)
+ require.Equal(t, "16.0 kB", sizes[volumeID].Human)
}
diff --git a/vm/internal/handler/load_test.go b/vm/internal/handler/load_test.go
index 90e9f48..ad8f987 100644
--- a/vm/internal/handler/load_test.go
+++ b/vm/internal/handler/load_test.go
@@ -13,7 +13,7 @@ import (
"github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/container"
- volumetypes "github.com/docker/docker/api/types/volume"
+ "github.com/docker/docker/api/types/volume"
"github.com/docker/docker/client"
"github.com/labstack/echo/v4"
"github.com/stretchr/testify/require"
@@ -22,12 +22,12 @@ import (
)
func TestLoadImage(t *testing.T) {
- volume := "ec654aa5062241db227476aa877efc67d22fa4d3f8ed759c7a9738afce417c71"
+ volumeID := "ec654aa5062241db227476aa877efc67d22fa4d3f8ed759c7a9738afce417c71"
cli := setupDockerClient(t)
imageID := "vackup-load-test-img:latest"
defer func() {
- _ = cli.VolumeRemove(context.Background(), volume, true)
+ _ = cli.VolumeRemove(context.Background(), volumeID, true)
}()
// Load image.tar.gz filesystem into a local image
@@ -58,13 +58,13 @@ func TestLoadImage(t *testing.T) {
c := e.NewContext(req, rec)
c.SetPath("/volumes/:volume/load")
c.SetParamNames("volume")
- c.SetParamValues(volume)
+ c.SetParamValues(volumeID)
h := New(c.Request().Context(), func() (*client.Client, error) { return setupDockerClient(t), nil })
// Create volume
- _, err = cli.VolumeCreate(c.Request().Context(), volumetypes.VolumeCreateBody{
+ _, err = cli.VolumeCreate(c.Request().Context(), volume.CreateOptions{
Driver: "local",
- Name: volume,
+ Name: volumeID,
})
if err != nil {
t.Fatal(err)
@@ -75,20 +75,20 @@ func TestLoadImage(t *testing.T) {
require.NoError(t, err)
require.Equal(t, http.StatusOK, rec.Code)
- sizes, err := backend.GetVolumesSize(c.Request().Context(), cli, volume)
+ sizes, err := backend.GetVolumesSize(c.Request().Context(), cli, volumeID)
require.NoError(t, err)
- t.Logf("Volume size after loading image into it: %+v", sizes[volume])
- require.Equal(t, int64(16000), sizes[volume].Bytes)
- require.Equal(t, "16.0 kB", sizes[volume].Human)
+ t.Logf("Volume size after loading image into it: %+v", sizes[volumeID])
+ require.Equal(t, int64(16000), sizes[volumeID].Bytes)
+ require.Equal(t, "16.0 kB", sizes[volumeID].Human)
}
func TestLoadImageShouldRemovePreviousVolumeData(t *testing.T) {
- volume := "348cbc9bc7092dcdf4acdd3653ffd7711cbe1b529c6fd699ecddec5c3577613c"
+ volumeID := "348cbc9bc7092dcdf4acdd3653ffd7711cbe1b529c6fd699ecddec5c3577613c"
cli := setupDockerClient(t)
imageID := "vackup-load-test-img:latest"
defer func() {
- _ = cli.VolumeRemove(context.Background(), volume, true)
+ _ = cli.VolumeRemove(context.Background(), volumeID, true)
}()
// Load image.tar.gz filesystem into a local image
@@ -119,13 +119,13 @@ func TestLoadImageShouldRemovePreviousVolumeData(t *testing.T) {
c := e.NewContext(req, rec)
c.SetPath("/volumes/:volume/load")
c.SetParamNames("volume")
- c.SetParamValues(volume)
+ c.SetParamValues(volumeID)
h := New(c.Request().Context(), func() (*client.Client, error) { return setupDockerClient(t), nil })
// Create volume
- _, err = cli.VolumeCreate(c.Request().Context(), volumetypes.VolumeCreateBody{
+ _, err = cli.VolumeCreate(c.Request().Context(), volume.CreateOptions{
Driver: "local",
- Name: volume,
+ Name: volumeID,
})
if err != nil {
t.Fatal(err)
@@ -149,7 +149,7 @@ func TestLoadImageShouldRemovePreviousVolumeData(t *testing.T) {
Env: []string{"POSTGRES_PASSWORD=password"},
}, &container.HostConfig{
Binds: []string{
- volume + ":" + "/var/lib/postgresql/data",
+ volumeID + ":" + "/var/lib/postgresql/data",
},
}, nil, nil, "")
if err != nil {
@@ -171,9 +171,9 @@ func TestLoadImageShouldRemovePreviousVolumeData(t *testing.T) {
require.NoError(t, err)
require.Equal(t, http.StatusOK, rec.Code)
- sizes, err := backend.GetVolumesSize(c.Request().Context(), cli, volume)
+ sizes, err := backend.GetVolumesSize(c.Request().Context(), cli, volumeID)
require.NoError(t, err)
- t.Logf("Volume size after loading image into it: %+v", sizes[volume])
- require.Equal(t, int64(16000), sizes[volume].Bytes)
- require.Equal(t, "16.0 kB", sizes[volume].Human)
+ t.Logf("Volume size after loading image into it: %+v", sizes[volumeID])
+ require.Equal(t, int64(16000), sizes[volumeID].Bytes)
+ require.Equal(t, "16.0 kB", sizes[volumeID].Human)
}
diff --git a/vm/internal/handler/pull_test.go b/vm/internal/handler/pull_test.go
index 9923424..e997a5c 100644
--- a/vm/internal/handler/pull_test.go
+++ b/vm/internal/handler/pull_test.go
@@ -20,7 +20,7 @@ import (
"github.com/docker/docker/api/types"
dockertypes "github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/container"
- volumetypes "github.com/docker/docker/api/types/volume"
+ "github.com/docker/docker/api/types/volume"
"github.com/docker/docker/client"
"github.com/docker/go-connections/nat"
"github.com/labstack/echo/v4"
@@ -32,8 +32,8 @@ import (
func TestPullVolume(t *testing.T) {
var containerID string
var registryContainerID string
- volume := "797a9e23f9da19b7c59e816c425bb491231914619a5d815435de9d8b28063bc8"
- registry := "localhost:5000" // or use docker.io to pull volume from DockerHub
+ volumeID := "797a9e23f9da19b7c59e816c425bb491231914619a5d815435de9d8b28063bc8"
+ registry := "localhost:5000" // or use docker.io to pull volumeID from DockerHub
imageID := registry + "/felipecruz/" + "vackup-pull-test-img"
cli := setupDockerClient(t)
@@ -44,7 +44,7 @@ func TestPullVolume(t *testing.T) {
_ = cli.ContainerRemove(context.Background(), containerID, types.ContainerRemoveOptions{
Force: true,
})
- _ = cli.VolumeRemove(context.Background(), volume, true)
+ _ = cli.VolumeRemove(context.Background(), volumeID, true)
t.Logf("removing image %s", imageID)
if _, err := cli.ImageRemove(context.Background(), imageID, types.ImageRemoveOptions{
@@ -63,7 +63,7 @@ func TestPullVolume(t *testing.T) {
c := e.NewContext(req, rec)
c.SetPath("/volumes/:volume/pull")
c.SetParamNames("volume")
- c.SetParamValues(volume)
+ c.SetParamValues(volumeID)
h := New(c.Request().Context(), func() (*client.Client, error) { return setupDockerClient(t), nil })
// Provision a registry with an image (which represents a volume) ready to pull:
@@ -159,9 +159,9 @@ func TestPullVolume(t *testing.T) {
}
// Create empty volume where the content of the image pulled will be saved into
- _, err = cli.VolumeCreate(c.Request().Context(), volumetypes.VolumeCreateBody{
+ _, err = cli.VolumeCreate(c.Request().Context(), volume.CreateOptions{
Driver: "local",
- Name: volume,
+ Name: volumeID,
})
if err != nil {
t.Fatal(err)
@@ -177,16 +177,16 @@ func TestPullVolume(t *testing.T) {
require.Equal(t, http.StatusCreated, rec.Code)
// Check the content of the volume
- m, err := backend.GetVolumesSize(c.Request().Context(), cli, volume)
+ m, err := backend.GetVolumesSize(c.Request().Context(), cli, volumeID)
require.NoError(t, err)
- require.Equal(t, int64(16000), m[volume].Bytes)
- require.Equal(t, "16.0 kB", m[volume].Human)
+ require.Equal(t, int64(16000), m[volumeID].Bytes)
+ require.Equal(t, "16.0 kB", m[volumeID].Human)
}
func TestPullVolumeUsingCorrectAuth(t *testing.T) {
var containerID string
var registryContainerID string
- volume := "b3128131acca4d70263d477345b528ad3aba3ae66f2d94dddb02817da427020a"
+ volumeID := "b3128131acca4d70263d477345b528ad3aba3ae66f2d94dddb02817da427020a"
registry := "localhost:5000" // or use docker.io to push it to DockerHub
imageID := registry + "/felipecruz/" + "vackup-pull-test-img"
cli := setupDockerClient(t)
@@ -198,7 +198,7 @@ func TestPullVolumeUsingCorrectAuth(t *testing.T) {
_ = cli.ContainerRemove(context.Background(), containerID, types.ContainerRemoveOptions{
Force: true,
})
- _ = cli.VolumeRemove(context.Background(), volume, true)
+ _ = cli.VolumeRemove(context.Background(), volumeID, true)
t.Logf("removing image %s", imageID)
if _, err := cli.ImageRemove(context.Background(), imageID, types.ImageRemoveOptions{
@@ -220,7 +220,7 @@ func TestPullVolumeUsingCorrectAuth(t *testing.T) {
c := e.NewContext(req, rec)
c.SetPath("/volumes/:volume/pull")
c.SetParamNames("volume")
- c.SetParamValues(volume)
+ c.SetParamValues(volumeID)
h := New(c.Request().Context(), func() (*client.Client, error) { return setupDockerClient(t), nil })
// Run a local registry with auth
@@ -330,9 +330,9 @@ func TestPullVolumeUsingCorrectAuth(t *testing.T) {
}
// Create empty volume where the content of the image pulled will be saved into
- _, err = cli.VolumeCreate(context.Background(), volumetypes.VolumeCreateBody{
+ _, err = cli.VolumeCreate(context.Background(), volume.CreateOptions{
Driver: "local",
- Name: volume,
+ Name: volumeID,
})
if err != nil {
t.Fatal(err)
@@ -345,16 +345,16 @@ func TestPullVolumeUsingCorrectAuth(t *testing.T) {
require.Equal(t, http.StatusCreated, rec.Code)
// Check the content of the volume
- m, err := backend.GetVolumesSize(c.Request().Context(), cli, volume)
+ m, err := backend.GetVolumesSize(c.Request().Context(), cli, volumeID)
require.NoError(t, err)
- require.Equal(t, int64(16000), m[volume].Bytes)
- require.Equal(t, "16.0 kB", m[volume].Human)
+ require.Equal(t, int64(16000), m[volumeID].Bytes)
+ require.Equal(t, "16.0 kB", m[volumeID].Human)
}
func TestPullVolumeUsingWrongAuthShouldFail(t *testing.T) {
var containerID string
var registryContainerID string
- volume := "98fbf55c3ab45ea5bfc8ea8edf7f374b325e68eab947828aae5d6447df19ee3d"
+ volumeID := "98fbf55c3ab45ea5bfc8ea8edf7f374b325e68eab947828aae5d6447df19ee3d"
registry := "localhost:5000" // or use docker.io to push it to DockerHub
imageID := registry + "/felipecruz/" + "vackup-pull-test-img"
cli := setupDockerClient(t)
@@ -366,7 +366,7 @@ func TestPullVolumeUsingWrongAuthShouldFail(t *testing.T) {
_ = cli.ContainerRemove(context.Background(), containerID, types.ContainerRemoveOptions{
Force: true,
})
- _ = cli.VolumeRemove(context.Background(), volume, true)
+ _ = cli.VolumeRemove(context.Background(), volumeID, true)
t.Logf("removing image %s", imageID)
if _, err := cli.ImageRemove(context.Background(), imageID, types.ImageRemoveOptions{
@@ -388,7 +388,7 @@ func TestPullVolumeUsingWrongAuthShouldFail(t *testing.T) {
c := e.NewContext(req, rec)
c.SetPath("/volumes/:volume/pull")
c.SetParamNames("volume")
- c.SetParamValues(volume)
+ c.SetParamValues(volumeID)
h := New(c.Request().Context(), func() (*client.Client, error) { return setupDockerClient(t), nil })
// Run a local registry with auth
@@ -470,9 +470,9 @@ func TestPullVolumeUsingWrongAuthShouldFail(t *testing.T) {
t.Fatal(err)
}
// Create empty volume where the content of the image pulled will be saved into
- _, err = cli.VolumeCreate(context.Background(), volumetypes.VolumeCreateBody{
+ _, err = cli.VolumeCreate(context.Background(), volume.CreateOptions{
Driver: "local",
- Name: volume,
+ Name: volumeID,
})
if err != nil {
t.Fatal(err)
@@ -485,10 +485,10 @@ func TestPullVolumeUsingWrongAuthShouldFail(t *testing.T) {
require.Equal(t, http.StatusUnauthorized, rec.Code)
// Check the content of the volume
- m, err := backend.GetVolumesSize(c.Request().Context(), cli, volume)
+ m, err := backend.GetVolumesSize(c.Request().Context(), cli, volumeID)
require.NoError(t, err)
- require.Equal(t, int64(0), m[volume].Bytes)
- require.Equal(t, "0 B", m[volume].Human)
+ require.Equal(t, int64(0), m[volumeID].Bytes)
+ require.Equal(t, "0 B", m[volumeID].Human)
}
func retry(attempts int, sleep time.Duration, f func() error) (err error) {
diff --git a/vm/internal/handler/push_test.go b/vm/internal/handler/push_test.go
index 80702f0..550d17d 100644
--- a/vm/internal/handler/push_test.go
+++ b/vm/internal/handler/push_test.go
@@ -17,7 +17,7 @@ import (
"github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/container"
- volumetypes "github.com/docker/docker/api/types/volume"
+ "github.com/docker/docker/api/types/volume"
"github.com/docker/docker/client"
"github.com/docker/go-connections/nat"
"github.com/labstack/echo/v4"
@@ -27,7 +27,7 @@ import (
func TestPushVolume(t *testing.T) {
var containerID string
var registryContainerID string
- volume := "998c9e00ea6ed7f7d27beeb2d876b18a02686172faa8897c50720c1365c82d8f"
+ volumeID := "998c9e00ea6ed7f7d27beeb2d876b18a02686172faa8897c50720c1365c82d8f"
registry := "localhost:5000" // or use docker.io to push it to DockerHub
imageID := registry + "/felipecruz/" + "test-push-volume-as-image"
cli := setupDockerClient(t)
@@ -39,7 +39,7 @@ func TestPushVolume(t *testing.T) {
_ = cli.ContainerRemove(context.Background(), containerID, types.ContainerRemoveOptions{
Force: true,
})
- _ = cli.VolumeRemove(context.Background(), volume, true)
+ _ = cli.VolumeRemove(context.Background(), volumeID, true)
t.Logf("removing image %s", imageID)
if _, err := cli.ImageRemove(context.Background(), imageID, types.ImageRemoveOptions{
@@ -58,13 +58,13 @@ func TestPushVolume(t *testing.T) {
c := e.NewContext(req, rec)
c.SetPath("/volumes/:volume/push")
c.SetParamNames("volume")
- c.SetParamValues(volume)
+ c.SetParamValues(volumeID)
h := New(c.Request().Context(), func() (*client.Client, error) { return setupDockerClient(t), nil })
// Create volume
- _, err := cli.VolumeCreate(c.Request().Context(), volumetypes.VolumeCreateBody{
+ _, err := cli.VolumeCreate(c.Request().Context(), volume.CreateOptions{
Driver: "local",
- Name: volume,
+ Name: volumeID,
})
if err != nil {
t.Fatal(err)
@@ -86,7 +86,7 @@ func TestPushVolume(t *testing.T) {
Image: "docker.io/library/nginx:1.21",
}, &container.HostConfig{
Binds: []string{
- volume + ":" + "/usr/share/nginx/html:ro",
+ volumeID + ":" + "/usr/share/nginx/html:ro",
},
}, nil, nil, "")
if err != nil {
@@ -163,7 +163,7 @@ func TestPushVolume(t *testing.T) {
func TestPushVolumeUsingCorrectAuth(t *testing.T) {
var containerID string
var registryContainerID string
- volume := "26c3626656572089590620f155e0b097309ab5c53e5ce6fba94cf8ed94e0dfb7"
+ volumeID := "26c3626656572089590620f155e0b097309ab5c53e5ce6fba94cf8ed94e0dfb7"
registry := "localhost:5000" // or use docker.io to push it to DockerHub
imageID := registry + "/felipecruz/" + "test-auth-push-volume-as-image"
cli := setupDockerClient(t)
@@ -175,7 +175,7 @@ func TestPushVolumeUsingCorrectAuth(t *testing.T) {
_ = cli.ContainerRemove(context.Background(), containerID, types.ContainerRemoveOptions{
Force: true,
})
- _ = cli.VolumeRemove(context.Background(), volume, true)
+ _ = cli.VolumeRemove(context.Background(), volumeID, true)
t.Logf("removing image %s", imageID)
if _, err := cli.ImageRemove(context.Background(), imageID, types.ImageRemoveOptions{
@@ -197,13 +197,13 @@ func TestPushVolumeUsingCorrectAuth(t *testing.T) {
c := e.NewContext(req, rec)
c.SetPath("/volumes/:volume/push")
c.SetParamNames("volume")
- c.SetParamValues(volume)
+ c.SetParamValues(volumeID)
h := New(c.Request().Context(), func() (*client.Client, error) { return setupDockerClient(t), nil })
// Create volume
- _, err := cli.VolumeCreate(c.Request().Context(), volumetypes.VolumeCreateBody{
+ _, err := cli.VolumeCreate(c.Request().Context(), volume.CreateOptions{
Driver: "local",
- Name: volume,
+ Name: volumeID,
})
if err != nil {
t.Fatal(err)
@@ -225,7 +225,7 @@ func TestPushVolumeUsingCorrectAuth(t *testing.T) {
Image: "docker.io/library/nginx:1.21",
}, &container.HostConfig{
Binds: []string{
- volume + ":" + "/usr/share/nginx/html:ro",
+ volumeID + ":" + "/usr/share/nginx/html:ro",
},
}, nil, nil, "")
if err != nil {
@@ -327,7 +327,7 @@ func TestPushVolumeUsingCorrectAuth(t *testing.T) {
func TestPushVolumeUsingWrongAuthShouldFail(t *testing.T) {
var containerID string
var registryContainerID string
- volume := "a5783caca4a98259c6d5a493e240f227f1aa93e72afd0fecaeb3a5575b8505d2"
+ volumeID := "a5783caca4a98259c6d5a493e240f227f1aa93e72afd0fecaeb3a5575b8505d2"
registry := "localhost:5000" // or use docker.io to push it to DockerHub
imageID := registry + "/felipecruz/" + "test-auth-push-volume-as-image"
cli := setupDockerClient(t)
@@ -339,7 +339,7 @@ func TestPushVolumeUsingWrongAuthShouldFail(t *testing.T) {
_ = cli.ContainerRemove(context.Background(), containerID, types.ContainerRemoveOptions{
Force: true,
})
- _ = cli.VolumeRemove(context.Background(), volume, true)
+ _ = cli.VolumeRemove(context.Background(), volumeID, true)
t.Logf("removing image %s", imageID)
if _, err := cli.ImageRemove(context.Background(), imageID, types.ImageRemoveOptions{
@@ -361,13 +361,13 @@ func TestPushVolumeUsingWrongAuthShouldFail(t *testing.T) {
c := e.NewContext(req, rec)
c.SetPath("/volumes/:volume/push")
c.SetParamNames("volume")
- c.SetParamValues(volume)
+ c.SetParamValues(volumeID)
h := New(c.Request().Context(), func() (*client.Client, error) { return setupDockerClient(t), nil })
- // Create volume
- _, err := cli.VolumeCreate(c.Request().Context(), volumetypes.VolumeCreateBody{
+ // Create volumeID
+ _, err := cli.VolumeCreate(c.Request().Context(), volume.CreateOptions{
Driver: "local",
- Name: volume,
+ Name: volumeID,
})
if err != nil {
t.Fatal(err)
@@ -384,12 +384,12 @@ func TestPushVolumeUsingWrongAuthShouldFail(t *testing.T) {
t.Fatal(err)
}
- // Populate volume
+ // Populate volumeID
resp, err := cli.ContainerCreate(c.Request().Context(), &container.Config{
Image: "docker.io/library/nginx:1.21",
}, &container.HostConfig{
Binds: []string{
- volume + ":" + "/usr/share/nginx/html:ro",
+ volumeID + ":" + "/usr/share/nginx/html:ro",
},
}, nil, nil, "")
if err != nil {
@@ -450,7 +450,7 @@ func TestPushVolumeUsingWrongAuthShouldFail(t *testing.T) {
t.Fatal(err)
}
- // Push volume
+ // Push volumeID
err = h.PushVolume(c)
require.NoError(t, err)
diff --git a/vm/internal/handler/save_test.go b/vm/internal/handler/save_test.go
index e5f306a..fa5be0c 100644
--- a/vm/internal/handler/save_test.go
+++ b/vm/internal/handler/save_test.go
@@ -14,7 +14,7 @@ import (
"github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/container"
"github.com/docker/docker/api/types/filters"
- volumetypes "github.com/docker/docker/api/types/volume"
+ "github.com/docker/docker/api/types/volume"
"github.com/docker/docker/client"
"github.com/labstack/echo/v4"
"github.com/stretchr/testify/require"
@@ -22,7 +22,7 @@ import (
func TestSaveVolume(t *testing.T) {
var containerID string
- volume := "cde5adac7d16ae45c6d2bf8f2496d3da3b994227bfa4d3ea392a03c2ad33cce6"
+ volumeID := "cde5adac7d16ae45c6d2bf8f2496d3da3b994227bfa4d3ea392a03c2ad33cce6"
imageID := "vackup-cde5adac7d16ae45c6d2bf8f2496d3da3b994227bfa4d3ea392a03c2ad33cce6:latest"
cli := setupDockerClient(t)
@@ -30,7 +30,7 @@ func TestSaveVolume(t *testing.T) {
_ = cli.ContainerRemove(context.Background(), containerID, types.ContainerRemoveOptions{
Force: true,
})
- _ = cli.VolumeRemove(context.Background(), volume, true)
+ _ = cli.VolumeRemove(context.Background(), volumeID, true)
t.Logf("removing image %s", imageID)
if _, err := cli.ImageRemove(context.Background(), imageID, types.ImageRemoveOptions{
@@ -49,13 +49,13 @@ func TestSaveVolume(t *testing.T) {
c := e.NewContext(req, rec)
c.SetPath("/volumes/:volume/save")
c.SetParamNames("volume")
- c.SetParamValues(volume)
+ c.SetParamValues(volumeID)
h := New(c.Request().Context(), func() (*client.Client, error) { return cli, nil })
// Create volume
- _, err := cli.VolumeCreate(c.Request().Context(), volumetypes.VolumeCreateBody{
+ _, err := cli.VolumeCreate(c.Request().Context(), volume.CreateOptions{
Driver: "local",
- Name: volume,
+ Name: volumeID,
})
if err != nil {
t.Fatal(err)
@@ -78,7 +78,7 @@ func TestSaveVolume(t *testing.T) {
Image: "docker.io/library/nginx:1.21",
}, &container.HostConfig{
Binds: []string{
- volume + ":" + "/usr/share/nginx/html:ro",
+ volumeID + ":" + "/usr/share/nginx/html:ro",
},
}, nil, nil, "")
if err != nil {
diff --git a/vm/internal/handler/size_test.go b/vm/internal/handler/size_test.go
index cb41a85..78aebfe 100644
--- a/vm/internal/handler/size_test.go
+++ b/vm/internal/handler/size_test.go
@@ -11,7 +11,7 @@ import (
"github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/container"
- volumetypes "github.com/docker/docker/api/types/volume"
+ "github.com/docker/docker/api/types/volume"
"github.com/docker/docker/client"
"github.com/labstack/echo/v4"
"github.com/stretchr/testify/require"
@@ -19,14 +19,14 @@ import (
func TestVolumeSize(t *testing.T) {
var containerID string
- volume := "f1c149694ab1318377505d40c2431b4387a53d8d28fa814d4584e12b1ed63cfc"
+ volumeID := "f1c149694ab1318377505d40c2431b4387a53d8d28fa814d4584e12b1ed63cfc"
cli := setupDockerClient(t)
defer func() {
_ = cli.ContainerRemove(context.Background(), containerID, types.ContainerRemoveOptions{
Force: true,
})
- _ = cli.VolumeRemove(context.Background(), volume, true)
+ _ = cli.VolumeRemove(context.Background(), volumeID, true)
}()
// Setup
@@ -36,13 +36,13 @@ func TestVolumeSize(t *testing.T) {
c := e.NewContext(req, rec)
c.SetPath("/volumes/:volume/size")
c.SetParamNames("volume")
- c.SetParamValues(volume)
+ c.SetParamValues(volumeID)
h := New(c.Request().Context(), func() (*client.Client, error) { return setupDockerClient(t), nil })
// Create volume
- _, err := cli.VolumeCreate(c.Request().Context(), volumetypes.VolumeCreateBody{
+ _, err := cli.VolumeCreate(c.Request().Context(), volume.CreateOptions{
Driver: "local",
- Name: volume,
+ Name: volumeID,
})
if err != nil {
t.Fatal(err)
@@ -65,7 +65,7 @@ func TestVolumeSize(t *testing.T) {
Image: "docker.io/library/nginx:1.21",
}, &container.HostConfig{
Binds: []string{
- volume + ":" + "/usr/share/nginx/html:ro",
+ volumeID + ":" + "/usr/share/nginx/html:ro",
},
}, nil, nil, "")
if err != nil {
diff --git a/vm/internal/handler/volumes.go b/vm/internal/handler/volumes.go
index 2c16782..6cd1e61 100644
--- a/vm/internal/handler/volumes.go
+++ b/vm/internal/handler/volumes.go
@@ -5,6 +5,7 @@ import (
"sync"
"github.com/docker/docker/api/types/filters"
+ "github.com/docker/docker/api/types/volume"
"github.com/labstack/echo/v4"
)
@@ -28,7 +29,7 @@ func (h *Handler) Volumes(ctx echo.Context) error {
return err
}
- v, err := cli.VolumeList(ctxReq, filters.NewArgs())
+ v, err := cli.VolumeList(ctxReq, volume.ListOptions{Filters: filters.NewArgs()})
if err != nil {
return err
}
diff --git a/vm/internal/handler/volumes_test.go b/vm/internal/handler/volumes_test.go
index e91a994..a181fce 100644
--- a/vm/internal/handler/volumes_test.go
+++ b/vm/internal/handler/volumes_test.go
@@ -7,18 +7,18 @@ import (
"net/http/httptest"
"testing"
- volumetypes "github.com/docker/docker/api/types/volume"
+ "github.com/docker/docker/api/types/volume"
"github.com/docker/docker/client"
"github.com/labstack/echo/v4"
"github.com/stretchr/testify/require"
)
func TestVolumes(t *testing.T) {
- volume := "7115890bd1cdf80f4cc0b8aaa9f5300281e80b4bf68170a6eb20e174774f0089"
+ volumeID := "7115890bd1cdf80f4cc0b8aaa9f5300281e80b4bf68170a6eb20e174774f0089"
cli := setupDockerClient(t)
defer func() {
- _ = cli.VolumeRemove(context.Background(), volume, true)
+ _ = cli.VolumeRemove(context.Background(), volumeID, true)
}()
// Setup
@@ -30,9 +30,9 @@ func TestVolumes(t *testing.T) {
h := New(c.Request().Context(), func() (*client.Client, error) { return cli, nil })
// Create volume
- _, err := cli.VolumeCreate(c.Request().Context(), volumetypes.VolumeCreateBody{
+ _, err := cli.VolumeCreate(c.Request().Context(), volume.CreateOptions{
Driver: "local",
- Name: volume,
+ Name: volumeID,
})
if err != nil {
t.Fatal(err)
@@ -48,11 +48,11 @@ func TestVolumes(t *testing.T) {
require.NoError(t, err)
require.Equal(t, http.StatusOK, rec.Code)
- require.Contains(t, m, volume)
- require.Equal(t, "local", m[volume].Driver)
- require.Equal(t, int64(0), m[volume].Size)
- require.Equal(t, "", m[volume].SizeHuman)
- require.Len(t, m[volume].Containers, 0)
+ require.Contains(t, m, volumeID)
+ require.Equal(t, "local", m[volumeID].Driver)
+ require.Equal(t, int64(0), m[volumeID].Size)
+ require.Equal(t, "", m[volumeID].SizeHuman)
+ require.Len(t, m[volumeID].Containers, 0)
}
func setupDockerClient(t *testing.T) *client.Client {
diff --git a/vm/volumes-backup-extension b/vm/volumes-backup-extension
new file mode 100755
index 0000000..116596e
Binary files /dev/null and b/vm/volumes-backup-extension differ