summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrent Baude <bbaude@redhat.com>2020-02-03 15:30:17 -0600
committerBrent Baude <bbaude@redhat.com>2020-02-03 15:30:17 -0600
commitb438cb2cce33ac727f3b0c24154055e287fead4d (patch)
treeac4e9f8f8f9671d09e48fbfc2032fb9c56d8068b
parent23f795786224c27f737e9043e9d513f54fa35ba8 (diff)
downloadpodman-b438cb2cce33ac727f3b0c24154055e287fead4d.tar.gz
podman-b438cb2cce33ac727f3b0c24154055e287fead4d.tar.bz2
podman-b438cb2cce33ac727f3b0c24154055e287fead4d.zip
seperate container create network options
this pr splits off some of the network container create options into a different flag set. the options in question are: --add-host --dns --dns-opt --dns-search --ip --mac-address --network --no-hosts --publish in the future, these options are going to be added to the pod create flags. this makes that transition easier and provides for less code duplication. Signed-off-by: Brent Baude <bbaude@redhat.com>
-rw-r--r--cmd/podman/common.go78
-rw-r--r--cmd/podman/create.go1
-rw-r--r--cmd/podman/pod_create.go12
-rw-r--r--cmd/podman/run.go1
4 files changed, 55 insertions, 37 deletions
diff --git a/cmd/podman/common.go b/cmd/podman/common.go
index 46feae90d..7610edbc0 100644
--- a/cmd/podman/common.go
+++ b/cmd/podman/common.go
@@ -16,6 +16,7 @@ import (
jsoniter "github.com/json-iterator/go"
"github.com/pkg/errors"
"github.com/spf13/cobra"
+ "github.com/spf13/pflag"
)
var (
@@ -116,14 +117,49 @@ func getDefaultNetwork() string {
return "bridge"
}
-func getCreateFlags(c *cliconfig.PodmanCommand) {
-
- createFlags := c.Flags()
-
- createFlags.StringSlice(
+func getNetFlags() *pflag.FlagSet {
+ netFlags := pflag.FlagSet{}
+ netFlags.StringSlice(
"add-host", []string{},
"Add a custom host-to-IP mapping (host:ip) (default [])",
)
+ netFlags.StringSlice(
+ "dns", []string{},
+ "Set custom DNS servers",
+ )
+ netFlags.StringSlice(
+ "dns-opt", []string{},
+ "Set custom DNS options",
+ )
+ netFlags.StringSlice(
+ "dns-search", []string{},
+ "Set custom DNS search domains",
+ )
+ netFlags.String(
+ "ip", "",
+ "Specify a static IPv4 address for the container",
+ )
+ netFlags.String(
+ "mac-address", "",
+ "Container MAC address (e.g. 92:d0:c6:0a:29:33)",
+ )
+ netFlags.String(
+ "network", getDefaultNetwork(),
+ "Connect a container to a network",
+ )
+ netFlags.StringSliceP(
+ "publish", "p", []string{},
+ "Publish a container's port, or a range of ports, to the host (default [])",
+ )
+ netFlags.Bool(
+ "no-hosts", false,
+ "Do not create /etc/hosts within the container, instead use the version from the image",
+ )
+ return &netFlags
+}
+
+func getCreateFlags(c *cliconfig.PodmanCommand) {
+ createFlags := c.Flags()
createFlags.StringSlice(
"annotation", []string{},
"Add annotations to container (key:value) (default [])",
@@ -236,18 +272,6 @@ func getCreateFlags(c *cliconfig.PodmanCommand) {
"device-write-iops", []string{},
"Limit write rate (IO per second) to a device (e.g. --device-write-iops=/dev/sda:1000)",
)
- createFlags.StringSlice(
- "dns", []string{},
- "Set custom DNS servers",
- )
- createFlags.StringSlice(
- "dns-opt", []string{},
- "Set custom DNS options",
- )
- createFlags.StringSlice(
- "dns-search", []string{},
- "Set custom DNS search domains",
- )
createFlags.String(
"entrypoint", "",
"Overwrite the default ENTRYPOINT of the image",
@@ -324,10 +348,6 @@ func getCreateFlags(c *cliconfig.PodmanCommand) {
"Keep STDIN open even if not attached",
)
createFlags.String(
- "ip", "",
- "Specify a static IPv4 address for the container",
- )
- createFlags.String(
"ipc", "",
"IPC namespace to use",
)
@@ -351,10 +371,6 @@ func getCreateFlags(c *cliconfig.PodmanCommand) {
"log-opt", []string{},
"Logging driver options (default [])",
)
- createFlags.String(
- "mac-address", "",
- "Container MAC address (e.g. 92:d0:c6:0a:29:33)",
- )
createFlags.StringP(
"memory", "m", "",
"Memory limit "+sizeWithUnitFormat,
@@ -375,14 +391,6 @@ func getCreateFlags(c *cliconfig.PodmanCommand) {
"name", "",
"Assign a name to the container",
)
- createFlags.String(
- "network", getDefaultNetwork(),
- "Connect a container to a network",
- )
- createFlags.Bool(
- "no-hosts", false,
- "Do not create /etc/hosts within the container, instead use the version from the image",
- )
createFlags.Bool(
"oom-kill-disable", false,
"Disable OOM Killer",
@@ -417,10 +425,6 @@ func getCreateFlags(c *cliconfig.PodmanCommand) {
"privileged", false,
"Give extended privileges to container",
)
- createFlags.StringSliceP(
- "publish", "p", []string{},
- "Publish a container's port, or a range of ports, to the host (default [])",
- )
createFlags.BoolP(
"publish-all", "P", false,
"Publish all exposed ports to random ports on the host interface",
diff --git a/cmd/podman/create.go b/cmd/podman/create.go
index 01cad9765..73d62bddb 100644
--- a/cmd/podman/create.go
+++ b/cmd/podman/create.go
@@ -41,6 +41,7 @@ func init() {
getCreateFlags(&createCommand.PodmanCommand)
flags := createCommand.Flags()
+ flags.AddFlagSet(getNetFlags())
flags.SetInterspersed(false)
flags.SetNormalizeFunc(aliasFlags)
}
diff --git a/cmd/podman/pod_create.go b/cmd/podman/pod_create.go
index ad3c00aa8..cee6476ea 100644
--- a/cmd/podman/pod_create.go
+++ b/cmd/podman/pod_create.go
@@ -44,6 +44,18 @@ func init() {
podCreateCommand.SetUsageTemplate(UsageTemplate())
flags := podCreateCommand.Flags()
flags.SetInterspersed(false)
+ // When we are ready to add the network options to the create commmand, we need to uncomment
+ // the following
+
+ //flags.AddFlagSet(getNetFlags())
+
+ // Once this is uncommented, then the publish option below needs to be removed because it
+ // conflicts with the publish in getNetFlags. Upon removal, the c.Publish will not work
+ // anymore and needs to be cleaned up. I suggest starting with removing the Publish attribute
+ // from PodCreateValues structure. Running make should then expose all areas that need to be
+ // addressed. To get the value of publish (and other flags in getNetFlags, use the syntax:
+ // c.<type>("<flag_name") or c.Bool("publish")
+ // Remember to do this safely by checking len, etc.
flags.StringVar(&podCreateCommand.CgroupParent, "cgroup-parent", "", "Set parent cgroup for the pod")
flags.BoolVar(&podCreateCommand.Infra, "infra", true, "Create an infra container associated with the pod to share namespaces with")
diff --git a/cmd/podman/run.go b/cmd/podman/run.go
index caa594682..219f057c3 100644
--- a/cmd/podman/run.go
+++ b/cmd/podman/run.go
@@ -38,6 +38,7 @@ func init() {
flags.SetInterspersed(false)
flags.SetNormalizeFunc(aliasFlags)
flags.Bool("sig-proxy", true, "Proxy received signals to the process")
+ flags.AddFlagSet(getNetFlags())
getCreateFlags(&runCommand.PodmanCommand)
markFlagHiddenForRemoteClient("authfile", flags)
}