mirror of
https://github.com/containers/skopeo.git
synced 2025-07-17 00:02:03 +00:00
fix(deps): update module github.com/containers/common to v0.63.0
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This commit is contained in:
parent
bb26ea90f9
commit
4329210fa7
65
go.mod
65
go.mod
@ -1,14 +1,16 @@
|
|||||||
module github.com/containers/skopeo
|
module github.com/containers/skopeo
|
||||||
|
|
||||||
// Minimum required golang version
|
// Minimum required golang version
|
||||||
go 1.23.0
|
go 1.23.3
|
||||||
|
|
||||||
|
toolchain go1.23.8
|
||||||
|
|
||||||
// Warning: Ensure the "go" and "toolchain" versions match exactly to prevent unwanted auto-updates
|
// Warning: Ensure the "go" and "toolchain" versions match exactly to prevent unwanted auto-updates
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/Masterminds/semver/v3 v3.3.1
|
github.com/Masterminds/semver/v3 v3.3.1
|
||||||
github.com/containers/common v0.62.3
|
github.com/containers/common v0.63.0
|
||||||
github.com/containers/image/v5 v5.34.3
|
github.com/containers/image/v5 v5.35.0
|
||||||
github.com/containers/ocicrypt v1.2.1
|
github.com/containers/ocicrypt v1.2.1
|
||||||
github.com/containers/storage v1.58.0
|
github.com/containers/storage v1.58.0
|
||||||
github.com/docker/distribution v2.8.3+incompatible
|
github.com/docker/distribution v2.8.3+incompatible
|
||||||
@ -33,40 +35,39 @@ require (
|
|||||||
github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d // indirect
|
github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d // indirect
|
||||||
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect
|
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect
|
||||||
github.com/containerd/cgroups/v3 v3.0.5 // indirect
|
github.com/containerd/cgroups/v3 v3.0.5 // indirect
|
||||||
github.com/containerd/errdefs v0.3.0 // indirect
|
github.com/containerd/errdefs v1.0.0 // indirect
|
||||||
github.com/containerd/errdefs/pkg v0.3.0 // indirect
|
github.com/containerd/errdefs/pkg v0.3.0 // indirect
|
||||||
github.com/containerd/stargz-snapshotter/estargz v0.16.3 // indirect
|
github.com/containerd/stargz-snapshotter/estargz v0.16.3 // indirect
|
||||||
github.com/containerd/typeurl/v2 v2.2.3 // indirect
|
github.com/containerd/typeurl/v2 v2.2.3 // indirect
|
||||||
github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01 // indirect
|
github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01 // indirect
|
||||||
github.com/coreos/go-oidc/v3 v3.12.0 // indirect
|
github.com/coreos/go-oidc/v3 v3.13.0 // indirect
|
||||||
github.com/cyberphone/json-canonicalization v0.0.0-20231217050601-ba74d44ecf5f // indirect
|
github.com/cyberphone/json-canonicalization v0.0.0-20241213102144-19d51d7fe467 // indirect
|
||||||
github.com/cyphar/filepath-securejoin v0.4.1 // indirect
|
github.com/cyphar/filepath-securejoin v0.4.1 // indirect
|
||||||
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
|
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
|
||||||
github.com/distribution/reference v0.6.0 // indirect
|
github.com/distribution/reference v0.6.0 // indirect
|
||||||
github.com/docker/docker v27.5.1+incompatible // indirect
|
github.com/docker/docker v28.0.4+incompatible // indirect
|
||||||
github.com/docker/docker-credential-helpers v0.8.2 // indirect
|
github.com/docker/docker-credential-helpers v0.9.3 // indirect
|
||||||
github.com/docker/go-connections v0.5.0 // indirect
|
github.com/docker/go-connections v0.5.0 // indirect
|
||||||
github.com/docker/go-units v0.5.0 // indirect
|
github.com/docker/go-units v0.5.0 // indirect
|
||||||
github.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707 // indirect
|
github.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707 // indirect
|
||||||
github.com/felixge/httpsnoop v1.0.4 // indirect
|
github.com/felixge/httpsnoop v1.0.4 // indirect
|
||||||
github.com/go-jose/go-jose/v3 v3.0.4 // indirect
|
|
||||||
github.com/go-jose/go-jose/v4 v4.0.5 // indirect
|
github.com/go-jose/go-jose/v4 v4.0.5 // indirect
|
||||||
github.com/go-logr/logr v1.4.2 // indirect
|
github.com/go-logr/logr v1.4.2 // indirect
|
||||||
github.com/go-logr/stdr v1.2.2 // indirect
|
github.com/go-logr/stdr v1.2.2 // indirect
|
||||||
github.com/go-openapi/analysis v0.23.0 // indirect
|
github.com/go-openapi/analysis v0.23.0 // indirect
|
||||||
github.com/go-openapi/errors v0.22.0 // indirect
|
github.com/go-openapi/errors v0.22.1 // indirect
|
||||||
github.com/go-openapi/jsonpointer v0.21.0 // indirect
|
github.com/go-openapi/jsonpointer v0.21.0 // indirect
|
||||||
github.com/go-openapi/jsonreference v0.21.0 // indirect
|
github.com/go-openapi/jsonreference v0.21.0 // indirect
|
||||||
github.com/go-openapi/loads v0.22.0 // indirect
|
github.com/go-openapi/loads v0.22.0 // indirect
|
||||||
github.com/go-openapi/runtime v0.28.0 // indirect
|
github.com/go-openapi/runtime v0.28.0 // indirect
|
||||||
github.com/go-openapi/spec v0.21.0 // indirect
|
github.com/go-openapi/spec v0.21.0 // indirect
|
||||||
github.com/go-openapi/strfmt v0.23.0 // indirect
|
github.com/go-openapi/strfmt v0.23.0 // indirect
|
||||||
github.com/go-openapi/swag v0.23.0 // indirect
|
github.com/go-openapi/swag v0.23.1 // indirect
|
||||||
github.com/go-openapi/validate v0.24.0 // indirect
|
github.com/go-openapi/validate v0.24.0 // indirect
|
||||||
github.com/gogo/protobuf v1.3.2 // indirect
|
github.com/gogo/protobuf v1.3.2 // indirect
|
||||||
github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect
|
github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect
|
||||||
github.com/golang/protobuf v1.5.4 // indirect
|
github.com/golang/protobuf v1.5.4 // indirect
|
||||||
github.com/google/go-containerregistry v0.20.2 // indirect
|
github.com/google/go-containerregistry v0.20.3 // indirect
|
||||||
github.com/google/go-intervals v0.0.2 // indirect
|
github.com/google/go-intervals v0.0.2 // indirect
|
||||||
github.com/google/uuid v1.6.0 // indirect
|
github.com/google/uuid v1.6.0 // indirect
|
||||||
github.com/gorilla/mux v1.8.1 // indirect
|
github.com/gorilla/mux v1.8.1 // indirect
|
||||||
@ -79,9 +80,9 @@ require (
|
|||||||
github.com/klauspost/compress v1.18.0 // indirect
|
github.com/klauspost/compress v1.18.0 // indirect
|
||||||
github.com/klauspost/pgzip v1.2.6 // indirect
|
github.com/klauspost/pgzip v1.2.6 // indirect
|
||||||
github.com/letsencrypt/boulder v0.0.0-20240620165639-de9c06129bec // indirect
|
github.com/letsencrypt/boulder v0.0.0-20240620165639-de9c06129bec // indirect
|
||||||
github.com/mailru/easyjson v0.7.7 // indirect
|
github.com/mailru/easyjson v0.9.0 // indirect
|
||||||
github.com/mattn/go-runewidth v0.0.16 // indirect
|
github.com/mattn/go-runewidth v0.0.16 // indirect
|
||||||
github.com/mattn/go-sqlite3 v1.14.24 // indirect
|
github.com/mattn/go-sqlite3 v1.14.27 // indirect
|
||||||
github.com/miekg/pkcs11 v1.1.1 // indirect
|
github.com/miekg/pkcs11 v1.1.1 // indirect
|
||||||
github.com/mistifyio/go-zfs/v3 v3.0.1 // indirect
|
github.com/mistifyio/go-zfs/v3 v3.0.1 // indirect
|
||||||
github.com/mitchellh/mapstructure v1.5.0 // indirect
|
github.com/mitchellh/mapstructure v1.5.0 // indirect
|
||||||
@ -104,33 +105,35 @@ require (
|
|||||||
github.com/secure-systems-lab/go-securesystemslib v0.9.0 // indirect
|
github.com/secure-systems-lab/go-securesystemslib v0.9.0 // indirect
|
||||||
github.com/segmentio/ksuid v1.0.4 // indirect
|
github.com/segmentio/ksuid v1.0.4 // indirect
|
||||||
github.com/shurcooL/sanitized_anchor_name v1.0.0 // indirect
|
github.com/shurcooL/sanitized_anchor_name v1.0.0 // indirect
|
||||||
github.com/sigstore/fulcio v1.6.4 // indirect
|
github.com/sigstore/fulcio v1.6.6 // indirect
|
||||||
github.com/sigstore/rekor v1.3.8 // indirect
|
github.com/sigstore/protobuf-specs v0.4.1 // indirect
|
||||||
github.com/sigstore/sigstore v1.8.12 // indirect
|
github.com/sigstore/rekor v1.3.10 // indirect
|
||||||
|
github.com/sigstore/sigstore v1.9.3 // indirect
|
||||||
github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966 // indirect
|
github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966 // indirect
|
||||||
github.com/smallstep/pkcs7 v0.1.1 // indirect
|
github.com/smallstep/pkcs7 v0.1.1 // indirect
|
||||||
github.com/stefanberger/go-pkcs11uri v0.0.0-20230803200340-78284954bff6 // indirect
|
github.com/stefanberger/go-pkcs11uri v0.0.0-20230803200340-78284954bff6 // indirect
|
||||||
github.com/sylabs/sif/v2 v2.20.2 // indirect
|
github.com/sylabs/sif/v2 v2.21.1 // indirect
|
||||||
github.com/tchap/go-patricia/v2 v2.3.2 // indirect
|
github.com/tchap/go-patricia/v2 v2.3.2 // indirect
|
||||||
github.com/titanous/rocacheck v0.0.0-20171023193734-afe73141d399 // indirect
|
github.com/titanous/rocacheck v0.0.0-20171023193734-afe73141d399 // indirect
|
||||||
github.com/ulikunitz/xz v0.5.12 // indirect
|
github.com/ulikunitz/xz v0.5.12 // indirect
|
||||||
github.com/vbatts/tar-split v0.12.1 // indirect
|
github.com/vbatts/tar-split v0.12.1 // indirect
|
||||||
github.com/vbauerster/mpb/v8 v8.9.1 // indirect
|
github.com/vbauerster/mpb/v8 v8.9.3 // indirect
|
||||||
go.mongodb.org/mongo-driver v1.14.0 // indirect
|
go.mongodb.org/mongo-driver v1.14.0 // indirect
|
||||||
go.opencensus.io v0.24.0 // indirect
|
go.opencensus.io v0.24.0 // indirect
|
||||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 // indirect
|
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
|
||||||
go.opentelemetry.io/otel v1.31.0 // indirect
|
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.59.0 // indirect
|
||||||
go.opentelemetry.io/otel/metric v1.31.0 // indirect
|
go.opentelemetry.io/otel v1.34.0 // indirect
|
||||||
go.opentelemetry.io/otel/trace v1.31.0 // indirect
|
go.opentelemetry.io/otel/metric v1.34.0 // indirect
|
||||||
golang.org/x/crypto v0.36.0 // indirect
|
go.opentelemetry.io/otel/trace v1.34.0 // indirect
|
||||||
golang.org/x/exp v0.0.0-20250103183323-7d7fa50e5329 // indirect
|
golang.org/x/crypto v0.37.0 // indirect
|
||||||
golang.org/x/mod v0.22.0 // indirect
|
golang.org/x/mod v0.23.0 // indirect
|
||||||
golang.org/x/net v0.38.0 // indirect
|
golang.org/x/net v0.38.0 // indirect
|
||||||
golang.org/x/oauth2 v0.25.0 // indirect
|
golang.org/x/oauth2 v0.29.0 // indirect
|
||||||
golang.org/x/sync v0.13.0 // indirect
|
golang.org/x/sync v0.13.0 // indirect
|
||||||
golang.org/x/sys v0.32.0 // indirect
|
golang.org/x/sys v0.32.0 // indirect
|
||||||
golang.org/x/text v0.23.0 // indirect
|
golang.org/x/text v0.24.0 // indirect
|
||||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20250102185135-69823020774d // indirect
|
google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect
|
||||||
google.golang.org/grpc v1.69.4 // indirect
|
google.golang.org/genproto/googleapis/rpc v0.0.0-20250313205543-e70fdf4c4cb4 // indirect
|
||||||
google.golang.org/protobuf v1.36.2 // indirect
|
google.golang.org/grpc v1.71.0 // indirect
|
||||||
|
google.golang.org/protobuf v1.36.6 // indirect
|
||||||
)
|
)
|
||||||
|
200
go.sum
200
go.sum
@ -31,8 +31,8 @@ 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/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
|
||||||
github.com/containerd/cgroups/v3 v3.0.5 h1:44na7Ud+VwyE7LIoJ8JTNQOa549a8543BmzaJHo6Bzo=
|
github.com/containerd/cgroups/v3 v3.0.5 h1:44na7Ud+VwyE7LIoJ8JTNQOa549a8543BmzaJHo6Bzo=
|
||||||
github.com/containerd/cgroups/v3 v3.0.5/go.mod h1:SA5DLYnXO8pTGYiAHXz94qvLQTKfVM5GEVisn4jpins=
|
github.com/containerd/cgroups/v3 v3.0.5/go.mod h1:SA5DLYnXO8pTGYiAHXz94qvLQTKfVM5GEVisn4jpins=
|
||||||
github.com/containerd/errdefs v0.3.0 h1:FSZgGOeK4yuT/+DnF07/Olde/q4KBoMsaamhXxIMDp4=
|
github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI=
|
||||||
github.com/containerd/errdefs v0.3.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M=
|
github.com/containerd/errdefs v1.0.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M=
|
||||||
github.com/containerd/errdefs/pkg v0.3.0 h1:9IKJ06FvyNlexW690DXuQNx2KA2cUJXx151Xdx3ZPPE=
|
github.com/containerd/errdefs/pkg v0.3.0 h1:9IKJ06FvyNlexW690DXuQNx2KA2cUJXx151Xdx3ZPPE=
|
||||||
github.com/containerd/errdefs/pkg v0.3.0/go.mod h1:NJw6s9HwNuRhnjJhM7pylWwMyAkmCQvQ4GpJHEqRLVk=
|
github.com/containerd/errdefs/pkg v0.3.0/go.mod h1:NJw6s9HwNuRhnjJhM7pylWwMyAkmCQvQ4GpJHEqRLVk=
|
||||||
github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I=
|
github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I=
|
||||||
@ -41,21 +41,21 @@ github.com/containerd/stargz-snapshotter/estargz v0.16.3 h1:7evrXtoh1mSbGj/pfRcc
|
|||||||
github.com/containerd/stargz-snapshotter/estargz v0.16.3/go.mod h1:uyr4BfYfOj3G9WBVE8cOlQmXAbPN9VEQpBBeJIuOipU=
|
github.com/containerd/stargz-snapshotter/estargz v0.16.3/go.mod h1:uyr4BfYfOj3G9WBVE8cOlQmXAbPN9VEQpBBeJIuOipU=
|
||||||
github.com/containerd/typeurl/v2 v2.2.3 h1:yNA/94zxWdvYACdYO8zofhrTVuQY73fFU1y++dYSw40=
|
github.com/containerd/typeurl/v2 v2.2.3 h1:yNA/94zxWdvYACdYO8zofhrTVuQY73fFU1y++dYSw40=
|
||||||
github.com/containerd/typeurl/v2 v2.2.3/go.mod h1:95ljDnPfD3bAbDJRugOiShd/DlAAsxGtUBhJxIn7SCk=
|
github.com/containerd/typeurl/v2 v2.2.3/go.mod h1:95ljDnPfD3bAbDJRugOiShd/DlAAsxGtUBhJxIn7SCk=
|
||||||
github.com/containers/common v0.62.3 h1:aOGryqXfW6aKBbHbqOveH7zB+ihavUN03X/2pUSvWFI=
|
github.com/containers/common v0.63.0 h1:ox6vgUYX5TSvt4W+bE36sYBVz/aXMAfRGVAgvknSjBg=
|
||||||
github.com/containers/common v0.62.3/go.mod h1:3R8kDox2prC9uj/a2hmXj/YjZz5sBEUNrcDiw51S0Lo=
|
github.com/containers/common v0.63.0/go.mod h1:+3GCotSqNdIqM3sPs152VvW7m5+Mg8Kk+PExT3G9hZw=
|
||||||
github.com/containers/image/v5 v5.34.3 h1:/cMgfyA4Y7ILH7nzWP/kqpkE5Df35Ek4bp5ZPvJOVmI=
|
github.com/containers/image/v5 v5.35.0 h1:T1OeyWp3GjObt47bchwD9cqiaAm/u4O4R9hIWdrdrP8=
|
||||||
github.com/containers/image/v5 v5.34.3/go.mod h1:MG++slvQSZVq5ejAcLdu4APGsKGMb0YHHnAo7X28fdE=
|
github.com/containers/image/v5 v5.35.0/go.mod h1:8vTsgb+1gKcBL7cnjyNOInhJQfTUQjJoO2WWkKDoebM=
|
||||||
github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01 h1:Qzk5C6cYglewc+UyGf6lc8Mj2UaPTHy/iF2De0/77CA=
|
github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01 h1:Qzk5C6cYglewc+UyGf6lc8Mj2UaPTHy/iF2De0/77CA=
|
||||||
github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01/go.mod h1:9rfv8iPl1ZP7aqh9YA68wnZv2NUDbXdcdPHVz0pFbPY=
|
github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01/go.mod h1:9rfv8iPl1ZP7aqh9YA68wnZv2NUDbXdcdPHVz0pFbPY=
|
||||||
github.com/containers/ocicrypt v1.2.1 h1:0qIOTT9DoYwcKmxSt8QJt+VzMY18onl9jUXsxpVhSmM=
|
github.com/containers/ocicrypt v1.2.1 h1:0qIOTT9DoYwcKmxSt8QJt+VzMY18onl9jUXsxpVhSmM=
|
||||||
github.com/containers/ocicrypt v1.2.1/go.mod h1:aD0AAqfMp0MtwqWgHM1bUwe1anx0VazI108CRrSKINQ=
|
github.com/containers/ocicrypt v1.2.1/go.mod h1:aD0AAqfMp0MtwqWgHM1bUwe1anx0VazI108CRrSKINQ=
|
||||||
github.com/containers/storage v1.58.0 h1:Q7SyyCCjqgT3wYNgRNIL8o/wUS92heIj2/cc8Sewvcc=
|
github.com/containers/storage v1.58.0 h1:Q7SyyCCjqgT3wYNgRNIL8o/wUS92heIj2/cc8Sewvcc=
|
||||||
github.com/containers/storage v1.58.0/go.mod h1:w7Jl6oG+OpeLGLzlLyOZPkmUso40kjpzgrHUk5tyBlo=
|
github.com/containers/storage v1.58.0/go.mod h1:w7Jl6oG+OpeLGLzlLyOZPkmUso40kjpzgrHUk5tyBlo=
|
||||||
github.com/coreos/go-oidc/v3 v3.12.0 h1:sJk+8G2qq94rDI6ehZ71Bol3oUHy63qNYmkiSjrc/Jo=
|
github.com/coreos/go-oidc/v3 v3.13.0 h1:M66zd0pcc5VxvBNM4pB331Wrsanby+QomQYjN8HamW8=
|
||||||
github.com/coreos/go-oidc/v3 v3.12.0/go.mod h1:gE3LgjOgFoHi9a4ce4/tJczr0Ai2/BoDhf0r5lltWI0=
|
github.com/coreos/go-oidc/v3 v3.13.0/go.mod h1:HaZ3szPaZ0e4r6ebqvsLWlk2Tn+aejfmrfah6hnSYEU=
|
||||||
github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
|
github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
|
||||||
github.com/cyberphone/json-canonicalization v0.0.0-20231217050601-ba74d44ecf5f h1:eHnXnuK47UlSTOQexbzxAZfekVz6i+LKRdj1CU5DPaM=
|
github.com/cyberphone/json-canonicalization v0.0.0-20241213102144-19d51d7fe467 h1:uX1JmpONuD549D73r6cgnxyUu18Zb7yHAy5AYU0Pm4Q=
|
||||||
github.com/cyberphone/json-canonicalization v0.0.0-20231217050601-ba74d44ecf5f/go.mod h1:uzvlm1mxhHkdfqitSA92i7Se+S9ksOn3a3qmv/kyOCw=
|
github.com/cyberphone/json-canonicalization v0.0.0-20241213102144-19d51d7fe467/go.mod h1:uzvlm1mxhHkdfqitSA92i7Se+S9ksOn3a3qmv/kyOCw=
|
||||||
github.com/cyphar/filepath-securejoin v0.4.1 h1:JyxxyPEaktOD+GAnqIqTf9A8tHyAG22rowi7HkoSU1s=
|
github.com/cyphar/filepath-securejoin v0.4.1 h1:JyxxyPEaktOD+GAnqIqTf9A8tHyAG22rowi7HkoSU1s=
|
||||||
github.com/cyphar/filepath-securejoin v0.4.1/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI=
|
github.com/cyphar/filepath-securejoin v0.4.1/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI=
|
||||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
@ -64,14 +64,14 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1
|
|||||||
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk=
|
github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk=
|
||||||
github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E=
|
github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E=
|
||||||
github.com/docker/cli v27.5.1+incompatible h1:JB9cieUT9YNiMITtIsguaN55PLOHhBSz3LKVc6cqWaY=
|
github.com/docker/cli v28.0.4+incompatible h1:pBJSJeNd9QeIWPjRcV91RVJihd/TXB77q1ef64XEu4A=
|
||||||
github.com/docker/cli v27.5.1+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
|
github.com/docker/cli v28.0.4+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
|
||||||
github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk=
|
github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk=
|
||||||
github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
|
github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
|
||||||
github.com/docker/docker v27.5.1+incompatible h1:4PYU5dnBYqRQi0294d1FBECqT9ECWeQAIfE8q4YnPY8=
|
github.com/docker/docker v28.0.4+incompatible h1:JNNkBctYKurkw6FrHfKqY0nKIDf5nrbxjVBtS+cdcok=
|
||||||
github.com/docker/docker v27.5.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
|
github.com/docker/docker v28.0.4+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
|
||||||
github.com/docker/docker-credential-helpers v0.8.2 h1:bX3YxiGzFP5sOXWc3bTPEXdEaZSeVMrFgOr3T+zrFAo=
|
github.com/docker/docker-credential-helpers v0.9.3 h1:gAm/VtF9wgqJMoxzT3Gj5p4AqIjCBS4wrsOh9yRqcz8=
|
||||||
github.com/docker/docker-credential-helpers v0.8.2/go.mod h1:P3ci7E3lwkZg6XiHdRKft1KckHiO9a2rNtyFbZ/ry9M=
|
github.com/docker/docker-credential-helpers v0.9.3/go.mod h1:x+4Gbw9aGmChi3qTLZj8Dfn0TD20M/fuWy0E5+WDeCo=
|
||||||
github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c=
|
github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c=
|
||||||
github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc=
|
github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc=
|
||||||
github.com/docker/go-metrics v0.0.1 h1:AgB/0SvBxihN0X8OR4SjsblXkbMvalQ8cjmtKQ2rQV8=
|
github.com/docker/go-metrics v0.0.1 h1:AgB/0SvBxihN0X8OR4SjsblXkbMvalQ8cjmtKQ2rQV8=
|
||||||
@ -89,8 +89,6 @@ github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM=
|
|||||||
github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE=
|
github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE=
|
||||||
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
|
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
|
||||||
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
|
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
|
||||||
github.com/go-jose/go-jose/v3 v3.0.4 h1:Wp5HA7bLQcKnf6YYao/4kpRpVMp/yf6+pJKV8WFSaNY=
|
|
||||||
github.com/go-jose/go-jose/v3 v3.0.4/go.mod h1:5b+7YgP7ZICgJDBdfjZaIt+H/9L9T/YQrVfLAMboGkQ=
|
|
||||||
github.com/go-jose/go-jose/v4 v4.0.5 h1:M6T8+mKZl/+fNNuFHvGIzDz7BTLQPIounk/b9dw3AaE=
|
github.com/go-jose/go-jose/v4 v4.0.5 h1:M6T8+mKZl/+fNNuFHvGIzDz7BTLQPIounk/b9dw3AaE=
|
||||||
github.com/go-jose/go-jose/v4 v4.0.5/go.mod h1:s3P1lRrkT8igV8D9OjyL4WRyHvjB6a4JSllnOrmmBOA=
|
github.com/go-jose/go-jose/v4 v4.0.5/go.mod h1:s3P1lRrkT8igV8D9OjyL4WRyHvjB6a4JSllnOrmmBOA=
|
||||||
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
|
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
|
||||||
@ -100,8 +98,8 @@ github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
|
|||||||
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
|
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
|
||||||
github.com/go-openapi/analysis v0.23.0 h1:aGday7OWupfMs+LbmLZG4k0MYXIANxcuBTYUC03zFCU=
|
github.com/go-openapi/analysis v0.23.0 h1:aGday7OWupfMs+LbmLZG4k0MYXIANxcuBTYUC03zFCU=
|
||||||
github.com/go-openapi/analysis v0.23.0/go.mod h1:9mz9ZWaSlV8TvjQHLl2mUW2PbZtemkE8yA5v22ohupo=
|
github.com/go-openapi/analysis v0.23.0/go.mod h1:9mz9ZWaSlV8TvjQHLl2mUW2PbZtemkE8yA5v22ohupo=
|
||||||
github.com/go-openapi/errors v0.22.0 h1:c4xY/OLxUBSTiepAg3j/MHuAv5mJhnf53LLMWFB+u/w=
|
github.com/go-openapi/errors v0.22.1 h1:kslMRRnK7NCb/CvR1q1VWuEQCEIsBGn5GgKD9e+HYhU=
|
||||||
github.com/go-openapi/errors v0.22.0/go.mod h1:J3DmZScxCDufmIMsdOuDHxJbdOGC0xtUynjIx092vXE=
|
github.com/go-openapi/errors v0.22.1/go.mod h1:+n/5UdIqdVnLIJ6Q9Se8HNGUXYaY6CN8ImWzfi/Gzp0=
|
||||||
github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ=
|
github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ=
|
||||||
github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY=
|
github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY=
|
||||||
github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ=
|
github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ=
|
||||||
@ -114,8 +112,8 @@ github.com/go-openapi/spec v0.21.0 h1:LTVzPc3p/RzRnkQqLRndbAzjY0d0BCL72A6j3CdL9Z
|
|||||||
github.com/go-openapi/spec v0.21.0/go.mod h1:78u6VdPw81XU44qEWGhtr982gJ5BWg2c0I5XwVMotYk=
|
github.com/go-openapi/spec v0.21.0/go.mod h1:78u6VdPw81XU44qEWGhtr982gJ5BWg2c0I5XwVMotYk=
|
||||||
github.com/go-openapi/strfmt v0.23.0 h1:nlUS6BCqcnAk0pyhi9Y+kdDVZdZMHfEKQiS4HaMgO/c=
|
github.com/go-openapi/strfmt v0.23.0 h1:nlUS6BCqcnAk0pyhi9Y+kdDVZdZMHfEKQiS4HaMgO/c=
|
||||||
github.com/go-openapi/strfmt v0.23.0/go.mod h1:NrtIpfKtWIygRkKVsxh7XQMDQW5HKQl6S5ik2elW+K4=
|
github.com/go-openapi/strfmt v0.23.0/go.mod h1:NrtIpfKtWIygRkKVsxh7XQMDQW5HKQl6S5ik2elW+K4=
|
||||||
github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE=
|
github.com/go-openapi/swag v0.23.1 h1:lpsStH0n2ittzTnbaSloVZLuB5+fvSY/+hnagBjSNZU=
|
||||||
github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ=
|
github.com/go-openapi/swag v0.23.1/go.mod h1:STZs8TbRvEQQKUA+JZNAm3EWlgaOBGpyFDqQnDHMef0=
|
||||||
github.com/go-openapi/validate v0.24.0 h1:LdfDKwNbpB6Vn40xhTdNZAnfLECL81w+VX3BumrGD58=
|
github.com/go-openapi/validate v0.24.0 h1:LdfDKwNbpB6Vn40xhTdNZAnfLECL81w+VX3BumrGD58=
|
||||||
github.com/go-openapi/validate v0.24.0/go.mod h1:iyeX1sEufmv3nPbBdX3ieNviWnOZaJ1+zquzJEf2BAQ=
|
github.com/go-openapi/validate v0.24.0/go.mod h1:iyeX1sEufmv3nPbBdX3ieNviWnOZaJ1+zquzJEf2BAQ=
|
||||||
github.com/go-rod/rod v0.116.2 h1:A5t2Ky2A+5eD/ZJQr1EfsQSe5rms5Xof/qj296e+ZqA=
|
github.com/go-rod/rod v0.116.2 h1:A5t2Ky2A+5eD/ZJQr1EfsQSe5rms5Xof/qj296e+ZqA=
|
||||||
@ -149,25 +147,24 @@ github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
|
|||||||
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
|
||||||
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||||
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
|
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
|
||||||
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
|
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
|
||||||
github.com/google/go-containerregistry v0.20.2 h1:B1wPJ1SN/S7pB+ZAimcciVD+r+yV/l/DSArMxlbwseo=
|
github.com/google/go-containerregistry v0.20.3 h1:oNx7IdTI936V8CQRveCjaxOiegWwvM7kqkbXTpyiovI=
|
||||||
github.com/google/go-containerregistry v0.20.2/go.mod h1:z38EKdKh4h7IP2gSfUUqEvalZBqs6AoLeWfUy34nQC8=
|
github.com/google/go-containerregistry v0.20.3/go.mod h1:w00pIgBRDVUDFM6bq+Qx8lwNWK+cxgCuX1vd3PIBDNI=
|
||||||
github.com/google/go-intervals v0.0.2 h1:FGrVEiUnTRKR8yE04qzXYaJMtnIYqobR5QbblK3ixcM=
|
github.com/google/go-intervals v0.0.2 h1:FGrVEiUnTRKR8yE04qzXYaJMtnIYqobR5QbblK3ixcM=
|
||||||
github.com/google/go-intervals v0.0.2/go.mod h1:MkaR3LNRfeKLPmqgJYs4E66z5InYjmCjbbr4TQlcT6Y=
|
github.com/google/go-intervals v0.0.2/go.mod h1:MkaR3LNRfeKLPmqgJYs4E66z5InYjmCjbbr4TQlcT6Y=
|
||||||
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||||
github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad h1:a6HEuzUHeKH6hwfN/ZoQgRgVIWFJljSWa/zetS2WTvg=
|
github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 h1:BHT72Gu3keYf3ZEu2J0b1vyeLSOYI8bm5wbJM/8yDe8=
|
||||||
github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144=
|
github.com/google/pprof v0.0.0-20250403155104-27863c87afa6/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA=
|
||||||
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
||||||
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY=
|
github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY=
|
||||||
github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ=
|
github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ=
|
||||||
github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0 h1:asbCHRVmodnJTuQ3qamDwqVOIjwqUPTYmYuemVOx+Ys=
|
github.com/grpc-ecosystem/grpc-gateway/v2 v2.25.1 h1:VNqngBF40hVlDloBruUehVYC3ArSgIyScOAyMRqBxRg=
|
||||||
github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0/go.mod h1:ggCgvZ2r7uOoQjOyu2Y1NhHmEPPzzuhWgcza5M1Ji1I=
|
github.com/grpc-ecosystem/grpc-gateway/v2 v2.25.1/go.mod h1:RBRO7fro65R6tjKzYgLAFo0t1QEXY1Dp+i/bvpRiqiQ=
|
||||||
github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ=
|
github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ=
|
||||||
github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48=
|
github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48=
|
||||||
github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k=
|
github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k=
|
||||||
@ -198,16 +195,16 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
|||||||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
||||||
github.com/letsencrypt/boulder v0.0.0-20240620165639-de9c06129bec h1:2tTW6cDth2TSgRbAhD7yjZzTQmcN25sDRPEeinR51yQ=
|
github.com/letsencrypt/boulder v0.0.0-20240620165639-de9c06129bec h1:2tTW6cDth2TSgRbAhD7yjZzTQmcN25sDRPEeinR51yQ=
|
||||||
github.com/letsencrypt/boulder v0.0.0-20240620165639-de9c06129bec/go.mod h1:TmwEoGCwIti7BCeJ9hescZgRtatxRE+A72pCoPfmcfk=
|
github.com/letsencrypt/boulder v0.0.0-20240620165639-de9c06129bec/go.mod h1:TmwEoGCwIti7BCeJ9hescZgRtatxRE+A72pCoPfmcfk=
|
||||||
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
|
github.com/mailru/easyjson v0.9.0 h1:PrnmzHw7262yW8sTBwxi1PdJA3Iw/EKBa8psRf7d9a4=
|
||||||
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
|
github.com/mailru/easyjson v0.9.0/go.mod h1:1+xMtQp2MRNVL/V1bOzuP3aP8VNwRW55fQUto+XFtTU=
|
||||||
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
|
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-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
|
||||||
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
|
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
|
||||||
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
||||||
github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc=
|
github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc=
|
||||||
github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
|
github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
|
||||||
github.com/mattn/go-sqlite3 v1.14.24 h1:tpSp2G2KyMnnQu99ngJ47EIkWVmliIizyZBfPrBWDRM=
|
github.com/mattn/go-sqlite3 v1.14.27 h1:drZCnuvf37yPfs95E5jd9s3XhdVWLal+6BOK6qrv6IU=
|
||||||
github.com/mattn/go-sqlite3 v1.14.24/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
|
github.com/mattn/go-sqlite3 v1.14.27/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
|
||||||
github.com/miekg/pkcs11 v1.1.1 h1:Ugu9pdy6vAYku5DEpVWVFPYnzV+bxB+iRdbuFSu7TvU=
|
github.com/miekg/pkcs11 v1.1.1 h1:Ugu9pdy6vAYku5DEpVWVFPYnzV+bxB+iRdbuFSu7TvU=
|
||||||
github.com/miekg/pkcs11 v1.1.1/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs=
|
github.com/miekg/pkcs11 v1.1.1/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs=
|
||||||
github.com/mistifyio/go-zfs/v3 v3.0.1 h1:YaoXgBePoMA12+S1u/ddkv+QqxcfiZK4prI6HPnkFiU=
|
github.com/mistifyio/go-zfs/v3 v3.0.1 h1:YaoXgBePoMA12+S1u/ddkv+QqxcfiZK4prI6HPnkFiU=
|
||||||
@ -222,8 +219,8 @@ github.com/moby/sys/mountinfo v0.7.2 h1:1shs6aH5s4o5H2zQLn796ADW1wMrIwHsyJ2v9Kou
|
|||||||
github.com/moby/sys/mountinfo v0.7.2/go.mod h1:1YOa8w8Ih7uW0wALDUgT1dTTSBrZ+HiBLGws92L2RU4=
|
github.com/moby/sys/mountinfo v0.7.2/go.mod h1:1YOa8w8Ih7uW0wALDUgT1dTTSBrZ+HiBLGws92L2RU4=
|
||||||
github.com/moby/sys/user v0.4.0 h1:jhcMKit7SA80hivmFJcbB1vqmw//wU61Zdui2eQXuMs=
|
github.com/moby/sys/user v0.4.0 h1:jhcMKit7SA80hivmFJcbB1vqmw//wU61Zdui2eQXuMs=
|
||||||
github.com/moby/sys/user v0.4.0/go.mod h1:bG+tYYYJgaMtRKgEmuueC0hJEAZWwtIbZTB+85uoHjs=
|
github.com/moby/sys/user v0.4.0/go.mod h1:bG+tYYYJgaMtRKgEmuueC0hJEAZWwtIbZTB+85uoHjs=
|
||||||
github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0=
|
github.com/moby/term v0.5.2 h1:6qk3FJAFDs6i/q3W/pQ97SX192qKfZgGjCQqfCJkgzQ=
|
||||||
github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
|
github.com/moby/term v0.5.2/go.mod h1:d3djjFCrjnB+fl8NJux+EJzu0msscUP+f8it8hPkFLc=
|
||||||
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
|
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
|
||||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||||
@ -235,10 +232,10 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq
|
|||||||
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
|
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
|
||||||
github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4=
|
github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4=
|
||||||
github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
|
github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
|
||||||
github.com/onsi/ginkgo/v2 v2.22.2 h1:/3X8Panh8/WwhU/3Ssa6rCKqPLuAkVY2I0RoyDLySlU=
|
github.com/onsi/ginkgo/v2 v2.23.4 h1:ktYTpKJAVZnDT4VjxSbiBenUjmlL/5QkBEocaWXiQus=
|
||||||
github.com/onsi/ginkgo/v2 v2.22.2/go.mod h1:oeMosUL+8LtarXBHu/c0bx2D/K9zyQ6uX3cTyztHwsk=
|
github.com/onsi/ginkgo/v2 v2.23.4/go.mod h1:Bt66ApGPBFzHyR+JO10Zbt0Gsp4uWxu5mIOTusL46e8=
|
||||||
github.com/onsi/gomega v1.36.2 h1:koNYke6TVk6ZmnyHrCXba/T/MoLBXFjeC1PtvYgw0A8=
|
github.com/onsi/gomega v1.37.0 h1:CdEG8g0S133B4OswTDC/5XPSzE1OeP29QOioj2PID2Y=
|
||||||
github.com/onsi/gomega v1.36.2/go.mod h1:DdwyADRjrc825LhMEkD76cHR5+pUnjhUN8GlHlRPHzY=
|
github.com/onsi/gomega v1.37.0/go.mod h1:8D9+Txp43QWKhM24yyOBEdpkzN8FvJyAwecBgsU4KU0=
|
||||||
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
|
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
|
||||||
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
|
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
|
||||||
github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040=
|
github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040=
|
||||||
@ -260,25 +257,27 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRI
|
|||||||
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
github.com/proglottis/gpgme v0.1.4 h1:3nE7YNA70o2aLjcg63tXMOhPD7bplfE5CBdV+hLAm2M=
|
github.com/proglottis/gpgme v0.1.4 h1:3nE7YNA70o2aLjcg63tXMOhPD7bplfE5CBdV+hLAm2M=
|
||||||
github.com/proglottis/gpgme v0.1.4/go.mod h1:5LoXMgpE4bttgwwdv9bLs/vwqv3qV7F4glEEZ7mRKrM=
|
github.com/proglottis/gpgme v0.1.4/go.mod h1:5LoXMgpE4bttgwwdv9bLs/vwqv3qV7F4glEEZ7mRKrM=
|
||||||
github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y=
|
github.com/prometheus/client_golang v1.21.1 h1:DOvXXTqVzvkIewV/CDPFdejpMCGeMcbGCQ8YOmu+Ibk=
|
||||||
github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE=
|
github.com/prometheus/client_golang v1.21.1/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg=
|
||||||
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
||||||
github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E=
|
github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E=
|
||||||
github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY=
|
github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY=
|
||||||
github.com/prometheus/common v0.57.0 h1:Ro/rKjwdq9mZn1K5QPctzh+MA4Lp0BuYk5ZZEVhoNcY=
|
github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io=
|
||||||
github.com/prometheus/common v0.57.0/go.mod h1:7uRPFSUTbfZWsJ7MHY56sqt7hLQu3bxXHDnNhl8E9qI=
|
github.com/prometheus/common v0.62.0/go.mod h1:vyBcEuLSvWos9B1+CyL7JZ2up+uFzXhkqml0W5zIY1I=
|
||||||
github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc=
|
github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc=
|
||||||
github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk=
|
github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk=
|
||||||
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
|
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
|
||||||
github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
|
github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
|
||||||
github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
|
github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
|
||||||
github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
|
github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII=
|
||||||
github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
|
github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o=
|
||||||
github.com/russross/blackfriday v2.0.0+incompatible h1:cBXrhZNUf9C+La9/YpS+UHpUT8YD6Td9ZMSU9APFcsk=
|
github.com/russross/blackfriday v2.0.0+incompatible h1:cBXrhZNUf9C+La9/YpS+UHpUT8YD6Td9ZMSU9APFcsk=
|
||||||
github.com/russross/blackfriday v2.0.0+incompatible/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
|
github.com/russross/blackfriday v2.0.0+incompatible/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
|
||||||
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
||||||
github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 h1:lZUw3E0/J3roVtGQ+SCrUrg3ON6NgVqpn3+iol9aGu4=
|
github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 h1:lZUw3E0/J3roVtGQ+SCrUrg3ON6NgVqpn3+iol9aGu4=
|
||||||
github.com/santhosh-tekuri/jsonschema/v5 v5.3.1/go.mod h1:uToXkOrWAZ6/Oc07xWQrPOhJotwFIyu2bBVN41fcDUY=
|
github.com/santhosh-tekuri/jsonschema/v5 v5.3.1/go.mod h1:uToXkOrWAZ6/Oc07xWQrPOhJotwFIyu2bBVN41fcDUY=
|
||||||
|
github.com/santhosh-tekuri/jsonschema/v6 v6.0.1 h1:PKK9DyHxif4LZo+uQSgXNqs0jj5+xZwwfKHgph2lxBw=
|
||||||
|
github.com/santhosh-tekuri/jsonschema/v6 v6.0.1/go.mod h1:JXeL+ps8p7/KNMjDQk3TCwPpBy0wYklyWTfbkIzdIFU=
|
||||||
github.com/sebdah/goldie/v2 v2.5.5 h1:rx1mwF95RxZ3/83sdS4Yp7t2C5TCokvWP4TBRbAyEWY=
|
github.com/sebdah/goldie/v2 v2.5.5 h1:rx1mwF95RxZ3/83sdS4Yp7t2C5TCokvWP4TBRbAyEWY=
|
||||||
github.com/sebdah/goldie/v2 v2.5.5/go.mod h1:oZ9fp0+se1eapSRjfYbsV/0Hqhbuu3bJVvKI/NNtssI=
|
github.com/sebdah/goldie/v2 v2.5.5/go.mod h1:oZ9fp0+se1eapSRjfYbsV/0Hqhbuu3bJVvKI/NNtssI=
|
||||||
github.com/secure-systems-lab/go-securesystemslib v0.9.0 h1:rf1HIbL64nUpEIZnjLZ3mcNEL9NBPB0iuVjyxvq3LZc=
|
github.com/secure-systems-lab/go-securesystemslib v0.9.0 h1:rf1HIbL64nUpEIZnjLZ3mcNEL9NBPB0iuVjyxvq3LZc=
|
||||||
@ -289,12 +288,14 @@ github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8=
|
|||||||
github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I=
|
github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I=
|
||||||
github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo=
|
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/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
|
||||||
github.com/sigstore/fulcio v1.6.4 h1:d86obfxUAG3Y6CYwOx1pdwCZwKmROB6w6927pKOVIRY=
|
github.com/sigstore/fulcio v1.6.6 h1:XaMYX6TNT+8n7Npe8D94nyZ7/ERjEsNGFC+REdi/wzw=
|
||||||
github.com/sigstore/fulcio v1.6.4/go.mod h1:Y6bn3i3KGhXpaHsAtYP3Z4Np0+VzCo1fLv8Ci6mbPDs=
|
github.com/sigstore/fulcio v1.6.6/go.mod h1:BhQ22lwaebDgIxVBEYOOqLRcN5+xOV+C9bh/GUXRhOk=
|
||||||
github.com/sigstore/rekor v1.3.8 h1:B8kJI8mpSIXova4Jxa6vXdJyysRxFGsEsLKBDl0rRjA=
|
github.com/sigstore/protobuf-specs v0.4.1 h1:5SsMqZbdkcO/DNHudaxuCUEjj6x29tS2Xby1BxGU7Zc=
|
||||||
github.com/sigstore/rekor v1.3.8/go.mod h1:/dHFYKSuxEygfDRnEwyJ+ZD6qoVYNXQdi1mJrKvKWsI=
|
github.com/sigstore/protobuf-specs v0.4.1/go.mod h1:+gXR+38nIa2oEupqDdzg4qSBT0Os+sP7oYv6alWewWc=
|
||||||
github.com/sigstore/sigstore v1.8.12 h1:S8xMVZbE2z9ZBuQUEG737pxdLjnbOIcFi5v9UFfkJFc=
|
github.com/sigstore/rekor v1.3.10 h1:/mSvRo4MZ/59ECIlARhyykAlQlkmeAQpvBPlmJtZOCU=
|
||||||
github.com/sigstore/sigstore v1.8.12/go.mod h1:+PYQAa8rfw0QdPpBcT+Gl3egKD9c+TUgAlF12H3Nmjo=
|
github.com/sigstore/rekor v1.3.10/go.mod h1:JvryKJ40O0XA48MdzYUPu0y4fyvqt0C4iSY7ri9iu3A=
|
||||||
|
github.com/sigstore/sigstore v1.9.3 h1:y2qlTj+vh+Or3ictKuR3JUFawZPdDxAjrWkeFhon0OQ=
|
||||||
|
github.com/sigstore/sigstore v1.9.3/go.mod h1:VwYkiw0G0dRtwL25KSs04hCyVFF6CYMd/qvNeYrl7EQ=
|
||||||
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
|
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
|
||||||
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
|
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
|
||||||
github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966 h1:JIAuq3EEf9cgbU6AtGPK4CTG3Zf6CKMNqf0MHTggAUA=
|
github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966 h1:JIAuq3EEf9cgbU6AtGPK4CTG3Zf6CKMNqf0MHTggAUA=
|
||||||
@ -317,8 +318,8 @@ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO
|
|||||||
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
||||||
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
|
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
|
||||||
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
||||||
github.com/sylabs/sif/v2 v2.20.2 h1:HGEPzauCHhIosw5o6xmT3jczuKEuaFzSfdjAsH33vYw=
|
github.com/sylabs/sif/v2 v2.21.1 h1:GZ0b5//AFAqJEChd8wHV/uSKx/l1iuGYwjR8nx+4wPI=
|
||||||
github.com/sylabs/sif/v2 v2.20.2/go.mod h1:WyYryGRaR4Wp21SAymm5pK0p45qzZCSRiZMFvUZiuhc=
|
github.com/sylabs/sif/v2 v2.21.1/go.mod h1:YoqEGQnb5x/ItV653bawXHZJOXQaEWpGwHsSD3YePJI=
|
||||||
github.com/tchap/go-patricia/v2 v2.3.2 h1:xTHFutuitO2zqKAQ5rCROYgUb7Or/+IC3fts9/Yc7nM=
|
github.com/tchap/go-patricia/v2 v2.3.2 h1:xTHFutuitO2zqKAQ5rCROYgUb7Or/+IC3fts9/Yc7nM=
|
||||||
github.com/tchap/go-patricia/v2 v2.3.2/go.mod h1:VZRHKAb53DLaG+nA9EaYYiaEx6YztwDlLElMsnSHD4k=
|
github.com/tchap/go-patricia/v2 v2.3.2/go.mod h1:VZRHKAb53DLaG+nA9EaYYiaEx6YztwDlLElMsnSHD4k=
|
||||||
github.com/titanous/rocacheck v0.0.0-20171023193734-afe73141d399 h1:e/5i7d4oYZ+C1wj2THlRK+oAhjeS/TRQwMfkIuet3w0=
|
github.com/titanous/rocacheck v0.0.0-20171023193734-afe73141d399 h1:e/5i7d4oYZ+C1wj2THlRK+oAhjeS/TRQwMfkIuet3w0=
|
||||||
@ -328,14 +329,8 @@ github.com/ulikunitz/xz v0.5.12 h1:37Nm15o69RwBkXM0J6A5OlE67RZTfzUxTj8fB3dfcsc=
|
|||||||
github.com/ulikunitz/xz v0.5.12/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
|
github.com/ulikunitz/xz v0.5.12/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
|
||||||
github.com/vbatts/tar-split v0.12.1 h1:CqKoORW7BUWBe7UL/iqTVvkTBOF8UvOMKOIZykxnnbo=
|
github.com/vbatts/tar-split v0.12.1 h1:CqKoORW7BUWBe7UL/iqTVvkTBOF8UvOMKOIZykxnnbo=
|
||||||
github.com/vbatts/tar-split v0.12.1/go.mod h1:eF6B6i6ftWQcDqEn3/iGFRFRo8cBIMSJVOpnNdfTMFA=
|
github.com/vbatts/tar-split v0.12.1/go.mod h1:eF6B6i6ftWQcDqEn3/iGFRFRo8cBIMSJVOpnNdfTMFA=
|
||||||
github.com/vbauerster/mpb/v8 v8.9.1 h1:LH5R3lXPfE2e3lIGxN7WNWv3Hl5nWO6LRi2B0L0ERHw=
|
github.com/vbauerster/mpb/v8 v8.9.3 h1:PnMeF+sMvYv9u23l6DO6Q3+Mdj408mjLRXIzmUmU2Z8=
|
||||||
github.com/vbauerster/mpb/v8 v8.9.1/go.mod h1:4XMvznPh8nfe2NpnDo1QTPvW9MVkUhbG90mPWvmOzcQ=
|
github.com/vbauerster/mpb/v8 v8.9.3/go.mod h1:hxS8Hz4C6ijnppDSIX6LjG8FYJSoPo9iIOcE53Zik0c=
|
||||||
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo=
|
|
||||||
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU=
|
|
||||||
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0=
|
|
||||||
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ=
|
|
||||||
github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74=
|
|
||||||
github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y=
|
|
||||||
github.com/ysmood/fetchup v0.2.3 h1:ulX+SonA0Vma5zUFXtv52Kzip/xe7aj4vqT5AJwQ+ZQ=
|
github.com/ysmood/fetchup v0.2.3 h1:ulX+SonA0Vma5zUFXtv52Kzip/xe7aj4vqT5AJwQ+ZQ=
|
||||||
github.com/ysmood/fetchup v0.2.3/go.mod h1:xhibcRKziSvol0H1/pj33dnKrYyI2ebIvz5cOOkYGns=
|
github.com/ysmood/fetchup v0.2.3/go.mod h1:xhibcRKziSvol0H1/pj33dnKrYyI2ebIvz5cOOkYGns=
|
||||||
github.com/ysmood/goob v0.4.0 h1:HsxXhyLBeGzWXnqVKtmT9qM7EuVs/XOgkX7T6r1o1AQ=
|
github.com/ysmood/goob v0.4.0 h1:HsxXhyLBeGzWXnqVKtmT9qM7EuVs/XOgkX7T6r1o1AQ=
|
||||||
@ -353,24 +348,28 @@ go.mongodb.org/mongo-driver v1.14.0 h1:P98w8egYRjYe3XDjxhYJagTokP/H6HzlsnojRgZRd
|
|||||||
go.mongodb.org/mongo-driver v1.14.0/go.mod h1:Vzb0Mk/pa7e6cWw85R4F/endUC3u0U9jGcNU603k65c=
|
go.mongodb.org/mongo-driver v1.14.0/go.mod h1:Vzb0Mk/pa7e6cWw85R4F/endUC3u0U9jGcNU603k65c=
|
||||||
go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
|
go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
|
||||||
go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
|
go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
|
||||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 h1:TT4fX+nBOA/+LUkobKGW1ydGcn+G3vRw9+g5HwCphpk=
|
go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA=
|
||||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0/go.mod h1:L7UH0GbB0p47T4Rri3uHjbpCFYrVrwc1I25QhNPiGK8=
|
go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A=
|
||||||
go.opentelemetry.io/otel v1.31.0 h1:NsJcKPIW0D0H3NgzPDHmo0WW6SptzPdqg/L1zsIm2hY=
|
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.59.0 h1:CV7UdSGJt/Ao6Gp4CXckLxVRRsRgDHoI8XjbL3PDl8s=
|
||||||
go.opentelemetry.io/otel v1.31.0/go.mod h1:O0C14Yl9FgkjqcCZAsE053C13OaddMYr/hz6clDkEJE=
|
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.59.0/go.mod h1:FRmFuRJfag1IZ2dPkHnEoSFVgTVPUd2qf5Vi69hLb8I=
|
||||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.27.0 h1:R9DE4kQ4k+YtfLI2ULwX82VtNQ2J8yZmA7ZIF/D+7Mc=
|
go.opentelemetry.io/otel v1.34.0 h1:zRLXxLCgL1WyKsPVrgbSdMN4c0FMkDAskSTQP+0hdUY=
|
||||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.27.0/go.mod h1:OQFyQVrDlbe+R7xrEyDr/2Wr67Ol0hRUgsfA+V5A95s=
|
go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI=
|
||||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.28.0 h1:j9+03ymgYhPKmeXGk5Zu+cIZOlVzd9Zv7QIiyItjFBU=
|
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.33.0 h1:Vh5HayB/0HHfOQA7Ctx69E/Y/DcQSMPpKANYVMQ7fBA=
|
||||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.28.0/go.mod h1:Y5+XiUG4Emn1hTfciPzGPJaSI+RpDts6BnCIir0SLqk=
|
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.33.0/go.mod h1:cpgtDBaqD/6ok/UG0jT15/uKjAY8mRA53diogHBg3UI=
|
||||||
go.opentelemetry.io/otel/metric v1.31.0 h1:FSErL0ATQAmYHUIzSezZibnyVlft1ybhy4ozRPcF2fE=
|
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.33.0 h1:wpMfgF8E1rkrT1Z6meFh1NDtownE9Ii3n3X2GJYjsaU=
|
||||||
go.opentelemetry.io/otel/metric v1.31.0/go.mod h1:C3dEloVbLuYoX41KpmAhOqNriGbA+qqH6PQ5E5mUfnY=
|
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.33.0/go.mod h1:wAy0T/dUbs468uOlkT31xjvqQgEVXv58BRFWEgn5v/0=
|
||||||
go.opentelemetry.io/otel/sdk v1.31.0 h1:xLY3abVHYZ5HSfOg3l2E5LUj2Cwva5Y7yGxnSW9H5Gk=
|
go.opentelemetry.io/otel/metric v1.34.0 h1:+eTR3U0MyfWjRDhmFMxe2SsW64QrZ84AOhvqS7Y+PoQ=
|
||||||
go.opentelemetry.io/otel/sdk v1.31.0/go.mod h1:TfRbMdhvxIIr/B2N2LQW2S5v9m3gOQ/08KsbbO5BPT0=
|
go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE=
|
||||||
go.opentelemetry.io/otel/sdk/metric v1.31.0 h1:i9hxxLJF/9kkvfHppyLL55aW7iIJz4JjxTeYusH7zMc=
|
go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A=
|
||||||
go.opentelemetry.io/otel/sdk/metric v1.31.0/go.mod h1:CRInTMVvNhUKgSAMbKyTMxqOBC0zgyxzW55lZzX43Y8=
|
go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU=
|
||||||
go.opentelemetry.io/otel/trace v1.31.0 h1:ffjsj1aRouKewfr85U2aGagJ46+MvodynlQ1HYdmJys=
|
go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk=
|
||||||
go.opentelemetry.io/otel/trace v1.31.0/go.mod h1:TXZkRk7SM2ZQLtR6eoAWQFIHPvzQ06FJAsO1tJg480A=
|
go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w=
|
||||||
go.opentelemetry.io/proto/otlp v1.2.0 h1:pVeZGk7nXDC9O2hncA6nHldxEjm6LByfA2aN8IOkz94=
|
go.opentelemetry.io/otel/trace v1.34.0 h1:+ouXS2V8Rd4hp4580a8q23bg0azF2nI8cqLYnC8mh/k=
|
||||||
go.opentelemetry.io/proto/otlp v1.2.0/go.mod h1:gGpR8txAl5M03pDhMC79G6SdqNV26naRm/KDsgaHD8A=
|
go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE=
|
||||||
|
go.opentelemetry.io/proto/otlp v1.4.0 h1:TA9WRvW6zMwP+Ssb6fLoUIuirti1gGbP28GcKG1jgeg=
|
||||||
|
go.opentelemetry.io/proto/otlp v1.4.0/go.mod h1:PPBWZIP98o2ElSqI35IHfu7hIhSwvc5N38Jw8pXuGFY=
|
||||||
|
go.uber.org/automaxprocs v1.6.0 h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs=
|
||||||
|
go.uber.org/automaxprocs v1.6.0/go.mod h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwEFJ8r8=
|
||||||
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
|
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
|
||||||
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
|
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
|
||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||||
@ -381,11 +380,9 @@ golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliY
|
|||||||
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
|
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
|
||||||
golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
|
golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
|
||||||
golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
|
golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
|
||||||
golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34=
|
golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE=
|
||||||
golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc=
|
golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc=
|
||||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||||
golang.org/x/exp v0.0.0-20250103183323-7d7fa50e5329 h1:9kj3STMvgqy3YA4VQXBrN7925ICMxD5wzMRcgA30588=
|
|
||||||
golang.org/x/exp v0.0.0-20250103183323-7d7fa50e5329/go.mod h1:qj5a5QZpwLU2NLQudwIN5koi3beDhSAlJwa67PuM98c=
|
|
||||||
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||||
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
|
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
|
||||||
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
||||||
@ -396,8 +393,8 @@ golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
|||||||
golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
||||||
golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
|
golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
|
||||||
golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
|
golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
|
||||||
golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4=
|
golang.org/x/mod v0.23.0 h1:Zb7khfcRGKk+kqfxFaP5tZqCnDZMjC5VtUBs87Hr6QM=
|
||||||
golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY=
|
golang.org/x/mod v0.23.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY=
|
||||||
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
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-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
@ -417,8 +414,8 @@ golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
|
|||||||
golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8=
|
golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8=
|
||||||
golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
|
golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
|
||||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||||
golang.org/x/oauth2 v0.25.0 h1:CY4y7XT9v0cRI9oupztF8AgiIu99L/ksR/Xp/6jrZ70=
|
golang.org/x/oauth2 v0.29.0 h1:WdYw2tdTK1S8olAzWHdgeqfy+Mtm9XNhv/xJsY65d98=
|
||||||
golang.org/x/oauth2 v0.25.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
|
golang.org/x/oauth2 v0.29.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8=
|
||||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
@ -469,10 +466,10 @@ golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
|
|||||||
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
||||||
golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
||||||
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
|
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
|
||||||
golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY=
|
golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0=
|
||||||
golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4=
|
golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU=
|
||||||
golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY=
|
golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0=
|
||||||
golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
|
golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg=
|
||||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
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-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
|
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
|
||||||
@ -485,8 +482,8 @@ 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.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
|
||||||
golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58=
|
golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58=
|
||||||
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
|
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
|
||||||
golang.org/x/tools v0.28.0 h1:WuB6qZ4RPCQo5aP3WdKZS7i595EdWqWR8vqJTlwTVK8=
|
golang.org/x/tools v0.31.0 h1:0EedkvKDbh+qistFTd0Bcwe/YLh4vHwWEkiI0toFIBU=
|
||||||
golang.org/x/tools v0.28.0/go.mod h1:dcIOrVd3mfQKTgrDVQHqCPMWy6lnhfhtX3hLXYVLfRw=
|
golang.org/x/tools v0.31.0/go.mod h1:naFTU+Cev749tSJRXJlna0T3WxKvb1kWEx15xA4SdmQ=
|
||||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
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-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
@ -496,18 +493,17 @@ google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7
|
|||||||
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
||||||
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
|
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
|
||||||
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
|
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
|
||||||
google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 h1:ToEetK57OidYuqD4Q5w+vfEnPvPpuTwedCNVohYJfNk=
|
google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb h1:p31xT4yrYrSM/G4Sn2+TNUkVhFCbG9y8itM2S6Th950=
|
||||||
google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576 h1:CkkIfIt50+lT6NHAVoRYEyAvQGFM7xEwXUUywFvEb3Q=
|
google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:jbe3Bkdp+Dh2IrslsFCklNhweNTBgSYanP1UXhJDhKg=
|
||||||
google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576/go.mod h1:1R3kvZ1dtP3+4p4d3G8uJ8rFk/fWlScl38vanWACI08=
|
google.golang.org/genproto/googleapis/rpc v0.0.0-20250313205543-e70fdf4c4cb4 h1:iK2jbkWL86DXjEx0qiHcRE9dE4/Ahua5k6V8OWFb//c=
|
||||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20250102185135-69823020774d h1:xJJRGY7TJcvIlpSrN3K6LAWgNFUILlO+OMAqtg9aqnw=
|
google.golang.org/genproto/googleapis/rpc v0.0.0-20250313205543-e70fdf4c4cb4/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I=
|
||||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20250102185135-69823020774d/go.mod h1:3ENsm/5D1mzDyhpzeRi1NR784I0BcofWBoSc5QqqMK4=
|
|
||||||
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
||||||
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
|
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
|
||||||
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
|
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
|
||||||
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
||||||
google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
|
google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
|
||||||
google.golang.org/grpc v1.69.4 h1:MF5TftSMkd8GLw/m0KM6V8CMOCY6NZ1NQDPGFgbTt4A=
|
google.golang.org/grpc v1.71.0 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg=
|
||||||
google.golang.org/grpc v1.69.4/go.mod h1:vyjdE6jLBI76dgpDojsFGNaHlxdjXN9ghpnd2o7JGZ4=
|
google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec=
|
||||||
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
|
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-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
|
||||||
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
|
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
|
||||||
@ -517,8 +513,8 @@ google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2
|
|||||||
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||||
google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||||
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
|
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
|
||||||
google.golang.org/protobuf v1.36.2 h1:R8FeyR1/eLmkutZOM5CWghmo5itiG9z0ktFlTVLuTmU=
|
google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY=
|
||||||
google.golang.org/protobuf v1.36.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
|
google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
|
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
|
||||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
|
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
|
||||||
|
4
vendor/github.com/containers/common/pkg/auth/auth.go
generated
vendored
4
vendor/github.com/containers/common/pkg/auth/auth.go
generated
vendored
@ -173,10 +173,10 @@ func Login(ctx context.Context, systemContext *types.SystemContext, opts *LoginO
|
|||||||
if opts.StdinPassword {
|
if opts.StdinPassword {
|
||||||
var stdinPasswordStrBuilder strings.Builder
|
var stdinPasswordStrBuilder strings.Builder
|
||||||
if opts.Password != "" {
|
if opts.Password != "" {
|
||||||
return errors.New("Can't specify both --password-stdin and --password")
|
return errors.New("can't specify both --password-stdin and --password")
|
||||||
}
|
}
|
||||||
if opts.Username == "" {
|
if opts.Username == "" {
|
||||||
return errors.New("Must provide --username with --password-stdin")
|
return errors.New("must provide --username with --password-stdin")
|
||||||
}
|
}
|
||||||
scanner := bufio.NewScanner(opts.Stdin)
|
scanner := bufio.NewScanner(opts.Stdin)
|
||||||
for scanner.Scan() {
|
for scanner.Scan() {
|
||||||
|
11
vendor/github.com/containers/common/pkg/retry/retry.go
generated
vendored
11
vendor/github.com/containers/common/pkg/retry/retry.go
generated
vendored
@ -5,10 +5,12 @@ import (
|
|||||||
"io"
|
"io"
|
||||||
"math"
|
"math"
|
||||||
"net"
|
"net"
|
||||||
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
"syscall"
|
"syscall"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/containers/image/v5/docker"
|
||||||
"github.com/docker/distribution/registry/api/errcode"
|
"github.com/docker/distribution/registry/api/errcode"
|
||||||
errcodev2 "github.com/docker/distribution/registry/api/v2"
|
errcodev2 "github.com/docker/distribution/registry/api/v2"
|
||||||
"github.com/hashicorp/go-multierror"
|
"github.com/hashicorp/go-multierror"
|
||||||
@ -47,7 +49,7 @@ func IfNecessary(ctx context.Context, operation func() error, options *Options)
|
|||||||
logrus.Warnf("Failed, retrying in %s ... (%d/%d). Error: %v", delay, attempt+1, options.MaxRetry, err)
|
logrus.Warnf("Failed, retrying in %s ... (%d/%d). Error: %v", delay, attempt+1, options.MaxRetry, err)
|
||||||
select {
|
select {
|
||||||
case <-time.After(delay):
|
case <-time.After(delay):
|
||||||
break
|
// Do nothing.
|
||||||
case <-ctx.Done():
|
case <-ctx.Done():
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -81,6 +83,13 @@ func IsErrorRetryable(err error) bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
|
case docker.UnexpectedHTTPStatusError:
|
||||||
|
// Retry on 502, 502 and 503 http server errors, they appear to be quite common in the field.
|
||||||
|
// https://github.com/containers/common/issues/2299
|
||||||
|
if e.StatusCode >= http.StatusBadGateway && e.StatusCode <= http.StatusGatewayTimeout {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return false
|
||||||
case *net.OpError:
|
case *net.OpError:
|
||||||
return IsErrorRetryable(e.Err)
|
return IsErrorRetryable(e.Err)
|
||||||
case *url.Error: // This includes errors returned by the net/http client.
|
case *url.Error: // This includes errors returned by the net/http client.
|
||||||
|
8
vendor/github.com/containers/image/v5/copy/copy.go
generated
vendored
8
vendor/github.com/containers/image/v5/copy/copy.go
generated
vendored
@ -148,6 +148,13 @@ type Options struct {
|
|||||||
// so that storage.ResolveReference returns exactly the created image.
|
// so that storage.ResolveReference returns exactly the created image.
|
||||||
// WARNING: It is unspecified whether the reference also contains a reference.Named element.
|
// WARNING: It is unspecified whether the reference also contains a reference.Named element.
|
||||||
ReportResolvedReference *types.ImageReference
|
ReportResolvedReference *types.ImageReference
|
||||||
|
|
||||||
|
// DestinationTimestamp, if set, will force timestamps of content created in the destination to this value.
|
||||||
|
// Most transports don't support this.
|
||||||
|
//
|
||||||
|
// In oci-archive: destinations, this will set the create/mod/access timestamps in each tar entry
|
||||||
|
// (but not a timestamp of the created archive file).
|
||||||
|
DestinationTimestamp *time.Time
|
||||||
}
|
}
|
||||||
|
|
||||||
// OptionCompressionVariant allows to supply information about
|
// OptionCompressionVariant allows to supply information about
|
||||||
@ -354,6 +361,7 @@ func Image(ctx context.Context, policyContext *signature.PolicyContext, destRef,
|
|||||||
if err := c.dest.CommitWithOptions(ctx, private.CommitOptions{
|
if err := c.dest.CommitWithOptions(ctx, private.CommitOptions{
|
||||||
UnparsedToplevel: c.unparsedToplevel,
|
UnparsedToplevel: c.unparsedToplevel,
|
||||||
ReportResolvedReference: options.ReportResolvedReference,
|
ReportResolvedReference: options.ReportResolvedReference,
|
||||||
|
Timestamp: options.DestinationTimestamp,
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
return nil, fmt.Errorf("committing the finished image: %w", err)
|
return nil, fmt.Errorf("committing the finished image: %w", err)
|
||||||
}
|
}
|
||||||
|
2
vendor/github.com/containers/image/v5/copy/multiple.go
generated
vendored
2
vendor/github.com/containers/image/v5/copy/multiple.go
generated
vendored
@ -83,7 +83,7 @@ func platformCompressionMap(list internalManifest.List, instanceDigests []digest
|
|||||||
platformSet = set.New[string]()
|
platformSet = set.New[string]()
|
||||||
res[platform] = platformSet
|
res[platform] = platformSet
|
||||||
}
|
}
|
||||||
platformSet.AddSlice(instanceDetails.ReadOnly.CompressionAlgorithmNames)
|
platformSet.AddSeq(slices.Values(instanceDetails.ReadOnly.CompressionAlgorithmNames))
|
||||||
}
|
}
|
||||||
return res, nil
|
return res, nil
|
||||||
}
|
}
|
||||||
|
26
vendor/github.com/containers/image/v5/copy/single.go
generated
vendored
26
vendor/github.com/containers/image/v5/copy/single.go
generated
vendored
@ -6,6 +6,7 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
|
"iter"
|
||||||
"maps"
|
"maps"
|
||||||
"reflect"
|
"reflect"
|
||||||
"slices"
|
"slices"
|
||||||
@ -328,19 +329,16 @@ func prepareImageConfigForDest(ctx context.Context, sys *types.SystemContext, sr
|
|||||||
}
|
}
|
||||||
wantedPlatforms := platform.WantedPlatforms(sys)
|
wantedPlatforms := platform.WantedPlatforms(sys)
|
||||||
|
|
||||||
options := newOrderedSet()
|
if !slices.ContainsFunc(wantedPlatforms, func(wantedPlatform imgspecv1.Platform) bool {
|
||||||
match := false
|
|
||||||
for _, wantedPlatform := range wantedPlatforms {
|
|
||||||
// For a transitional period, this might trigger warnings because the Variant
|
// For a transitional period, this might trigger warnings because the Variant
|
||||||
// field was added to OCI config only recently. If this turns out to be too noisy,
|
// field was added to OCI config only recently. If this turns out to be too noisy,
|
||||||
// revert this check to only look for (OS, Architecture).
|
// revert this check to only look for (OS, Architecture).
|
||||||
if platform.MatchesPlatform(ociConfig.Platform, wantedPlatform) {
|
return platform.MatchesPlatform(ociConfig.Platform, wantedPlatform)
|
||||||
match = true
|
}) {
|
||||||
break
|
options := newOrderedSet()
|
||||||
|
for _, p := range wantedPlatforms {
|
||||||
|
options.append(fmt.Sprintf("%s+%s+%q", p.OS, p.Architecture, p.Variant))
|
||||||
}
|
}
|
||||||
options.append(fmt.Sprintf("%s+%s+%q", wantedPlatform.OS, wantedPlatform.Architecture, wantedPlatform.Variant))
|
|
||||||
}
|
|
||||||
if !match {
|
|
||||||
logrus.Infof("Image operating system mismatch: image uses OS %q+architecture %q+%q, expecting one of %q",
|
logrus.Infof("Image operating system mismatch: image uses OS %q+architecture %q+%q, expecting one of %q",
|
||||||
ociConfig.OS, ociConfig.Architecture, ociConfig.Variant, strings.Join(options.list, ", "))
|
ociConfig.OS, ociConfig.Architecture, ociConfig.Variant, strings.Join(options.list, ", "))
|
||||||
}
|
}
|
||||||
@ -420,7 +418,7 @@ func (ic *imageCopier) compareImageDestinationManifestEqual(ctx context.Context,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
algos, err := algorithmsByNames(compressionAlgos.Values())
|
algos, err := algorithmsByNames(compressionAlgos.All())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -555,7 +553,7 @@ func (ic *imageCopier) copyLayers(ctx context.Context) ([]compressiontypes.Algor
|
|||||||
if srcInfosUpdated || layerDigestsDiffer(srcInfos, destInfos) {
|
if srcInfosUpdated || layerDigestsDiffer(srcInfos, destInfos) {
|
||||||
ic.manifestUpdates.LayerInfos = destInfos
|
ic.manifestUpdates.LayerInfos = destInfos
|
||||||
}
|
}
|
||||||
algos, err := algorithmsByNames(compressionAlgos.Values())
|
algos, err := algorithmsByNames(compressionAlgos.All())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -991,10 +989,10 @@ func computeDiffID(stream io.Reader, decompressor compressiontypes.DecompressorF
|
|||||||
return digest.Canonical.FromReader(stream)
|
return digest.Canonical.FromReader(stream)
|
||||||
}
|
}
|
||||||
|
|
||||||
// algorithmsByNames returns slice of Algorithms from slice of Algorithm Names
|
// algorithmsByNames returns slice of Algorithms from a sequence of Algorithm Names
|
||||||
func algorithmsByNames(names []string) ([]compressiontypes.Algorithm, error) {
|
func algorithmsByNames(names iter.Seq[string]) ([]compressiontypes.Algorithm, error) {
|
||||||
result := []compressiontypes.Algorithm{}
|
result := []compressiontypes.Algorithm{}
|
||||||
for _, name := range names {
|
for name := range names {
|
||||||
algo, err := compression.AlgorithmByName(name)
|
algo, err := compression.AlgorithmByName(name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
3
vendor/github.com/containers/image/v5/docker/archive/transport.go
generated
vendored
3
vendor/github.com/containers/image/v5/docker/archive/transport.go
generated
vendored
@ -101,6 +101,9 @@ func NewReference(path string, ref reference.NamedTagged) (types.ImageReference,
|
|||||||
|
|
||||||
// NewIndexReference returns a Docker archive reference for a path and a zero-based source manifest index.
|
// NewIndexReference returns a Docker archive reference for a path and a zero-based source manifest index.
|
||||||
func NewIndexReference(path string, sourceIndex int) (types.ImageReference, error) {
|
func NewIndexReference(path string, sourceIndex int) (types.ImageReference, error) {
|
||||||
|
if sourceIndex < 0 {
|
||||||
|
return nil, fmt.Errorf("invalid call to NewIndexReference with negative index %d", sourceIndex)
|
||||||
|
}
|
||||||
return newReference(path, nil, sourceIndex, nil, nil)
|
return newReference(path, nil, sourceIndex, nil, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
10
vendor/github.com/containers/image/v5/docker/body_reader.go
generated
vendored
10
vendor/github.com/containers/image/v5/docker/body_reader.go
generated
vendored
@ -35,9 +35,9 @@ type bodyReader struct {
|
|||||||
|
|
||||||
body io.ReadCloser // The currently open connection we use to read data, or nil if there is nothing to read from / close.
|
body io.ReadCloser // The currently open connection we use to read data, or nil if there is nothing to read from / close.
|
||||||
lastRetryOffset int64 // -1 if N/A
|
lastRetryOffset int64 // -1 if N/A
|
||||||
lastRetryTime time.Time // time.Time{} if N/A
|
lastRetryTime time.Time // IsZero() if N/A
|
||||||
offset int64 // Current offset within the blob
|
offset int64 // Current offset within the blob
|
||||||
lastSuccessTime time.Time // time.Time{} if N/A
|
lastSuccessTime time.Time // IsZero() if N/A
|
||||||
}
|
}
|
||||||
|
|
||||||
// newBodyReader creates a bodyReader for request path in c.
|
// newBodyReader creates a bodyReader for request path in c.
|
||||||
@ -207,9 +207,9 @@ func (br *bodyReader) Read(p []byte) (int, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// millisecondsSinceOptional is like currentTime.Sub(tm).Milliseconds, but it returns a floating-point value.
|
// millisecondsSinceOptional is like currentTime.Sub(tm).Milliseconds, but it returns a floating-point value.
|
||||||
// If tm is time.Time{}, it returns math.NaN()
|
// If tm.IsZero(), it returns math.NaN()
|
||||||
func millisecondsSinceOptional(currentTime time.Time, tm time.Time) float64 {
|
func millisecondsSinceOptional(currentTime time.Time, tm time.Time) float64 {
|
||||||
if tm == (time.Time{}) {
|
if tm.IsZero() {
|
||||||
return math.NaN()
|
return math.NaN()
|
||||||
}
|
}
|
||||||
return float64(currentTime.Sub(tm).Nanoseconds()) / 1_000_000.0
|
return float64(currentTime.Sub(tm).Nanoseconds()) / 1_000_000.0
|
||||||
@ -229,7 +229,7 @@ func (br *bodyReader) errorIfNotReconnecting(originalErr error, redactedURL stri
|
|||||||
logrus.Infof("Reading blob body from %s failed (%v), reconnecting after %d bytes…", redactedURL, originalErr, progress)
|
logrus.Infof("Reading blob body from %s failed (%v), reconnecting after %d bytes…", redactedURL, originalErr, progress)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
if br.lastRetryTime == (time.Time{}) {
|
if br.lastRetryTime.IsZero() {
|
||||||
logrus.Infof("Reading blob body from %s failed (%v), reconnecting (first reconnection)…", redactedURL, originalErr)
|
logrus.Infof("Reading blob body from %s failed (%v), reconnecting (first reconnection)…", redactedURL, originalErr)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
2
vendor/github.com/containers/image/v5/docker/daemon/daemon_dest.go
generated
vendored
2
vendor/github.com/containers/image/v5/docker/daemon/daemon_dest.go
generated
vendored
@ -92,7 +92,7 @@ func imageLoadGoroutine(ctx context.Context, c *client.Client, reader *io.PipeRe
|
|||||||
|
|
||||||
// imageLoad accepts tar stream on reader and sends it to c
|
// imageLoad accepts tar stream on reader and sends it to c
|
||||||
func imageLoad(ctx context.Context, c *client.Client, reader *io.PipeReader) error {
|
func imageLoad(ctx context.Context, c *client.Client, reader *io.PipeReader) error {
|
||||||
resp, err := c.ImageLoad(ctx, reader, true)
|
resp, err := c.ImageLoad(ctx, reader, client.ImageLoadWithQuiet(true))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("starting a load operation in docker engine: %w", err)
|
return fmt.Errorf("starting a load operation in docker engine: %w", err)
|
||||||
}
|
}
|
||||||
|
9
vendor/github.com/containers/image/v5/docker/daemon/daemon_transport.go
generated
vendored
9
vendor/github.com/containers/image/v5/docker/daemon/daemon_transport.go
generated
vendored
@ -87,10 +87,13 @@ func ParseReference(refString string) (types.ImageReference, error) {
|
|||||||
|
|
||||||
// NewReference returns a docker-daemon reference for either the supplied image ID (config digest) or the supplied reference (which must satisfy !reference.IsNameOnly)
|
// NewReference returns a docker-daemon reference for either the supplied image ID (config digest) or the supplied reference (which must satisfy !reference.IsNameOnly)
|
||||||
func NewReference(id digest.Digest, ref reference.Named) (types.ImageReference, error) {
|
func NewReference(id digest.Digest, ref reference.Named) (types.ImageReference, error) {
|
||||||
if id != "" && ref != nil {
|
switch {
|
||||||
|
case id != "" && ref != nil:
|
||||||
return nil, errors.New("docker-daemon: reference must not have an image ID and a reference string specified at the same time")
|
return nil, errors.New("docker-daemon: reference must not have an image ID and a reference string specified at the same time")
|
||||||
}
|
case id == "" && ref == nil:
|
||||||
if ref != nil {
|
return nil, errors.New("docker-daemon: reference must have at least one of an image ID and a reference string")
|
||||||
|
|
||||||
|
case ref != nil:
|
||||||
if reference.IsNameOnly(ref) {
|
if reference.IsNameOnly(ref) {
|
||||||
return nil, fmt.Errorf("docker-daemon: reference %s has neither a tag nor a digest", reference.FamiliarString(ref))
|
return nil, fmt.Errorf("docker-daemon: reference %s has neither a tag nor a digest", reference.FamiliarString(ref))
|
||||||
}
|
}
|
||||||
|
25
vendor/github.com/containers/image/v5/docker/distribution_error.go
generated
vendored
25
vendor/github.com/containers/image/v5/docker/distribution_error.go
generated
vendored
@ -30,14 +30,25 @@ import (
|
|||||||
// errcode.Errors slice.
|
// errcode.Errors slice.
|
||||||
var errNoErrorsInBody = errors.New("no error details found in HTTP response body")
|
var errNoErrorsInBody = errors.New("no error details found in HTTP response body")
|
||||||
|
|
||||||
// unexpectedHTTPStatusError is returned when an unexpected HTTP status is
|
// UnexpectedHTTPStatusError is returned when an unexpected HTTP status is
|
||||||
// returned when making a registry api call.
|
// returned when making a registry api call.
|
||||||
type unexpectedHTTPStatusError struct {
|
type UnexpectedHTTPStatusError struct {
|
||||||
Status string
|
// StatusCode code as returned from the server, so callers can
|
||||||
|
// match the exact code to make certain decisions if needed.
|
||||||
|
StatusCode int
|
||||||
|
// status text as displayed in the error message, not exposed as callers should match the number.
|
||||||
|
status string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *unexpectedHTTPStatusError) Error() string {
|
func (e UnexpectedHTTPStatusError) Error() string {
|
||||||
return fmt.Sprintf("received unexpected HTTP status: %s", e.Status)
|
return fmt.Sprintf("received unexpected HTTP status: %s", e.status)
|
||||||
|
}
|
||||||
|
|
||||||
|
func newUnexpectedHTTPStatusError(resp *http.Response) UnexpectedHTTPStatusError {
|
||||||
|
return UnexpectedHTTPStatusError{
|
||||||
|
StatusCode: resp.StatusCode,
|
||||||
|
status: resp.Status,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// unexpectedHTTPResponseError is returned when an expected HTTP status code
|
// unexpectedHTTPResponseError is returned when an expected HTTP status code
|
||||||
@ -117,7 +128,7 @@ func handleErrorResponse(resp *http.Response) error {
|
|||||||
case resp.StatusCode == http.StatusUnauthorized:
|
case resp.StatusCode == http.StatusUnauthorized:
|
||||||
// Check for OAuth errors within the `WWW-Authenticate` header first
|
// Check for OAuth errors within the `WWW-Authenticate` header first
|
||||||
// See https://tools.ietf.org/html/rfc6750#section-3
|
// See https://tools.ietf.org/html/rfc6750#section-3
|
||||||
for _, c := range parseAuthHeader(resp.Header) {
|
for c := range iterateAuthHeader(resp.Header) {
|
||||||
if c.Scheme == "bearer" {
|
if c.Scheme == "bearer" {
|
||||||
var err errcode.Error
|
var err errcode.Error
|
||||||
// codes defined at https://tools.ietf.org/html/rfc6750#section-3.1
|
// codes defined at https://tools.ietf.org/html/rfc6750#section-3.1
|
||||||
@ -146,5 +157,5 @@ func handleErrorResponse(resp *http.Response) error {
|
|||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return &unexpectedHTTPStatusError{Status: resp.Status}
|
return newUnexpectedHTTPStatusError(resp)
|
||||||
}
|
}
|
||||||
|
44
vendor/github.com/containers/image/v5/docker/docker_client.go
generated
vendored
44
vendor/github.com/containers/image/v5/docker/docker_client.go
generated
vendored
@ -11,6 +11,7 @@ import (
|
|||||||
"net/url"
|
"net/url"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"slices"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
@ -475,12 +476,11 @@ func (c *dockerClient) resolveRequestURL(path string) (*url.URL, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Checks if the auth headers in the response contain an indication of a failed
|
// Checks if the auth headers in the response contain an indication of a failed
|
||||||
// authorizdation because of an "insufficient_scope" error. If that's the case,
|
// authorization because of an "insufficient_scope" error. If that's the case,
|
||||||
// returns the required scope to be used for fetching a new token.
|
// returns the required scope to be used for fetching a new token.
|
||||||
func needsRetryWithUpdatedScope(res *http.Response) (bool, *authScope) {
|
func needsRetryWithUpdatedScope(res *http.Response) (bool, *authScope) {
|
||||||
if res.StatusCode == http.StatusUnauthorized {
|
if res.StatusCode == http.StatusUnauthorized {
|
||||||
challenges := parseAuthHeader(res.Header)
|
for challenge := range iterateAuthHeader(res.Header) {
|
||||||
for _, challenge := range challenges {
|
|
||||||
if challenge.Scheme == "bearer" {
|
if challenge.Scheme == "bearer" {
|
||||||
if errmsg, ok := challenge.Parameters["error"]; ok && errmsg == "insufficient_scope" {
|
if errmsg, ok := challenge.Parameters["error"]; ok && errmsg == "insufficient_scope" {
|
||||||
if scope, ok := challenge.Parameters["scope"]; ok && scope != "" {
|
if scope, ok := challenge.Parameters["scope"]; ok && scope != "" {
|
||||||
@ -907,6 +907,10 @@ func (c *dockerClient) detectPropertiesHelper(ctx context.Context) error {
|
|||||||
}
|
}
|
||||||
tr := tlsclientconfig.NewTransport()
|
tr := tlsclientconfig.NewTransport()
|
||||||
tr.TLSClientConfig = c.tlsClientConfig
|
tr.TLSClientConfig = c.tlsClientConfig
|
||||||
|
// if set DockerProxyURL explicitly, use the DockerProxyURL instead of system proxy
|
||||||
|
if c.sys != nil && c.sys.DockerProxyURL != nil {
|
||||||
|
tr.Proxy = http.ProxyURL(c.sys.DockerProxyURL)
|
||||||
|
}
|
||||||
c.client = &http.Client{Transport: tr}
|
c.client = &http.Client{Transport: tr}
|
||||||
|
|
||||||
ping := func(scheme string) error {
|
ping := func(scheme string) error {
|
||||||
@ -924,7 +928,7 @@ func (c *dockerClient) detectPropertiesHelper(ctx context.Context) error {
|
|||||||
if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusUnauthorized {
|
if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusUnauthorized {
|
||||||
return registryHTTPResponseToError(resp)
|
return registryHTTPResponseToError(resp)
|
||||||
}
|
}
|
||||||
c.challenges = parseAuthHeader(resp.Header)
|
c.challenges = slices.Collect(iterateAuthHeader(resp.Header))
|
||||||
c.scheme = scheme
|
c.scheme = scheme
|
||||||
c.supportsSignatures = resp.Header.Get("X-Registry-Supports-Signatures") == "1"
|
c.supportsSignatures = resp.Header.Get("X-Registry-Supports-Signatures") == "1"
|
||||||
return nil
|
return nil
|
||||||
@ -992,13 +996,18 @@ func (c *dockerClient) getExternalBlob(ctx context.Context, urls []string) (io.R
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if resp.StatusCode != http.StatusOK {
|
if resp.StatusCode != http.StatusOK {
|
||||||
err := fmt.Errorf("error fetching external blob from %q: %d (%s)", u, resp.StatusCode, http.StatusText(resp.StatusCode))
|
err := fmt.Errorf("error fetching external blob from %q: %w", u, newUnexpectedHTTPStatusError(resp))
|
||||||
remoteErrors = append(remoteErrors, err)
|
remoteErrors = append(remoteErrors, err)
|
||||||
logrus.Debug(err)
|
logrus.Debug(err)
|
||||||
resp.Body.Close()
|
resp.Body.Close()
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
return resp.Body, getBlobSize(resp), nil
|
|
||||||
|
size, err := getBlobSize(resp)
|
||||||
|
if err != nil {
|
||||||
|
size = -1
|
||||||
|
}
|
||||||
|
return resp.Body, size, nil
|
||||||
}
|
}
|
||||||
if remoteErrors == nil {
|
if remoteErrors == nil {
|
||||||
return nil, 0, nil // fallback to non-external blob
|
return nil, 0, nil // fallback to non-external blob
|
||||||
@ -1006,12 +1015,20 @@ func (c *dockerClient) getExternalBlob(ctx context.Context, urls []string) (io.R
|
|||||||
return nil, 0, fmt.Errorf("failed fetching external blob from all urls: %w", multierr.Format("", ", ", "", remoteErrors))
|
return nil, 0, fmt.Errorf("failed fetching external blob from all urls: %w", multierr.Format("", ", ", "", remoteErrors))
|
||||||
}
|
}
|
||||||
|
|
||||||
func getBlobSize(resp *http.Response) int64 {
|
func getBlobSize(resp *http.Response) (int64, error) {
|
||||||
size, err := strconv.ParseInt(resp.Header.Get("Content-Length"), 10, 64)
|
hdrs := resp.Header.Values("Content-Length")
|
||||||
if err != nil {
|
if len(hdrs) == 0 {
|
||||||
size = -1
|
return -1, errors.New(`Missing "Content-Length" header in response`)
|
||||||
}
|
}
|
||||||
return size
|
hdr := hdrs[0] // Equivalent to resp.Header.Get(…)
|
||||||
|
size, err := strconv.ParseInt(hdr, 10, 64)
|
||||||
|
if err != nil { // Go’s response reader should already reject such values.
|
||||||
|
return -1, err
|
||||||
|
}
|
||||||
|
if size < 0 { // '-' is not a valid character in Content-Length, so negative values are invalid. Go’s response reader should already reject such values.
|
||||||
|
return -1, fmt.Errorf(`Invalid negative "Content-Length" %q`, hdr)
|
||||||
|
}
|
||||||
|
return size, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// getBlob returns a stream for the specified blob in ref, and the blob’s size (or -1 if unknown).
|
// getBlob returns a stream for the specified blob in ref, and the blob’s size (or -1 if unknown).
|
||||||
@ -1042,7 +1059,10 @@ func (c *dockerClient) getBlob(ctx context.Context, ref dockerReference, info ty
|
|||||||
return nil, 0, fmt.Errorf("fetching blob: %w", err)
|
return nil, 0, fmt.Errorf("fetching blob: %w", err)
|
||||||
}
|
}
|
||||||
cache.RecordKnownLocation(ref.Transport(), bicTransportScope(ref), info.Digest, newBICLocationReference(ref))
|
cache.RecordKnownLocation(ref.Transport(), bicTransportScope(ref), info.Digest, newBICLocationReference(ref))
|
||||||
blobSize := getBlobSize(res)
|
blobSize, err := getBlobSize(res)
|
||||||
|
if err != nil {
|
||||||
|
blobSize = -1
|
||||||
|
}
|
||||||
|
|
||||||
reconnectingReader, err := newBodyReader(ctx, c, path, res.Body)
|
reconnectingReader, err := newBodyReader(ctx, c, path, res.Body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
6
vendor/github.com/containers/image/v5/docker/docker_image_dest.go
generated
vendored
6
vendor/github.com/containers/image/v5/docker/docker_image_dest.go
generated
vendored
@ -243,8 +243,12 @@ func (d *dockerImageDestination) blobExists(ctx context.Context, repo reference.
|
|||||||
defer res.Body.Close()
|
defer res.Body.Close()
|
||||||
switch res.StatusCode {
|
switch res.StatusCode {
|
||||||
case http.StatusOK:
|
case http.StatusOK:
|
||||||
|
size, err := getBlobSize(res)
|
||||||
|
if err != nil {
|
||||||
|
return false, -1, fmt.Errorf("determining size of blob %s in %s: %w", digest, repo.Name(), err)
|
||||||
|
}
|
||||||
logrus.Debugf("... already exists")
|
logrus.Debugf("... already exists")
|
||||||
return true, getBlobSize(res), nil
|
return true, size, nil
|
||||||
case http.StatusUnauthorized:
|
case http.StatusUnauthorized:
|
||||||
logrus.Debugf("... not authorized")
|
logrus.Debugf("... not authorized")
|
||||||
return false, -1, fmt.Errorf("checking whether a blob %s exists in %s: %w", digest, repo.Name(), registryHTTPResponseToError(res))
|
return false, -1, fmt.Errorf("checking whether a blob %s exists in %s: %w", digest, repo.Name(), registryHTTPResponseToError(res))
|
||||||
|
2
vendor/github.com/containers/image/v5/docker/docker_image_src.go
generated
vendored
2
vendor/github.com/containers/image/v5/docker/docker_image_src.go
generated
vendored
@ -569,7 +569,7 @@ func (s *dockerImageSource) getOneSignature(ctx context.Context, sigURL *url.URL
|
|||||||
logrus.Debugf("... got status 404, as expected = end of signatures")
|
logrus.Debugf("... got status 404, as expected = end of signatures")
|
||||||
return nil, true, nil
|
return nil, true, nil
|
||||||
} else if res.StatusCode != http.StatusOK {
|
} else if res.StatusCode != http.StatusOK {
|
||||||
return nil, false, fmt.Errorf("reading signature from %s: status %d (%s)", sigURL.Redacted(), res.StatusCode, http.StatusText(res.StatusCode))
|
return nil, false, fmt.Errorf("reading signature from %s: %w", sigURL.Redacted(), newUnexpectedHTTPStatusError(res))
|
||||||
}
|
}
|
||||||
|
|
||||||
contentType := res.Header.Get("Content-Type")
|
contentType := res.Header.Get("Content-Type")
|
||||||
|
6
vendor/github.com/containers/image/v5/docker/errors.go
generated
vendored
6
vendor/github.com/containers/image/v5/docker/errors.go
generated
vendored
@ -40,10 +40,10 @@ func httpResponseToError(res *http.Response, context string) error {
|
|||||||
err := registryHTTPResponseToError(res)
|
err := registryHTTPResponseToError(res)
|
||||||
return ErrUnauthorizedForCredentials{Err: err}
|
return ErrUnauthorizedForCredentials{Err: err}
|
||||||
default:
|
default:
|
||||||
if context != "" {
|
if context == "" {
|
||||||
context += ": "
|
return newUnexpectedHTTPStatusError(res)
|
||||||
}
|
}
|
||||||
return fmt.Errorf("%sinvalid status code from registry %d (%s)", context, res.StatusCode, http.StatusText(res.StatusCode))
|
return fmt.Errorf("%s: %w", context, newUnexpectedHTTPStatusError(res))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
4
vendor/github.com/containers/image/v5/docker/internal/tarfile/writer.go
generated
vendored
4
vendor/github.com/containers/image/v5/docker/internal/tarfile/writer.go
generated
vendored
@ -242,9 +242,7 @@ func (w *Writer) ensureManifestItemLocked(layerDescriptors []manifest.Schema2Des
|
|||||||
}
|
}
|
||||||
|
|
||||||
knownRepoTags := set.New[string]()
|
knownRepoTags := set.New[string]()
|
||||||
for _, repoTag := range item.RepoTags {
|
knownRepoTags.AddSeq(slices.Values(item.RepoTags))
|
||||||
knownRepoTags.Add(repoTag)
|
|
||||||
}
|
|
||||||
for _, tag := range repoTags {
|
for _, tag := range repoTags {
|
||||||
// For github.com/docker/docker consumers, this works just as well as
|
// For github.com/docker/docker consumers, this works just as well as
|
||||||
// refString := ref.String()
|
// refString := ref.String()
|
||||||
|
1
vendor/github.com/containers/image/v5/docker/paths_common.go
generated
vendored
1
vendor/github.com/containers/image/v5/docker/paths_common.go
generated
vendored
@ -1,5 +1,4 @@
|
|||||||
//go:build !freebsd
|
//go:build !freebsd
|
||||||
// +build !freebsd
|
|
||||||
|
|
||||||
package docker
|
package docker
|
||||||
|
|
||||||
|
1
vendor/github.com/containers/image/v5/docker/paths_freebsd.go
generated
vendored
1
vendor/github.com/containers/image/v5/docker/paths_freebsd.go
generated
vendored
@ -1,5 +1,4 @@
|
|||||||
//go:build freebsd
|
//go:build freebsd
|
||||||
// +build freebsd
|
|
||||||
|
|
||||||
package docker
|
package docker
|
||||||
|
|
||||||
|
17
vendor/github.com/containers/image/v5/docker/wwwauthenticate.go
generated
vendored
17
vendor/github.com/containers/image/v5/docker/wwwauthenticate.go
generated
vendored
@ -4,6 +4,7 @@ package docker
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"iter"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
@ -60,15 +61,17 @@ func init() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func parseAuthHeader(header http.Header) []challenge {
|
func iterateAuthHeader(header http.Header) iter.Seq[challenge] {
|
||||||
challenges := []challenge{}
|
return func(yield func(challenge) bool) {
|
||||||
for _, h := range header[http.CanonicalHeaderKey("WWW-Authenticate")] {
|
for _, h := range header[http.CanonicalHeaderKey("WWW-Authenticate")] {
|
||||||
v, p := parseValueAndParams(h)
|
v, p := parseValueAndParams(h)
|
||||||
if v != "" {
|
if v != "" {
|
||||||
challenges = append(challenges, challenge{Scheme: v, Parameters: p})
|
if !yield(challenge{Scheme: v, Parameters: p}) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return challenges
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// parseAuthScope parses an authentication scope string of the form `$resource:$remote:$actions`
|
// parseAuthScope parses an authentication scope string of the form `$resource:$remote:$actions`
|
||||||
|
6
vendor/github.com/containers/image/v5/image/unparsed.go
generated
vendored
6
vendor/github.com/containers/image/v5/image/unparsed.go
generated
vendored
@ -15,6 +15,9 @@ type UnparsedImage = image.UnparsedImage
|
|||||||
// UnparsedInstance returns a types.UnparsedImage implementation for (source, instanceDigest).
|
// UnparsedInstance returns a types.UnparsedImage implementation for (source, instanceDigest).
|
||||||
// If instanceDigest is not nil, it contains a digest of the specific manifest instance to retrieve (when the primary manifest is a manifest list).
|
// If instanceDigest is not nil, it contains a digest of the specific manifest instance to retrieve (when the primary manifest is a manifest list).
|
||||||
//
|
//
|
||||||
|
// This implementation of [types.UnparsedImage] ensures that [types.UnparsedImage.Manifest] validates the image
|
||||||
|
// against instanceDigest if set, or, if not, a digest implied by src.Reference, if any.
|
||||||
|
//
|
||||||
// The UnparsedImage must not be used after the underlying ImageSource is Close()d.
|
// The UnparsedImage must not be used after the underlying ImageSource is Close()d.
|
||||||
func UnparsedInstance(src types.ImageSource, instanceDigest *digest.Digest) *UnparsedImage {
|
func UnparsedInstance(src types.ImageSource, instanceDigest *digest.Digest) *UnparsedImage {
|
||||||
return image.UnparsedInstance(src, instanceDigest)
|
return image.UnparsedInstance(src, instanceDigest)
|
||||||
@ -33,6 +36,9 @@ func (uwr *unparsedWithRef) Reference() types.ImageReference {
|
|||||||
// UnparsedInstanceWithReference returns a types.UnparsedImage for wrappedInstance which claims to be a replacementRef.
|
// UnparsedInstanceWithReference returns a types.UnparsedImage for wrappedInstance which claims to be a replacementRef.
|
||||||
// This is useful for combining image data with other reference values, e.g. to check signatures on a locally-pulled image
|
// This is useful for combining image data with other reference values, e.g. to check signatures on a locally-pulled image
|
||||||
// based on a remote-registry policy.
|
// based on a remote-registry policy.
|
||||||
|
//
|
||||||
|
// For the purposes of digest validation in [types.UnparsedImage.Manifest], what matters is the
|
||||||
|
// reference originally used to create wrappedInstance, not replacementRef.
|
||||||
func UnparsedInstanceWithReference(wrappedInstance types.UnparsedImage, replacementRef types.ImageReference) types.UnparsedImage {
|
func UnparsedInstanceWithReference(wrappedInstance types.UnparsedImage, replacementRef types.ImageReference) types.UnparsedImage {
|
||||||
return &unparsedWithRef{
|
return &unparsedWithRef{
|
||||||
UnparsedImage: unparsedimage.FromPublic(wrappedInstance),
|
UnparsedImage: unparsedimage.FromPublic(wrappedInstance),
|
||||||
|
6
vendor/github.com/containers/image/v5/internal/image/unparsed.go
generated
vendored
6
vendor/github.com/containers/image/v5/internal/image/unparsed.go
generated
vendored
@ -30,6 +30,9 @@ type UnparsedImage struct {
|
|||||||
// UnparsedInstance returns a types.UnparsedImage implementation for (source, instanceDigest).
|
// UnparsedInstance returns a types.UnparsedImage implementation for (source, instanceDigest).
|
||||||
// If instanceDigest is not nil, it contains a digest of the specific manifest instance to retrieve (when the primary manifest is a manifest list).
|
// If instanceDigest is not nil, it contains a digest of the specific manifest instance to retrieve (when the primary manifest is a manifest list).
|
||||||
//
|
//
|
||||||
|
// This implementation of [types.UnparsedImage] ensures that [types.UnparsedImage.Manifest] validates the image
|
||||||
|
// against instanceDigest if set, or, if not, a digest implied by src.Reference, if any.
|
||||||
|
//
|
||||||
// The UnparsedImage must not be used after the underlying ImageSource is Close()d.
|
// The UnparsedImage must not be used after the underlying ImageSource is Close()d.
|
||||||
//
|
//
|
||||||
// This is publicly visible as c/image/image.UnparsedInstance.
|
// This is publicly visible as c/image/image.UnparsedInstance.
|
||||||
@ -48,6 +51,9 @@ func (i *UnparsedImage) Reference() types.ImageReference {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Manifest is like ImageSource.GetManifest, but the result is cached; it is OK to call this however often you need.
|
// Manifest is like ImageSource.GetManifest, but the result is cached; it is OK to call this however often you need.
|
||||||
|
//
|
||||||
|
// Users of UnparsedImage are promised that this validates the image
|
||||||
|
// against either i.instanceDigest if set, or against a digest included in i.src.Reference.
|
||||||
func (i *UnparsedImage) Manifest(ctx context.Context) ([]byte, string, error) {
|
func (i *UnparsedImage) Manifest(ctx context.Context) ([]byte, string, error) {
|
||||||
if i.cachedManifest == nil {
|
if i.cachedManifest == nil {
|
||||||
m, mt, err := i.src.GetManifest(ctx, i.instanceDigest)
|
m, mt, err := i.src.GetManifest(ctx, i.instanceDigest)
|
||||||
|
10
vendor/github.com/containers/image/v5/internal/manifest/oci_index.go
generated
vendored
10
vendor/github.com/containers/image/v5/internal/manifest/oci_index.go
generated
vendored
@ -213,12 +213,12 @@ type instanceCandidate struct {
|
|||||||
digest digest.Digest // Instance digest
|
digest digest.Digest // Instance digest
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ic instanceCandidate) isPreferredOver(other *instanceCandidate, preferGzip bool) bool {
|
func (ic instanceCandidate) isPreferredOver(other *instanceCandidate, preferGzip types.OptionalBool) bool {
|
||||||
switch {
|
switch {
|
||||||
case ic.platformIndex != other.platformIndex:
|
case ic.platformIndex != other.platformIndex:
|
||||||
return ic.platformIndex < other.platformIndex
|
return ic.platformIndex < other.platformIndex
|
||||||
case ic.isZstd != other.isZstd:
|
case ic.isZstd != other.isZstd:
|
||||||
if !preferGzip {
|
if preferGzip != types.OptionalBoolTrue {
|
||||||
return ic.isZstd
|
return ic.isZstd
|
||||||
} else {
|
} else {
|
||||||
return !ic.isZstd
|
return !ic.isZstd
|
||||||
@ -232,10 +232,6 @@ func (ic instanceCandidate) isPreferredOver(other *instanceCandidate, preferGzip
|
|||||||
// chooseInstance is a private equivalent to ChooseInstanceByCompression,
|
// chooseInstance is a private equivalent to ChooseInstanceByCompression,
|
||||||
// shared by ChooseInstance and ChooseInstanceByCompression.
|
// shared by ChooseInstance and ChooseInstanceByCompression.
|
||||||
func (index *OCI1IndexPublic) chooseInstance(ctx *types.SystemContext, preferGzip types.OptionalBool) (digest.Digest, error) {
|
func (index *OCI1IndexPublic) chooseInstance(ctx *types.SystemContext, preferGzip types.OptionalBool) (digest.Digest, error) {
|
||||||
didPreferGzip := false
|
|
||||||
if preferGzip == types.OptionalBoolTrue {
|
|
||||||
didPreferGzip = true
|
|
||||||
}
|
|
||||||
wantedPlatforms := platform.WantedPlatforms(ctx)
|
wantedPlatforms := platform.WantedPlatforms(ctx)
|
||||||
var bestMatch *instanceCandidate
|
var bestMatch *instanceCandidate
|
||||||
bestMatch = nil
|
bestMatch = nil
|
||||||
@ -251,7 +247,7 @@ func (index *OCI1IndexPublic) chooseInstance(ctx *types.SystemContext, preferGzi
|
|||||||
}
|
}
|
||||||
candidate.platformIndex = platformIndex
|
candidate.platformIndex = platformIndex
|
||||||
}
|
}
|
||||||
if bestMatch == nil || candidate.isPreferredOver(bestMatch, didPreferGzip) {
|
if bestMatch == nil || candidate.isPreferredOver(bestMatch, preferGzip) {
|
||||||
bestMatch = &candidate
|
bestMatch = &candidate
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
7
vendor/github.com/containers/image/v5/internal/private/private.go
generated
vendored
7
vendor/github.com/containers/image/v5/internal/private/private.go
generated
vendored
@ -3,6 +3,7 @@ package private
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"io"
|
"io"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/containers/image/v5/docker/reference"
|
"github.com/containers/image/v5/docker/reference"
|
||||||
"github.com/containers/image/v5/internal/blobinfocache"
|
"github.com/containers/image/v5/internal/blobinfocache"
|
||||||
@ -170,6 +171,12 @@ type CommitOptions struct {
|
|||||||
// What “resolved” means is transport-specific.
|
// What “resolved” means is transport-specific.
|
||||||
// Transports which don’t support reporting resolved references can ignore the field; the generic copy code writes "nil" into the value.
|
// Transports which don’t support reporting resolved references can ignore the field; the generic copy code writes "nil" into the value.
|
||||||
ReportResolvedReference *types.ImageReference
|
ReportResolvedReference *types.ImageReference
|
||||||
|
// Timestamp, if set, will force timestamps of content created in the destination to this value.
|
||||||
|
// Most transports don't support this.
|
||||||
|
//
|
||||||
|
// In oci-archive: destinations, this will set the create/mod/access timestamps in each tar entry
|
||||||
|
// (but not a timestamp of the created archive file).
|
||||||
|
Timestamp *time.Time
|
||||||
}
|
}
|
||||||
|
|
||||||
// ImageSourceChunk is a portion of a blob.
|
// ImageSourceChunk is a portion of a blob.
|
||||||
|
22
vendor/github.com/containers/image/v5/internal/reflink/reflink_linux.go
generated
vendored
22
vendor/github.com/containers/image/v5/internal/reflink/reflink_linux.go
generated
vendored
@ -1,22 +0,0 @@
|
|||||||
//go:build linux
|
|
||||||
|
|
||||||
package reflink
|
|
||||||
|
|
||||||
import (
|
|
||||||
"io"
|
|
||||||
"os"
|
|
||||||
|
|
||||||
"golang.org/x/sys/unix"
|
|
||||||
)
|
|
||||||
|
|
||||||
// LinkOrCopy attempts to reflink the source to the destination fd.
|
|
||||||
// If reflinking fails or is unsupported, it falls back to io.Copy().
|
|
||||||
func LinkOrCopy(src, dst *os.File) error {
|
|
||||||
_, _, errno := unix.Syscall(unix.SYS_IOCTL, dst.Fd(), unix.FICLONE, src.Fd())
|
|
||||||
if errno == 0 {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
_, err := io.Copy(dst, src)
|
|
||||||
return err
|
|
||||||
}
|
|
15
vendor/github.com/containers/image/v5/internal/reflink/reflink_unsupported.go
generated
vendored
15
vendor/github.com/containers/image/v5/internal/reflink/reflink_unsupported.go
generated
vendored
@ -1,15 +0,0 @@
|
|||||||
//go:build !linux
|
|
||||||
|
|
||||||
package reflink
|
|
||||||
|
|
||||||
import (
|
|
||||||
"io"
|
|
||||||
"os"
|
|
||||||
)
|
|
||||||
|
|
||||||
// LinkOrCopy attempts to reflink the source to the destination fd.
|
|
||||||
// If reflinking fails or is unsupported, it falls back to io.Copy().
|
|
||||||
func LinkOrCopy(src, dst *os.File) error {
|
|
||||||
_, err := io.Copy(dst, src)
|
|
||||||
return err
|
|
||||||
}
|
|
11
vendor/github.com/containers/image/v5/internal/set/set.go
generated
vendored
11
vendor/github.com/containers/image/v5/internal/set/set.go
generated
vendored
@ -1,6 +1,9 @@
|
|||||||
package set
|
package set
|
||||||
|
|
||||||
import "golang.org/x/exp/maps"
|
import (
|
||||||
|
"iter"
|
||||||
|
"maps"
|
||||||
|
)
|
||||||
|
|
||||||
// FIXME:
|
// FIXME:
|
||||||
// - Docstrings
|
// - Docstrings
|
||||||
@ -28,8 +31,8 @@ func (s *Set[E]) Add(v E) {
|
|||||||
s.m[v] = struct{}{} // Possibly writing the same struct{}{} presence marker again.
|
s.m[v] = struct{}{} // Possibly writing the same struct{}{} presence marker again.
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Set[E]) AddSlice(slice []E) {
|
func (s *Set[E]) AddSeq(seq iter.Seq[E]) {
|
||||||
for _, v := range slice {
|
for v := range seq {
|
||||||
s.Add(v)
|
s.Add(v)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -47,6 +50,6 @@ func (s *Set[E]) Empty() bool {
|
|||||||
return len(s.m) == 0
|
return len(s.m) == 0
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Set[E]) Values() []E {
|
func (s *Set[E]) All() iter.Seq[E] {
|
||||||
return maps.Keys(s.m)
|
return maps.Keys(s.m)
|
||||||
}
|
}
|
||||||
|
12
vendor/github.com/containers/image/v5/manifest/docker_schema1.go
generated
vendored
12
vendor/github.com/containers/image/v5/manifest/docker_schema1.go
generated
vendored
@ -133,12 +133,12 @@ func (m *Schema1) ConfigInfo() types.BlobInfo {
|
|||||||
// The Digest field is guaranteed to be provided; Size may be -1.
|
// The Digest field is guaranteed to be provided; Size may be -1.
|
||||||
// WARNING: The list may contain duplicates, and they are semantically relevant.
|
// WARNING: The list may contain duplicates, and they are semantically relevant.
|
||||||
func (m *Schema1) LayerInfos() []LayerInfo {
|
func (m *Schema1) LayerInfos() []LayerInfo {
|
||||||
layers := make([]LayerInfo, len(m.FSLayers))
|
layers := make([]LayerInfo, 0, len(m.FSLayers))
|
||||||
for i, layer := range m.FSLayers { // NOTE: This includes empty layers (where m.History.V1Compatibility->ThrowAway)
|
for i, layer := range slices.Backward(m.FSLayers) { // NOTE: This includes empty layers (where m.History.V1Compatibility->ThrowAway)
|
||||||
layers[(len(m.FSLayers)-1)-i] = LayerInfo{
|
layers = append(layers, LayerInfo{
|
||||||
BlobInfo: types.BlobInfo{Digest: layer.BlobSum, Size: -1},
|
BlobInfo: types.BlobInfo{Digest: layer.BlobSum, Size: -1},
|
||||||
EmptyLayer: m.ExtractedV1Compatibility[i].ThrowAway,
|
EmptyLayer: m.ExtractedV1Compatibility[i].ThrowAway,
|
||||||
}
|
})
|
||||||
}
|
}
|
||||||
return layers
|
return layers
|
||||||
}
|
}
|
||||||
@ -284,7 +284,7 @@ func (m *Schema1) ToSchema2Config(diffIDs []digest.Digest) ([]byte, error) {
|
|||||||
}
|
}
|
||||||
// Build the history.
|
// Build the history.
|
||||||
convertedHistory := []Schema2History{}
|
convertedHistory := []Schema2History{}
|
||||||
for _, compat := range m.ExtractedV1Compatibility {
|
for _, compat := range slices.Backward(m.ExtractedV1Compatibility) {
|
||||||
hitem := Schema2History{
|
hitem := Schema2History{
|
||||||
Created: compat.Created,
|
Created: compat.Created,
|
||||||
CreatedBy: strings.Join(compat.ContainerConfig.Cmd, " "),
|
CreatedBy: strings.Join(compat.ContainerConfig.Cmd, " "),
|
||||||
@ -292,7 +292,7 @@ func (m *Schema1) ToSchema2Config(diffIDs []digest.Digest) ([]byte, error) {
|
|||||||
Comment: compat.Comment,
|
Comment: compat.Comment,
|
||||||
EmptyLayer: compat.ThrowAway,
|
EmptyLayer: compat.ThrowAway,
|
||||||
}
|
}
|
||||||
convertedHistory = append([]Schema2History{hitem}, convertedHistory...)
|
convertedHistory = append(convertedHistory, hitem)
|
||||||
}
|
}
|
||||||
// Build the rootfs information. We need the decompressed sums that we've been
|
// Build the rootfs information. We need the decompressed sums that we've been
|
||||||
// calculating to fill in the DiffIDs. It's expected (but not enforced by us)
|
// calculating to fill in the DiffIDs. It's expected (but not enforced by us)
|
||||||
|
5
vendor/github.com/containers/image/v5/manifest/oci.go
generated
vendored
5
vendor/github.com/containers/image/v5/manifest/oci.go
generated
vendored
@ -166,10 +166,11 @@ func (m *OCI1) UpdateLayerInfos(layerInfos []types.BlobInfo) error {
|
|||||||
// getEncryptedMediaType will return the mediatype to its encrypted counterpart and return
|
// getEncryptedMediaType will return the mediatype to its encrypted counterpart and return
|
||||||
// an error if the mediatype does not support encryption
|
// an error if the mediatype does not support encryption
|
||||||
func getEncryptedMediaType(mediatype string) (string, error) {
|
func getEncryptedMediaType(mediatype string) (string, error) {
|
||||||
if slices.Contains(strings.Split(mediatype, "+")[1:], "encrypted") {
|
parts := strings.Split(mediatype, "+")
|
||||||
|
if slices.Contains(parts[1:], "encrypted") {
|
||||||
return "", fmt.Errorf("unsupported mediaType: %q already encrypted", mediatype)
|
return "", fmt.Errorf("unsupported mediaType: %q already encrypted", mediatype)
|
||||||
}
|
}
|
||||||
unsuffixedMediatype := strings.Split(mediatype, "+")[0]
|
unsuffixedMediatype := parts[0]
|
||||||
switch unsuffixedMediatype {
|
switch unsuffixedMediatype {
|
||||||
case DockerV2Schema2LayerMediaType, imgspecv1.MediaTypeImageLayer,
|
case DockerV2Schema2LayerMediaType, imgspecv1.MediaTypeImageLayer,
|
||||||
imgspecv1.MediaTypeImageLayerNonDistributable: //nolint:staticcheck // NonDistributable layers are deprecated, but we want to continue to support manipulating pre-existing images.
|
imgspecv1.MediaTypeImageLayerNonDistributable: //nolint:staticcheck // NonDistributable layers are deprecated, but we want to continue to support manipulating pre-existing images.
|
||||||
|
17
vendor/github.com/containers/image/v5/oci/archive/oci_dest.go
generated
vendored
17
vendor/github.com/containers/image/v5/oci/archive/oci_dest.go
generated
vendored
@ -5,6 +5,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"os"
|
"os"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/containers/image/v5/internal/imagedestination"
|
"github.com/containers/image/v5/internal/imagedestination"
|
||||||
"github.com/containers/image/v5/internal/imagedestination/impl"
|
"github.com/containers/image/v5/internal/imagedestination/impl"
|
||||||
@ -172,16 +173,19 @@ func (d *ociArchiveImageDestination) CommitWithOptions(ctx context.Context, opti
|
|||||||
src := d.tempDirRef.tempDirectory
|
src := d.tempDirRef.tempDirectory
|
||||||
// path to save tarred up file
|
// path to save tarred up file
|
||||||
dst := d.ref.resolvedFile
|
dst := d.ref.resolvedFile
|
||||||
return tarDirectory(src, dst)
|
return tarDirectory(src, dst, options.Timestamp)
|
||||||
}
|
}
|
||||||
|
|
||||||
// tar converts the directory at src and saves it to dst
|
// tar converts the directory at src and saves it to dst
|
||||||
func tarDirectory(src, dst string) error {
|
// if contentModTimes is non-nil, tar header entries times are set to this
|
||||||
|
func tarDirectory(src, dst string, contentModTimes *time.Time) (retErr error) {
|
||||||
// input is a stream of bytes from the archive of the directory at path
|
// input is a stream of bytes from the archive of the directory at path
|
||||||
input, err := archive.TarWithOptions(src, &archive.TarOptions{
|
input, err := archive.TarWithOptions(src, &archive.TarOptions{
|
||||||
Compression: archive.Uncompressed,
|
Compression: archive.Uncompressed,
|
||||||
// Don’t include the data about the user account this code is running under.
|
// Don’t include the data about the user account this code is running under.
|
||||||
ChownOpts: &idtools.IDPair{UID: 0, GID: 0},
|
ChownOpts: &idtools.IDPair{UID: 0, GID: 0},
|
||||||
|
// override tar header timestamps
|
||||||
|
Timestamp: contentModTimes,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("retrieving stream of bytes from %q: %w", src, err)
|
return fmt.Errorf("retrieving stream of bytes from %q: %w", src, err)
|
||||||
@ -193,7 +197,14 @@ func tarDirectory(src, dst string) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("creating tar file %q: %w", dst, err)
|
return fmt.Errorf("creating tar file %q: %w", dst, err)
|
||||||
}
|
}
|
||||||
defer outFile.Close()
|
|
||||||
|
// since we are writing to this file, make sure we handle errors
|
||||||
|
defer func() {
|
||||||
|
closeErr := outFile.Close()
|
||||||
|
if retErr == nil {
|
||||||
|
retErr = closeErr
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
// copies the contents of the directory to the tar file
|
// copies the contents of the directory to the tar file
|
||||||
// TODO: This can take quite some time, and should ideally be cancellable using a context.Context.
|
// TODO: This can take quite some time, and should ideally be cancellable using a context.Context.
|
||||||
|
4
vendor/github.com/containers/image/v5/oci/archive/oci_transport.go
generated
vendored
4
vendor/github.com/containers/image/v5/oci/archive/oci_transport.go
generated
vendored
@ -52,13 +52,13 @@ func (t ociArchiveTransport) ValidatePolicyConfigurationScope(scope string) erro
|
|||||||
return internal.ValidateScope(scope)
|
return internal.ValidateScope(scope)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ParseReference converts a string, which should not start with the ImageTransport.Name prefix, into an OCI ImageReference.
|
// ParseReference converts a string, which should not start with the ImageTransport.Name prefix, into an OCI archive ImageReference.
|
||||||
func ParseReference(reference string) (types.ImageReference, error) {
|
func ParseReference(reference string) (types.ImageReference, error) {
|
||||||
file, image := internal.SplitPathAndImage(reference)
|
file, image := internal.SplitPathAndImage(reference)
|
||||||
return NewReference(file, image)
|
return NewReference(file, image)
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewReference returns an OCI reference for a file and a image.
|
// NewReference returns an OCI archive reference for a file and an optional image name annotation (if not "").
|
||||||
func NewReference(file, image string) (types.ImageReference, error) {
|
func NewReference(file, image string) (types.ImageReference, error) {
|
||||||
resolved, err := explicitfilepath.ResolvePathToFullyExplicit(file)
|
resolved, err := explicitfilepath.ResolvePathToFullyExplicit(file)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
12
vendor/github.com/containers/image/v5/oci/layout/oci_delete.go
generated
vendored
12
vendor/github.com/containers/image/v5/oci/layout/oci_delete.go
generated
vendored
@ -123,7 +123,7 @@ func (ref ociReference) getBlobsToDelete(blobsUsedByDescriptorToDelete map[diges
|
|||||||
//
|
//
|
||||||
// So, NOTE: the blobPath() call below hard-codes "" even in calls where OCISharedBlobDirPath is set
|
// So, NOTE: the blobPath() call below hard-codes "" even in calls where OCISharedBlobDirPath is set
|
||||||
func (ref ociReference) deleteBlobs(blobsToDelete *set.Set[digest.Digest]) error {
|
func (ref ociReference) deleteBlobs(blobsToDelete *set.Set[digest.Digest]) error {
|
||||||
for _, digest := range blobsToDelete.Values() {
|
for digest := range blobsToDelete.All() {
|
||||||
blobPath, err := ref.blobPath(digest, "") //Only delete in the local directory, see comment above
|
blobPath, err := ref.blobPath(digest, "") //Only delete in the local directory, see comment above
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -159,7 +159,7 @@ func (ref ociReference) deleteReferenceFromIndex(referenceIndex int) error {
|
|||||||
return saveJSON(ref.indexPath(), index)
|
return saveJSON(ref.indexPath(), index)
|
||||||
}
|
}
|
||||||
|
|
||||||
func saveJSON(path string, content any) error {
|
func saveJSON(path string, content any) (retErr error) {
|
||||||
// If the file already exists, get its mode to preserve it
|
// If the file already exists, get its mode to preserve it
|
||||||
var mode fs.FileMode
|
var mode fs.FileMode
|
||||||
existingfi, err := os.Stat(path)
|
existingfi, err := os.Stat(path)
|
||||||
@ -177,7 +177,13 @@ func saveJSON(path string, content any) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
defer file.Close()
|
// since we are writing to this file, make sure we handle errors
|
||||||
|
defer func() {
|
||||||
|
closeErr := file.Close()
|
||||||
|
if retErr == nil {
|
||||||
|
retErr = closeErr
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
return json.NewEncoder(file).Encode(content)
|
return json.NewEncoder(file).Encode(content)
|
||||||
}
|
}
|
||||||
|
24
vendor/github.com/containers/image/v5/oci/layout/oci_dest.go
generated
vendored
24
vendor/github.com/containers/image/v5/oci/layout/oci_dest.go
generated
vendored
@ -17,7 +17,6 @@ import (
|
|||||||
"github.com/containers/image/v5/internal/manifest"
|
"github.com/containers/image/v5/internal/manifest"
|
||||||
"github.com/containers/image/v5/internal/private"
|
"github.com/containers/image/v5/internal/private"
|
||||||
"github.com/containers/image/v5/internal/putblobdigest"
|
"github.com/containers/image/v5/internal/putblobdigest"
|
||||||
"github.com/containers/image/v5/internal/reflink"
|
|
||||||
"github.com/containers/image/v5/types"
|
"github.com/containers/image/v5/types"
|
||||||
"github.com/containers/storage/pkg/fileutils"
|
"github.com/containers/storage/pkg/fileutils"
|
||||||
digest "github.com/opencontainers/go-digest"
|
digest "github.com/opencontainers/go-digest"
|
||||||
@ -116,7 +115,7 @@ func (d *ociImageDestination) Close() error {
|
|||||||
// WARNING: The contents of stream are being verified on the fly. Until stream.Read() returns io.EOF, the contents of the data SHOULD NOT be available
|
// WARNING: The contents of stream are being verified on the fly. Until stream.Read() returns io.EOF, the contents of the data SHOULD NOT be available
|
||||||
// to any other readers for download using the supplied digest.
|
// to any other readers for download using the supplied digest.
|
||||||
// If stream.Read() at any time, ESPECIALLY at end of input, returns an error, PutBlobWithOptions MUST 1) fail, and 2) delete any data stored so far.
|
// If stream.Read() at any time, ESPECIALLY at end of input, returns an error, PutBlobWithOptions MUST 1) fail, and 2) delete any data stored so far.
|
||||||
func (d *ociImageDestination) PutBlobWithOptions(ctx context.Context, stream io.Reader, inputInfo types.BlobInfo, options private.PutBlobOptions) (private.UploadedBlob, error) {
|
func (d *ociImageDestination) PutBlobWithOptions(ctx context.Context, stream io.Reader, inputInfo types.BlobInfo, options private.PutBlobOptions) (_ private.UploadedBlob, retErr error) {
|
||||||
blobFile, err := os.CreateTemp(d.ref.dir, "oci-put-blob")
|
blobFile, err := os.CreateTemp(d.ref.dir, "oci-put-blob")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return private.UploadedBlob{}, err
|
return private.UploadedBlob{}, err
|
||||||
@ -125,7 +124,10 @@ func (d *ociImageDestination) PutBlobWithOptions(ctx context.Context, stream io.
|
|||||||
explicitClosed := false
|
explicitClosed := false
|
||||||
defer func() {
|
defer func() {
|
||||||
if !explicitClosed {
|
if !explicitClosed {
|
||||||
blobFile.Close()
|
closeErr := blobFile.Close()
|
||||||
|
if retErr == nil {
|
||||||
|
retErr = closeErr
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if !succeeded {
|
if !succeeded {
|
||||||
os.Remove(blobFile.Name())
|
os.Remove(blobFile.Name())
|
||||||
@ -177,7 +179,10 @@ func (d *ociImageDestination) blobFileSyncAndRename(blobFile *os.File, blobDiges
|
|||||||
}
|
}
|
||||||
|
|
||||||
// need to explicitly close the file, since a rename won't otherwise work on Windows
|
// need to explicitly close the file, since a rename won't otherwise work on Windows
|
||||||
blobFile.Close()
|
err = blobFile.Close()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
*closed = true
|
*closed = true
|
||||||
|
|
||||||
if err := os.Rename(blobFile.Name(), blobPath); err != nil {
|
if err := os.Rename(blobFile.Name(), blobPath); err != nil {
|
||||||
@ -324,10 +329,10 @@ type PutBlobFromLocalFileOption struct{}
|
|||||||
// It computes, and returns, the digest and size of the used file.
|
// It computes, and returns, the digest and size of the used file.
|
||||||
//
|
//
|
||||||
// This function can be used instead of dest.PutBlob() where the ImageDestination requires PutBlob() to be called.
|
// This function can be used instead of dest.PutBlob() where the ImageDestination requires PutBlob() to be called.
|
||||||
func PutBlobFromLocalFile(ctx context.Context, dest types.ImageDestination, file string, options ...PutBlobFromLocalFileOption) (digest.Digest, int64, error) {
|
func PutBlobFromLocalFile(ctx context.Context, dest types.ImageDestination, file string, options ...PutBlobFromLocalFileOption) (_ digest.Digest, _ int64, retErr error) {
|
||||||
d, ok := dest.(*ociImageDestination)
|
d, ok := dest.(*ociImageDestination)
|
||||||
if !ok {
|
if !ok {
|
||||||
return "", -1, errors.New("internal error: PutBlobFromLocalFile called with a non-oci: destination")
|
return "", -1, errors.New("caller error: PutBlobFromLocalFile called with a non-oci: destination")
|
||||||
}
|
}
|
||||||
|
|
||||||
succeeded := false
|
succeeded := false
|
||||||
@ -338,7 +343,10 @@ func PutBlobFromLocalFile(ctx context.Context, dest types.ImageDestination, file
|
|||||||
}
|
}
|
||||||
defer func() {
|
defer func() {
|
||||||
if !blobFileClosed {
|
if !blobFileClosed {
|
||||||
blobFile.Close()
|
closeErr := blobFile.Close()
|
||||||
|
if retErr == nil {
|
||||||
|
retErr = closeErr
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if !succeeded {
|
if !succeeded {
|
||||||
os.Remove(blobFile.Name())
|
os.Remove(blobFile.Name())
|
||||||
@ -351,7 +359,7 @@ func PutBlobFromLocalFile(ctx context.Context, dest types.ImageDestination, file
|
|||||||
}
|
}
|
||||||
defer srcFile.Close()
|
defer srcFile.Close()
|
||||||
|
|
||||||
err = reflink.LinkOrCopy(srcFile, blobFile)
|
err = fileutils.ReflinkOrCopy(srcFile, blobFile)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", -1, err
|
return "", -1, err
|
||||||
}
|
}
|
||||||
|
24
vendor/github.com/containers/image/v5/oci/layout/oci_src.go
generated
vendored
24
vendor/github.com/containers/image/v5/oci/layout/oci_src.go
generated
vendored
@ -16,6 +16,7 @@ import (
|
|||||||
"github.com/containers/image/v5/internal/private"
|
"github.com/containers/image/v5/internal/private"
|
||||||
"github.com/containers/image/v5/pkg/tlsclientconfig"
|
"github.com/containers/image/v5/pkg/tlsclientconfig"
|
||||||
"github.com/containers/image/v5/types"
|
"github.com/containers/image/v5/types"
|
||||||
|
"github.com/containers/storage/pkg/fileutils"
|
||||||
"github.com/docker/go-connections/tlsconfig"
|
"github.com/docker/go-connections/tlsconfig"
|
||||||
"github.com/opencontainers/go-digest"
|
"github.com/opencontainers/go-digest"
|
||||||
imgspecv1 "github.com/opencontainers/image-spec/specs-go/v1"
|
imgspecv1 "github.com/opencontainers/image-spec/specs-go/v1"
|
||||||
@ -214,3 +215,26 @@ func getBlobSize(resp *http.Response) int64 {
|
|||||||
}
|
}
|
||||||
return size
|
return size
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetLocalBlobPath returns the local path to the blob file with the given digest.
|
||||||
|
// The returned path is checked for existence so when a non existing digest is
|
||||||
|
// given an error will be returned.
|
||||||
|
//
|
||||||
|
// Important: The returned path must be treated as read only, writing the file will
|
||||||
|
// corrupt the oci layout as the digest no longer matches.
|
||||||
|
func GetLocalBlobPath(ctx context.Context, src types.ImageSource, digest digest.Digest) (string, error) {
|
||||||
|
s, ok := src.(*ociImageSource)
|
||||||
|
if !ok {
|
||||||
|
return "", errors.New("caller error: GetLocalBlobPath called with a non-oci: source")
|
||||||
|
}
|
||||||
|
|
||||||
|
path, err := s.ref.blobPath(digest, s.sharedBlobDir)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
if err := fileutils.Exists(path); err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
return path, nil
|
||||||
|
}
|
||||||
|
11
vendor/github.com/containers/image/v5/oci/layout/oci_transport.go
generated
vendored
11
vendor/github.com/containers/image/v5/oci/layout/oci_transport.go
generated
vendored
@ -12,6 +12,7 @@ import (
|
|||||||
"github.com/containers/image/v5/directory/explicitfilepath"
|
"github.com/containers/image/v5/directory/explicitfilepath"
|
||||||
"github.com/containers/image/v5/docker/reference"
|
"github.com/containers/image/v5/docker/reference"
|
||||||
"github.com/containers/image/v5/internal/image"
|
"github.com/containers/image/v5/internal/image"
|
||||||
|
"github.com/containers/image/v5/internal/manifest"
|
||||||
"github.com/containers/image/v5/oci/internal"
|
"github.com/containers/image/v5/oci/internal"
|
||||||
"github.com/containers/image/v5/transports"
|
"github.com/containers/image/v5/transports"
|
||||||
"github.com/containers/image/v5/types"
|
"github.com/containers/image/v5/types"
|
||||||
@ -110,13 +111,13 @@ func newReference(dir, image string, sourceIndex int) (types.ImageReference, err
|
|||||||
|
|
||||||
// NewIndexReference returns an OCI reference for a path and a zero-based source manifest index.
|
// NewIndexReference returns an OCI reference for a path and a zero-based source manifest index.
|
||||||
func NewIndexReference(dir string, sourceIndex int) (types.ImageReference, error) {
|
func NewIndexReference(dir string, sourceIndex int) (types.ImageReference, error) {
|
||||||
|
if sourceIndex < 0 {
|
||||||
|
return nil, fmt.Errorf("invalid call to NewIndexReference with negative index %d", sourceIndex)
|
||||||
|
}
|
||||||
return newReference(dir, "", sourceIndex)
|
return newReference(dir, "", sourceIndex)
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewReference returns an OCI reference for a directory and a image.
|
// NewReference returns an OCI reference for a directory and an optional image name annotation (if not "").
|
||||||
//
|
|
||||||
// We do not expose an API supplying the resolvedDir; we could, but recomputing it
|
|
||||||
// is generally cheap enough that we prefer being confident about the properties of resolvedDir.
|
|
||||||
func NewReference(dir, image string) (types.ImageReference, error) {
|
func NewReference(dir, image string) (types.ImageReference, error) {
|
||||||
return newReference(dir, image, -1)
|
return newReference(dir, image, -1)
|
||||||
}
|
}
|
||||||
@ -234,7 +235,7 @@ func (ref ociReference) getManifestDescriptor() (imgspecv1.Descriptor, int, erro
|
|||||||
var unsupportedMIMETypes []string
|
var unsupportedMIMETypes []string
|
||||||
for i, md := range index.Manifests {
|
for i, md := range index.Manifests {
|
||||||
if refName, ok := md.Annotations[imgspecv1.AnnotationRefName]; ok && refName == ref.image {
|
if refName, ok := md.Annotations[imgspecv1.AnnotationRefName]; ok && refName == ref.image {
|
||||||
if md.MediaType == imgspecv1.MediaTypeImageManifest || md.MediaType == imgspecv1.MediaTypeImageIndex {
|
if md.MediaType == imgspecv1.MediaTypeImageManifest || md.MediaType == imgspecv1.MediaTypeImageIndex || md.MediaType == manifest.DockerV2Schema2MediaType || md.MediaType == manifest.DockerV2ListMediaType {
|
||||||
return md, i, nil
|
return md, i, nil
|
||||||
}
|
}
|
||||||
unsupportedMIMETypes = append(unsupportedMIMETypes, md.MediaType)
|
unsupportedMIMETypes = append(unsupportedMIMETypes, md.MediaType)
|
||||||
|
5
vendor/github.com/containers/image/v5/openshift/openshift-copies.go
generated
vendored
5
vendor/github.com/containers/image/v5/openshift/openshift-copies.go
generated
vendored
@ -571,8 +571,7 @@ func (rules *clientConfigLoadingRules) Load() (*clientcmdConfig, error) {
|
|||||||
// merge all of the struct values in the reverse order so that priority is given correctly
|
// merge all of the struct values in the reverse order so that priority is given correctly
|
||||||
// errors are not added to the list the second time
|
// errors are not added to the list the second time
|
||||||
nonMapConfig := clientcmdNewConfig()
|
nonMapConfig := clientcmdNewConfig()
|
||||||
for i := len(kubeconfigs) - 1; i >= 0; i-- {
|
for _, kubeconfig := range slices.Backward(kubeconfigs) {
|
||||||
kubeconfig := kubeconfigs[i]
|
|
||||||
if err := mergo.MergeWithOverwrite(nonMapConfig, kubeconfig); err != nil {
|
if err := mergo.MergeWithOverwrite(nonMapConfig, kubeconfig); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -921,7 +920,7 @@ func tlsCacheGet(config *restConfig) (http.RoundTripper, error) {
|
|||||||
// TLSConfigFor returns a tls.Config that will provide the transport level security defined
|
// TLSConfigFor returns a tls.Config that will provide the transport level security defined
|
||||||
// by the provided Config. Will return nil if no transport level security is requested.
|
// by the provided Config. Will return nil if no transport level security is requested.
|
||||||
func tlsConfigFor(c *restConfig) (*tls.Config, error) {
|
func tlsConfigFor(c *restConfig) (*tls.Config, error) {
|
||||||
if !(c.HasCA() || c.HasCertAuth() || c.Insecure) {
|
if !c.HasCA() && !c.HasCertAuth() && !c.Insecure {
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
if c.HasCA() && c.Insecure {
|
if c.HasCA() && c.Insecure {
|
||||||
|
28
vendor/github.com/containers/image/v5/ostree/ostree_dest.go
generated
vendored
28
vendor/github.com/containers/image/v5/ostree/ostree_dest.go
generated
vendored
@ -143,16 +143,24 @@ func (d *ostreeImageDestination) PutBlobWithOptions(ctx context.Context, stream
|
|||||||
return private.UploadedBlob{}, err
|
return private.UploadedBlob{}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
digester, stream := putblobdigest.DigestIfCanonicalUnknown(stream, inputInfo)
|
||||||
|
|
||||||
blobPath := filepath.Join(tmpDir, "content")
|
blobPath := filepath.Join(tmpDir, "content")
|
||||||
blobFile, err := os.Create(blobPath)
|
blobFile, err := os.Create(blobPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return private.UploadedBlob{}, err
|
return private.UploadedBlob{}, err
|
||||||
}
|
}
|
||||||
defer blobFile.Close()
|
size, err := func() (_ int64, retErr error) { // A scope for defer
|
||||||
|
// since we are writing to this file, make sure we handle errors
|
||||||
digester, stream := putblobdigest.DigestIfCanonicalUnknown(stream, inputInfo)
|
defer func() {
|
||||||
// TODO: This can take quite some time, and should ideally be cancellable using ctx.Done().
|
closeErr := blobFile.Close()
|
||||||
size, err := io.Copy(blobFile, stream)
|
if retErr == nil {
|
||||||
|
retErr = closeErr
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
// TODO: This can take quite some time, and should ideally be cancellable using ctx.Done().
|
||||||
|
return io.Copy(blobFile, stream)
|
||||||
|
}()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return private.UploadedBlob{}, err
|
return private.UploadedBlob{}, err
|
||||||
}
|
}
|
||||||
@ -247,9 +255,15 @@ func (d *ostreeImageDestination) ostreeCommit(repo *otbuiltin.Repo, branch strin
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func generateTarSplitMetadata(output *bytes.Buffer, file string) (digest.Digest, int64, error) {
|
func generateTarSplitMetadata(output *bytes.Buffer, file string) (_ digest.Digest, _ int64, retErr error) {
|
||||||
mfz := pgzip.NewWriter(output)
|
mfz := pgzip.NewWriter(output)
|
||||||
defer mfz.Close()
|
// since we are writing to this, make sure we handle errors
|
||||||
|
defer func() {
|
||||||
|
closeErr := mfz.Close()
|
||||||
|
if retErr == nil {
|
||||||
|
retErr = closeErr
|
||||||
|
}
|
||||||
|
}()
|
||||||
metaPacker := storage.NewJSONPacker(mfz)
|
metaPacker := storage.NewJSONPacker(mfz)
|
||||||
|
|
||||||
stream, err := os.OpenFile(file, os.O_RDONLY, 0)
|
stream, err := os.OpenFile(file, os.O_RDONLY, 0)
|
||||||
|
4
vendor/github.com/containers/image/v5/ostree/ostree_src.go
generated
vendored
4
vendor/github.com/containers/image/v5/ostree/ostree_src.go
generated
vendored
@ -250,9 +250,7 @@ func newOSTreePathFileGetter(repo *C.struct_OstreeRepo, commit string) (*ostreeP
|
|||||||
|
|
||||||
func (o ostreePathFileGetter) Get(filename string) (io.ReadCloser, error) {
|
func (o ostreePathFileGetter) Get(filename string) (io.ReadCloser, error) {
|
||||||
var file *C.GFile
|
var file *C.GFile
|
||||||
if strings.HasPrefix(filename, "./") {
|
filename, _ = strings.CutPrefix(filename, "./")
|
||||||
filename = filename[2:]
|
|
||||||
}
|
|
||||||
cfilename := C.CString(filename)
|
cfilename := C.CString(filename)
|
||||||
defer C.free(unsafe.Pointer(cfilename))
|
defer C.free(unsafe.Pointer(cfilename))
|
||||||
|
|
||||||
|
2
vendor/github.com/containers/image/v5/pkg/blobinfocache/memory/memory.go
generated
vendored
2
vendor/github.com/containers/image/v5/pkg/blobinfocache/memory/memory.go
generated
vendored
@ -240,7 +240,7 @@ func (mem *cache) candidateLocations(transport types.ImageTransport, scope types
|
|||||||
if uncompressedDigest = mem.uncompressedDigestLocked(primaryDigest); uncompressedDigest != "" {
|
if uncompressedDigest = mem.uncompressedDigestLocked(primaryDigest); uncompressedDigest != "" {
|
||||||
otherDigests := mem.digestsByUncompressed[uncompressedDigest] // nil if not present in the map
|
otherDigests := mem.digestsByUncompressed[uncompressedDigest] // nil if not present in the map
|
||||||
if otherDigests != nil {
|
if otherDigests != nil {
|
||||||
for _, d := range otherDigests.Values() {
|
for d := range otherDigests.All() {
|
||||||
if d != primaryDigest && d != uncompressedDigest {
|
if d != primaryDigest && d != uncompressedDigest {
|
||||||
res = mem.appendReplacementCandidates(res, transport, scope, d, v2Options)
|
res = mem.appendReplacementCandidates(res, transport, scope, d, v2Options)
|
||||||
}
|
}
|
||||||
|
33
vendor/github.com/containers/image/v5/pkg/blobinfocache/sqlite/sqlite.go
generated
vendored
33
vendor/github.com/containers/image/v5/pkg/blobinfocache/sqlite/sqlite.go
generated
vendored
@ -87,14 +87,20 @@ func new2(path string) (*cache, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("initializing blob info cache at %q: %w", path, err)
|
return nil, fmt.Errorf("initializing blob info cache at %q: %w", path, err)
|
||||||
}
|
}
|
||||||
defer db.Close()
|
err = func() (retErr error) { // A scope for defer
|
||||||
|
defer func() {
|
||||||
// We don’t check the schema before every operation, because that would be costly
|
closeErr := db.Close()
|
||||||
// and because we assume schema changes will be handled by using a different path.
|
if retErr == nil {
|
||||||
if err := ensureDBHasCurrentSchema(db); err != nil {
|
retErr = closeErr
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
// We don’t check the schema before every operation, because that would be costly
|
||||||
|
// and because we assume schema changes will be handled by using a different path.
|
||||||
|
return ensureDBHasCurrentSchema(db)
|
||||||
|
}()
|
||||||
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return &cache{
|
return &cache{
|
||||||
path: path,
|
path: path,
|
||||||
refCount: 0,
|
refCount: 0,
|
||||||
@ -147,25 +153,30 @@ func (sqc *cache) Close() {
|
|||||||
type void struct{} // So that we don’t have to write struct{}{} all over the place
|
type void struct{} // So that we don’t have to write struct{}{} all over the place
|
||||||
|
|
||||||
// transaction calls fn within a read-write transaction in sqc.
|
// transaction calls fn within a read-write transaction in sqc.
|
||||||
func transaction[T any](sqc *cache, fn func(tx *sql.Tx) (T, error)) (T, error) {
|
func transaction[T any](sqc *cache, fn func(tx *sql.Tx) (T, error)) (_ T, retErr error) {
|
||||||
db, closeDB, err := func() (*sql.DB, func(), error) { // A scope for defer
|
db, closeDB, err := func() (*sql.DB, func() error, error) { // A scope for defer
|
||||||
sqc.lock.Lock()
|
sqc.lock.Lock()
|
||||||
defer sqc.lock.Unlock()
|
defer sqc.lock.Unlock()
|
||||||
|
|
||||||
if sqc.db != nil {
|
if sqc.db != nil {
|
||||||
return sqc.db, func() {}, nil
|
return sqc.db, func() error { return nil }, nil
|
||||||
}
|
}
|
||||||
db, err := rawOpen(sqc.path)
|
db, err := rawOpen(sqc.path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, fmt.Errorf("opening blob info cache at %q: %w", sqc.path, err)
|
return nil, nil, fmt.Errorf("opening blob info cache at %q: %w", sqc.path, err)
|
||||||
}
|
}
|
||||||
return db, func() { db.Close() }, nil
|
return db, db.Close, nil
|
||||||
}()
|
}()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
var zeroRes T // A zero value of T
|
var zeroRes T // A zero value of T
|
||||||
return zeroRes, err
|
return zeroRes, err
|
||||||
}
|
}
|
||||||
defer closeDB()
|
defer func() {
|
||||||
|
closeErr := closeDB()
|
||||||
|
if retErr == nil {
|
||||||
|
retErr = closeErr
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
return dbTransaction(db, fn)
|
return dbTransaction(db, fn)
|
||||||
}
|
}
|
||||||
|
54
vendor/github.com/containers/image/v5/pkg/docker/config/config.go
generated
vendored
54
vendor/github.com/containers/image/v5/pkg/docker/config/config.go
generated
vendored
@ -6,6 +6,8 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/fs"
|
"io/fs"
|
||||||
|
"iter"
|
||||||
|
"maps"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
@ -93,9 +95,7 @@ func GetAllCredentials(sys *types.SystemContext) (map[string]types.DockerAuthCon
|
|||||||
// Credential helpers in the auth file have a
|
// Credential helpers in the auth file have a
|
||||||
// direct mapping to a registry, so we can just
|
// direct mapping to a registry, so we can just
|
||||||
// walk the map.
|
// walk the map.
|
||||||
for registry := range fileContents.CredHelpers {
|
allKeys.AddSeq(maps.Keys(fileContents.CredHelpers))
|
||||||
allKeys.Add(registry)
|
|
||||||
}
|
|
||||||
for key := range fileContents.AuthConfigs {
|
for key := range fileContents.AuthConfigs {
|
||||||
key := normalizeAuthFileKey(key, path.legacyFormat)
|
key := normalizeAuthFileKey(key, path.legacyFormat)
|
||||||
if key == normalizedDockerIORegistry {
|
if key == normalizedDockerIORegistry {
|
||||||
@ -115,16 +115,14 @@ func GetAllCredentials(sys *types.SystemContext) (map[string]types.DockerAuthCon
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for registry := range creds {
|
allKeys.AddSeq(maps.Keys(creds))
|
||||||
allKeys.Add(registry)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Now use `GetCredentials` to the specific auth configs for each
|
// Now use `GetCredentials` to the specific auth configs for each
|
||||||
// previously listed registry.
|
// previously listed registry.
|
||||||
allCreds := make(map[string]types.DockerAuthConfig)
|
allCreds := make(map[string]types.DockerAuthConfig)
|
||||||
for _, key := range allKeys.Values() {
|
for key := range allKeys.All() {
|
||||||
creds, err := GetCredentials(sys, key)
|
creds, err := GetCredentials(sys, key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// Note: we rely on the logging in `GetCredentials`.
|
// Note: we rely on the logging in `GetCredentials`.
|
||||||
@ -818,16 +816,10 @@ func findCredentialsInFile(key, registry string, path authPath) (types.DockerAut
|
|||||||
// Support sub-registry namespaces in auth.
|
// Support sub-registry namespaces in auth.
|
||||||
// (This is not a feature of ~/.docker/config.json; we support it even for
|
// (This is not a feature of ~/.docker/config.json; we support it even for
|
||||||
// those files as an extension.)
|
// those files as an extension.)
|
||||||
var keys []string
|
//
|
||||||
if !path.legacyFormat {
|
|
||||||
keys = authKeysForKey(key)
|
|
||||||
} else {
|
|
||||||
keys = []string{registry}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Repo or namespace keys are only supported as exact matches. For registry
|
// Repo or namespace keys are only supported as exact matches. For registry
|
||||||
// keys we prefer exact matches as well.
|
// keys we prefer exact matches as well.
|
||||||
for _, key := range keys {
|
for key := range authKeyLookupOrder(key, registry, path.legacyFormat) {
|
||||||
if val, exists := fileContents.AuthConfigs[key]; exists {
|
if val, exists := fileContents.AuthConfigs[key]; exists {
|
||||||
return decodeDockerAuth(path.path, key, val)
|
return decodeDockerAuth(path.path, key, val)
|
||||||
}
|
}
|
||||||
@ -854,25 +846,33 @@ func findCredentialsInFile(key, registry string, path authPath) (types.DockerAut
|
|||||||
return types.DockerAuthConfig{}, nil
|
return types.DockerAuthConfig{}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// authKeysForKey returns the keys matching a provided auth file key, in order
|
// authKeyLookupOrder returns a sequence for lookup keys matching (key or registry)
|
||||||
// from the best match to worst. For example,
|
// in file with legacyFormat, in order from the best match to worst.
|
||||||
|
// For example, in a non-legacy file,
|
||||||
// when given a repository key "quay.io/repo/ns/image", it returns
|
// when given a repository key "quay.io/repo/ns/image", it returns
|
||||||
// - quay.io/repo/ns/image
|
// - quay.io/repo/ns/image
|
||||||
// - quay.io/repo/ns
|
// - quay.io/repo/ns
|
||||||
// - quay.io/repo
|
// - quay.io/repo
|
||||||
// - quay.io
|
// - quay.io
|
||||||
func authKeysForKey(key string) (res []string) {
|
func authKeyLookupOrder(key, registry string, legacyFormat bool) iter.Seq[string] {
|
||||||
for {
|
return func(yield func(string) bool) {
|
||||||
res = append(res, key)
|
if legacyFormat {
|
||||||
|
_ = yield(registry) // We stop in any case
|
||||||
lastSlash := strings.LastIndex(key, "/")
|
return
|
||||||
if lastSlash == -1 {
|
|
||||||
break
|
|
||||||
}
|
}
|
||||||
key = key[:lastSlash]
|
|
||||||
}
|
|
||||||
|
|
||||||
return res
|
for {
|
||||||
|
if !yield(key) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
lastSlash := strings.LastIndex(key, "/")
|
||||||
|
if lastSlash == -1 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
key = key[:lastSlash]
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// decodeDockerAuth decodes the username and password from conf,
|
// decodeDockerAuth decodes the username and password from conf,
|
||||||
|
1
vendor/github.com/containers/image/v5/pkg/sysregistriesv2/paths_common.go
generated
vendored
1
vendor/github.com/containers/image/v5/pkg/sysregistriesv2/paths_common.go
generated
vendored
@ -1,5 +1,4 @@
|
|||||||
//go:build !freebsd
|
//go:build !freebsd
|
||||||
// +build !freebsd
|
|
||||||
|
|
||||||
package sysregistriesv2
|
package sysregistriesv2
|
||||||
|
|
||||||
|
1
vendor/github.com/containers/image/v5/pkg/sysregistriesv2/paths_freebsd.go
generated
vendored
1
vendor/github.com/containers/image/v5/pkg/sysregistriesv2/paths_freebsd.go
generated
vendored
@ -1,5 +1,4 @@
|
|||||||
//go:build freebsd
|
//go:build freebsd
|
||||||
// +build freebsd
|
|
||||||
|
|
||||||
package sysregistriesv2
|
package sysregistriesv2
|
||||||
|
|
||||||
|
12
vendor/github.com/containers/image/v5/pkg/sysregistriesv2/shortnames.go
generated
vendored
12
vendor/github.com/containers/image/v5/pkg/sysregistriesv2/shortnames.go
generated
vendored
@ -134,7 +134,7 @@ func ResolveShortNameAlias(ctx *types.SystemContext, name string) (reference.Nam
|
|||||||
// editShortNameAlias loads the aliases.conf file and changes it. If value is
|
// editShortNameAlias loads the aliases.conf file and changes it. If value is
|
||||||
// set, it adds the name-value pair as a new alias. Otherwise, it will remove
|
// set, it adds the name-value pair as a new alias. Otherwise, it will remove
|
||||||
// name from the config.
|
// name from the config.
|
||||||
func editShortNameAlias(ctx *types.SystemContext, name string, value *string) error {
|
func editShortNameAlias(ctx *types.SystemContext, name string, value *string) (retErr error) {
|
||||||
if err := validateShortName(name); err != nil {
|
if err := validateShortName(name); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -178,7 +178,13 @@ func editShortNameAlias(ctx *types.SystemContext, name string, value *string) er
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
defer f.Close()
|
// since we are writing to this file, make sure we handle err on Close()
|
||||||
|
defer func() {
|
||||||
|
closeErr := f.Close()
|
||||||
|
if retErr == nil {
|
||||||
|
retErr = closeErr
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
encoder := toml.NewEncoder(f)
|
encoder := toml.NewEncoder(f)
|
||||||
return encoder.Encode(conf)
|
return encoder.Encode(conf)
|
||||||
@ -229,7 +235,7 @@ func parseShortNameValue(alias string) (reference.Named, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
registry := reference.Domain(named)
|
registry := reference.Domain(named)
|
||||||
if !(strings.ContainsAny(registry, ".:") || registry == "localhost") {
|
if !strings.ContainsAny(registry, ".:") && registry != "localhost" {
|
||||||
return nil, fmt.Errorf("invalid alias %q: must contain registry and repository", alias)
|
return nil, fmt.Errorf("invalid alias %q: must contain registry and repository", alias)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
16
vendor/github.com/containers/image/v5/pkg/sysregistriesv2/system_registries_v2.go
generated
vendored
16
vendor/github.com/containers/image/v5/pkg/sysregistriesv2/system_registries_v2.go
generated
vendored
@ -4,9 +4,11 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/fs"
|
"io/fs"
|
||||||
|
"maps"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"reflect"
|
"reflect"
|
||||||
|
"slices"
|
||||||
"sort"
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
@ -18,7 +20,6 @@ import (
|
|||||||
"github.com/containers/storage/pkg/homedir"
|
"github.com/containers/storage/pkg/homedir"
|
||||||
"github.com/containers/storage/pkg/regexp"
|
"github.com/containers/storage/pkg/regexp"
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
"golang.org/x/exp/maps"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// systemRegistriesConfPath is the path to the system-wide registry
|
// systemRegistriesConfPath is the path to the system-wide registry
|
||||||
@ -430,7 +431,8 @@ func (config *V2RegistriesConf) postProcessRegistries() error {
|
|||||||
return fmt.Errorf("pull-from-mirror must not be set for a non-mirror registry %q", reg.Prefix)
|
return fmt.Errorf("pull-from-mirror must not be set for a non-mirror registry %q", reg.Prefix)
|
||||||
}
|
}
|
||||||
// make sure mirrors are valid
|
// make sure mirrors are valid
|
||||||
for _, mir := range reg.Mirrors {
|
for j := range reg.Mirrors {
|
||||||
|
mir := ®.Mirrors[j]
|
||||||
mir.Location, err = parseLocation(mir.Location)
|
mir.Location, err = parseLocation(mir.Location)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -1040,12 +1042,10 @@ func (c *parsedConfig) updateWithConfigurationFrom(updates *parsedConfig) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Go maps have a non-deterministic order when iterating the keys, so
|
// Go maps have a non-deterministic order when iterating the keys, so
|
||||||
// we dump them in a slice and sort it to enforce some order in
|
// we sort the keys to enforce some order in Registries slice.
|
||||||
// Registries slice. Some consumers of c/image (e.g., CRI-O) log the
|
// Some consumers of c/image (e.g., CRI-O) log the configuration
|
||||||
// configuration where a non-deterministic order could easily cause
|
// and a non-deterministic order could easily cause confusion.
|
||||||
// confusion.
|
prefixes := slices.Sorted(maps.Keys(registryMap))
|
||||||
prefixes := maps.Keys(registryMap)
|
|
||||||
sort.Strings(prefixes)
|
|
||||||
|
|
||||||
c.partialV2.Registries = []Registry{}
|
c.partialV2.Registries = []Registry{}
|
||||||
for _, prefix := range prefixes {
|
for _, prefix := range prefixes {
|
||||||
|
10
vendor/github.com/containers/image/v5/sif/load.go
generated
vendored
10
vendor/github.com/containers/image/v5/sif/load.go
generated
vendored
@ -186,12 +186,18 @@ func convertSIFToElements(ctx context.Context, sifImage *sif.FileImage, tempDir
|
|||||||
// has an -o option that allows extracting a squashfs from the SIF file directly,
|
// has an -o option that allows extracting a squashfs from the SIF file directly,
|
||||||
// but that version is not currently available in RHEL 8.
|
// but that version is not currently available in RHEL 8.
|
||||||
logrus.Debugf("Creating a temporary squashfs image %s ...", squashFSPath)
|
logrus.Debugf("Creating a temporary squashfs image %s ...", squashFSPath)
|
||||||
if err := func() error { // A scope for defer
|
if err := func() (retErr error) { // A scope for defer
|
||||||
f, err := os.Create(squashFSPath)
|
f, err := os.Create(squashFSPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
defer f.Close()
|
// since we are writing to this file, make sure we handle err on Close()
|
||||||
|
defer func() {
|
||||||
|
closeErr := f.Close()
|
||||||
|
if retErr == nil {
|
||||||
|
retErr = closeErr
|
||||||
|
}
|
||||||
|
}()
|
||||||
// TODO: This can take quite some time, and should ideally be cancellable using ctx.Done().
|
// TODO: This can take quite some time, and should ideally be cancellable using ctx.Done().
|
||||||
if _, err := io.CopyN(f, rootFS.GetReader(), rootFS.Size()); err != nil {
|
if _, err := io.CopyN(f, rootFS.GetReader(), rootFS.Size()); err != nil {
|
||||||
return err
|
return err
|
||||||
|
1
vendor/github.com/containers/image/v5/signature/fulcio_cert.go
generated
vendored
1
vendor/github.com/containers/image/v5/signature/fulcio_cert.go
generated
vendored
@ -1,5 +1,4 @@
|
|||||||
//go:build !containers_image_fulcio_stub
|
//go:build !containers_image_fulcio_stub
|
||||||
// +build !containers_image_fulcio_stub
|
|
||||||
|
|
||||||
package signature
|
package signature
|
||||||
|
|
||||||
|
1
vendor/github.com/containers/image/v5/signature/fulcio_cert_stub.go
generated
vendored
1
vendor/github.com/containers/image/v5/signature/fulcio_cert_stub.go
generated
vendored
@ -1,5 +1,4 @@
|
|||||||
//go:build containers_image_fulcio_stub
|
//go:build containers_image_fulcio_stub
|
||||||
// +build containers_image_fulcio_stub
|
|
||||||
|
|
||||||
package signature
|
package signature
|
||||||
|
|
||||||
|
1
vendor/github.com/containers/image/v5/signature/internal/rekor_set.go
generated
vendored
1
vendor/github.com/containers/image/v5/signature/internal/rekor_set.go
generated
vendored
@ -1,5 +1,4 @@
|
|||||||
//go:build !containers_image_rekor_stub
|
//go:build !containers_image_rekor_stub
|
||||||
// +build !containers_image_rekor_stub
|
|
||||||
|
|
||||||
package internal
|
package internal
|
||||||
|
|
||||||
|
1
vendor/github.com/containers/image/v5/signature/internal/rekor_set_stub.go
generated
vendored
1
vendor/github.com/containers/image/v5/signature/internal/rekor_set_stub.go
generated
vendored
@ -1,5 +1,4 @@
|
|||||||
//go:build containers_image_rekor_stub
|
//go:build containers_image_rekor_stub
|
||||||
// +build containers_image_rekor_stub
|
|
||||||
|
|
||||||
package internal
|
package internal
|
||||||
|
|
||||||
|
1
vendor/github.com/containers/image/v5/signature/mechanism_gpgme.go
generated
vendored
1
vendor/github.com/containers/image/v5/signature/mechanism_gpgme.go
generated
vendored
@ -1,5 +1,4 @@
|
|||||||
//go:build !containers_image_openpgp
|
//go:build !containers_image_openpgp
|
||||||
// +build !containers_image_openpgp
|
|
||||||
|
|
||||||
package signature
|
package signature
|
||||||
|
|
||||||
|
1
vendor/github.com/containers/image/v5/signature/mechanism_openpgp.go
generated
vendored
1
vendor/github.com/containers/image/v5/signature/mechanism_openpgp.go
generated
vendored
@ -1,5 +1,4 @@
|
|||||||
//go:build containers_image_openpgp
|
//go:build containers_image_openpgp
|
||||||
// +build containers_image_openpgp
|
|
||||||
|
|
||||||
package signature
|
package signature
|
||||||
|
|
||||||
|
1
vendor/github.com/containers/image/v5/signature/policy_paths_common.go
generated
vendored
1
vendor/github.com/containers/image/v5/signature/policy_paths_common.go
generated
vendored
@ -1,5 +1,4 @@
|
|||||||
//go:build !freebsd
|
//go:build !freebsd
|
||||||
// +build !freebsd
|
|
||||||
|
|
||||||
package signature
|
package signature
|
||||||
|
|
||||||
|
1
vendor/github.com/containers/image/v5/signature/policy_paths_freebsd.go
generated
vendored
1
vendor/github.com/containers/image/v5/signature/policy_paths_freebsd.go
generated
vendored
@ -1,5 +1,4 @@
|
|||||||
//go:build freebsd
|
//go:build freebsd
|
||||||
// +build freebsd
|
|
||||||
|
|
||||||
package signature
|
package signature
|
||||||
|
|
||||||
|
12
vendor/github.com/containers/image/v5/signature/policy_types.go
generated
vendored
12
vendor/github.com/containers/image/v5/signature/policy_types.go
generated
vendored
@ -180,18 +180,18 @@ type PRSigstoreSignedPKI interface {
|
|||||||
// prSigstoreSignedPKI contains non-fulcio certificate PKI configuration options for prSigstoreSigned
|
// prSigstoreSignedPKI contains non-fulcio certificate PKI configuration options for prSigstoreSigned
|
||||||
type prSigstoreSignedPKI struct {
|
type prSigstoreSignedPKI struct {
|
||||||
// CARootsPath a path to a file containing accepted CA root certificates, in PEM format. Exactly one of CARootsPath and CARootsData must be specified.
|
// CARootsPath a path to a file containing accepted CA root certificates, in PEM format. Exactly one of CARootsPath and CARootsData must be specified.
|
||||||
CARootsPath string `json:"caRootsPath"`
|
CARootsPath string `json:"caRootsPath,omitempty"`
|
||||||
// CARootsData contains accepted CA root certificates in PEM format, all of that base64-encoded. Exactly one of CARootsPath and CARootsData must be specified.
|
// CARootsData contains accepted CA root certificates in PEM format, all of that base64-encoded. Exactly one of CARootsPath and CARootsData must be specified.
|
||||||
CARootsData []byte `json:"caRootsData"`
|
CARootsData []byte `json:"caRootsData,omitempty"`
|
||||||
// CAIntermediatesPath a path to a file containing accepted CA intermediate certificates, in PEM format. Only one of CAIntermediatesPath or CAIntermediatesData can be specified, not both.
|
// CAIntermediatesPath a path to a file containing accepted CA intermediate certificates, in PEM format. Only one of CAIntermediatesPath or CAIntermediatesData can be specified, not both.
|
||||||
CAIntermediatesPath string `json:"caIntermediatesPath"`
|
CAIntermediatesPath string `json:"caIntermediatesPath,omitempty"`
|
||||||
// CAIntermediatesData contains accepted CA intermediate certificates in PEM format, all of that base64-encoded. Only one of CAIntermediatesPath or CAIntermediatesData can be specified, not both.
|
// CAIntermediatesData contains accepted CA intermediate certificates in PEM format, all of that base64-encoded. Only one of CAIntermediatesPath or CAIntermediatesData can be specified, not both.
|
||||||
CAIntermediatesData []byte `json:"caIntermediatesData"`
|
CAIntermediatesData []byte `json:"caIntermediatesData,omitempty"`
|
||||||
|
|
||||||
// SubjectEmail specifies the expected email address imposed on the subject to which the certificate was issued. At least one of SubjectEmail and SubjectHostname must be specified.
|
// SubjectEmail specifies the expected email address imposed on the subject to which the certificate was issued. At least one of SubjectEmail and SubjectHostname must be specified.
|
||||||
SubjectEmail string `json:"subjectEmail"`
|
SubjectEmail string `json:"subjectEmail,omitempty"`
|
||||||
// SubjectHostname specifies the expected hostname imposed on the subject to which the certificate was issued. At least one of SubjectEmail and SubjectHostname must be specified.
|
// SubjectHostname specifies the expected hostname imposed on the subject to which the certificate was issued. At least one of SubjectEmail and SubjectHostname must be specified.
|
||||||
SubjectHostname string `json:"subjectHostname"`
|
SubjectHostname string `json:"subjectHostname,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// PolicyReferenceMatch specifies a set of image identities accepted in PolicyRequirement.
|
// PolicyReferenceMatch specifies a set of image identities accepted in PolicyRequirement.
|
||||||
|
1
vendor/github.com/containers/image/v5/signature/sigstore/fulcio/fulcio.go
generated
vendored
1
vendor/github.com/containers/image/v5/signature/sigstore/fulcio/fulcio.go
generated
vendored
@ -1,5 +1,4 @@
|
|||||||
//go:build !containers_image_fulcio_stub
|
//go:build !containers_image_fulcio_stub
|
||||||
// +build !containers_image_fulcio_stub
|
|
||||||
|
|
||||||
package fulcio
|
package fulcio
|
||||||
|
|
||||||
|
1
vendor/github.com/containers/image/v5/signature/sigstore/fulcio/fulcio_stub.go
generated
vendored
1
vendor/github.com/containers/image/v5/signature/sigstore/fulcio/fulcio_stub.go
generated
vendored
@ -1,5 +1,4 @@
|
|||||||
//go:build containers_image_fulcio_stub
|
//go:build containers_image_fulcio_stub
|
||||||
// +build containers_image_fulcio_stub
|
|
||||||
|
|
||||||
package fulcio
|
package fulcio
|
||||||
|
|
||||||
|
1
vendor/github.com/containers/image/v5/signature/sigstore/rekor/rekor.go
generated
vendored
1
vendor/github.com/containers/image/v5/signature/sigstore/rekor/rekor.go
generated
vendored
@ -1,5 +1,4 @@
|
|||||||
//go:build !containers_image_rekor_stub
|
//go:build !containers_image_rekor_stub
|
||||||
// +build !containers_image_rekor_stub
|
|
||||||
|
|
||||||
package rekor
|
package rekor
|
||||||
|
|
||||||
|
1
vendor/github.com/containers/image/v5/signature/sigstore/rekor/rekor_stub.go
generated
vendored
1
vendor/github.com/containers/image/v5/signature/sigstore/rekor/rekor_stub.go
generated
vendored
@ -1,5 +1,4 @@
|
|||||||
//go:build containers_image_rekor_stub
|
//go:build containers_image_rekor_stub
|
||||||
// +build containers_image_rekor_stub
|
|
||||||
|
|
||||||
package rekor
|
package rekor
|
||||||
|
|
||||||
|
54
vendor/github.com/containers/image/v5/storage/storage_dest.go
generated
vendored
54
vendor/github.com/containers/image/v5/storage/storage_dest.go
generated
vendored
@ -1,5 +1,4 @@
|
|||||||
//go:build !containers_image_storage_stub
|
//go:build !containers_image_storage_stub
|
||||||
// +build !containers_image_storage_stub
|
|
||||||
|
|
||||||
package storage
|
package storage
|
||||||
|
|
||||||
@ -272,43 +271,56 @@ func (s *storageImageDestination) putBlobToPendingFile(stream io.Reader, blobinf
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return private.UploadedBlob{}, fmt.Errorf("creating temporary file %q: %w", filename, err)
|
return private.UploadedBlob{}, fmt.Errorf("creating temporary file %q: %w", filename, err)
|
||||||
}
|
}
|
||||||
defer file.Close()
|
blobDigest, diffID, count, err := func() (_, _ digest.Digest, _ int64, retErr error) { // A scope for defer
|
||||||
counter := ioutils.NewWriteCounter(file)
|
// since we are writing to this file, make sure we handle err on Close()
|
||||||
stream = io.TeeReader(stream, counter)
|
defer func() {
|
||||||
digester, stream := putblobdigest.DigestIfUnknown(stream, blobinfo)
|
closeErr := file.Close()
|
||||||
decompressed, err := archive.DecompressStream(stream)
|
if retErr == nil {
|
||||||
if err != nil {
|
retErr = closeErr
|
||||||
return private.UploadedBlob{}, fmt.Errorf("setting up to decompress blob: %w", err)
|
}
|
||||||
}
|
}()
|
||||||
|
counter := ioutils.NewWriteCounter(file)
|
||||||
|
stream = io.TeeReader(stream, counter)
|
||||||
|
digester, stream := putblobdigest.DigestIfUnknown(stream, blobinfo)
|
||||||
|
decompressed, err := archive.DecompressStream(stream)
|
||||||
|
if err != nil {
|
||||||
|
return "", "", 0, fmt.Errorf("setting up to decompress blob: %w", err)
|
||||||
|
|
||||||
diffID := digest.Canonical.Digester()
|
}
|
||||||
// Copy the data to the file.
|
defer decompressed.Close()
|
||||||
// TODO: This can take quite some time, and should ideally be cancellable using context.Context.
|
|
||||||
_, err = io.Copy(diffID.Hash(), decompressed)
|
diffID := digest.Canonical.Digester()
|
||||||
decompressed.Close()
|
// Copy the data to the file.
|
||||||
|
// TODO: This can take quite some time, and should ideally be cancellable using context.Context.
|
||||||
|
_, err = io.Copy(diffID.Hash(), decompressed)
|
||||||
|
if err != nil {
|
||||||
|
return "", "", 0, fmt.Errorf("storing blob to file %q: %w", filename, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return digester.Digest(), diffID.Digest(), counter.Count, nil
|
||||||
|
}()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return private.UploadedBlob{}, fmt.Errorf("storing blob to file %q: %w", filename, err)
|
return private.UploadedBlob{}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Determine blob properties, and fail if information that we were given about the blob
|
// Determine blob properties, and fail if information that we were given about the blob
|
||||||
// is known to be incorrect.
|
// is known to be incorrect.
|
||||||
blobDigest := digester.Digest()
|
|
||||||
blobSize := blobinfo.Size
|
blobSize := blobinfo.Size
|
||||||
if blobSize < 0 {
|
if blobSize < 0 {
|
||||||
blobSize = counter.Count
|
blobSize = count
|
||||||
} else if blobinfo.Size != counter.Count {
|
} else if blobinfo.Size != count {
|
||||||
return private.UploadedBlob{}, ErrBlobSizeMismatch
|
return private.UploadedBlob{}, ErrBlobSizeMismatch
|
||||||
}
|
}
|
||||||
|
|
||||||
// Record information about the blob.
|
// Record information about the blob.
|
||||||
s.lock.Lock()
|
s.lock.Lock()
|
||||||
s.lockProtected.blobDiffIDs[blobDigest] = diffID.Digest()
|
s.lockProtected.blobDiffIDs[blobDigest] = diffID
|
||||||
s.lockProtected.fileSizes[blobDigest] = counter.Count
|
s.lockProtected.fileSizes[blobDigest] = count
|
||||||
s.lockProtected.filenames[blobDigest] = filename
|
s.lockProtected.filenames[blobDigest] = filename
|
||||||
s.lock.Unlock()
|
s.lock.Unlock()
|
||||||
// This is safe because we have just computed diffID, and blobDigest was either computed
|
// This is safe because we have just computed diffID, and blobDigest was either computed
|
||||||
// by us, or validated by the caller (usually copy.digestingReader).
|
// by us, or validated by the caller (usually copy.digestingReader).
|
||||||
options.Cache.RecordDigestUncompressedPair(blobDigest, diffID.Digest())
|
options.Cache.RecordDigestUncompressedPair(blobDigest, diffID)
|
||||||
return private.UploadedBlob{
|
return private.UploadedBlob{
|
||||||
Digest: blobDigest,
|
Digest: blobDigest,
|
||||||
Size: blobSize,
|
Size: blobSize,
|
||||||
|
1
vendor/github.com/containers/image/v5/storage/storage_image.go
generated
vendored
1
vendor/github.com/containers/image/v5/storage/storage_image.go
generated
vendored
@ -1,5 +1,4 @@
|
|||||||
//go:build !containers_image_storage_stub
|
//go:build !containers_image_storage_stub
|
||||||
// +build !containers_image_storage_stub
|
|
||||||
|
|
||||||
package storage
|
package storage
|
||||||
|
|
||||||
|
1
vendor/github.com/containers/image/v5/storage/storage_reference.go
generated
vendored
1
vendor/github.com/containers/image/v5/storage/storage_reference.go
generated
vendored
@ -1,5 +1,4 @@
|
|||||||
//go:build !containers_image_storage_stub
|
//go:build !containers_image_storage_stub
|
||||||
// +build !containers_image_storage_stub
|
|
||||||
|
|
||||||
package storage
|
package storage
|
||||||
|
|
||||||
|
1
vendor/github.com/containers/image/v5/storage/storage_src.go
generated
vendored
1
vendor/github.com/containers/image/v5/storage/storage_src.go
generated
vendored
@ -1,5 +1,4 @@
|
|||||||
//go:build !containers_image_storage_stub
|
//go:build !containers_image_storage_stub
|
||||||
// +build !containers_image_storage_stub
|
|
||||||
|
|
||||||
package storage
|
package storage
|
||||||
|
|
||||||
|
14
vendor/github.com/containers/image/v5/storage/storage_transport.go
generated
vendored
14
vendor/github.com/containers/image/v5/storage/storage_transport.go
generated
vendored
@ -1,5 +1,4 @@
|
|||||||
//go:build !containers_image_storage_stub
|
//go:build !containers_image_storage_stub
|
||||||
// +build !containers_image_storage_stub
|
|
||||||
|
|
||||||
package storage
|
package storage
|
||||||
|
|
||||||
@ -362,15 +361,14 @@ func (s storageTransport) ValidatePolicyConfigurationScope(scope string) error {
|
|||||||
}
|
}
|
||||||
storeSpec := scope[1:closeIndex]
|
storeSpec := scope[1:closeIndex]
|
||||||
scope = scope[closeIndex+1:]
|
scope = scope[closeIndex+1:]
|
||||||
storeInfo := strings.SplitN(storeSpec, "@", 2)
|
if a, b, ok := strings.Cut(storeSpec, "@"); ok && a != "" && b != "" {
|
||||||
if len(storeInfo) == 1 && storeInfo[0] != "" {
|
// Two components: the driver type and the graph root.
|
||||||
// One component: the graph root.
|
if !filepath.IsAbs(b) {
|
||||||
if !filepath.IsAbs(storeInfo[0]) {
|
|
||||||
return ErrPathNotAbsolute
|
return ErrPathNotAbsolute
|
||||||
}
|
}
|
||||||
} else if len(storeInfo) == 2 && storeInfo[0] != "" && storeInfo[1] != "" {
|
} else if !ok && a != "" {
|
||||||
// Two components: the driver type and the graph root.
|
// One component: the graph root.
|
||||||
if !filepath.IsAbs(storeInfo[1]) {
|
if !filepath.IsAbs(storeSpec) {
|
||||||
return ErrPathNotAbsolute
|
return ErrPathNotAbsolute
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
1
vendor/github.com/containers/image/v5/transports/alltransports/docker_daemon.go
generated
vendored
1
vendor/github.com/containers/image/v5/transports/alltransports/docker_daemon.go
generated
vendored
@ -1,5 +1,4 @@
|
|||||||
//go:build !containers_image_docker_daemon_stub
|
//go:build !containers_image_docker_daemon_stub
|
||||||
// +build !containers_image_docker_daemon_stub
|
|
||||||
|
|
||||||
package alltransports
|
package alltransports
|
||||||
|
|
||||||
|
1
vendor/github.com/containers/image/v5/transports/alltransports/docker_daemon_stub.go
generated
vendored
1
vendor/github.com/containers/image/v5/transports/alltransports/docker_daemon_stub.go
generated
vendored
@ -1,5 +1,4 @@
|
|||||||
//go:build containers_image_docker_daemon_stub
|
//go:build containers_image_docker_daemon_stub
|
||||||
// +build containers_image_docker_daemon_stub
|
|
||||||
|
|
||||||
package alltransports
|
package alltransports
|
||||||
|
|
||||||
|
1
vendor/github.com/containers/image/v5/transports/alltransports/ostree.go
generated
vendored
1
vendor/github.com/containers/image/v5/transports/alltransports/ostree.go
generated
vendored
@ -1,5 +1,4 @@
|
|||||||
//go:build containers_image_ostree && linux
|
//go:build containers_image_ostree && linux
|
||||||
// +build containers_image_ostree,linux
|
|
||||||
|
|
||||||
package alltransports
|
package alltransports
|
||||||
|
|
||||||
|
1
vendor/github.com/containers/image/v5/transports/alltransports/ostree_stub.go
generated
vendored
1
vendor/github.com/containers/image/v5/transports/alltransports/ostree_stub.go
generated
vendored
@ -1,5 +1,4 @@
|
|||||||
//go:build !containers_image_ostree || !linux
|
//go:build !containers_image_ostree || !linux
|
||||||
// +build !containers_image_ostree !linux
|
|
||||||
|
|
||||||
package alltransports
|
package alltransports
|
||||||
|
|
||||||
|
1
vendor/github.com/containers/image/v5/transports/alltransports/storage.go
generated
vendored
1
vendor/github.com/containers/image/v5/transports/alltransports/storage.go
generated
vendored
@ -1,5 +1,4 @@
|
|||||||
//go:build !containers_image_storage_stub
|
//go:build !containers_image_storage_stub
|
||||||
// +build !containers_image_storage_stub
|
|
||||||
|
|
||||||
package alltransports
|
package alltransports
|
||||||
|
|
||||||
|
1
vendor/github.com/containers/image/v5/transports/alltransports/storage_stub.go
generated
vendored
1
vendor/github.com/containers/image/v5/transports/alltransports/storage_stub.go
generated
vendored
@ -1,5 +1,4 @@
|
|||||||
//go:build containers_image_storage_stub
|
//go:build containers_image_storage_stub
|
||||||
// +build containers_image_storage_stub
|
|
||||||
|
|
||||||
package alltransports
|
package alltransports
|
||||||
|
|
||||||
|
11
vendor/github.com/containers/image/v5/types/types.go
generated
vendored
11
vendor/github.com/containers/image/v5/types/types.go
generated
vendored
@ -3,6 +3,7 @@ package types
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"io"
|
"io"
|
||||||
|
"net/url"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/containers/image/v5/docker/reference"
|
"github.com/containers/image/v5/docker/reference"
|
||||||
@ -241,6 +242,7 @@ type BlobInfoCache interface {
|
|||||||
//
|
//
|
||||||
// WARNING: Various methods which return an object identified by digest generally do not
|
// WARNING: Various methods which return an object identified by digest generally do not
|
||||||
// validate that the returned data actually matches that digest; this is the caller’s responsibility.
|
// validate that the returned data actually matches that digest; this is the caller’s responsibility.
|
||||||
|
// See the individual methods’ documentation for potentially more details.
|
||||||
type ImageSource interface {
|
type ImageSource interface {
|
||||||
// Reference returns the reference used to set up this source, _as specified by the user_
|
// Reference returns the reference used to set up this source, _as specified by the user_
|
||||||
// (not as the image itself, or its underlying storage, claims). This can be used e.g. to determine which public keys are trusted for this image.
|
// (not as the image itself, or its underlying storage, claims). This can be used e.g. to determine which public keys are trusted for this image.
|
||||||
@ -251,10 +253,17 @@ type ImageSource interface {
|
|||||||
// It may use a remote (= slow) service.
|
// It may use a remote (= slow) service.
|
||||||
// If instanceDigest is not nil, it contains a digest of the specific manifest instance to retrieve (when the primary manifest is a manifest list);
|
// If instanceDigest is not nil, it contains a digest of the specific manifest instance to retrieve (when the primary manifest is a manifest list);
|
||||||
// this never happens if the primary manifest is not a manifest list (e.g. if the source never returns manifest lists).
|
// this never happens if the primary manifest is not a manifest list (e.g. if the source never returns manifest lists).
|
||||||
|
//
|
||||||
|
// WARNING: This is a raw access to the data as provided by the source; if the reference contains a digest, or instanceDigest is set,
|
||||||
|
// callers must enforce the digest match themselves, typically by using image.UnparsedInstance to access the manifest instead
|
||||||
|
// of calling this directly. (Compare the generic warning applicable to all of the [ImageSource] interface.)
|
||||||
GetManifest(ctx context.Context, instanceDigest *digest.Digest) ([]byte, string, error)
|
GetManifest(ctx context.Context, instanceDigest *digest.Digest) ([]byte, string, error)
|
||||||
// GetBlob returns a stream for the specified blob, and the blob’s size (or -1 if unknown).
|
// GetBlob returns a stream for the specified blob, and the blob’s size (or -1 if unknown).
|
||||||
// The Digest field in BlobInfo is guaranteed to be provided, Size may be -1 and MediaType may be optionally provided.
|
// The Digest field in BlobInfo is guaranteed to be provided, Size may be -1 and MediaType may be optionally provided.
|
||||||
// May update BlobInfoCache, preferably after it knows for certain that a blob truly exists at a specific location.
|
// May update BlobInfoCache, preferably after it knows for certain that a blob truly exists at a specific location.
|
||||||
|
//
|
||||||
|
// WARNING: This is a raw access to the data as provided by the source; callers must validate the contents
|
||||||
|
// against the blob’s digest themselves. (Compare the generic warning applicable to all of the [ImageSource] interface.)
|
||||||
GetBlob(context.Context, BlobInfo, BlobInfoCache) (io.ReadCloser, int64, error)
|
GetBlob(context.Context, BlobInfo, BlobInfoCache) (io.ReadCloser, int64, error)
|
||||||
// HasThreadSafeGetBlob indicates whether GetBlob can be executed concurrently.
|
// HasThreadSafeGetBlob indicates whether GetBlob can be executed concurrently.
|
||||||
HasThreadSafeGetBlob() bool
|
HasThreadSafeGetBlob() bool
|
||||||
@ -655,6 +664,8 @@ type SystemContext struct {
|
|||||||
// Note that this requires writing blobs to temporary files, and takes more time than the default behavior,
|
// Note that this requires writing blobs to temporary files, and takes more time than the default behavior,
|
||||||
// when the digest for a blob is unknown.
|
// when the digest for a blob is unknown.
|
||||||
DockerRegistryPushPrecomputeDigests bool
|
DockerRegistryPushPrecomputeDigests bool
|
||||||
|
// DockerProxyURL specifies proxy configuration schema (like socks5://username:password@ip:port)
|
||||||
|
DockerProxyURL *url.URL
|
||||||
|
|
||||||
// === docker/daemon.Transport overrides ===
|
// === docker/daemon.Transport overrides ===
|
||||||
// A directory containing a CA certificate (ending with ".crt"),
|
// A directory containing a CA certificate (ending with ".crt"),
|
||||||
|
4
vendor/github.com/containers/image/v5/version/version.go
generated
vendored
4
vendor/github.com/containers/image/v5/version/version.go
generated
vendored
@ -6,9 +6,9 @@ const (
|
|||||||
// VersionMajor is for an API incompatible changes
|
// VersionMajor is for an API incompatible changes
|
||||||
VersionMajor = 5
|
VersionMajor = 5
|
||||||
// VersionMinor is for functionality in a backwards-compatible manner
|
// VersionMinor is for functionality in a backwards-compatible manner
|
||||||
VersionMinor = 34
|
VersionMinor = 35
|
||||||
// VersionPatch is for backwards-compatible bug fixes
|
// VersionPatch is for backwards-compatible bug fixes
|
||||||
VersionPatch = 3
|
VersionPatch = 0
|
||||||
|
|
||||||
// VersionDev indicates development branch. Releases will be empty string.
|
// VersionDev indicates development branch. Releases will be empty string.
|
||||||
VersionDev = ""
|
VersionDev = ""
|
||||||
|
29
vendor/github.com/docker/docker-credential-helpers/client/command.go
generated
vendored
29
vendor/github.com/docker/docker-credential-helpers/client/command.go
generated
vendored
@ -15,27 +15,30 @@ type Program interface {
|
|||||||
// ProgramFunc is a type of function that initializes programs based on arguments.
|
// ProgramFunc is a type of function that initializes programs based on arguments.
|
||||||
type ProgramFunc func(args ...string) Program
|
type ProgramFunc func(args ...string) Program
|
||||||
|
|
||||||
// NewShellProgramFunc creates programs that are executed in a Shell.
|
// NewShellProgramFunc creates a [ProgramFunc] to run command in a [Shell].
|
||||||
func NewShellProgramFunc(name string) ProgramFunc {
|
func NewShellProgramFunc(command string) ProgramFunc {
|
||||||
return NewShellProgramFuncWithEnv(name, nil)
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewShellProgramFuncWithEnv creates programs that are executed in a Shell with environment variables
|
|
||||||
func NewShellProgramFuncWithEnv(name string, env *map[string]string) ProgramFunc {
|
|
||||||
return func(args ...string) Program {
|
return func(args ...string) Program {
|
||||||
return &Shell{cmd: createProgramCmdRedirectErr(name, args, env)}
|
return createProgramCmdRedirectErr(command, args, nil)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func createProgramCmdRedirectErr(commandName string, args []string, env *map[string]string) *exec.Cmd {
|
// NewShellProgramFuncWithEnv creates a [ProgramFunc] tu run command
|
||||||
programCmd := exec.Command(commandName, args...)
|
// in a [Shell] with the given environment variables.
|
||||||
|
func NewShellProgramFuncWithEnv(command string, env *map[string]string) ProgramFunc {
|
||||||
|
return func(args ...string) Program {
|
||||||
|
return createProgramCmdRedirectErr(command, args, env)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func createProgramCmdRedirectErr(command string, args []string, env *map[string]string) *Shell {
|
||||||
|
ec := exec.Command(command, args...)
|
||||||
if env != nil {
|
if env != nil {
|
||||||
for k, v := range *env {
|
for k, v := range *env {
|
||||||
programCmd.Env = append(programCmd.Environ(), k+"="+v)
|
ec.Env = append(ec.Environ(), k+"="+v)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
programCmd.Stderr = os.Stderr
|
ec.Stderr = os.Stderr
|
||||||
return programCmd
|
return &Shell{cmd: ec}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Shell invokes shell commands to talk with a remote credentials-helper.
|
// Shell invokes shell commands to talk with a remote credentials-helper.
|
||||||
|
32
vendor/github.com/docker/docker/AUTHORS
generated
vendored
32
vendor/github.com/docker/docker/AUTHORS
generated
vendored
@ -2,7 +2,9 @@
|
|||||||
# This file lists all contributors to the repository.
|
# This file lists all contributors to the repository.
|
||||||
# See hack/generate-authors.sh to make modifications.
|
# See hack/generate-authors.sh to make modifications.
|
||||||
|
|
||||||
|
7sunarni <710720732@qq.com>
|
||||||
Aanand Prasad <aanand.prasad@gmail.com>
|
Aanand Prasad <aanand.prasad@gmail.com>
|
||||||
|
Aarni Koskela <akx@iki.fi>
|
||||||
Aaron Davidson <aaron@databricks.com>
|
Aaron Davidson <aaron@databricks.com>
|
||||||
Aaron Feng <aaron.feng@gmail.com>
|
Aaron Feng <aaron.feng@gmail.com>
|
||||||
Aaron Hnatiw <aaron@griddio.com>
|
Aaron Hnatiw <aaron@griddio.com>
|
||||||
@ -11,6 +13,7 @@ Aaron L. Xu <liker.xu@foxmail.com>
|
|||||||
Aaron Lehmann <alehmann@netflix.com>
|
Aaron Lehmann <alehmann@netflix.com>
|
||||||
Aaron Welch <welch@packet.net>
|
Aaron Welch <welch@packet.net>
|
||||||
Aaron Yoshitake <airandfingers@gmail.com>
|
Aaron Yoshitake <airandfingers@gmail.com>
|
||||||
|
Abdur Rehman <abdur_rehman@mentor.com>
|
||||||
Abel Muiño <amuino@gmail.com>
|
Abel Muiño <amuino@gmail.com>
|
||||||
Abhijeet Kasurde <akasurde@redhat.com>
|
Abhijeet Kasurde <akasurde@redhat.com>
|
||||||
Abhinandan Prativadi <aprativadi@gmail.com>
|
Abhinandan Prativadi <aprativadi@gmail.com>
|
||||||
@ -24,9 +27,11 @@ Adam Avilla <aavilla@yp.com>
|
|||||||
Adam Dobrawy <naczelnik@jawnosc.tk>
|
Adam Dobrawy <naczelnik@jawnosc.tk>
|
||||||
Adam Eijdenberg <adam.eijdenberg@gmail.com>
|
Adam Eijdenberg <adam.eijdenberg@gmail.com>
|
||||||
Adam Kunk <adam.kunk@tiaa-cref.org>
|
Adam Kunk <adam.kunk@tiaa-cref.org>
|
||||||
|
Adam Lamers <adam.lamers@wmsdev.pl>
|
||||||
Adam Miller <admiller@redhat.com>
|
Adam Miller <admiller@redhat.com>
|
||||||
Adam Mills <adam@armills.info>
|
Adam Mills <adam@armills.info>
|
||||||
Adam Pointer <adam.pointer@skybettingandgaming.com>
|
Adam Pointer <adam.pointer@skybettingandgaming.com>
|
||||||
|
Adam Simon <adamsimon85100@gmail.com>
|
||||||
Adam Singer <financeCoding@gmail.com>
|
Adam Singer <financeCoding@gmail.com>
|
||||||
Adam Thornton <adam.thornton@maryville.com>
|
Adam Thornton <adam.thornton@maryville.com>
|
||||||
Adam Walz <adam@adamwalz.net>
|
Adam Walz <adam@adamwalz.net>
|
||||||
@ -119,6 +124,7 @@ amangoel <amangoel@gmail.com>
|
|||||||
Amen Belayneh <amenbelayneh@gmail.com>
|
Amen Belayneh <amenbelayneh@gmail.com>
|
||||||
Ameya Gawde <agawde@mirantis.com>
|
Ameya Gawde <agawde@mirantis.com>
|
||||||
Amir Goldstein <amir73il@aquasec.com>
|
Amir Goldstein <amir73il@aquasec.com>
|
||||||
|
AmirBuddy <badinlu.amirhossein@gmail.com>
|
||||||
Amit Bakshi <ambakshi@gmail.com>
|
Amit Bakshi <ambakshi@gmail.com>
|
||||||
Amit Krishnan <amit.krishnan@oracle.com>
|
Amit Krishnan <amit.krishnan@oracle.com>
|
||||||
Amit Shukla <amit.shukla@docker.com>
|
Amit Shukla <amit.shukla@docker.com>
|
||||||
@ -168,6 +174,7 @@ Andrey Kolomentsev <andrey.kolomentsev@docker.com>
|
|||||||
Andrey Petrov <andrey.petrov@shazow.net>
|
Andrey Petrov <andrey.petrov@shazow.net>
|
||||||
Andrey Stolbovsky <andrey.stolbovsky@gmail.com>
|
Andrey Stolbovsky <andrey.stolbovsky@gmail.com>
|
||||||
André Martins <aanm90@gmail.com>
|
André Martins <aanm90@gmail.com>
|
||||||
|
Andrés Maldonado <maldonado@codelutin.com>
|
||||||
Andy Chambers <anchambers@paypal.com>
|
Andy Chambers <anchambers@paypal.com>
|
||||||
andy diller <dillera@gmail.com>
|
andy diller <dillera@gmail.com>
|
||||||
Andy Goldstein <agoldste@redhat.com>
|
Andy Goldstein <agoldste@redhat.com>
|
||||||
@ -219,6 +226,7 @@ Artur Meyster <arthurfbi@yahoo.com>
|
|||||||
Arun Gupta <arun.gupta@gmail.com>
|
Arun Gupta <arun.gupta@gmail.com>
|
||||||
Asad Saeeduddin <masaeedu@gmail.com>
|
Asad Saeeduddin <masaeedu@gmail.com>
|
||||||
Asbjørn Enge <asbjorn@hanafjedle.net>
|
Asbjørn Enge <asbjorn@hanafjedle.net>
|
||||||
|
Ashly Mathew <ashly.mathew@sap.com>
|
||||||
Austin Vazquez <macedonv@amazon.com>
|
Austin Vazquez <macedonv@amazon.com>
|
||||||
averagehuman <averagehuman@users.noreply.github.com>
|
averagehuman <averagehuman@users.noreply.github.com>
|
||||||
Avi Das <andas222@gmail.com>
|
Avi Das <andas222@gmail.com>
|
||||||
@ -345,6 +353,7 @@ Chance Zibolski <chance.zibolski@gmail.com>
|
|||||||
Chander Govindarajan <chandergovind@gmail.com>
|
Chander Govindarajan <chandergovind@gmail.com>
|
||||||
Chanhun Jeong <keyolk@gmail.com>
|
Chanhun Jeong <keyolk@gmail.com>
|
||||||
Chao Wang <wangchao.fnst@cn.fujitsu.com>
|
Chao Wang <wangchao.fnst@cn.fujitsu.com>
|
||||||
|
Charity Kathure <ckathure@microsoft.com>
|
||||||
Charles Chan <charleswhchan@users.noreply.github.com>
|
Charles Chan <charleswhchan@users.noreply.github.com>
|
||||||
Charles Hooper <charles.hooper@dotcloud.com>
|
Charles Hooper <charles.hooper@dotcloud.com>
|
||||||
Charles Law <claw@conduce.com>
|
Charles Law <claw@conduce.com>
|
||||||
@ -480,6 +489,7 @@ Daniel Farrell <dfarrell@redhat.com>
|
|||||||
Daniel Garcia <daniel@danielgarcia.info>
|
Daniel Garcia <daniel@danielgarcia.info>
|
||||||
Daniel Gasienica <daniel@gasienica.ch>
|
Daniel Gasienica <daniel@gasienica.ch>
|
||||||
Daniel Grunwell <mwgrunny@gmail.com>
|
Daniel Grunwell <mwgrunny@gmail.com>
|
||||||
|
Daniel Guns <danbguns@gmail.com>
|
||||||
Daniel Helfand <helfand.4@gmail.com>
|
Daniel Helfand <helfand.4@gmail.com>
|
||||||
Daniel Hiltgen <daniel.hiltgen@docker.com>
|
Daniel Hiltgen <daniel.hiltgen@docker.com>
|
||||||
Daniel J Walsh <dwalsh@redhat.com>
|
Daniel J Walsh <dwalsh@redhat.com>
|
||||||
@ -763,6 +773,7 @@ Frank Macreery <frank@macreery.com>
|
|||||||
Frank Rosquin <frank.rosquin+github@gmail.com>
|
Frank Rosquin <frank.rosquin+github@gmail.com>
|
||||||
Frank Villaro-Dixon <frank.villarodixon@merkle.com>
|
Frank Villaro-Dixon <frank.villarodixon@merkle.com>
|
||||||
Frank Yang <yyb196@gmail.com>
|
Frank Yang <yyb196@gmail.com>
|
||||||
|
François Scala <github@arcenik.net>
|
||||||
Fred Lifton <fred.lifton@docker.com>
|
Fred Lifton <fred.lifton@docker.com>
|
||||||
Frederick F. Kautz IV <fkautz@redhat.com>
|
Frederick F. Kautz IV <fkautz@redhat.com>
|
||||||
Frederico F. de Oliveira <FreddieOliveira@users.noreply.github.com>
|
Frederico F. de Oliveira <FreddieOliveira@users.noreply.github.com>
|
||||||
@ -798,6 +809,7 @@ GennadySpb <lipenkov@gmail.com>
|
|||||||
Geoff Levand <geoff@infradead.org>
|
Geoff Levand <geoff@infradead.org>
|
||||||
Geoffrey Bachelet <grosfrais@gmail.com>
|
Geoffrey Bachelet <grosfrais@gmail.com>
|
||||||
Geon Kim <geon0250@gmail.com>
|
Geon Kim <geon0250@gmail.com>
|
||||||
|
George Adams <georgeadams1995@gmail.com>
|
||||||
George Kontridze <george@bugsnag.com>
|
George Kontridze <george@bugsnag.com>
|
||||||
George Ma <mayangang@outlook.com>
|
George Ma <mayangang@outlook.com>
|
||||||
George MacRorie <gmacr31@gmail.com>
|
George MacRorie <gmacr31@gmail.com>
|
||||||
@ -826,6 +838,7 @@ Gopikannan Venugopalsamy <gopikannan.venugopalsamy@gmail.com>
|
|||||||
Gosuke Miyashita <gosukenator@gmail.com>
|
Gosuke Miyashita <gosukenator@gmail.com>
|
||||||
Gou Rao <gou@portworx.com>
|
Gou Rao <gou@portworx.com>
|
||||||
Govinda Fichtner <govinda.fichtner@googlemail.com>
|
Govinda Fichtner <govinda.fichtner@googlemail.com>
|
||||||
|
Grace Choi <grace.54109@gmail.com>
|
||||||
Grant Millar <rid@cylo.io>
|
Grant Millar <rid@cylo.io>
|
||||||
Grant Reaber <grant.reaber@gmail.com>
|
Grant Reaber <grant.reaber@gmail.com>
|
||||||
Graydon Hoare <graydon@pobox.com>
|
Graydon Hoare <graydon@pobox.com>
|
||||||
@ -966,6 +979,7 @@ James Nugent <james@jen20.com>
|
|||||||
James Sanders <james3sanders@gmail.com>
|
James Sanders <james3sanders@gmail.com>
|
||||||
James Turnbull <james@lovedthanlost.net>
|
James Turnbull <james@lovedthanlost.net>
|
||||||
James Watkins-Harvey <jwatkins@progi-media.com>
|
James Watkins-Harvey <jwatkins@progi-media.com>
|
||||||
|
Jameson Hyde <jameson.hyde@docker.com>
|
||||||
Jamie Hannaford <jamie@limetree.org>
|
Jamie Hannaford <jamie@limetree.org>
|
||||||
Jamshid Afshar <jafshar@yahoo.com>
|
Jamshid Afshar <jafshar@yahoo.com>
|
||||||
Jan Breig <git@pygos.space>
|
Jan Breig <git@pygos.space>
|
||||||
@ -1064,13 +1078,16 @@ Jim Perrin <jperrin@centos.org>
|
|||||||
Jimmy Cuadra <jimmy@jimmycuadra.com>
|
Jimmy Cuadra <jimmy@jimmycuadra.com>
|
||||||
Jimmy Puckett <jimmy.puckett@spinen.com>
|
Jimmy Puckett <jimmy.puckett@spinen.com>
|
||||||
Jimmy Song <rootsongjc@gmail.com>
|
Jimmy Song <rootsongjc@gmail.com>
|
||||||
|
jinjiadu <jinjiadu@aliyun.com>
|
||||||
Jinsoo Park <cellpjs@gmail.com>
|
Jinsoo Park <cellpjs@gmail.com>
|
||||||
Jintao Zhang <zhangjintao9020@gmail.com>
|
Jintao Zhang <zhangjintao9020@gmail.com>
|
||||||
Jiri Appl <jiria@microsoft.com>
|
Jiri Appl <jiria@microsoft.com>
|
||||||
Jiri Popelka <jpopelka@redhat.com>
|
Jiri Popelka <jpopelka@redhat.com>
|
||||||
Jiuyue Ma <majiuyue@huawei.com>
|
Jiuyue Ma <majiuyue@huawei.com>
|
||||||
Jiří Župka <jzupka@redhat.com>
|
Jiří Župka <jzupka@redhat.com>
|
||||||
|
jjimbo137 <115816493+jjimbo137@users.noreply.github.com>
|
||||||
Joakim Roubert <joakim.roubert@axis.com>
|
Joakim Roubert <joakim.roubert@axis.com>
|
||||||
|
Joan Grau <grautxo.dev@proton.me>
|
||||||
Joao Fernandes <joao.fernandes@docker.com>
|
Joao Fernandes <joao.fernandes@docker.com>
|
||||||
Joao Trindade <trindade.joao@gmail.com>
|
Joao Trindade <trindade.joao@gmail.com>
|
||||||
Joe Beda <joe.github@bedafamily.com>
|
Joe Beda <joe.github@bedafamily.com>
|
||||||
@ -1155,6 +1172,7 @@ Josiah Kiehl <jkiehl@riotgames.com>
|
|||||||
José Tomás Albornoz <jojo@eljojo.net>
|
José Tomás Albornoz <jojo@eljojo.net>
|
||||||
Joyce Jang <mail@joycejang.com>
|
Joyce Jang <mail@joycejang.com>
|
||||||
JP <jpellerin@leapfrogonline.com>
|
JP <jpellerin@leapfrogonline.com>
|
||||||
|
JSchltggr <jschltggr@gmail.com>
|
||||||
Julian Taylor <jtaylor.debian@googlemail.com>
|
Julian Taylor <jtaylor.debian@googlemail.com>
|
||||||
Julien Barbier <write0@gmail.com>
|
Julien Barbier <write0@gmail.com>
|
||||||
Julien Bisconti <veggiemonk@users.noreply.github.com>
|
Julien Bisconti <veggiemonk@users.noreply.github.com>
|
||||||
@ -1289,6 +1307,7 @@ Laura Brehm <laurabrehm@hey.com>
|
|||||||
Laura Frank <ljfrank@gmail.com>
|
Laura Frank <ljfrank@gmail.com>
|
||||||
Laurent Bernaille <laurent.bernaille@datadoghq.com>
|
Laurent Bernaille <laurent.bernaille@datadoghq.com>
|
||||||
Laurent Erignoux <lerignoux@gmail.com>
|
Laurent Erignoux <lerignoux@gmail.com>
|
||||||
|
Laurent Goderre <laurent.goderre@docker.com>
|
||||||
Laurie Voss <github@seldo.com>
|
Laurie Voss <github@seldo.com>
|
||||||
Leandro Motta Barros <lmb@stackedboxes.org>
|
Leandro Motta Barros <lmb@stackedboxes.org>
|
||||||
Leandro Siqueira <leandro.siqueira@gmail.com>
|
Leandro Siqueira <leandro.siqueira@gmail.com>
|
||||||
@ -1369,6 +1388,7 @@ Madhan Raj Mookkandy <MadhanRaj.Mookkandy@microsoft.com>
|
|||||||
Madhav Puri <madhav.puri@gmail.com>
|
Madhav Puri <madhav.puri@gmail.com>
|
||||||
Madhu Venugopal <mavenugo@gmail.com>
|
Madhu Venugopal <mavenugo@gmail.com>
|
||||||
Mageee <fangpuyi@foxmail.com>
|
Mageee <fangpuyi@foxmail.com>
|
||||||
|
maggie44 <64841595+maggie44@users.noreply.github.com>
|
||||||
Mahesh Tiyyagura <tmahesh@gmail.com>
|
Mahesh Tiyyagura <tmahesh@gmail.com>
|
||||||
malnick <malnick@gmail..com>
|
malnick <malnick@gmail..com>
|
||||||
Malte Janduda <mail@janduda.net>
|
Malte Janduda <mail@janduda.net>
|
||||||
@ -1579,6 +1599,7 @@ Muayyad Alsadi <alsadi@gmail.com>
|
|||||||
Muhammad Zohaib Aslam <zohaibse011@gmail.com>
|
Muhammad Zohaib Aslam <zohaibse011@gmail.com>
|
||||||
Mustafa Akın <mustafa91@gmail.com>
|
Mustafa Akın <mustafa91@gmail.com>
|
||||||
Muthukumar R <muthur@gmail.com>
|
Muthukumar R <muthur@gmail.com>
|
||||||
|
Myeongjoon Kim <kimmj8409@gmail.com>
|
||||||
Máximo Cuadros <mcuadros@gmail.com>
|
Máximo Cuadros <mcuadros@gmail.com>
|
||||||
Médi-Rémi Hashim <medimatrix@users.noreply.github.com>
|
Médi-Rémi Hashim <medimatrix@users.noreply.github.com>
|
||||||
Nace Oroz <orkica@gmail.com>
|
Nace Oroz <orkica@gmail.com>
|
||||||
@ -1593,6 +1614,7 @@ Natasha Jarus <linuxmercedes@gmail.com>
|
|||||||
Nate Brennand <nate.brennand@clever.com>
|
Nate Brennand <nate.brennand@clever.com>
|
||||||
Nate Eagleson <nate@nateeag.com>
|
Nate Eagleson <nate@nateeag.com>
|
||||||
Nate Jones <nate@endot.org>
|
Nate Jones <nate@endot.org>
|
||||||
|
Nathan Baulch <nathan.baulch@gmail.com>
|
||||||
Nathan Carlson <carl4403@umn.edu>
|
Nathan Carlson <carl4403@umn.edu>
|
||||||
Nathan Herald <me@nathanherald.com>
|
Nathan Herald <me@nathanherald.com>
|
||||||
Nathan Hsieh <hsieh.nathan@gmail.com>
|
Nathan Hsieh <hsieh.nathan@gmail.com>
|
||||||
@ -1655,6 +1677,7 @@ Nuutti Kotivuori <naked@iki.fi>
|
|||||||
nzwsch <hi@nzwsch.com>
|
nzwsch <hi@nzwsch.com>
|
||||||
O.S. Tezer <ostezer@gmail.com>
|
O.S. Tezer <ostezer@gmail.com>
|
||||||
objectified <objectified@gmail.com>
|
objectified <objectified@gmail.com>
|
||||||
|
Octol1ttle <l1ttleofficial@outlook.com>
|
||||||
Odin Ugedal <odin@ugedal.com>
|
Odin Ugedal <odin@ugedal.com>
|
||||||
Oguz Bilgic <fisyonet@gmail.com>
|
Oguz Bilgic <fisyonet@gmail.com>
|
||||||
Oh Jinkyun <tintypemolly@gmail.com>
|
Oh Jinkyun <tintypemolly@gmail.com>
|
||||||
@ -1763,6 +1786,7 @@ Pierre Carrier <pierre@meteor.com>
|
|||||||
Pierre Dal-Pra <dalpra.pierre@gmail.com>
|
Pierre Dal-Pra <dalpra.pierre@gmail.com>
|
||||||
Pierre Wacrenier <pierre.wacrenier@gmail.com>
|
Pierre Wacrenier <pierre.wacrenier@gmail.com>
|
||||||
Pierre-Alain RIVIERE <pariviere@ippon.fr>
|
Pierre-Alain RIVIERE <pariviere@ippon.fr>
|
||||||
|
pinglanlu <pinglanlu@outlook.com>
|
||||||
Piotr Bogdan <ppbogdan@gmail.com>
|
Piotr Bogdan <ppbogdan@gmail.com>
|
||||||
Piotr Karbowski <piotr.karbowski@protonmail.ch>
|
Piotr Karbowski <piotr.karbowski@protonmail.ch>
|
||||||
Porjo <porjo38@yahoo.com.au>
|
Porjo <porjo38@yahoo.com.au>
|
||||||
@ -1790,6 +1814,7 @@ Quentin Tayssier <qtayssier@gmail.com>
|
|||||||
r0n22 <cameron.regan@gmail.com>
|
r0n22 <cameron.regan@gmail.com>
|
||||||
Rachit Sharma <rachitsharma613@gmail.com>
|
Rachit Sharma <rachitsharma613@gmail.com>
|
||||||
Radostin Stoyanov <rstoyanov1@gmail.com>
|
Radostin Stoyanov <rstoyanov1@gmail.com>
|
||||||
|
Rafael Fernández López <ereslibre@ereslibre.es>
|
||||||
Rafal Jeczalik <rjeczalik@gmail.com>
|
Rafal Jeczalik <rjeczalik@gmail.com>
|
||||||
Rafe Colton <rafael.colton@gmail.com>
|
Rafe Colton <rafael.colton@gmail.com>
|
||||||
Raghavendra K T <raghavendra.kt@linux.vnet.ibm.com>
|
Raghavendra K T <raghavendra.kt@linux.vnet.ibm.com>
|
||||||
@ -1856,7 +1881,7 @@ Robin Speekenbrink <robin@kingsquare.nl>
|
|||||||
Robin Thoni <robin@rthoni.com>
|
Robin Thoni <robin@rthoni.com>
|
||||||
robpc <rpcann@gmail.com>
|
robpc <rpcann@gmail.com>
|
||||||
Rodolfo Carvalho <rhcarvalho@gmail.com>
|
Rodolfo Carvalho <rhcarvalho@gmail.com>
|
||||||
Rodrigo Campos <rodrigo@kinvolk.io>
|
Rodrigo Campos <rodrigoca@microsoft.com>
|
||||||
Rodrigo Vaz <rodrigo.vaz@gmail.com>
|
Rodrigo Vaz <rodrigo.vaz@gmail.com>
|
||||||
Roel Van Nyen <roel.vannyen@gmail.com>
|
Roel Van Nyen <roel.vannyen@gmail.com>
|
||||||
Roger Peppe <rogpeppe@gmail.com>
|
Roger Peppe <rogpeppe@gmail.com>
|
||||||
@ -1995,6 +2020,7 @@ Sevki Hasirci <s@sevki.org>
|
|||||||
Shane Canon <scanon@lbl.gov>
|
Shane Canon <scanon@lbl.gov>
|
||||||
Shane da Silva <shane@dasilva.io>
|
Shane da Silva <shane@dasilva.io>
|
||||||
Shaun Kaasten <shaunk@gmail.com>
|
Shaun Kaasten <shaunk@gmail.com>
|
||||||
|
Shaun Thompson <shaun.thompson@docker.com>
|
||||||
shaunol <shaunol@gmail.com>
|
shaunol <shaunol@gmail.com>
|
||||||
Shawn Landden <shawn@churchofgit.com>
|
Shawn Landden <shawn@churchofgit.com>
|
||||||
Shawn Siefkas <shawn.siefkas@meredith.com>
|
Shawn Siefkas <shawn.siefkas@meredith.com>
|
||||||
@ -2013,6 +2039,7 @@ Shijun Qin <qinshijun16@mails.ucas.ac.cn>
|
|||||||
Shishir Mahajan <shishir.mahajan@redhat.com>
|
Shishir Mahajan <shishir.mahajan@redhat.com>
|
||||||
Shoubhik Bose <sbose78@gmail.com>
|
Shoubhik Bose <sbose78@gmail.com>
|
||||||
Shourya Sarcar <shourya.sarcar@gmail.com>
|
Shourya Sarcar <shourya.sarcar@gmail.com>
|
||||||
|
Shreenidhi Shedi <shreenidhi.shedi@broadcom.com>
|
||||||
Shu-Wai Chow <shu-wai.chow@seattlechildrens.org>
|
Shu-Wai Chow <shu-wai.chow@seattlechildrens.org>
|
||||||
shuai-z <zs.broccoli@gmail.com>
|
shuai-z <zs.broccoli@gmail.com>
|
||||||
Shukui Yang <yangshukui@huawei.com>
|
Shukui Yang <yangshukui@huawei.com>
|
||||||
@ -2100,6 +2127,7 @@ Sébastien Stormacq <sebsto@users.noreply.github.com>
|
|||||||
Sören Tempel <soeren+git@soeren-tempel.net>
|
Sören Tempel <soeren+git@soeren-tempel.net>
|
||||||
Tabakhase <mail@tabakhase.com>
|
Tabakhase <mail@tabakhase.com>
|
||||||
Tadej Janež <tadej.j@nez.si>
|
Tadej Janež <tadej.j@nez.si>
|
||||||
|
Tadeusz Dudkiewicz <tadeusz.dudkiewicz@rtbhouse.com>
|
||||||
Takuto Sato <tockn.jp@gmail.com>
|
Takuto Sato <tockn.jp@gmail.com>
|
||||||
tang0th <tang0th@gmx.com>
|
tang0th <tang0th@gmx.com>
|
||||||
Tangi Colin <tangicolin@gmail.com>
|
Tangi Colin <tangicolin@gmail.com>
|
||||||
@ -2107,6 +2135,7 @@ Tatsuki Sugiura <sugi@nemui.org>
|
|||||||
Tatsushi Inagaki <e29253@jp.ibm.com>
|
Tatsushi Inagaki <e29253@jp.ibm.com>
|
||||||
Taylan Isikdemir <taylani@google.com>
|
Taylan Isikdemir <taylani@google.com>
|
||||||
Taylor Jones <monitorjbl@gmail.com>
|
Taylor Jones <monitorjbl@gmail.com>
|
||||||
|
tcpdumppy <847462026@qq.com>
|
||||||
Ted M. Young <tedyoung@gmail.com>
|
Ted M. Young <tedyoung@gmail.com>
|
||||||
Tehmasp Chaudhri <tehmasp@gmail.com>
|
Tehmasp Chaudhri <tehmasp@gmail.com>
|
||||||
Tejaswini Duggaraju <naduggar@microsoft.com>
|
Tejaswini Duggaraju <naduggar@microsoft.com>
|
||||||
@ -2391,6 +2420,7 @@ You-Sheng Yang (楊有勝) <vicamo@gmail.com>
|
|||||||
youcai <omegacoleman@gmail.com>
|
youcai <omegacoleman@gmail.com>
|
||||||
Youcef YEKHLEF <yyekhlef@gmail.com>
|
Youcef YEKHLEF <yyekhlef@gmail.com>
|
||||||
Youfu Zhang <zhangyoufu@gmail.com>
|
Youfu Zhang <zhangyoufu@gmail.com>
|
||||||
|
YR Chen <stevapple@icloud.com>
|
||||||
Yu Changchun <yuchangchun1@huawei.com>
|
Yu Changchun <yuchangchun1@huawei.com>
|
||||||
Yu Chengxia <yuchengxia@huawei.com>
|
Yu Chengxia <yuchengxia@huawei.com>
|
||||||
Yu Peng <yu.peng36@zte.com.cn>
|
Yu Peng <yu.peng36@zte.com.cn>
|
||||||
|
2
vendor/github.com/docker/docker/api/common.go
generated
vendored
2
vendor/github.com/docker/docker/api/common.go
generated
vendored
@ -3,7 +3,7 @@ package api // import "github.com/docker/docker/api"
|
|||||||
// Common constants for daemon and client.
|
// Common constants for daemon and client.
|
||||||
const (
|
const (
|
||||||
// DefaultVersion of the current REST API.
|
// DefaultVersion of the current REST API.
|
||||||
DefaultVersion = "1.47"
|
DefaultVersion = "1.48"
|
||||||
|
|
||||||
// MinSupportedAPIVersion is the minimum API version that can be supported
|
// MinSupportedAPIVersion is the minimum API version that can be supported
|
||||||
// by the API server, specified as "major.minor". Note that the daemon
|
// by the API server, specified as "major.minor". Note that the daemon
|
||||||
|
1839
vendor/github.com/docker/docker/api/swagger.yaml
generated
vendored
1839
vendor/github.com/docker/docker/api/swagger.yaml
generated
vendored
File diff suppressed because it is too large
Load Diff
27
vendor/github.com/docker/docker/api/types/client.go
generated
vendored
27
vendor/github.com/docker/docker/api/types/client.go
generated
vendored
@ -11,7 +11,7 @@ import (
|
|||||||
"github.com/docker/docker/api/types/registry"
|
"github.com/docker/docker/api/types/registry"
|
||||||
)
|
)
|
||||||
|
|
||||||
// NewHijackedResponse intializes a HijackedResponse type
|
// NewHijackedResponse initializes a [HijackedResponse] type.
|
||||||
func NewHijackedResponse(conn net.Conn, mediaType string) HijackedResponse {
|
func NewHijackedResponse(conn net.Conn, mediaType string) HijackedResponse {
|
||||||
return HijackedResponse{Conn: conn, Reader: bufio.NewReader(conn), mediaType: mediaType}
|
return HijackedResponse{Conn: conn, Reader: bufio.NewReader(conn), mediaType: mediaType}
|
||||||
}
|
}
|
||||||
@ -129,14 +129,6 @@ type ImageBuildResponse struct {
|
|||||||
OSType string
|
OSType string
|
||||||
}
|
}
|
||||||
|
|
||||||
// RequestPrivilegeFunc is a function interface that
|
|
||||||
// clients can supply to retry operations after
|
|
||||||
// getting an authorization error.
|
|
||||||
// This function returns the registry authentication
|
|
||||||
// header value in base 64 format, or an error
|
|
||||||
// if the privilege request fails.
|
|
||||||
type RequestPrivilegeFunc func(context.Context) (string, error)
|
|
||||||
|
|
||||||
// NodeListOptions holds parameters to list nodes with.
|
// NodeListOptions holds parameters to list nodes with.
|
||||||
type NodeListOptions struct {
|
type NodeListOptions struct {
|
||||||
Filters filters.Args
|
Filters filters.Args
|
||||||
@ -235,11 +227,18 @@ type PluginDisableOptions struct {
|
|||||||
|
|
||||||
// PluginInstallOptions holds parameters to install a plugin.
|
// PluginInstallOptions holds parameters to install a plugin.
|
||||||
type PluginInstallOptions struct {
|
type PluginInstallOptions struct {
|
||||||
Disabled bool
|
Disabled bool
|
||||||
AcceptAllPermissions bool
|
AcceptAllPermissions bool
|
||||||
RegistryAuth string // RegistryAuth is the base64 encoded credentials for the registry
|
RegistryAuth string // RegistryAuth is the base64 encoded credentials for the registry
|
||||||
RemoteRef string // RemoteRef is the plugin name on the registry
|
RemoteRef string // RemoteRef is the plugin name on the registry
|
||||||
PrivilegeFunc RequestPrivilegeFunc
|
|
||||||
|
// PrivilegeFunc is a function that clients can supply to retry operations
|
||||||
|
// after getting an authorization error. This function returns the registry
|
||||||
|
// authentication header value in base64 encoded format, or an error if the
|
||||||
|
// privilege request fails.
|
||||||
|
//
|
||||||
|
// For details, refer to [github.com/docker/docker/api/types/registry.RequestAuthConfig].
|
||||||
|
PrivilegeFunc func(context.Context) (string, error)
|
||||||
AcceptPermissionsFunc func(context.Context, PluginPrivileges) (bool, error)
|
AcceptPermissionsFunc func(context.Context, PluginPrivileges) (bool, error)
|
||||||
Args []string
|
Args []string
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
package types
|
package common
|
||||||
|
|
||||||
// This file was generated by the swagger tool.
|
// This file was generated by the swagger tool.
|
||||||
// Editing this file might prove futile when you re-run the swagger generate command
|
// Editing this file might prove futile when you re-run the swagger generate command
|
||||||
|
|
||||||
// IDResponse Response to an API call that returns just an Id
|
// IDResponse Response to an API call that returns just an Id
|
||||||
// swagger:model IdResponse
|
// swagger:model IDResponse
|
||||||
type IDResponse struct {
|
type IDResponse struct {
|
||||||
|
|
||||||
// The id of the newly created object.
|
// The id of the newly created object.
|
7
vendor/github.com/docker/docker/api/types/container/commit.go
generated
vendored
Normal file
7
vendor/github.com/docker/docker/api/types/container/commit.go
generated
vendored
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
package container
|
||||||
|
|
||||||
|
import "github.com/docker/docker/api/types/common"
|
||||||
|
|
||||||
|
// CommitResponse response for the commit API call, containing the ID of the
|
||||||
|
// image that was produced.
|
||||||
|
type CommitResponse = common.IDResponse
|
144
vendor/github.com/docker/docker/api/types/container/container.go
generated
vendored
144
vendor/github.com/docker/docker/api/types/container/container.go
generated
vendored
@ -4,8 +4,22 @@ import (
|
|||||||
"io"
|
"io"
|
||||||
"os"
|
"os"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/docker/docker/api/types/mount"
|
||||||
|
"github.com/docker/docker/api/types/storage"
|
||||||
|
ocispec "github.com/opencontainers/image-spec/specs-go/v1"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// ContainerUpdateOKBody OK response to ContainerUpdate operation
|
||||||
|
//
|
||||||
|
// Deprecated: use [UpdateResponse]. This alias will be removed in the next release.
|
||||||
|
type ContainerUpdateOKBody = UpdateResponse
|
||||||
|
|
||||||
|
// ContainerTopOKBody OK response to ContainerTop operation
|
||||||
|
//
|
||||||
|
// Deprecated: use [TopResponse]. This alias will be removed in the next release.
|
||||||
|
type ContainerTopOKBody = TopResponse
|
||||||
|
|
||||||
// PruneReport contains the response for Engine API:
|
// PruneReport contains the response for Engine API:
|
||||||
// POST "/containers/prune"
|
// POST "/containers/prune"
|
||||||
type PruneReport struct {
|
type PruneReport struct {
|
||||||
@ -42,3 +56,133 @@ type StatsResponseReader struct {
|
|||||||
Body io.ReadCloser `json:"body"`
|
Body io.ReadCloser `json:"body"`
|
||||||
OSType string `json:"ostype"`
|
OSType string `json:"ostype"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MountPoint represents a mount point configuration inside the container.
|
||||||
|
// This is used for reporting the mountpoints in use by a container.
|
||||||
|
type MountPoint struct {
|
||||||
|
// Type is the type of mount, see `Type<foo>` definitions in
|
||||||
|
// github.com/docker/docker/api/types/mount.Type
|
||||||
|
Type mount.Type `json:",omitempty"`
|
||||||
|
|
||||||
|
// Name is the name reference to the underlying data defined by `Source`
|
||||||
|
// e.g., the volume name.
|
||||||
|
Name string `json:",omitempty"`
|
||||||
|
|
||||||
|
// Source is the source location of the mount.
|
||||||
|
//
|
||||||
|
// For volumes, this contains the storage location of the volume (within
|
||||||
|
// `/var/lib/docker/volumes/`). For bind-mounts, and `npipe`, this contains
|
||||||
|
// the source (host) part of the bind-mount. For `tmpfs` mount points, this
|
||||||
|
// field is empty.
|
||||||
|
Source string
|
||||||
|
|
||||||
|
// Destination is the path relative to the container root (`/`) where the
|
||||||
|
// Source is mounted inside the container.
|
||||||
|
Destination string
|
||||||
|
|
||||||
|
// Driver is the volume driver used to create the volume (if it is a volume).
|
||||||
|
Driver string `json:",omitempty"`
|
||||||
|
|
||||||
|
// Mode is a comma separated list of options supplied by the user when
|
||||||
|
// creating the bind/volume mount.
|
||||||
|
//
|
||||||
|
// The default is platform-specific (`"z"` on Linux, empty on Windows).
|
||||||
|
Mode string
|
||||||
|
|
||||||
|
// RW indicates whether the mount is mounted writable (read-write).
|
||||||
|
RW bool
|
||||||
|
|
||||||
|
// Propagation describes how mounts are propagated from the host into the
|
||||||
|
// mount point, and vice-versa. Refer to the Linux kernel documentation
|
||||||
|
// for details:
|
||||||
|
// https://www.kernel.org/doc/Documentation/filesystems/sharedsubtree.txt
|
||||||
|
//
|
||||||
|
// This field is not used on Windows.
|
||||||
|
Propagation mount.Propagation
|
||||||
|
}
|
||||||
|
|
||||||
|
// State stores container's running state
|
||||||
|
// it's part of ContainerJSONBase and returned by "inspect" command
|
||||||
|
type State struct {
|
||||||
|
Status string // String representation of the container state. Can be one of "created", "running", "paused", "restarting", "removing", "exited", or "dead"
|
||||||
|
Running bool
|
||||||
|
Paused bool
|
||||||
|
Restarting bool
|
||||||
|
OOMKilled bool
|
||||||
|
Dead bool
|
||||||
|
Pid int
|
||||||
|
ExitCode int
|
||||||
|
Error string
|
||||||
|
StartedAt string
|
||||||
|
FinishedAt string
|
||||||
|
Health *Health `json:",omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Summary contains response of Engine API:
|
||||||
|
// GET "/containers/json"
|
||||||
|
type Summary struct {
|
||||||
|
ID string `json:"Id"`
|
||||||
|
Names []string
|
||||||
|
Image string
|
||||||
|
ImageID string
|
||||||
|
ImageManifestDescriptor *ocispec.Descriptor `json:"ImageManifestDescriptor,omitempty"`
|
||||||
|
Command string
|
||||||
|
Created int64
|
||||||
|
Ports []Port
|
||||||
|
SizeRw int64 `json:",omitempty"`
|
||||||
|
SizeRootFs int64 `json:",omitempty"`
|
||||||
|
Labels map[string]string
|
||||||
|
State string
|
||||||
|
Status string
|
||||||
|
HostConfig struct {
|
||||||
|
NetworkMode string `json:",omitempty"`
|
||||||
|
Annotations map[string]string `json:",omitempty"`
|
||||||
|
}
|
||||||
|
NetworkSettings *NetworkSettingsSummary
|
||||||
|
Mounts []MountPoint
|
||||||
|
}
|
||||||
|
|
||||||
|
// ContainerJSONBase contains response of Engine API GET "/containers/{name:.*}/json"
|
||||||
|
// for API version 1.18 and older.
|
||||||
|
//
|
||||||
|
// TODO(thaJeztah): combine ContainerJSONBase and InspectResponse into a single struct.
|
||||||
|
// The split between ContainerJSONBase (ContainerJSONBase) and InspectResponse (InspectResponse)
|
||||||
|
// was done in commit 6deaa58ba5f051039643cedceee97c8695e2af74 (https://github.com/moby/moby/pull/13675).
|
||||||
|
// ContainerJSONBase contained all fields for API < 1.19, and InspectResponse
|
||||||
|
// held fields that were added in API 1.19 and up. Given that the minimum
|
||||||
|
// supported API version is now 1.24, we no longer use the separate type.
|
||||||
|
type ContainerJSONBase struct {
|
||||||
|
ID string `json:"Id"`
|
||||||
|
Created string
|
||||||
|
Path string
|
||||||
|
Args []string
|
||||||
|
State *State
|
||||||
|
Image string
|
||||||
|
ResolvConfPath string
|
||||||
|
HostnamePath string
|
||||||
|
HostsPath string
|
||||||
|
LogPath string
|
||||||
|
Name string
|
||||||
|
RestartCount int
|
||||||
|
Driver string
|
||||||
|
Platform string
|
||||||
|
MountLabel string
|
||||||
|
ProcessLabel string
|
||||||
|
AppArmorProfile string
|
||||||
|
ExecIDs []string
|
||||||
|
HostConfig *HostConfig
|
||||||
|
GraphDriver storage.DriverData
|
||||||
|
SizeRw *int64 `json:",omitempty"`
|
||||||
|
SizeRootFs *int64 `json:",omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// InspectResponse is the response for the GET "/containers/{name:.*}/json"
|
||||||
|
// endpoint.
|
||||||
|
type InspectResponse struct {
|
||||||
|
*ContainerJSONBase
|
||||||
|
Mounts []MountPoint
|
||||||
|
Config *Config
|
||||||
|
NetworkSettings *NetworkSettings
|
||||||
|
// ImageManifestDescriptor is the descriptor of a platform-specific manifest of the image used to create the container.
|
||||||
|
ImageManifestDescriptor *ocispec.Descriptor `json:"ImageManifestDescriptor,omitempty"`
|
||||||
|
}
|
||||||
|
22
vendor/github.com/docker/docker/api/types/container/container_top.go
generated
vendored
22
vendor/github.com/docker/docker/api/types/container/container_top.go
generated
vendored
@ -1,22 +0,0 @@
|
|||||||
package container // import "github.com/docker/docker/api/types/container"
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
|
||||||
// Code generated by `swagger generate operation`. DO NOT EDIT.
|
|
||||||
//
|
|
||||||
// See hack/generate-swagger-api.sh
|
|
||||||
// ----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
// ContainerTopOKBody OK response to ContainerTop operation
|
|
||||||
// swagger:model ContainerTopOKBody
|
|
||||||
type ContainerTopOKBody struct {
|
|
||||||
|
|
||||||
// Each process running in the container, where each is process
|
|
||||||
// is an array of values corresponding to the titles.
|
|
||||||
//
|
|
||||||
// Required: true
|
|
||||||
Processes [][]string `json:"Processes"`
|
|
||||||
|
|
||||||
// The ps column titles
|
|
||||||
// Required: true
|
|
||||||
Titles []string `json:"Titles"`
|
|
||||||
}
|
|
16
vendor/github.com/docker/docker/api/types/container/container_update.go
generated
vendored
16
vendor/github.com/docker/docker/api/types/container/container_update.go
generated
vendored
@ -1,16 +0,0 @@
|
|||||||
package container // import "github.com/docker/docker/api/types/container"
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
|
||||||
// Code generated by `swagger generate operation`. DO NOT EDIT.
|
|
||||||
//
|
|
||||||
// See hack/generate-swagger-api.sh
|
|
||||||
// ----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
// ContainerUpdateOKBody OK response to ContainerUpdate operation
|
|
||||||
// swagger:model ContainerUpdateOKBody
|
|
||||||
type ContainerUpdateOKBody struct {
|
|
||||||
|
|
||||||
// warnings
|
|
||||||
// Required: true
|
|
||||||
Warnings []string `json:"Warnings"`
|
|
||||||
}
|
|
8
vendor/github.com/docker/docker/api/types/container/exec.go
generated
vendored
8
vendor/github.com/docker/docker/api/types/container/exec.go
generated
vendored
@ -1,5 +1,13 @@
|
|||||||
package container
|
package container
|
||||||
|
|
||||||
|
import "github.com/docker/docker/api/types/common"
|
||||||
|
|
||||||
|
// ExecCreateResponse is the response for a successful exec-create request.
|
||||||
|
// It holds the ID of the exec that was created.
|
||||||
|
//
|
||||||
|
// TODO(thaJeztah): make this a distinct type.
|
||||||
|
type ExecCreateResponse = common.IDResponse
|
||||||
|
|
||||||
// ExecOptions is a small subset of the Config struct that holds the configuration
|
// ExecOptions is a small subset of the Config struct that holds the configuration
|
||||||
// for the exec feature of docker.
|
// for the exec feature of docker.
|
||||||
type ExecOptions struct {
|
type ExecOptions struct {
|
||||||
|
26
vendor/github.com/docker/docker/api/types/container/health.go
generated
vendored
Normal file
26
vendor/github.com/docker/docker/api/types/container/health.go
generated
vendored
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
package container
|
||||||
|
|
||||||
|
import "time"
|
||||||
|
|
||||||
|
// Health states
|
||||||
|
const (
|
||||||
|
NoHealthcheck = "none" // Indicates there is no healthcheck
|
||||||
|
Starting = "starting" // Starting indicates that the container is not yet ready
|
||||||
|
Healthy = "healthy" // Healthy indicates that the container is running correctly
|
||||||
|
Unhealthy = "unhealthy" // Unhealthy indicates that the container has a problem
|
||||||
|
)
|
||||||
|
|
||||||
|
// Health stores information about the container's healthcheck results
|
||||||
|
type Health struct {
|
||||||
|
Status string // Status is one of [Starting], [Healthy] or [Unhealthy].
|
||||||
|
FailingStreak int // FailingStreak is the number of consecutive failures
|
||||||
|
Log []*HealthcheckResult // Log contains the last few results (oldest first)
|
||||||
|
}
|
||||||
|
|
||||||
|
// HealthcheckResult stores information about a single run of a healthcheck probe
|
||||||
|
type HealthcheckResult struct {
|
||||||
|
Start time.Time // Start is the time this check started
|
||||||
|
End time.Time // End is the time this check ended
|
||||||
|
ExitCode int // ExitCode meanings: 0=healthy, 1=unhealthy, 2=reserved (considered unhealthy), else=error running probe
|
||||||
|
Output string // Output from last check
|
||||||
|
}
|
56
vendor/github.com/docker/docker/api/types/container/network_settings.go
generated
vendored
Normal file
56
vendor/github.com/docker/docker/api/types/container/network_settings.go
generated
vendored
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
package container
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/docker/docker/api/types/network"
|
||||||
|
"github.com/docker/go-connections/nat"
|
||||||
|
)
|
||||||
|
|
||||||
|
// NetworkSettings exposes the network settings in the api
|
||||||
|
type NetworkSettings struct {
|
||||||
|
NetworkSettingsBase
|
||||||
|
DefaultNetworkSettings
|
||||||
|
Networks map[string]*network.EndpointSettings
|
||||||
|
}
|
||||||
|
|
||||||
|
// NetworkSettingsBase holds networking state for a container when inspecting it.
|
||||||
|
type NetworkSettingsBase struct {
|
||||||
|
Bridge string // Bridge contains the name of the default bridge interface iff it was set through the daemon --bridge flag.
|
||||||
|
SandboxID string // SandboxID uniquely represents a container's network stack
|
||||||
|
SandboxKey string // SandboxKey identifies the sandbox
|
||||||
|
Ports nat.PortMap // Ports is a collection of PortBinding indexed by Port
|
||||||
|
|
||||||
|
// HairpinMode specifies if hairpin NAT should be enabled on the virtual interface
|
||||||
|
//
|
||||||
|
// Deprecated: This field is never set and will be removed in a future release.
|
||||||
|
HairpinMode bool
|
||||||
|
// LinkLocalIPv6Address is an IPv6 unicast address using the link-local prefix
|
||||||
|
//
|
||||||
|
// Deprecated: This field is never set and will be removed in a future release.
|
||||||
|
LinkLocalIPv6Address string
|
||||||
|
// LinkLocalIPv6PrefixLen is the prefix length of an IPv6 unicast address
|
||||||
|
//
|
||||||
|
// Deprecated: This field is never set and will be removed in a future release.
|
||||||
|
LinkLocalIPv6PrefixLen int
|
||||||
|
SecondaryIPAddresses []network.Address // Deprecated: This field is never set and will be removed in a future release.
|
||||||
|
SecondaryIPv6Addresses []network.Address // Deprecated: This field is never set and will be removed in a future release.
|
||||||
|
}
|
||||||
|
|
||||||
|
// DefaultNetworkSettings holds network information
|
||||||
|
// during the 2 release deprecation period.
|
||||||
|
// It will be removed in Docker 1.11.
|
||||||
|
type DefaultNetworkSettings struct {
|
||||||
|
EndpointID string // EndpointID uniquely represents a service endpoint in a Sandbox
|
||||||
|
Gateway string // Gateway holds the gateway address for the network
|
||||||
|
GlobalIPv6Address string // GlobalIPv6Address holds network's global IPv6 address
|
||||||
|
GlobalIPv6PrefixLen int // GlobalIPv6PrefixLen represents mask length of network's global IPv6 address
|
||||||
|
IPAddress string // IPAddress holds the IPv4 address for the network
|
||||||
|
IPPrefixLen int // IPPrefixLen represents mask length of network's IPv4 address
|
||||||
|
IPv6Gateway string // IPv6Gateway holds gateway address specific for IPv6
|
||||||
|
MacAddress string // MacAddress holds the MAC address for the network
|
||||||
|
}
|
||||||
|
|
||||||
|
// NetworkSettingsSummary provides a summary of container's networks
|
||||||
|
// in /containers/json
|
||||||
|
type NetworkSettingsSummary struct {
|
||||||
|
Networks map[string]*network.EndpointSettings
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package types
|
package container
|
||||||
|
|
||||||
// This file was generated by the swagger tool.
|
// This file was generated by the swagger tool.
|
||||||
// Editing this file might prove futile when you re-run the swagger generate command
|
// Editing this file might prove futile when you re-run the swagger generate command
|
30
vendor/github.com/docker/docker/api/types/container/stats.go
generated
vendored
30
vendor/github.com/docker/docker/api/types/container/stats.go
generated
vendored
@ -148,7 +148,15 @@ type PidsStats struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Stats is Ultimate struct aggregating all types of stats of one container
|
// Stats is Ultimate struct aggregating all types of stats of one container
|
||||||
type Stats struct {
|
//
|
||||||
|
// Deprecated: use [StatsResponse] instead. This type will be removed in the next release.
|
||||||
|
type Stats = StatsResponse
|
||||||
|
|
||||||
|
// StatsResponse aggregates all types of stats of one container.
|
||||||
|
type StatsResponse struct {
|
||||||
|
Name string `json:"name,omitempty"`
|
||||||
|
ID string `json:"id,omitempty"`
|
||||||
|
|
||||||
// Common stats
|
// Common stats
|
||||||
Read time.Time `json:"read"`
|
Read time.Time `json:"read"`
|
||||||
PreRead time.Time `json:"preread"`
|
PreRead time.Time `json:"preread"`
|
||||||
@ -162,20 +170,8 @@ type Stats struct {
|
|||||||
StorageStats StorageStats `json:"storage_stats,omitempty"`
|
StorageStats StorageStats `json:"storage_stats,omitempty"`
|
||||||
|
|
||||||
// Shared stats
|
// Shared stats
|
||||||
CPUStats CPUStats `json:"cpu_stats,omitempty"`
|
CPUStats CPUStats `json:"cpu_stats,omitempty"`
|
||||||
PreCPUStats CPUStats `json:"precpu_stats,omitempty"` // "Pre"="Previous"
|
PreCPUStats CPUStats `json:"precpu_stats,omitempty"` // "Pre"="Previous"
|
||||||
MemoryStats MemoryStats `json:"memory_stats,omitempty"`
|
MemoryStats MemoryStats `json:"memory_stats,omitempty"`
|
||||||
}
|
Networks map[string]NetworkStats `json:"networks,omitempty"`
|
||||||
|
|
||||||
// StatsResponse is newly used Networks.
|
|
||||||
//
|
|
||||||
// TODO(thaJeztah): unify with [Stats]. This wrapper was to account for pre-api v1.21 changes, see https://github.com/moby/moby/commit/d3379946ec96fb6163cb8c4517d7d5a067045801
|
|
||||||
type StatsResponse struct {
|
|
||||||
Stats
|
|
||||||
|
|
||||||
Name string `json:"name,omitempty"`
|
|
||||||
ID string `json:"id,omitempty"`
|
|
||||||
|
|
||||||
// Networks request version >=1.21
|
|
||||||
Networks map[string]NetworkStats `json:"networks,omitempty"`
|
|
||||||
}
|
}
|
||||||
|
18
vendor/github.com/docker/docker/api/types/container/top_response.go
generated
vendored
Normal file
18
vendor/github.com/docker/docker/api/types/container/top_response.go
generated
vendored
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
package container
|
||||||
|
|
||||||
|
// This file was generated by the swagger tool.
|
||||||
|
// Editing this file might prove futile when you re-run the swagger generate command
|
||||||
|
|
||||||
|
// TopResponse ContainerTopResponse
|
||||||
|
//
|
||||||
|
// Container "top" response.
|
||||||
|
// swagger:model TopResponse
|
||||||
|
type TopResponse struct {
|
||||||
|
|
||||||
|
// Each process running in the container, where each process
|
||||||
|
// is an array of values corresponding to the titles.
|
||||||
|
Processes [][]string `json:"Processes"`
|
||||||
|
|
||||||
|
// The ps column titles
|
||||||
|
Titles []string `json:"Titles"`
|
||||||
|
}
|
14
vendor/github.com/docker/docker/api/types/container/update_response.go
generated
vendored
Normal file
14
vendor/github.com/docker/docker/api/types/container/update_response.go
generated
vendored
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
package container
|
||||||
|
|
||||||
|
// This file was generated by the swagger tool.
|
||||||
|
// Editing this file might prove futile when you re-run the swagger generate command
|
||||||
|
|
||||||
|
// UpdateResponse ContainerUpdateResponse
|
||||||
|
//
|
||||||
|
// Response for a successful container-update.
|
||||||
|
// swagger:model UpdateResponse
|
||||||
|
type UpdateResponse struct {
|
||||||
|
|
||||||
|
// Warnings encountered when updating the container.
|
||||||
|
Warnings []string `json:"Warnings"`
|
||||||
|
}
|
13
vendor/github.com/docker/docker/api/types/filters/errors.go
generated
vendored
13
vendor/github.com/docker/docker/api/types/filters/errors.go
generated
vendored
@ -22,16 +22,3 @@ func (e invalidFilter) Error() string {
|
|||||||
|
|
||||||
// InvalidParameter marks this error as ErrInvalidParameter
|
// InvalidParameter marks this error as ErrInvalidParameter
|
||||||
func (e invalidFilter) InvalidParameter() {}
|
func (e invalidFilter) InvalidParameter() {}
|
||||||
|
|
||||||
// unreachableCode is an error indicating that the code path was not expected to be reached.
|
|
||||||
type unreachableCode struct {
|
|
||||||
Filter string
|
|
||||||
Value []string
|
|
||||||
}
|
|
||||||
|
|
||||||
// System marks this error as ErrSystem
|
|
||||||
func (e unreachableCode) System() {}
|
|
||||||
|
|
||||||
func (e unreachableCode) Error() string {
|
|
||||||
return fmt.Sprintf("unreachable code reached for filter: %q with values: %s", e.Filter, e.Value)
|
|
||||||
}
|
|
||||||
|
16
vendor/github.com/docker/docker/api/types/filters/parse.go
generated
vendored
16
vendor/github.com/docker/docker/api/types/filters/parse.go
generated
vendored
@ -200,7 +200,6 @@ func (args Args) Match(field, source string) bool {
|
|||||||
// Error is not nil only if the filter values are not valid boolean or are conflicting.
|
// Error is not nil only if the filter values are not valid boolean or are conflicting.
|
||||||
func (args Args) GetBoolOrDefault(key string, defaultValue bool) (bool, error) {
|
func (args Args) GetBoolOrDefault(key string, defaultValue bool) (bool, error) {
|
||||||
fieldValues, ok := args.fields[key]
|
fieldValues, ok := args.fields[key]
|
||||||
|
|
||||||
if !ok {
|
if !ok {
|
||||||
return defaultValue, nil
|
return defaultValue, nil
|
||||||
}
|
}
|
||||||
@ -211,20 +210,11 @@ func (args Args) GetBoolOrDefault(key string, defaultValue bool) (bool, error) {
|
|||||||
|
|
||||||
isFalse := fieldValues["0"] || fieldValues["false"]
|
isFalse := fieldValues["0"] || fieldValues["false"]
|
||||||
isTrue := fieldValues["1"] || fieldValues["true"]
|
isTrue := fieldValues["1"] || fieldValues["true"]
|
||||||
|
if isFalse == isTrue {
|
||||||
conflicting := isFalse && isTrue
|
// Either no or conflicting truthy/falsy value were provided
|
||||||
invalid := !isFalse && !isTrue
|
|
||||||
|
|
||||||
if conflicting || invalid {
|
|
||||||
return defaultValue, &invalidFilter{key, args.Get(key)}
|
return defaultValue, &invalidFilter{key, args.Get(key)}
|
||||||
} else if isFalse {
|
|
||||||
return false, nil
|
|
||||||
} else if isTrue {
|
|
||||||
return true, nil
|
|
||||||
}
|
}
|
||||||
|
return isTrue, nil
|
||||||
// This code shouldn't be reached.
|
|
||||||
return defaultValue, &unreachableCode{Filter: key, Value: args.Get(key)}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ExactMatch returns true if the source matches exactly one of the values.
|
// ExactMatch returns true if the source matches exactly one of the values.
|
||||||
|
140
vendor/github.com/docker/docker/api/types/image/image_inspect.go
generated
vendored
Normal file
140
vendor/github.com/docker/docker/api/types/image/image_inspect.go
generated
vendored
Normal file
@ -0,0 +1,140 @@
|
|||||||
|
package image
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/docker/docker/api/types/container"
|
||||||
|
"github.com/docker/docker/api/types/storage"
|
||||||
|
ocispec "github.com/opencontainers/image-spec/specs-go/v1"
|
||||||
|
)
|
||||||
|
|
||||||
|
// RootFS returns Image's RootFS description including the layer IDs.
|
||||||
|
type RootFS struct {
|
||||||
|
Type string `json:",omitempty"`
|
||||||
|
Layers []string `json:",omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// InspectResponse contains response of Engine API:
|
||||||
|
// GET "/images/{name:.*}/json"
|
||||||
|
type InspectResponse struct {
|
||||||
|
// ID is the content-addressable ID of an image.
|
||||||
|
//
|
||||||
|
// This identifier is a content-addressable digest calculated from the
|
||||||
|
// image's configuration (which includes the digests of layers used by
|
||||||
|
// the image).
|
||||||
|
//
|
||||||
|
// Note that this digest differs from the `RepoDigests` below, which
|
||||||
|
// holds digests of image manifests that reference the image.
|
||||||
|
ID string `json:"Id"`
|
||||||
|
|
||||||
|
// RepoTags is a list of image names/tags in the local image cache that
|
||||||
|
// reference this image.
|
||||||
|
//
|
||||||
|
// Multiple image tags can refer to the same image, and this list may be
|
||||||
|
// empty if no tags reference the image, in which case the image is
|
||||||
|
// "untagged", in which case it can still be referenced by its ID.
|
||||||
|
RepoTags []string
|
||||||
|
|
||||||
|
// RepoDigests is a list of content-addressable digests of locally available
|
||||||
|
// image manifests that the image is referenced from. Multiple manifests can
|
||||||
|
// refer to the same image.
|
||||||
|
//
|
||||||
|
// These digests are usually only available if the image was either pulled
|
||||||
|
// from a registry, or if the image was pushed to a registry, which is when
|
||||||
|
// the manifest is generated and its digest calculated.
|
||||||
|
RepoDigests []string
|
||||||
|
|
||||||
|
// Parent is the ID of the parent image.
|
||||||
|
//
|
||||||
|
// Depending on how the image was created, this field may be empty and
|
||||||
|
// is only set for images that were built/created locally. This field
|
||||||
|
// is empty if the image was pulled from an image registry.
|
||||||
|
Parent string
|
||||||
|
|
||||||
|
// Comment is an optional message that can be set when committing or
|
||||||
|
// importing the image.
|
||||||
|
Comment string
|
||||||
|
|
||||||
|
// Created is the date and time at which the image was created, formatted in
|
||||||
|
// RFC 3339 nano-seconds (time.RFC3339Nano).
|
||||||
|
//
|
||||||
|
// This information is only available if present in the image,
|
||||||
|
// and omitted otherwise.
|
||||||
|
Created string `json:",omitempty"`
|
||||||
|
|
||||||
|
// Container is the ID of the container that was used to create the image.
|
||||||
|
//
|
||||||
|
// Depending on how the image was created, this field may be empty.
|
||||||
|
//
|
||||||
|
// Deprecated: this field is omitted in API v1.45, but kept for backward compatibility.
|
||||||
|
Container string `json:",omitempty"`
|
||||||
|
|
||||||
|
// ContainerConfig is an optional field containing the configuration of the
|
||||||
|
// container that was last committed when creating the image.
|
||||||
|
//
|
||||||
|
// Previous versions of Docker builder used this field to store build cache,
|
||||||
|
// and it is not in active use anymore.
|
||||||
|
//
|
||||||
|
// Deprecated: this field is omitted in API v1.45, but kept for backward compatibility.
|
||||||
|
ContainerConfig *container.Config `json:",omitempty"`
|
||||||
|
|
||||||
|
// DockerVersion is the version of Docker that was used to build the image.
|
||||||
|
//
|
||||||
|
// Depending on how the image was created, this field may be empty.
|
||||||
|
DockerVersion string
|
||||||
|
|
||||||
|
// Author is the name of the author that was specified when committing the
|
||||||
|
// image, or as specified through MAINTAINER (deprecated) in the Dockerfile.
|
||||||
|
Author string
|
||||||
|
Config *container.Config
|
||||||
|
|
||||||
|
// Architecture is the hardware CPU architecture that the image runs on.
|
||||||
|
Architecture string
|
||||||
|
|
||||||
|
// Variant is the CPU architecture variant (presently ARM-only).
|
||||||
|
Variant string `json:",omitempty"`
|
||||||
|
|
||||||
|
// OS is the Operating System the image is built to run on.
|
||||||
|
Os string
|
||||||
|
|
||||||
|
// OsVersion is the version of the Operating System the image is built to
|
||||||
|
// run on (especially for Windows).
|
||||||
|
OsVersion string `json:",omitempty"`
|
||||||
|
|
||||||
|
// Size is the total size of the image including all layers it is composed of.
|
||||||
|
Size int64
|
||||||
|
|
||||||
|
// VirtualSize is the total size of the image including all layers it is
|
||||||
|
// composed of.
|
||||||
|
//
|
||||||
|
// Deprecated: this field is omitted in API v1.44, but kept for backward compatibility. Use Size instead.
|
||||||
|
VirtualSize int64 `json:"VirtualSize,omitempty"`
|
||||||
|
|
||||||
|
// GraphDriver holds information about the storage driver used to store the
|
||||||
|
// container's and image's filesystem.
|
||||||
|
GraphDriver storage.DriverData
|
||||||
|
|
||||||
|
// RootFS contains information about the image's RootFS, including the
|
||||||
|
// layer IDs.
|
||||||
|
RootFS RootFS
|
||||||
|
|
||||||
|
// Metadata of the image in the local cache.
|
||||||
|
//
|
||||||
|
// This information is local to the daemon, and not part of the image itself.
|
||||||
|
Metadata Metadata
|
||||||
|
|
||||||
|
// Descriptor is the OCI descriptor of the image target.
|
||||||
|
// It's only set if the daemon provides a multi-platform image store.
|
||||||
|
//
|
||||||
|
// WARNING: This is experimental and may change at any time without any backward
|
||||||
|
// compatibility.
|
||||||
|
Descriptor *ocispec.Descriptor `json:"Descriptor,omitempty"`
|
||||||
|
|
||||||
|
// Manifests is a list of image manifests available in this image. It
|
||||||
|
// provides a more detailed view of the platform-specific image manifests or
|
||||||
|
// other image-attached data like build attestations.
|
||||||
|
//
|
||||||
|
// Only available if the daemon provides a multi-platform image store.
|
||||||
|
//
|
||||||
|
// WARNING: This is experimental and may change at any time without any backward
|
||||||
|
// compatibility.
|
||||||
|
Manifests []ManifestSummary `json:"Manifests,omitempty"`
|
||||||
|
}
|
32
vendor/github.com/docker/docker/api/types/image/opts.go
generated
vendored
32
vendor/github.com/docker/docker/api/types/image/opts.go
generated
vendored
@ -38,7 +38,7 @@ type PullOptions struct {
|
|||||||
// authentication header value in base64 encoded format, or an error if the
|
// authentication header value in base64 encoded format, or an error if the
|
||||||
// privilege request fails.
|
// privilege request fails.
|
||||||
//
|
//
|
||||||
// Also see [github.com/docker/docker/api/types.RequestPrivilegeFunc].
|
// For details, refer to [github.com/docker/docker/api/types/registry.RequestAuthConfig].
|
||||||
PrivilegeFunc func(context.Context) (string, error)
|
PrivilegeFunc func(context.Context) (string, error)
|
||||||
Platform string
|
Platform string
|
||||||
}
|
}
|
||||||
@ -53,7 +53,7 @@ type PushOptions struct {
|
|||||||
// authentication header value in base64 encoded format, or an error if the
|
// authentication header value in base64 encoded format, or an error if the
|
||||||
// privilege request fails.
|
// privilege request fails.
|
||||||
//
|
//
|
||||||
// Also see [github.com/docker/docker/api/types.RequestPrivilegeFunc].
|
// For details, refer to [github.com/docker/docker/api/types/registry.RequestAuthConfig].
|
||||||
PrivilegeFunc func(context.Context) (string, error)
|
PrivilegeFunc func(context.Context) (string, error)
|
||||||
|
|
||||||
// Platform is an optional field that selects a specific platform to push
|
// Platform is an optional field that selects a specific platform to push
|
||||||
@ -86,3 +86,31 @@ type RemoveOptions struct {
|
|||||||
Force bool
|
Force bool
|
||||||
PruneChildren bool
|
PruneChildren bool
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// HistoryOptions holds parameters to get image history.
|
||||||
|
type HistoryOptions struct {
|
||||||
|
// Platform from the manifest list to use for history.
|
||||||
|
Platform *ocispec.Platform
|
||||||
|
}
|
||||||
|
|
||||||
|
// LoadOptions holds parameters to load images.
|
||||||
|
type LoadOptions struct {
|
||||||
|
// Quiet suppresses progress output
|
||||||
|
Quiet bool
|
||||||
|
|
||||||
|
// Platforms selects the platforms to load if the image is a
|
||||||
|
// multi-platform image and has multiple variants.
|
||||||
|
Platforms []ocispec.Platform
|
||||||
|
}
|
||||||
|
|
||||||
|
type InspectOptions struct {
|
||||||
|
// Manifests returns the image manifests.
|
||||||
|
Manifests bool
|
||||||
|
}
|
||||||
|
|
||||||
|
// SaveOptions holds parameters to save images.
|
||||||
|
type SaveOptions struct {
|
||||||
|
// Platforms selects the platforms to save if the image is a
|
||||||
|
// multi-platform image and has multiple variants.
|
||||||
|
Platforms []ocispec.Platform
|
||||||
|
}
|
||||||
|
9
vendor/github.com/docker/docker/api/types/image/summary.go
generated
vendored
9
vendor/github.com/docker/docker/api/types/image/summary.go
generated
vendored
@ -1,5 +1,7 @@
|
|||||||
package image
|
package image
|
||||||
|
|
||||||
|
import ocispec "github.com/opencontainers/image-spec/specs-go/v1"
|
||||||
|
|
||||||
type Summary struct {
|
type Summary struct {
|
||||||
|
|
||||||
// Number of containers using this image. Includes both stopped and running
|
// Number of containers using this image. Includes both stopped and running
|
||||||
@ -42,6 +44,13 @@ type Summary struct {
|
|||||||
// Required: true
|
// Required: true
|
||||||
ParentID string `json:"ParentId"`
|
ParentID string `json:"ParentId"`
|
||||||
|
|
||||||
|
// Descriptor is the OCI descriptor of the image target.
|
||||||
|
// It's only set if the daemon provides a multi-platform image store.
|
||||||
|
//
|
||||||
|
// WARNING: This is experimental and may change at any time without any backward
|
||||||
|
// compatibility.
|
||||||
|
Descriptor *ocispec.Descriptor `json:"Descriptor,omitempty"`
|
||||||
|
|
||||||
// Manifests is a list of image manifests available in this image. It
|
// Manifests is a list of image manifests available in this image. It
|
||||||
// provides a more detailed view of the platform-specific image manifests or
|
// provides a more detailed view of the platform-specific image manifests or
|
||||||
// other image-attached data like build attestations.
|
// other image-attached data like build attestations.
|
||||||
|
7
vendor/github.com/docker/docker/api/types/mount/mount.go
generated
vendored
7
vendor/github.com/docker/docker/api/types/mount/mount.go
generated
vendored
@ -19,6 +19,8 @@ const (
|
|||||||
TypeNamedPipe Type = "npipe"
|
TypeNamedPipe Type = "npipe"
|
||||||
// TypeCluster is the type for Swarm Cluster Volumes.
|
// TypeCluster is the type for Swarm Cluster Volumes.
|
||||||
TypeCluster Type = "cluster"
|
TypeCluster Type = "cluster"
|
||||||
|
// TypeImage is the type for mounting another image's filesystem
|
||||||
|
TypeImage Type = "image"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Mount represents a mount (volume).
|
// Mount represents a mount (volume).
|
||||||
@ -34,6 +36,7 @@ type Mount struct {
|
|||||||
|
|
||||||
BindOptions *BindOptions `json:",omitempty"`
|
BindOptions *BindOptions `json:",omitempty"`
|
||||||
VolumeOptions *VolumeOptions `json:",omitempty"`
|
VolumeOptions *VolumeOptions `json:",omitempty"`
|
||||||
|
ImageOptions *ImageOptions `json:",omitempty"`
|
||||||
TmpfsOptions *TmpfsOptions `json:",omitempty"`
|
TmpfsOptions *TmpfsOptions `json:",omitempty"`
|
||||||
ClusterOptions *ClusterOptions `json:",omitempty"`
|
ClusterOptions *ClusterOptions `json:",omitempty"`
|
||||||
}
|
}
|
||||||
@ -100,6 +103,10 @@ type VolumeOptions struct {
|
|||||||
DriverConfig *Driver `json:",omitempty"`
|
DriverConfig *Driver `json:",omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ImageOptions struct {
|
||||||
|
Subpath string `json:",omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
// Driver represents a volume driver.
|
// Driver represents a volume driver.
|
||||||
type Driver struct {
|
type Driver struct {
|
||||||
Name string `json:",omitempty"`
|
Name string `json:",omitempty"`
|
||||||
|
6
vendor/github.com/docker/docker/api/types/network/endpoint.go
generated
vendored
6
vendor/github.com/docker/docker/api/types/network/endpoint.go
generated
vendored
@ -19,6 +19,12 @@ type EndpointSettings struct {
|
|||||||
// generated address).
|
// generated address).
|
||||||
MacAddress string
|
MacAddress string
|
||||||
DriverOpts map[string]string
|
DriverOpts map[string]string
|
||||||
|
|
||||||
|
// GwPriority determines which endpoint will provide the default gateway
|
||||||
|
// for the container. The endpoint with the highest priority will be used.
|
||||||
|
// If multiple endpoints have the same priority, they are lexicographically
|
||||||
|
// sorted based on their network name, and the one that sorts first is picked.
|
||||||
|
GwPriority int
|
||||||
// Operational data
|
// Operational data
|
||||||
NetworkID string
|
NetworkID string
|
||||||
EndpointID string
|
EndpointID string
|
||||||
|
4
vendor/github.com/docker/docker/api/types/network/network.go
generated
vendored
4
vendor/github.com/docker/docker/api/types/network/network.go
generated
vendored
@ -33,6 +33,7 @@ type CreateRequest struct {
|
|||||||
type CreateOptions struct {
|
type CreateOptions struct {
|
||||||
Driver string // Driver is the driver-name used to create the network (e.g. `bridge`, `overlay`)
|
Driver string // Driver is the driver-name used to create the network (e.g. `bridge`, `overlay`)
|
||||||
Scope string // Scope describes the level at which the network exists (e.g. `swarm` for cluster-wide or `local` for machine level).
|
Scope string // Scope describes the level at which the network exists (e.g. `swarm` for cluster-wide or `local` for machine level).
|
||||||
|
EnableIPv4 *bool `json:",omitempty"` // EnableIPv4 represents whether to enable IPv4.
|
||||||
EnableIPv6 *bool `json:",omitempty"` // EnableIPv6 represents whether to enable IPv6.
|
EnableIPv6 *bool `json:",omitempty"` // EnableIPv6 represents whether to enable IPv6.
|
||||||
IPAM *IPAM // IPAM is the network's IP Address Management.
|
IPAM *IPAM // IPAM is the network's IP Address Management.
|
||||||
Internal bool // Internal represents if the network is used internal only.
|
Internal bool // Internal represents if the network is used internal only.
|
||||||
@ -76,7 +77,8 @@ type Inspect struct {
|
|||||||
Created time.Time // Created is the time the network created
|
Created time.Time // Created is the time the network created
|
||||||
Scope string // Scope describes the level at which the network exists (e.g. `swarm` for cluster-wide or `local` for machine level)
|
Scope string // Scope describes the level at which the network exists (e.g. `swarm` for cluster-wide or `local` for machine level)
|
||||||
Driver string // Driver is the Driver name used to create the network (e.g. `bridge`, `overlay`)
|
Driver string // Driver is the Driver name used to create the network (e.g. `bridge`, `overlay`)
|
||||||
EnableIPv6 bool // EnableIPv6 represents whether to enable IPv6
|
EnableIPv4 bool // EnableIPv4 represents whether IPv4 is enabled
|
||||||
|
EnableIPv6 bool // EnableIPv6 represents whether IPv6 is enabled
|
||||||
IPAM IPAM // IPAM is the network's IP Address Management
|
IPAM IPAM // IPAM is the network's IP Address Management
|
||||||
Internal bool // Internal represents if the network is used internal only
|
Internal bool // Internal represents if the network is used internal only
|
||||||
Attachable bool // Attachable represents if the global scope is manually attachable by regular containers from workers in swarm mode.
|
Attachable bool // Attachable represents if the global scope is manually attachable by regular containers from workers in swarm mode.
|
||||||
|
18
vendor/github.com/docker/docker/api/types/registry/authconfig.go
generated
vendored
18
vendor/github.com/docker/docker/api/types/registry/authconfig.go
generated
vendored
@ -1,17 +1,29 @@
|
|||||||
package registry // import "github.com/docker/docker/api/types/registry"
|
package registry // import "github.com/docker/docker/api/types/registry"
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"encoding/base64"
|
"encoding/base64"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/pkg/errors"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// AuthHeader is the name of the header used to send encoded registry
|
// AuthHeader is the name of the header used to send encoded registry
|
||||||
// authorization credentials for registry operations (push/pull).
|
// authorization credentials for registry operations (push/pull).
|
||||||
const AuthHeader = "X-Registry-Auth"
|
const AuthHeader = "X-Registry-Auth"
|
||||||
|
|
||||||
|
// RequestAuthConfig is a function interface that clients can supply
|
||||||
|
// to retry operations after getting an authorization error.
|
||||||
|
//
|
||||||
|
// The function must return the [AuthHeader] value ([AuthConfig]), encoded
|
||||||
|
// in base64url format ([RFC4648, section 5]), which can be decoded by
|
||||||
|
// [DecodeAuthConfig].
|
||||||
|
//
|
||||||
|
// It must return an error if the privilege request fails.
|
||||||
|
//
|
||||||
|
// [RFC4648, section 5]: https://tools.ietf.org/html/rfc4648#section-5
|
||||||
|
type RequestAuthConfig func(context.Context) (string, error)
|
||||||
|
|
||||||
// AuthConfig contains authorization information for connecting to a Registry.
|
// AuthConfig contains authorization information for connecting to a Registry.
|
||||||
type AuthConfig struct {
|
type AuthConfig struct {
|
||||||
Username string `json:"username,omitempty"`
|
Username string `json:"username,omitempty"`
|
||||||
@ -85,7 +97,7 @@ func decodeAuthConfigFromReader(rdr io.Reader) (*AuthConfig, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func invalid(err error) error {
|
func invalid(err error) error {
|
||||||
return errInvalidParameter{errors.Wrap(err, "invalid X-Registry-Auth header")}
|
return errInvalidParameter{fmt.Errorf("invalid X-Registry-Auth header: %w", err)}
|
||||||
}
|
}
|
||||||
|
|
||||||
type errInvalidParameter struct{ error }
|
type errInvalidParameter struct{ error }
|
||||||
|
44
vendor/github.com/docker/docker/api/types/registry/registry.go
generated
vendored
44
vendor/github.com/docker/docker/api/types/registry/registry.go
generated
vendored
@ -9,11 +9,29 @@ import (
|
|||||||
|
|
||||||
// ServiceConfig stores daemon registry services configuration.
|
// ServiceConfig stores daemon registry services configuration.
|
||||||
type ServiceConfig struct {
|
type ServiceConfig struct {
|
||||||
AllowNondistributableArtifactsCIDRs []*NetIPNet
|
AllowNondistributableArtifactsCIDRs []*NetIPNet `json:"AllowNondistributableArtifactsCIDRs,omitempty"` // Deprecated: non-distributable artifacts are deprecated and enabled by default. This field will be removed in the next release.
|
||||||
AllowNondistributableArtifactsHostnames []string
|
AllowNondistributableArtifactsHostnames []string `json:"AllowNondistributableArtifactsHostnames,omitempty"` // Deprecated: non-distributable artifacts are deprecated and enabled by default. This field will be removed in the next release.
|
||||||
InsecureRegistryCIDRs []*NetIPNet `json:"InsecureRegistryCIDRs"`
|
|
||||||
IndexConfigs map[string]*IndexInfo `json:"IndexConfigs"`
|
InsecureRegistryCIDRs []*NetIPNet `json:"InsecureRegistryCIDRs"`
|
||||||
Mirrors []string
|
IndexConfigs map[string]*IndexInfo `json:"IndexConfigs"`
|
||||||
|
Mirrors []string
|
||||||
|
}
|
||||||
|
|
||||||
|
// MarshalJSON implements a custom marshaler to include legacy fields
|
||||||
|
// in API responses.
|
||||||
|
func (sc ServiceConfig) MarshalJSON() ([]byte, error) {
|
||||||
|
tmp := map[string]interface{}{
|
||||||
|
"InsecureRegistryCIDRs": sc.InsecureRegistryCIDRs,
|
||||||
|
"IndexConfigs": sc.IndexConfigs,
|
||||||
|
"Mirrors": sc.Mirrors,
|
||||||
|
}
|
||||||
|
if sc.AllowNondistributableArtifactsCIDRs != nil {
|
||||||
|
tmp["AllowNondistributableArtifactsCIDRs"] = nil
|
||||||
|
}
|
||||||
|
if sc.AllowNondistributableArtifactsHostnames != nil {
|
||||||
|
tmp["AllowNondistributableArtifactsHostnames"] = nil
|
||||||
|
}
|
||||||
|
return json.Marshal(tmp)
|
||||||
}
|
}
|
||||||
|
|
||||||
// NetIPNet is the net.IPNet type, which can be marshalled and
|
// NetIPNet is the net.IPNet type, which can be marshalled and
|
||||||
@ -31,15 +49,17 @@ func (ipnet *NetIPNet) MarshalJSON() ([]byte, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// UnmarshalJSON sets the IPNet from a byte array of JSON
|
// UnmarshalJSON sets the IPNet from a byte array of JSON
|
||||||
func (ipnet *NetIPNet) UnmarshalJSON(b []byte) (err error) {
|
func (ipnet *NetIPNet) UnmarshalJSON(b []byte) error {
|
||||||
var ipnetStr string
|
var ipnetStr string
|
||||||
if err = json.Unmarshal(b, &ipnetStr); err == nil {
|
if err := json.Unmarshal(b, &ipnetStr); err != nil {
|
||||||
var cidr *net.IPNet
|
return err
|
||||||
if _, cidr, err = net.ParseCIDR(ipnetStr); err == nil {
|
|
||||||
*ipnet = NetIPNet(*cidr)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
_, cidr, err := net.ParseCIDR(ipnetStr)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
*ipnet = NetIPNet(*cidr)
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// IndexInfo contains information about a registry
|
// IndexInfo contains information about a registry
|
||||||
|
9
vendor/github.com/docker/docker/api/types/registry/search.go
generated
vendored
9
vendor/github.com/docker/docker/api/types/registry/search.go
generated
vendored
@ -10,11 +10,12 @@ import (
|
|||||||
type SearchOptions struct {
|
type SearchOptions struct {
|
||||||
RegistryAuth string
|
RegistryAuth string
|
||||||
|
|
||||||
// PrivilegeFunc is a [types.RequestPrivilegeFunc] the client can
|
// PrivilegeFunc is a function that clients can supply to retry operations
|
||||||
// supply to retry operations after getting an authorization error.
|
// after getting an authorization error. This function returns the registry
|
||||||
|
// authentication header value in base64 encoded format, or an error if the
|
||||||
|
// privilege request fails.
|
||||||
//
|
//
|
||||||
// It must return the registry authentication header value in base64
|
// For details, refer to [github.com/docker/docker/api/types/registry.RequestAuthConfig].
|
||||||
// format, or an error if the privilege request fails.
|
|
||||||
PrivilegeFunc func(context.Context) (string, error)
|
PrivilegeFunc func(context.Context) (string, error)
|
||||||
Filters filters.Args
|
Filters filters.Args
|
||||||
Limit int
|
Limit int
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user