summaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
authorNalin Dahyabhai <nalin@redhat.com>2019-10-16 11:57:45 -0400
committerNalin Dahyabhai <nalin@redhat.com>2019-10-29 13:35:19 -0400
commitb9313d355e8cd6307d8772ad9c21958ffe981e5b (patch)
treef186c35ba6cf3414e39750330d10773687f7e7d2 /cmd
parent803357334ce72e14f263a0951d83cdab3fff2bde (diff)
downloadpodman-b9313d355e8cd6307d8772ad9c21958ffe981e5b.tar.gz
podman-b9313d355e8cd6307d8772ad9c21958ffe981e5b.tar.bz2
podman-b9313d355e8cd6307d8772ad9c21958ffe981e5b.zip
pull/create: add --override-arch/--override-os flags
Add --override-arch and --override-os as hidden flags, in line with the global flag names that skopeo uses, so that we can test behavior around manifest lists without having to conditionalize more of it by arch. Signed-off-by: Nalin Dahyabhai <nalin@redhat.com>
Diffstat (limited to 'cmd')
-rw-r--r--cmd/podman/build.go7
-rw-r--r--cmd/podman/cliconfig/config.go2
-rw-r--r--cmd/podman/common.go10
-rw-r--r--cmd/podman/pull.go6
-rw-r--r--cmd/podman/shared/create.go7
-rw-r--r--cmd/podman/shared/intermediate.go2
-rw-r--r--cmd/podman/shared/intermediate_varlink.go4
-rw-r--r--cmd/podman/varlink/io.podman.varlink2
8 files changed, 38 insertions, 2 deletions
diff --git a/cmd/podman/build.go b/cmd/podman/build.go
index f4efea544..e9ebc50aa 100644
--- a/cmd/podman/build.go
+++ b/cmd/podman/build.go
@@ -9,6 +9,7 @@ import (
"github.com/containers/buildah"
"github.com/containers/buildah/imagebuildah"
buildahcli "github.com/containers/buildah/pkg/cli"
+ "github.com/containers/image/v5/types"
"github.com/containers/libpod/cmd/podman/cliconfig"
"github.com/containers/libpod/libpod"
"github.com/containers/libpod/pkg/adapter"
@@ -360,7 +361,11 @@ func buildCmd(c *cliconfig.BuildValues) error {
RuntimeArgs: runtimeFlags,
SignaturePolicyPath: c.SignaturePolicy,
Squash: c.Squash,
- Target: c.Target,
+ SystemContext: &types.SystemContext{
+ OSChoice: c.OverrideOS,
+ ArchitectureChoice: c.OverrideArch,
+ },
+ Target: c.Target,
}
return runtime.Build(getContext(), c, options, containerfiles)
}
diff --git a/cmd/podman/cliconfig/config.go b/cmd/podman/cliconfig/config.go
index 86258a543..1bb5fa30c 100644
--- a/cmd/podman/cliconfig/config.go
+++ b/cmd/podman/cliconfig/config.go
@@ -431,6 +431,8 @@ type PullValues struct {
Authfile string
CertDir string
Creds string
+ OverrideArch string
+ OverrideOS string
Quiet bool
SignaturePolicy string
TlsVerify bool
diff --git a/cmd/podman/common.go b/cmd/podman/common.go
index e93586b62..33a848553 100644
--- a/cmd/podman/common.go
+++ b/cmd/podman/common.go
@@ -371,6 +371,16 @@ func getCreateFlags(c *cliconfig.PodmanCommand) {
"Tune the host's OOM preferences (-1000 to 1000)",
)
createFlags.String(
+ "override-arch", "",
+ "use `ARCH` instead of the architecture of the machine for choosing images",
+ )
+ markFlagHidden(createFlags, "override-arch")
+ createFlags.String(
+ "override-os", "",
+ "use `OS` instead of the running OS for choosing images",
+ )
+ markFlagHidden(createFlags, "override-os")
+ createFlags.String(
"pid", "",
"PID namespace to use",
)
diff --git a/cmd/podman/pull.go b/cmd/podman/pull.go
index 905b1987d..d64793147 100644
--- a/cmd/podman/pull.go
+++ b/cmd/podman/pull.go
@@ -54,6 +54,10 @@ func init() {
flags.BoolVar(&pullCommand.AllTags, "all-tags", false, "All tagged images in the repository will be pulled")
flags.StringVar(&pullCommand.Creds, "creds", "", "`Credentials` (USERNAME:PASSWORD) to use for authenticating to a registry")
flags.BoolVarP(&pullCommand.Quiet, "quiet", "q", false, "Suppress output information when pulling images")
+ flags.StringVar(&pullCommand.OverrideArch, "override-arch", "", "use `ARCH` instead of the architecture of the machine for choosing images")
+ markFlagHidden(flags, "override-arch")
+ flags.StringVar(&pullCommand.OverrideOS, "override-os", "", "use `OS` instead of the running OS for choosing images")
+ markFlagHidden(flags, "override-os")
// Disabled flags for the remote client
if !remote {
flags.StringVar(&pullCommand.Authfile, "authfile", shared.GetAuthFile(""), "Path of the authentication file. Use REGISTRY_AUTH_FILE environment variable to override")
@@ -122,6 +126,8 @@ func pullCmd(c *cliconfig.PullValues) (retError error) {
dockerRegistryOptions := image.DockerRegistryOptions{
DockerRegistryCreds: registryCreds,
DockerCertPath: c.CertDir,
+ OSChoice: c.OverrideOS,
+ ArchitectureChoice: c.OverrideArch,
}
if c.IsSet("tls-verify") {
dockerRegistryOptions.DockerInsecureSkipTLSVerify = types.NewOptionalBool(!c.TlsVerify)
diff --git a/cmd/podman/shared/create.go b/cmd/podman/shared/create.go
index f37f5fa62..759903c19 100644
--- a/cmd/podman/shared/create.go
+++ b/cmd/podman/shared/create.go
@@ -89,7 +89,12 @@ func CreateContainer(ctx context.Context, c *GenericCLIResults, runtime *libpod.
return nil, nil, err
}
- newImage, err := runtime.ImageRuntime().New(ctx, name, rtc.SignaturePolicyPath, GetAuthFile(c.String("authfile")), writer, nil, image.SigningOptions{}, nil, pullType)
+ dockerRegistryOptions := image.DockerRegistryOptions{
+ OSChoice: c.String("override-os"),
+ ArchitectureChoice: c.String("override-arch"),
+ }
+
+ newImage, err := runtime.ImageRuntime().New(ctx, name, rtc.SignaturePolicyPath, GetAuthFile(c.String("authfile")), writer, &dockerRegistryOptions, image.SigningOptions{}, nil, pullType)
if err != nil {
return nil, nil, err
}
diff --git a/cmd/podman/shared/intermediate.go b/cmd/podman/shared/intermediate.go
index 0f71dc087..bc12bd2a5 100644
--- a/cmd/podman/shared/intermediate.go
+++ b/cmd/podman/shared/intermediate.go
@@ -428,6 +428,8 @@ func NewIntermediateLayer(c *cliconfig.PodmanCommand, remote bool) GenericCLIRes
m["no-hosts"] = newCRBool(c, "no-hosts")
m["oom-kill-disable"] = newCRBool(c, "oom-kill-disable")
m["oom-score-adj"] = newCRInt(c, "oom-score-adj")
+ m["override-arch"] = newCRString(c, "override-arch")
+ m["override-os"] = newCRString(c, "override-os")
m["pid"] = newCRString(c, "pid")
m["pids-limit"] = newCRInt64(c, "pids-limit")
m["pod"] = newCRString(c, "pod")
diff --git a/cmd/podman/shared/intermediate_varlink.go b/cmd/podman/shared/intermediate_varlink.go
index c95470a72..89bd52324 100644
--- a/cmd/podman/shared/intermediate_varlink.go
+++ b/cmd/podman/shared/intermediate_varlink.go
@@ -131,6 +131,8 @@ func (g GenericCLIResults) MakeVarlink() iopodman.Create {
Network: StringToPtr(g.Find("network")),
OomKillDisable: BoolToPtr(g.Find("oom-kill-disable")),
OomScoreAdj: AnyIntToInt64Ptr(g.Find("oom-score-adj")),
+ OverrideOS: StringToPtr(g.Find("override-os")),
+ OverrideArch: StringToPtr(g.Find("override-arch")),
Pid: StringToPtr(g.Find("pid")),
PidsLimit: AnyIntToInt64Ptr(g.Find("pids-limit")),
Pod: StringToPtr(g.Find("pod")),
@@ -389,6 +391,8 @@ func VarlinkCreateToGeneric(opts iopodman.Create) GenericCLIResults {
m["no-hosts"] = boolFromVarlink(opts.NoHosts, "no-hosts", false)
m["oom-kill-disable"] = boolFromVarlink(opts.OomKillDisable, "oon-kill-disable", false)
m["oom-score-adj"] = intFromVarlink(opts.OomScoreAdj, "oom-score-adj", nil)
+ m["override-os"] = stringFromVarlink(opts.OverrideOS, "override-os", nil)
+ m["override-arch"] = stringFromVarlink(opts.OverrideArch, "override-arch", nil)
m["pid"] = stringFromVarlink(opts.Pid, "pid", nil)
m["pids-limit"] = int64FromVarlink(opts.PidsLimit, "pids-limit", nil)
m["pod"] = stringFromVarlink(opts.Pod, "pod", nil)
diff --git a/cmd/podman/varlink/io.podman.varlink b/cmd/podman/varlink/io.podman.varlink
index dca366bc5..9ec7d1172 100644
--- a/cmd/podman/varlink/io.podman.varlink
+++ b/cmd/podman/varlink/io.podman.varlink
@@ -342,6 +342,8 @@ type Create (
noHosts: ?bool,
oomKillDisable: ?bool,
oomScoreAdj: ?int,
+ overrideArch: ?string,
+ overrideOS: ?string,
pid: ?string,
pidsLimit: ?int,
pod: ?string,