mirror of
https://github.com/containers/skopeo.git
synced 2025-06-29 16:17:44 +00:00
update c/common, c/image, c/storage
Pin them to the specific versions that Podman v3.3 targets for RHEL. Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
This commit is contained in:
parent
caf1469b1d
commit
fb03e033cc
6
go.mod
6
go.mod
@ -3,10 +3,10 @@ module github.com/containers/skopeo
|
|||||||
go 1.12
|
go 1.12
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/containers/common v0.41.0
|
github.com/containers/common v0.42.0
|
||||||
github.com/containers/image/v5 v5.14.1-0.20210728095305-9e1d7b48f1de
|
github.com/containers/image/v5 v5.15.0
|
||||||
github.com/containers/ocicrypt v1.1.2
|
github.com/containers/ocicrypt v1.1.2
|
||||||
github.com/containers/storage v1.33.0
|
github.com/containers/storage v1.33.1
|
||||||
github.com/docker/docker v20.10.7+incompatible
|
github.com/docker/docker v20.10.7+incompatible
|
||||||
github.com/dsnet/compress v0.0.2-0.20210315054119-f66993602bf5 // indirect
|
github.com/dsnet/compress v0.0.2-0.20210315054119-f66993602bf5 // indirect
|
||||||
github.com/go-check/check v0.0.0-20180628173108-788fd7840127
|
github.com/go-check/check v0.0.0-20180628173108-788fd7840127
|
||||||
|
23
go.sum
23
go.sum
@ -73,7 +73,6 @@ github.com/Microsoft/hcsshim v0.8.9/go.mod h1:5692vkUqntj1idxauYlpoINNKeqCiG6Sg3
|
|||||||
github.com/Microsoft/hcsshim v0.8.14/go.mod h1:NtVKoYxQuTLx6gEq0L96c9Ju4JbRJ4nY2ow3VK6a9Lg=
|
github.com/Microsoft/hcsshim v0.8.14/go.mod h1:NtVKoYxQuTLx6gEq0L96c9Ju4JbRJ4nY2ow3VK6a9Lg=
|
||||||
github.com/Microsoft/hcsshim v0.8.15/go.mod h1:x38A4YbHbdxJtc0sF6oIz+RG0npwSCAvn69iY6URG00=
|
github.com/Microsoft/hcsshim v0.8.15/go.mod h1:x38A4YbHbdxJtc0sF6oIz+RG0npwSCAvn69iY6URG00=
|
||||||
github.com/Microsoft/hcsshim v0.8.16/go.mod h1:o5/SZqmR7x9JNKsW3pu+nqHm0MF8vbA+VxGOoXdC600=
|
github.com/Microsoft/hcsshim v0.8.16/go.mod h1:o5/SZqmR7x9JNKsW3pu+nqHm0MF8vbA+VxGOoXdC600=
|
||||||
github.com/Microsoft/hcsshim v0.8.17/go.mod h1:+w2gRZ5ReXQhFOrvSQeNfhrYB/dg3oDwTOcER2fw4I4=
|
|
||||||
github.com/Microsoft/hcsshim v0.8.20 h1:ZTwcx3NS8n07kPf/JZ1qwU6vnjhVPMUWlXBF8r9UxrE=
|
github.com/Microsoft/hcsshim v0.8.20 h1:ZTwcx3NS8n07kPf/JZ1qwU6vnjhVPMUWlXBF8r9UxrE=
|
||||||
github.com/Microsoft/hcsshim v0.8.20/go.mod h1:+w2gRZ5ReXQhFOrvSQeNfhrYB/dg3oDwTOcER2fw4I4=
|
github.com/Microsoft/hcsshim v0.8.20/go.mod h1:+w2gRZ5ReXQhFOrvSQeNfhrYB/dg3oDwTOcER2fw4I4=
|
||||||
github.com/Microsoft/hcsshim/test v0.0.0-20201218223536-d3e5debf77da/go.mod h1:5hlzMzRKMLyo42nCZ9oml8AdTlq/0cvIaBv6tK1RehU=
|
github.com/Microsoft/hcsshim/test v0.0.0-20201218223536-d3e5debf77da/go.mod h1:5hlzMzRKMLyo42nCZ9oml8AdTlq/0cvIaBv6tK1RehU=
|
||||||
@ -131,7 +130,6 @@ github.com/cilium/ebpf v0.0.0-20200110133405-4032b1d8aae3/go.mod h1:MA5e5Lr8slmE
|
|||||||
github.com/cilium/ebpf v0.0.0-20200702112145-1c8d4c9ef775/go.mod h1:7cR51M8ViRLIdUjrmSXlK9pkrsDlLHbO8jiB8X8JnOc=
|
github.com/cilium/ebpf v0.0.0-20200702112145-1c8d4c9ef775/go.mod h1:7cR51M8ViRLIdUjrmSXlK9pkrsDlLHbO8jiB8X8JnOc=
|
||||||
github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs=
|
github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs=
|
||||||
github.com/cilium/ebpf v0.4.0/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs=
|
github.com/cilium/ebpf v0.4.0/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs=
|
||||||
github.com/cilium/ebpf v0.5.0/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs=
|
|
||||||
github.com/cilium/ebpf v0.6.1/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs=
|
github.com/cilium/ebpf v0.6.1/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs=
|
||||||
github.com/cilium/ebpf v0.6.2/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs=
|
github.com/cilium/ebpf v0.6.2/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs=
|
||||||
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
||||||
@ -219,11 +217,11 @@ github.com/containernetworking/cni v0.8.0/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ
|
|||||||
github.com/containernetworking/cni v0.8.1/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY=
|
github.com/containernetworking/cni v0.8.1/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY=
|
||||||
github.com/containernetworking/plugins v0.8.6/go.mod h1:qnw5mN19D8fIwkqW7oHHYDHVlzhJpcY6TQxn/fUyDDM=
|
github.com/containernetworking/plugins v0.8.6/go.mod h1:qnw5mN19D8fIwkqW7oHHYDHVlzhJpcY6TQxn/fUyDDM=
|
||||||
github.com/containernetworking/plugins v0.9.1/go.mod h1:xP/idU2ldlzN6m4p5LmGiwRDjeJr6FLK6vuiUwoH7P8=
|
github.com/containernetworking/plugins v0.9.1/go.mod h1:xP/idU2ldlzN6m4p5LmGiwRDjeJr6FLK6vuiUwoH7P8=
|
||||||
github.com/containers/common v0.41.0 h1:/WIWzuOb6Aw26c2S2B31XpHdnA8LBP3K5JAZR76PfLw=
|
github.com/containers/common v0.42.0 h1:x5WgLp0QVCB76qvR3Zpwpj2rb/6BzOlOXzx1uqXReOw=
|
||||||
github.com/containers/common v0.41.0/go.mod h1:T4yIYO6H206D4qf59ZJYD40u3Dr8HwM5D6tFdGf0nrg=
|
github.com/containers/common v0.42.0/go.mod h1:UzAAjDsxwd4qkN1mgsk6aspduBY5bspxvKgwQElaBwk=
|
||||||
github.com/containers/image/v5 v5.13.2/go.mod h1:GkWursKDlDcUIT7L7vZf70tADvZCk/Ga0wgS0MuF0ag=
|
github.com/containers/image/v5 v5.14.0/go.mod h1:SxiBKOcKuT+4yTjD0AskjO+UwFvNcVOJ9qlAw1HNSPU=
|
||||||
github.com/containers/image/v5 v5.14.1-0.20210728095305-9e1d7b48f1de h1:1wDrZPv2j5TxbBvx0yAfDCx4BZuGXcSYsr69yt1+nE0=
|
github.com/containers/image/v5 v5.15.0 h1:NduhN20ptHNlf0uRny5iTJa2OodB9SLMEB4hKKbzBBs=
|
||||||
github.com/containers/image/v5 v5.14.1-0.20210728095305-9e1d7b48f1de/go.mod h1:gzdBcooi6AFdiqfzirUqv90hUyHyI0MMdaqKzACKr2s=
|
github.com/containers/image/v5 v5.15.0/go.mod h1:gzdBcooi6AFdiqfzirUqv90hUyHyI0MMdaqKzACKr2s=
|
||||||
github.com/containers/libtrust v0.0.0-20190913040956-14b96171aa3b h1:Q8ePgVfHDplZ7U33NwHZkrVELsZP5fYj9pM5WBZB2GE=
|
github.com/containers/libtrust v0.0.0-20190913040956-14b96171aa3b h1:Q8ePgVfHDplZ7U33NwHZkrVELsZP5fYj9pM5WBZB2GE=
|
||||||
github.com/containers/libtrust v0.0.0-20190913040956-14b96171aa3b/go.mod h1:9rfv8iPl1ZP7aqh9YA68wnZv2NUDbXdcdPHVz0pFbPY=
|
github.com/containers/libtrust v0.0.0-20190913040956-14b96171aa3b/go.mod h1:9rfv8iPl1ZP7aqh9YA68wnZv2NUDbXdcdPHVz0pFbPY=
|
||||||
github.com/containers/ocicrypt v1.0.1/go.mod h1:MeJDzk1RJHv89LjsH0Sp5KTY3ZYkjXO/C+bKAeWFIrc=
|
github.com/containers/ocicrypt v1.0.1/go.mod h1:MeJDzk1RJHv89LjsH0Sp5KTY3ZYkjXO/C+bKAeWFIrc=
|
||||||
@ -231,10 +229,10 @@ github.com/containers/ocicrypt v1.1.0/go.mod h1:b8AOe0YR67uU8OqfVNcznfFpAzu3rdgU
|
|||||||
github.com/containers/ocicrypt v1.1.1/go.mod h1:Dm55fwWm1YZAjYRaJ94z2mfZikIyIN4B0oB3dj3jFxY=
|
github.com/containers/ocicrypt v1.1.1/go.mod h1:Dm55fwWm1YZAjYRaJ94z2mfZikIyIN4B0oB3dj3jFxY=
|
||||||
github.com/containers/ocicrypt v1.1.2 h1:Ez+GAMP/4GLix5Ywo/fL7O0nY771gsBIigiqUm1aXz0=
|
github.com/containers/ocicrypt v1.1.2 h1:Ez+GAMP/4GLix5Ywo/fL7O0nY771gsBIigiqUm1aXz0=
|
||||||
github.com/containers/ocicrypt v1.1.2/go.mod h1:Dm55fwWm1YZAjYRaJ94z2mfZikIyIN4B0oB3dj3jFxY=
|
github.com/containers/ocicrypt v1.1.2/go.mod h1:Dm55fwWm1YZAjYRaJ94z2mfZikIyIN4B0oB3dj3jFxY=
|
||||||
github.com/containers/storage v1.32.2/go.mod h1:YIBxxjfXZTi04Ah49sh1uSGfmT1V89+I5i3deRobzQo=
|
github.com/containers/storage v1.32.6/go.mod h1:mdB+b89p+jU8zpzLTVXA0gWMmIo0WrkfGMh1R8O2IQw=
|
||||||
github.com/containers/storage v1.32.5/go.mod h1:8/DVVDqniaUlUV0D0q7cEnXK6Bs2uU3FPqNZVPumwEs=
|
|
||||||
github.com/containers/storage v1.33.0 h1:sTk1Mfz3uSNg7cxeaDb0Ld8/UV+8pZEOQjvysjJuzX8=
|
|
||||||
github.com/containers/storage v1.33.0/go.mod h1:FUZPF4nJijX8ixdhByZJXf02cvbyLi6dyDwXdIe8QVY=
|
github.com/containers/storage v1.33.0/go.mod h1:FUZPF4nJijX8ixdhByZJXf02cvbyLi6dyDwXdIe8QVY=
|
||||||
|
github.com/containers/storage v1.33.1 h1:RHUPZ7vQxwoeOoMoKUDsVun4f9Wi8BTXmr/wQiruBYU=
|
||||||
|
github.com/containers/storage v1.33.1/go.mod h1:FUZPF4nJijX8ixdhByZJXf02cvbyLi6dyDwXdIe8QVY=
|
||||||
github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=
|
github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=
|
||||||
github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
|
github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
|
||||||
github.com/coreos/go-iptables v0.4.5/go.mod h1:/mVI274lEDI2ns62jHCDnCyBF9Iwsmekav8Dbxlm1MU=
|
github.com/coreos/go-iptables v0.4.5/go.mod h1:/mVI274lEDI2ns62jHCDnCyBF9Iwsmekav8Dbxlm1MU=
|
||||||
@ -247,7 +245,6 @@ github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7
|
|||||||
github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
|
github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
|
||||||
github.com/coreos/go-systemd/v22 v22.0.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk=
|
github.com/coreos/go-systemd/v22 v22.0.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk=
|
||||||
github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk=
|
github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk=
|
||||||
github.com/coreos/go-systemd/v22 v22.3.1/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
|
|
||||||
github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
|
github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
|
||||||
github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
|
github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
|
||||||
github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
|
github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
|
||||||
@ -506,7 +503,6 @@ github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+o
|
|||||||
github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
|
github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
|
||||||
github.com/klauspost/compress v1.11.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
|
github.com/klauspost/compress v1.11.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
|
||||||
github.com/klauspost/compress v1.11.13/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
|
github.com/klauspost/compress v1.11.13/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
|
||||||
github.com/klauspost/compress v1.13.0/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg=
|
|
||||||
github.com/klauspost/compress v1.13.1 h1:wXr2uRxZTJXHLly6qhJabee5JqIhTRoLBhDOA74hDEQ=
|
github.com/klauspost/compress v1.13.1 h1:wXr2uRxZTJXHLly6qhJabee5JqIhTRoLBhDOA74hDEQ=
|
||||||
github.com/klauspost/compress v1.13.1/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg=
|
github.com/klauspost/compress v1.13.1/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg=
|
||||||
github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
|
github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
|
||||||
@ -623,7 +619,6 @@ github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59P
|
|||||||
github.com/opencontainers/runc v1.0.0-rc8.0.20190926000215-3e425f80a8c9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U=
|
github.com/opencontainers/runc v1.0.0-rc8.0.20190926000215-3e425f80a8c9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U=
|
||||||
github.com/opencontainers/runc v1.0.0-rc9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U=
|
github.com/opencontainers/runc v1.0.0-rc9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U=
|
||||||
github.com/opencontainers/runc v1.0.0-rc93/go.mod h1:3NOsor4w32B2tC0Zbl8Knk4Wg84SM2ImC1fxBuqJ/H0=
|
github.com/opencontainers/runc v1.0.0-rc93/go.mod h1:3NOsor4w32B2tC0Zbl8Knk4Wg84SM2ImC1fxBuqJ/H0=
|
||||||
github.com/opencontainers/runc v1.0.0-rc95/go.mod h1:z+bZxa/+Tz/FmYVWkhUajJdzFeOqjc5vrqskhVyHGUM=
|
|
||||||
github.com/opencontainers/runc v1.0.0/go.mod h1:MU2S3KEB2ZExnhnAQYbwjdYV6HwKtDlNbA2Z2OeNDeA=
|
github.com/opencontainers/runc v1.0.0/go.mod h1:MU2S3KEB2ZExnhnAQYbwjdYV6HwKtDlNbA2Z2OeNDeA=
|
||||||
github.com/opencontainers/runc v1.0.1 h1:G18PGckGdAm3yVQRWDVQ1rLSLntiniKJ0cNRT2Tm5gs=
|
github.com/opencontainers/runc v1.0.1 h1:G18PGckGdAm3yVQRWDVQ1rLSLntiniKJ0cNRT2Tm5gs=
|
||||||
github.com/opencontainers/runc v1.0.1/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0=
|
github.com/opencontainers/runc v1.0.1/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0=
|
||||||
@ -774,7 +769,6 @@ github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtX
|
|||||||
github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
|
github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
|
||||||
github.com/vbatts/tar-split v0.11.1 h1:0Odu65rhcZ3JZaPHxl7tCI3V/C/Q9Zf82UFravl02dE=
|
github.com/vbatts/tar-split v0.11.1 h1:0Odu65rhcZ3JZaPHxl7tCI3V/C/Q9Zf82UFravl02dE=
|
||||||
github.com/vbatts/tar-split v0.11.1/go.mod h1:LEuURwDEiWjRjwu46yU3KVGuUdVv/dcnpcEPSzR8z6g=
|
github.com/vbatts/tar-split v0.11.1/go.mod h1:LEuURwDEiWjRjwu46yU3KVGuUdVv/dcnpcEPSzR8z6g=
|
||||||
github.com/vbauerster/mpb/v7 v7.0.2/go.mod h1:Mnq3gESXJ9eQhccbGZDggJ1faTCrmaA4iN57fUloRGE=
|
|
||||||
github.com/vbauerster/mpb/v7 v7.0.3 h1:NfX0pHWhlDTev15M/C3qmSTM1EiIjcS+/d6qS6H4FnI=
|
github.com/vbauerster/mpb/v7 v7.0.3 h1:NfX0pHWhlDTev15M/C3qmSTM1EiIjcS+/d6qS6H4FnI=
|
||||||
github.com/vbauerster/mpb/v7 v7.0.3/go.mod h1:NXGsfPGx6G2JssqvEcULtDqUrxuuYs4llpv8W6ZUpzk=
|
github.com/vbauerster/mpb/v7 v7.0.3/go.mod h1:NXGsfPGx6G2JssqvEcULtDqUrxuuYs4llpv8W6ZUpzk=
|
||||||
github.com/vishvananda/netlink v0.0.0-20181108222139-023a6dafdcdf/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk=
|
github.com/vishvananda/netlink v0.0.0-20181108222139-023a6dafdcdf/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk=
|
||||||
@ -1040,7 +1034,6 @@ golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7w
|
|||||||
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|
||||||
golang.org/x/sys v0.0.0-20210616094352-59db8d763f22 h1:RqytpXGR1iVNX7psjB3ff8y7sNFinVFvkx1c8SjBkio=
|
golang.org/x/sys v0.0.0-20210616094352-59db8d763f22 h1:RqytpXGR1iVNX7psjB3ff8y7sNFinVFvkx1c8SjBkio=
|
||||||
golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 h1:v+OssWQX+hTHEmOBgwxdZxK4zHq3yOs8F9J7mk0PY8E=
|
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 h1:v+OssWQX+hTHEmOBgwxdZxK4zHq3yOs8F9J7mk0PY8E=
|
||||||
|
153
vendor/github.com/containers/common/pkg/auth/auth.go
generated
vendored
153
vendor/github.com/containers/common/pkg/auth/auth.go
generated
vendored
@ -9,6 +9,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/containers/image/v5/docker"
|
"github.com/containers/image/v5/docker"
|
||||||
|
"github.com/containers/image/v5/docker/reference"
|
||||||
"github.com/containers/image/v5/pkg/docker/config"
|
"github.com/containers/image/v5/pkg/docker/config"
|
||||||
"github.com/containers/image/v5/pkg/sysregistriesv2"
|
"github.com/containers/image/v5/pkg/sysregistriesv2"
|
||||||
"github.com/containers/image/v5/types"
|
"github.com/containers/image/v5/types"
|
||||||
@ -69,30 +70,50 @@ func Login(ctx context.Context, systemContext *types.SystemContext, opts *LoginO
|
|||||||
systemContext = systemContextWithOptions(systemContext, opts.AuthFile, opts.CertDir)
|
systemContext = systemContextWithOptions(systemContext, opts.AuthFile, opts.CertDir)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
server string
|
authConfig types.DockerAuthConfig
|
||||||
err error
|
key, registry string
|
||||||
|
ref reference.Named
|
||||||
|
err error
|
||||||
)
|
)
|
||||||
if len(args) > 1 {
|
l := len(args)
|
||||||
return errors.New("login accepts only one registry to login to")
|
switch l {
|
||||||
}
|
case 0:
|
||||||
if len(args) == 0 {
|
|
||||||
if !opts.AcceptUnspecifiedRegistry {
|
if !opts.AcceptUnspecifiedRegistry {
|
||||||
return errors.New("please provide a registry to login to")
|
return errors.New("please provide a registry to login to")
|
||||||
}
|
}
|
||||||
if server, err = defaultRegistryWhenUnspecified(systemContext); err != nil {
|
if key, err = defaultRegistryWhenUnspecified(systemContext); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
logrus.Debugf("registry not specified, default to the first registry %q from registries.conf", server)
|
registry = key
|
||||||
|
logrus.Debugf("registry not specified, default to the first registry %q from registries.conf", key)
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
key, registry, ref, err = parseRegistryArgument(args[0], opts.AcceptRepositories)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
return errors.New("login accepts only one registry to login to")
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if ref != nil {
|
||||||
|
authConfig, err = config.GetCredentialsForRef(systemContext, ref)
|
||||||
|
if err != nil {
|
||||||
|
return errors.Wrap(err, "get credentials for repository")
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
server = getRegistryName(args[0])
|
// nolint: staticcheck
|
||||||
}
|
authConfig, err = config.GetCredentials(systemContext, registry)
|
||||||
authConfig, err := config.GetCredentials(systemContext, server)
|
if err != nil {
|
||||||
if err != nil {
|
return errors.Wrap(err, "get credentials")
|
||||||
return errors.Wrap(err, "reading auth file")
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if opts.GetLoginSet {
|
if opts.GetLoginSet {
|
||||||
if authConfig.Username == "" {
|
if authConfig.Username == "" {
|
||||||
return errors.Errorf("not logged into %s", server)
|
return errors.Errorf("not logged into %s", key)
|
||||||
}
|
}
|
||||||
fmt.Fprintf(opts.Stdout, "%s\n", authConfig.Username)
|
fmt.Fprintf(opts.Stdout, "%s\n", authConfig.Username)
|
||||||
return nil
|
return nil
|
||||||
@ -119,9 +140,9 @@ func Login(ctx context.Context, systemContext *types.SystemContext, opts *LoginO
|
|||||||
|
|
||||||
// If no username and no password is specified, try to use existing ones.
|
// If no username and no password is specified, try to use existing ones.
|
||||||
if opts.Username == "" && password == "" && authConfig.Username != "" && authConfig.Password != "" {
|
if opts.Username == "" && password == "" && authConfig.Username != "" && authConfig.Password != "" {
|
||||||
fmt.Println("Authenticating with existing credentials...")
|
fmt.Fprintf(opts.Stdout, "Authenticating with existing credentials for %s\n", key)
|
||||||
if err := docker.CheckAuth(ctx, systemContext, authConfig.Username, authConfig.Password, server); err == nil {
|
if err := docker.CheckAuth(ctx, systemContext, authConfig.Username, authConfig.Password, registry); err == nil {
|
||||||
fmt.Fprintln(opts.Stdout, "Existing credentials are valid. Already logged in to", server)
|
fmt.Fprintf(opts.Stdout, "Existing credentials are valid. Already logged in to %s\n", registry)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
fmt.Fprintln(opts.Stdout, "Existing credentials are invalid, please enter valid username and password")
|
fmt.Fprintln(opts.Stdout, "Existing credentials are invalid, please enter valid username and password")
|
||||||
@ -132,9 +153,9 @@ func Login(ctx context.Context, systemContext *types.SystemContext, opts *LoginO
|
|||||||
return errors.Wrap(err, "getting username and password")
|
return errors.Wrap(err, "getting username and password")
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = docker.CheckAuth(ctx, systemContext, username, password, server); err == nil {
|
if err = docker.CheckAuth(ctx, systemContext, username, password, registry); err == nil {
|
||||||
// Write the new credentials to the authfile
|
// Write the new credentials to the authfile
|
||||||
desc, err := config.SetCredentials(systemContext, server, username, password)
|
desc, err := config.SetCredentials(systemContext, key, username, password)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -147,10 +168,45 @@ func Login(ctx context.Context, systemContext *types.SystemContext, opts *LoginO
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
if unauthorized, ok := err.(docker.ErrUnauthorizedForCredentials); ok {
|
if unauthorized, ok := err.(docker.ErrUnauthorizedForCredentials); ok {
|
||||||
logrus.Debugf("error logging into %q: %v", server, unauthorized)
|
logrus.Debugf("error logging into %q: %v", key, unauthorized)
|
||||||
return errors.Errorf("error logging into %q: invalid username/password", server)
|
return errors.Errorf("error logging into %q: invalid username/password", key)
|
||||||
}
|
}
|
||||||
return errors.Wrapf(err, "authenticating creds for %q", server)
|
return errors.Wrapf(err, "authenticating creds for %q", key)
|
||||||
|
}
|
||||||
|
|
||||||
|
// parseRegistryArgument verifies the provided arg depending if we accept
|
||||||
|
// repositories or not.
|
||||||
|
func parseRegistryArgument(arg string, acceptRepositories bool) (key, registry string, maybeRef reference.Named, err error) {
|
||||||
|
if !acceptRepositories {
|
||||||
|
registry = getRegistryName(arg)
|
||||||
|
key = registry
|
||||||
|
return key, registry, maybeRef, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
key = trimScheme(arg)
|
||||||
|
if key != arg {
|
||||||
|
return key, registry, nil, errors.New("credentials key has https[s]:// prefix")
|
||||||
|
}
|
||||||
|
|
||||||
|
registry = getRegistryName(key)
|
||||||
|
if registry == key {
|
||||||
|
// We cannot parse a reference from a registry, so we stop here
|
||||||
|
return key, registry, nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
ref, parseErr := reference.ParseNamed(key)
|
||||||
|
if parseErr != nil {
|
||||||
|
return key, registry, nil, errors.Wrapf(parseErr, "parse reference from %q", key)
|
||||||
|
}
|
||||||
|
|
||||||
|
if !reference.IsNameOnly(ref) {
|
||||||
|
return key, registry, nil, errors.Errorf("reference %q contains tag or digest", ref.String())
|
||||||
|
}
|
||||||
|
|
||||||
|
maybeRef = ref
|
||||||
|
registry = reference.Domain(ref)
|
||||||
|
|
||||||
|
return key, registry, maybeRef, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// getRegistryName scrubs and parses the input to get the server name
|
// getRegistryName scrubs and parses the input to get the server name
|
||||||
@ -158,13 +214,21 @@ func getRegistryName(server string) string {
|
|||||||
// removes 'http://' or 'https://' from the front of the
|
// removes 'http://' or 'https://' from the front of the
|
||||||
// server/registry string if either is there. This will be mostly used
|
// server/registry string if either is there. This will be mostly used
|
||||||
// for user input from 'Buildah login' and 'Buildah logout'.
|
// for user input from 'Buildah login' and 'Buildah logout'.
|
||||||
server = strings.TrimPrefix(strings.TrimPrefix(server, "https://"), "http://")
|
server = trimScheme(server)
|
||||||
// gets the registry from the input. If the input is of the form
|
// gets the registry from the input. If the input is of the form
|
||||||
// quay.io/myuser/myimage, it will parse it and just return quay.io
|
// quay.io/myuser/myimage, it will parse it and just return quay.io
|
||||||
split := strings.Split(server, "/")
|
split := strings.Split(server, "/")
|
||||||
return split[0]
|
return split[0]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// trimScheme removes the HTTP(s) scheme from the provided repository.
|
||||||
|
func trimScheme(repository string) string {
|
||||||
|
// removes 'http://' or 'https://' from the front of the
|
||||||
|
// server/registry string if either is there. This will be mostly used
|
||||||
|
// for user input from 'Buildah login' and 'Buildah logout'.
|
||||||
|
return strings.TrimPrefix(strings.TrimPrefix(repository, "https://"), "http://")
|
||||||
|
}
|
||||||
|
|
||||||
// getUserAndPass gets the username and password from STDIN if not given
|
// getUserAndPass gets the username and password from STDIN if not given
|
||||||
// using the -u and -p flags. If the username prompt is left empty, the
|
// using the -u and -p flags. If the username prompt is left empty, the
|
||||||
// displayed userFromAuthFile will be used instead.
|
// displayed userFromAuthFile will be used instead.
|
||||||
@ -209,8 +273,9 @@ func Logout(systemContext *types.SystemContext, opts *LogoutOptions, args []stri
|
|||||||
systemContext = systemContextWithOptions(systemContext, opts.AuthFile, "")
|
systemContext = systemContextWithOptions(systemContext, opts.AuthFile, "")
|
||||||
|
|
||||||
var (
|
var (
|
||||||
server string
|
key, registry string
|
||||||
err error
|
ref reference.Named
|
||||||
|
err error
|
||||||
)
|
)
|
||||||
if len(args) > 1 {
|
if len(args) > 1 {
|
||||||
return errors.New("logout accepts only one registry to logout from")
|
return errors.New("logout accepts only one registry to logout from")
|
||||||
@ -219,16 +284,20 @@ func Logout(systemContext *types.SystemContext, opts *LogoutOptions, args []stri
|
|||||||
if !opts.AcceptUnspecifiedRegistry {
|
if !opts.AcceptUnspecifiedRegistry {
|
||||||
return errors.New("please provide a registry to logout from")
|
return errors.New("please provide a registry to logout from")
|
||||||
}
|
}
|
||||||
if server, err = defaultRegistryWhenUnspecified(systemContext); err != nil {
|
if key, err = defaultRegistryWhenUnspecified(systemContext); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
logrus.Debugf("registry not specified, default to the first registry %q from registries.conf", server)
|
registry = key
|
||||||
|
logrus.Debugf("registry not specified, default to the first registry %q from registries.conf", key)
|
||||||
}
|
}
|
||||||
if len(args) != 0 {
|
if len(args) != 0 {
|
||||||
if opts.All {
|
if opts.All {
|
||||||
return errors.New("--all takes no arguments")
|
return errors.New("--all takes no arguments")
|
||||||
}
|
}
|
||||||
server = getRegistryName(args[0])
|
key, registry, ref, err = parseRegistryArgument(args[0], opts.AcceptRepositories)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if opts.All {
|
if opts.All {
|
||||||
@ -239,24 +308,34 @@ func Logout(systemContext *types.SystemContext, opts *LogoutOptions, args []stri
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
err = config.RemoveAuthentication(systemContext, server)
|
err = config.RemoveAuthentication(systemContext, key)
|
||||||
switch errors.Cause(err) {
|
switch errors.Cause(err) {
|
||||||
case nil:
|
case nil:
|
||||||
fmt.Fprintf(opts.Stdout, "Removed login credentials for %s\n", server)
|
fmt.Fprintf(opts.Stdout, "Removed login credentials for %s\n", key)
|
||||||
return nil
|
return nil
|
||||||
case config.ErrNotLoggedIn:
|
case config.ErrNotLoggedIn:
|
||||||
authConfig, err := config.GetCredentials(systemContext, server)
|
var authConfig types.DockerAuthConfig
|
||||||
if err != nil {
|
if ref != nil {
|
||||||
return errors.Wrap(err, "reading auth file")
|
authConfig, err = config.GetCredentialsForRef(systemContext, ref)
|
||||||
|
if err != nil {
|
||||||
|
return errors.Wrap(err, "get credentials for repository")
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// nolint: staticcheck
|
||||||
|
authConfig, err = config.GetCredentials(systemContext, registry)
|
||||||
|
if err != nil {
|
||||||
|
return errors.Wrap(err, "get credentials")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
authInvalid := docker.CheckAuth(context.Background(), systemContext, authConfig.Username, authConfig.Password, server)
|
|
||||||
|
authInvalid := docker.CheckAuth(context.Background(), systemContext, authConfig.Username, authConfig.Password, registry)
|
||||||
if authConfig.Username != "" && authConfig.Password != "" && authInvalid == nil {
|
if authConfig.Username != "" && authConfig.Password != "" && authInvalid == nil {
|
||||||
fmt.Printf("Not logged into %s with current tool. Existing credentials were established via docker login. Please use docker logout instead.\n", server)
|
fmt.Printf("Not logged into %s with current tool. Existing credentials were established via docker login. Please use docker logout instead.\n", key)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
return errors.Errorf("Not logged into %s\n", server)
|
return errors.Errorf("Not logged into %s\n", key)
|
||||||
default:
|
default:
|
||||||
return errors.Wrapf(err, "logging out of %q", server)
|
return errors.Wrapf(err, "logging out of %q", key)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
20
vendor/github.com/containers/common/pkg/auth/cli.go
generated
vendored
20
vendor/github.com/containers/common/pkg/auth/cli.go
generated
vendored
@ -14,13 +14,14 @@ type LoginOptions struct {
|
|||||||
// CLI flags managed by the FlagSet returned by GetLoginFlags
|
// CLI flags managed by the FlagSet returned by GetLoginFlags
|
||||||
// Callers that use GetLoginFlags should not need to touch these values at all; callers that use
|
// Callers that use GetLoginFlags should not need to touch these values at all; callers that use
|
||||||
// other CLI frameworks should set them based on user input.
|
// other CLI frameworks should set them based on user input.
|
||||||
AuthFile string
|
AuthFile string
|
||||||
CertDir string
|
CertDir string
|
||||||
Password string
|
Password string
|
||||||
Username string
|
Username string
|
||||||
StdinPassword bool
|
StdinPassword bool
|
||||||
GetLoginSet bool
|
GetLoginSet bool
|
||||||
Verbose bool // set to true for verbose output
|
Verbose bool // set to true for verbose output
|
||||||
|
AcceptRepositories bool // set to true to allow namespaces or repositories rather than just registries
|
||||||
// Options caller can set
|
// Options caller can set
|
||||||
Stdin io.Reader // set to os.Stdin
|
Stdin io.Reader // set to os.Stdin
|
||||||
Stdout io.Writer // set to os.Stdout
|
Stdout io.Writer // set to os.Stdout
|
||||||
@ -32,8 +33,9 @@ type LogoutOptions struct {
|
|||||||
// CLI flags managed by the FlagSet returned by GetLogoutFlags
|
// CLI flags managed by the FlagSet returned by GetLogoutFlags
|
||||||
// Callers that use GetLogoutFlags should not need to touch these values at all; callers that use
|
// Callers that use GetLogoutFlags should not need to touch these values at all; callers that use
|
||||||
// other CLI frameworks should set them based on user input.
|
// other CLI frameworks should set them based on user input.
|
||||||
AuthFile string
|
AuthFile string
|
||||||
All bool
|
All bool
|
||||||
|
AcceptRepositories bool // set to true to allow namespaces or repositories rather than just registries
|
||||||
// Options caller can set
|
// Options caller can set
|
||||||
Stdout io.Writer // set to os.Stdout
|
Stdout io.Writer // set to os.Stdout
|
||||||
AcceptUnspecifiedRegistry bool // set to true if allows logout with unspecified registry
|
AcceptUnspecifiedRegistry bool // set to true if allows logout with unspecified registry
|
||||||
|
9
vendor/github.com/containers/image/v5/copy/copy.go
generated
vendored
9
vendor/github.com/containers/image/v5/copy/copy.go
generated
vendored
@ -124,7 +124,6 @@ type copier struct {
|
|||||||
ociEncryptConfig *encconfig.EncryptConfig
|
ociEncryptConfig *encconfig.EncryptConfig
|
||||||
maxParallelDownloads uint
|
maxParallelDownloads uint
|
||||||
downloadForeignLayers bool
|
downloadForeignLayers bool
|
||||||
fetchPartialBlobs bool
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// imageCopier tracks state specific to a single image (possibly an item of a manifest list)
|
// imageCopier tracks state specific to a single image (possibly an item of a manifest list)
|
||||||
@ -208,9 +207,6 @@ type Options struct {
|
|||||||
// Download layer contents with "nondistributable" media types ("foreign" layers) and translate the layer media type
|
// Download layer contents with "nondistributable" media types ("foreign" layers) and translate the layer media type
|
||||||
// to not indicate "nondistributable".
|
// to not indicate "nondistributable".
|
||||||
DownloadForeignLayers bool
|
DownloadForeignLayers bool
|
||||||
|
|
||||||
// FetchPartialBlobs indicates whether to attempt to fetch the blob partially. Experimental.
|
|
||||||
FetchPartialBlobs bool
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// validateImageListSelection returns an error if the passed-in value is not one that we recognize as a valid ImageListSelection value
|
// validateImageListSelection returns an error if the passed-in value is not one that we recognize as a valid ImageListSelection value
|
||||||
@ -291,7 +287,6 @@ func Image(ctx context.Context, policyContext *signature.PolicyContext, destRef,
|
|||||||
ociEncryptConfig: options.OciEncryptConfig,
|
ociEncryptConfig: options.OciEncryptConfig,
|
||||||
maxParallelDownloads: options.MaxParallelDownloads,
|
maxParallelDownloads: options.MaxParallelDownloads,
|
||||||
downloadForeignLayers: options.DownloadForeignLayers,
|
downloadForeignLayers: options.DownloadForeignLayers,
|
||||||
fetchPartialBlobs: options.FetchPartialBlobs,
|
|
||||||
}
|
}
|
||||||
// Default to using gzip compression unless specified otherwise.
|
// Default to using gzip compression unless specified otherwise.
|
||||||
if options.DestinationCtx == nil || options.DestinationCtx.CompressionFormat == nil {
|
if options.DestinationCtx == nil || options.DestinationCtx.CompressionFormat == nil {
|
||||||
@ -1283,7 +1278,7 @@ func (ic *imageCopier) copyLayer(ctx context.Context, srcInfo types.BlobInfo, to
|
|||||||
// the destination has support for it.
|
// the destination has support for it.
|
||||||
imgSource, okSource := ic.c.rawSource.(internalTypes.ImageSourceSeekable)
|
imgSource, okSource := ic.c.rawSource.(internalTypes.ImageSourceSeekable)
|
||||||
imgDest, okDest := ic.c.dest.(internalTypes.ImageDestinationPartial)
|
imgDest, okDest := ic.c.dest.(internalTypes.ImageDestinationPartial)
|
||||||
if ic.c.fetchPartialBlobs && okSource && okDest && !diffIDIsNeeded {
|
if okSource && okDest && !diffIDIsNeeded {
|
||||||
bar := ic.c.createProgressBar(pool, true, srcInfo, "blob", "done")
|
bar := ic.c.createProgressBar(pool, true, srcInfo, "blob", "done")
|
||||||
|
|
||||||
progress := make(chan int64)
|
progress := make(chan int64)
|
||||||
@ -1317,7 +1312,7 @@ func (ic *imageCopier) copyLayer(ctx context.Context, srcInfo types.BlobInfo, to
|
|||||||
return info, cachedDiffID, nil
|
return info, cachedDiffID, nil
|
||||||
}
|
}
|
||||||
bar.Abort(true)
|
bar.Abort(true)
|
||||||
logrus.Errorf("Failed to retrieve partial blob: %v", err)
|
logrus.Debugf("Failed to retrieve partial blob: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fallback: copy the layer, computing the diffID if we need to do so
|
// Fallback: copy the layer, computing the diffID if we need to do so
|
||||||
|
6
vendor/github.com/containers/image/v5/version/version.go
generated
vendored
6
vendor/github.com/containers/image/v5/version/version.go
generated
vendored
@ -6,12 +6,12 @@ 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 = 14
|
VersionMinor = 15
|
||||||
// VersionPatch is for backwards-compatible bug fixes
|
// VersionPatch is for backwards-compatible bug fixes
|
||||||
VersionPatch = 1
|
VersionPatch = 0
|
||||||
|
|
||||||
// VersionDev indicates development branch. Releases will be empty string.
|
// VersionDev indicates development branch. Releases will be empty string.
|
||||||
VersionDev = "-dev"
|
VersionDev = ""
|
||||||
)
|
)
|
||||||
|
|
||||||
// Version is the specification version that the package types support.
|
// Version is the specification version that the package types support.
|
||||||
|
2
vendor/github.com/containers/storage/VERSION
generated
vendored
2
vendor/github.com/containers/storage/VERSION
generated
vendored
@ -1 +1 @@
|
|||||||
1.33.0
|
1.33.1
|
||||||
|
57
vendor/github.com/containers/storage/drivers/quota/projectquota.go
generated
vendored
57
vendor/github.com/containers/storage/drivers/quota/projectquota.go
generated
vendored
@ -52,8 +52,11 @@ import "C"
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
|
"math"
|
||||||
|
"os"
|
||||||
"path"
|
"path"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"syscall"
|
||||||
"unsafe"
|
"unsafe"
|
||||||
|
|
||||||
"github.com/containers/storage/pkg/directory"
|
"github.com/containers/storage/pkg/directory"
|
||||||
@ -61,6 +64,8 @@ import (
|
|||||||
"golang.org/x/sys/unix"
|
"golang.org/x/sys/unix"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const projectIDsAllocatedPerQuotaHome = 10000
|
||||||
|
|
||||||
// Quota limit params - currently we only control blocks hard limit and inodes
|
// Quota limit params - currently we only control blocks hard limit and inodes
|
||||||
type Quota struct {
|
type Quota struct {
|
||||||
Size uint64
|
Size uint64
|
||||||
@ -75,23 +80,48 @@ type Control struct {
|
|||||||
quotas map[string]uint32
|
quotas map[string]uint32
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Attempt to generate a unigue projectid. Multiple directories
|
||||||
|
// per file system can have quota and they need a group of unique
|
||||||
|
// ids. This function attempts to allocate at least projectIDsAllocatedPerQuotaHome(10000)
|
||||||
|
// unique projectids, based on the inode of the basepath.
|
||||||
|
func generateUniqueProjectID(path string) (uint32, error) {
|
||||||
|
fileinfo, err := os.Stat(path)
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
stat, ok := fileinfo.Sys().(*syscall.Stat_t)
|
||||||
|
if !ok {
|
||||||
|
return 0, fmt.Errorf("Not a syscall.Stat_t %s", path)
|
||||||
|
|
||||||
|
}
|
||||||
|
projectID := projectIDsAllocatedPerQuotaHome + (stat.Ino*projectIDsAllocatedPerQuotaHome)%(math.MaxUint32-projectIDsAllocatedPerQuotaHome)
|
||||||
|
return uint32(projectID), nil
|
||||||
|
}
|
||||||
|
|
||||||
// NewControl - initialize project quota support.
|
// NewControl - initialize project quota support.
|
||||||
// Test to make sure that quota can be set on a test dir and find
|
// Test to make sure that quota can be set on a test dir and find
|
||||||
// the first project id to be used for the next container create.
|
// the first project id to be used for the next container create.
|
||||||
//
|
//
|
||||||
// Returns nil (and error) if project quota is not supported.
|
// Returns nil (and error) if project quota is not supported.
|
||||||
//
|
//
|
||||||
// First get the project id of the home directory.
|
// First get the project id of the basePath directory.
|
||||||
// This test will fail if the backing fs is not xfs.
|
// This test will fail if the backing fs is not xfs.
|
||||||
//
|
//
|
||||||
// xfs_quota tool can be used to assign a project id to the driver home directory, e.g.:
|
// xfs_quota tool can be used to assign a project id to the driver home directory, e.g.:
|
||||||
// echo 999:/var/lib/containers/storage/overlay >> /etc/projects
|
// echo 100000:/var/lib/containers/storage/overlay >> /etc/projects
|
||||||
// echo storage:999 >> /etc/projid
|
// echo 200000:/var/lib/containers/storage/volumes >> /etc/projects
|
||||||
// xfs_quota -x -c 'project -s storage' /<xfs mount point>
|
// echo storage:100000 >> /etc/projid
|
||||||
|
// echo volumes:200000 >> /etc/projid
|
||||||
|
// xfs_quota -x -c 'project -s storage volumes' /<xfs mount point>
|
||||||
//
|
//
|
||||||
// In that case, the home directory project id will be used as a "start offset"
|
// In the example above, the storage directory project id will be used as a
|
||||||
// and all containers will be assigned larger project ids (e.g. >= 1000).
|
// "start offset" and all containers will be assigned larger project ids
|
||||||
// This is a way to prevent xfs_quota management from conflicting with containers/storage.
|
// (e.g. >= 100000). Then the volumes directory project id will be used as a
|
||||||
|
// "start offset" and all volumes will be assigned larger project ids
|
||||||
|
// (e.g. >= 200000).
|
||||||
|
// This is a way to prevent xfs_quota management from conflicting with
|
||||||
|
// containers/storage.
|
||||||
|
|
||||||
//
|
//
|
||||||
// Then try to create a test directory with the next project id and set a quota
|
// Then try to create a test directory with the next project id and set a quota
|
||||||
// on it. If that works, continue to scan existing containers to map allocated
|
// on it. If that works, continue to scan existing containers to map allocated
|
||||||
@ -105,8 +135,15 @@ func NewControl(basePath string) (*Control, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
minProjectID++
|
if minProjectID == 0 {
|
||||||
|
// Indicates the storage was never initialized
|
||||||
|
// Generate a unique range of Projectids for this basepath
|
||||||
|
minProjectID, err = generateUniqueProjectID(basePath)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
//
|
//
|
||||||
// create backing filesystem device node
|
// create backing filesystem device node
|
||||||
//
|
//
|
||||||
@ -180,12 +217,12 @@ func setProjectQuota(backingFsBlockDev string, projectID uint32, quota Quota) er
|
|||||||
d.d_flags = C.FS_PROJ_QUOTA
|
d.d_flags = C.FS_PROJ_QUOTA
|
||||||
|
|
||||||
if quota.Size > 0 {
|
if quota.Size > 0 {
|
||||||
d.d_fieldmask = C.FS_DQ_BHARD | C.FS_DQ_BSOFT
|
d.d_fieldmask = d.d_fieldmask | C.FS_DQ_BHARD | C.FS_DQ_BSOFT
|
||||||
d.d_blk_hardlimit = C.__u64(quota.Size / 512)
|
d.d_blk_hardlimit = C.__u64(quota.Size / 512)
|
||||||
d.d_blk_softlimit = d.d_blk_hardlimit
|
d.d_blk_softlimit = d.d_blk_hardlimit
|
||||||
}
|
}
|
||||||
if quota.Inodes > 0 {
|
if quota.Inodes > 0 {
|
||||||
d.d_fieldmask = C.FS_DQ_IHARD | C.FS_DQ_ISOFT
|
d.d_fieldmask = d.d_fieldmask | C.FS_DQ_IHARD | C.FS_DQ_ISOFT
|
||||||
d.d_ino_hardlimit = C.__u64(quota.Inodes)
|
d.d_ino_hardlimit = C.__u64(quota.Inodes)
|
||||||
d.d_ino_softlimit = d.d_ino_hardlimit
|
d.d_ino_softlimit = d.d_ino_hardlimit
|
||||||
}
|
}
|
||||||
|
6
vendor/modules.txt
vendored
6
vendor/modules.txt
vendored
@ -43,14 +43,14 @@ github.com/containerd/cgroups/stats/v1
|
|||||||
github.com/containerd/containerd/errdefs
|
github.com/containerd/containerd/errdefs
|
||||||
github.com/containerd/containerd/log
|
github.com/containerd/containerd/log
|
||||||
github.com/containerd/containerd/platforms
|
github.com/containerd/containerd/platforms
|
||||||
# github.com/containers/common v0.41.0
|
# github.com/containers/common v0.42.0
|
||||||
github.com/containers/common/pkg/auth
|
github.com/containers/common/pkg/auth
|
||||||
github.com/containers/common/pkg/capabilities
|
github.com/containers/common/pkg/capabilities
|
||||||
github.com/containers/common/pkg/completion
|
github.com/containers/common/pkg/completion
|
||||||
github.com/containers/common/pkg/report
|
github.com/containers/common/pkg/report
|
||||||
github.com/containers/common/pkg/report/camelcase
|
github.com/containers/common/pkg/report/camelcase
|
||||||
github.com/containers/common/pkg/retry
|
github.com/containers/common/pkg/retry
|
||||||
# github.com/containers/image/v5 v5.14.1-0.20210728095305-9e1d7b48f1de
|
# github.com/containers/image/v5 v5.15.0
|
||||||
github.com/containers/image/v5/copy
|
github.com/containers/image/v5/copy
|
||||||
github.com/containers/image/v5/directory
|
github.com/containers/image/v5/directory
|
||||||
github.com/containers/image/v5/directory/explicitfilepath
|
github.com/containers/image/v5/directory/explicitfilepath
|
||||||
@ -113,7 +113,7 @@ github.com/containers/ocicrypt/keywrap/pkcs7
|
|||||||
github.com/containers/ocicrypt/spec
|
github.com/containers/ocicrypt/spec
|
||||||
github.com/containers/ocicrypt/utils
|
github.com/containers/ocicrypt/utils
|
||||||
github.com/containers/ocicrypt/utils/keyprovider
|
github.com/containers/ocicrypt/utils/keyprovider
|
||||||
# github.com/containers/storage v1.33.0
|
# github.com/containers/storage v1.33.1
|
||||||
github.com/containers/storage
|
github.com/containers/storage
|
||||||
github.com/containers/storage/drivers
|
github.com/containers/storage/drivers
|
||||||
github.com/containers/storage/drivers/aufs
|
github.com/containers/storage/drivers/aufs
|
||||||
|
Loading…
Reference in New Issue
Block a user