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="" \ 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