Merge pull request #793 from JirkaChadima/feat-override-variant

Adds the --override-variant command line flag
This commit is contained in:
Miloslav Trmač 2020-03-20 16:10:56 +01:00 committed by GitHub
commit e31d5a0e8f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 17 additions and 3 deletions

View File

@ -25,6 +25,7 @@ type globalOptions struct {
registriesDirPath string // Path to a "registries.d" registry configuration directory
overrideArch string // Architecture to use for choosing images, instead of the runtime one
overrideOS string // OS to use for choosing images, instead of the runtime one
overrideVariant string // Architecture variant to use for choosing images, instead of the runtime one
commandTimeout time.Duration // Timeout for the command execution
registriesConfPath string // Path to the "registries.conf" file
}
@ -79,6 +80,11 @@ func createApp() (*cli.App, *globalOptions) {
Usage: "use `OS` instead of the running OS for choosing images",
Destination: &opts.overrideOS,
},
cli.StringFlag{
Name: "override-variant",
Usage: "use `VARIANT` instead of the running architecture variant for choosing images",
Destination: &opts.overrideVariant,
},
cli.DurationFlag{
Name: "command-timeout",
Usage: "timeout for the command execution",

View File

@ -151,6 +151,7 @@ func (opts *imageOptions) newSystemContext() (*types.SystemContext, error) {
RegistriesDirPath: opts.global.registriesDirPath,
ArchitectureChoice: opts.global.overrideArch,
OSChoice: opts.global.overrideOS,
VariantChoice: opts.global.overrideVariant,
DockerCertPath: opts.dockerCertPath,
OCISharedBlobDirPath: opts.sharedBlobDir,
AuthFilePath: opts.shared.authFilePath,

View File

@ -53,6 +53,7 @@ func TestImageOptionsNewSystemContext(t *testing.T) {
"--registries.d", "/srv/registries.d",
"--override-arch", "overridden-arch",
"--override-os", "overridden-os",
"--override-variant", "overridden-variant",
}, []string{
"--authfile", "/srv/authfile",
"--dest-authfile", "/srv/dest-authfile",
@ -69,6 +70,7 @@ func TestImageOptionsNewSystemContext(t *testing.T) {
AuthFilePath: "/srv/dest-authfile",
ArchitectureChoice: "overridden-arch",
OSChoice: "overridden-os",
VariantChoice: "overridden-variant",
OCISharedBlobDirPath: "/srv/shared-blob-dir",
DockerCertPath: "/srv/cert-dir",
DockerInsecureSkipTLSVerify: types.OptionalBoolTrue,
@ -163,6 +165,7 @@ func TestImageDestOptionsNewSystemContext(t *testing.T) {
"--registries.d", "/srv/registries.d",
"--override-arch", "overridden-arch",
"--override-os", "overridden-os",
"--override-variant", "overridden-variant",
}, []string{
"--authfile", "/srv/authfile",
"--dest-cert-dir", "/srv/cert-dir",
@ -179,6 +182,7 @@ func TestImageDestOptionsNewSystemContext(t *testing.T) {
AuthFilePath: "/srv/authfile",
ArchitectureChoice: "overridden-arch",
OSChoice: "overridden-os",
VariantChoice: "overridden-variant",
OCISharedBlobDirPath: "/srv/shared-blob-dir",
DockerCertPath: "/srv/cert-dir",
DockerInsecureSkipTLSVerify: types.OptionalBoolTrue,

View File

@ -166,6 +166,7 @@ _skopeo_skopeo() {
--registries.d
--override-arch
--override-os
--override-variant
--command-timeout
"
local boolean_options="
@ -177,7 +178,7 @@ _skopeo_skopeo() {
case "$prev" in
# XXX: Changes here need to be refleceted in $options_with_args as well.
--policy|--registries.d|--override-arch|--override-os|--command-timeout)
--policy|--registries.d|--override-arch|--override-os|--override-variant|--command-timeout)
return
;;
esac

View File

@ -20,7 +20,7 @@ Uses the system's trust policy to validate images, rejects images not trusted by
**--all**
If _source-image_ refers to a list of images, instead of copying just the image which matches the current OS and
architecture (subject to the use of the global --override-os and --override-arch options), attempt to copy all of
architecture (subject to the use of the global --override-os, --override-arch and --override-variant options), attempt to copy all of
the images in the list, and the list itself.
**--authfile** _path_

View File

@ -58,6 +58,8 @@ Most commands refer to container images, using a _transport_`:`_details_ format.
**--override-os** _OS_ Use _OS_ instead of the running OS for choosing images.
**--override-variant** _VARIANT_ Use _VARIANT_ instead of the running architecture variant for choosing images.
**--command-timeout** _duration_ Timeout for the command execution.
**--help**|**-h** Show help

View File

@ -469,7 +469,7 @@ func (s *CopySuite) TestCopyFailsWhenImageOSDoesntMatchRuntimeOS(c *check.C) {
c.Assert(err, check.IsNil)
defer os.RemoveAll(storage)
storage = fmt.Sprintf("[vfs@%s/root+%s/runroot]", storage, storage)
assertSkopeoFails(c, `.*no image found in manifest list for architecture .*, OS .*`, "copy", knownWindowsOnlyImage, "containers-storage:"+storage+"test")
assertSkopeoFails(c, `.*no image found in manifest list for architecture .*, variant .*, OS .*`, "copy", knownWindowsOnlyImage, "containers-storage:"+storage+"test")
}
func (s *CopySuite) TestCopySucceedsWhenImageDoesntMatchRuntimeButWeOverride(c *check.C) {