summaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
Diffstat (limited to 'cmd')
-rw-r--r--cmd/podman/common.go64
-rw-r--r--cmd/podman/utils.go53
2 files changed, 54 insertions, 63 deletions
diff --git a/cmd/podman/common.go b/cmd/podman/common.go
index 921f30b84..e0aaf52c0 100644
--- a/cmd/podman/common.go
+++ b/cmd/podman/common.go
@@ -1,7 +1,6 @@
package main
import (
- "os"
"reflect"
"regexp"
"strings"
@@ -9,7 +8,6 @@ import (
"github.com/containers/storage"
"github.com/fatih/camelcase"
"github.com/pkg/errors"
- "github.com/projectatomic/libpod/libkpod"
"github.com/projectatomic/libpod/libpod"
"github.com/urfave/cli"
)
@@ -23,69 +21,9 @@ var (
)
const (
- crioConfigPath = "/etc/crio/crio.conf"
- idTruncLength = 12
+ idTruncLength = 12
)
-func getRuntime(c *cli.Context) (*libpod.Runtime, error) {
-
- config, err := getConfig(c)
- if err != nil {
- return nil, errors.Wrapf(err, "could not get config")
- }
-
- options := storage.DefaultStoreOptions
- options.GraphRoot = config.Root
- options.RunRoot = config.RunRoot
- options.GraphDriverName = config.Storage
- options.GraphDriverOptions = config.StorageOptions
-
- return libpod.NewRuntime(libpod.WithStorageConfig(options), libpod.WithConmonPath(config.Conmon), libpod.WithOCIRuntime(config.Runtime), libpod.WithCNIConfigDir(config.NetworkDir))
-}
-
-func getConfig(c *cli.Context) (*libkpod.Config, error) {
- config := libkpod.DefaultConfig()
- var configFile string
- if c.GlobalIsSet("config") {
- configFile = c.GlobalString("config")
- } else if _, err := os.Stat(crioConfigPath); err == nil {
- configFile = crioConfigPath
- }
- // load and merge the configfile from the commandline or use
- // the default crio config file
- if configFile != "" {
- err := config.UpdateFromFile(configFile)
- if err != nil {
- return config, err
- }
- }
- if c.GlobalIsSet("root") {
- config.Root = c.GlobalString("root")
- }
- if c.GlobalIsSet("runroot") {
- config.RunRoot = c.GlobalString("runroot")
- }
- if c.GlobalIsSet("conmon") {
- config.Conmon = c.GlobalString("conmon")
- }
- if c.GlobalIsSet("storage-driver") {
- config.Storage = c.GlobalString("storage-driver")
- }
- if c.GlobalIsSet("storage-opt") {
- opts := c.GlobalStringSlice("storage-opt")
- if len(opts) > 0 {
- config.StorageOptions = opts
- }
- }
- if c.GlobalIsSet("runtime") {
- config.Runtime = c.GlobalString("runtime")
- }
- if c.GlobalIsSet("cni-config-dir") {
- config.NetworkDir = c.GlobalString("cni-config-dir")
- }
- return config, nil
-}
-
func splitCamelCase(src string) string {
entries := camelcase.Split(src)
return strings.Join(entries, " ")
diff --git a/cmd/podman/utils.go b/cmd/podman/utils.go
new file mode 100644
index 000000000..a002966c8
--- /dev/null
+++ b/cmd/podman/utils.go
@@ -0,0 +1,53 @@
+package main
+
+import (
+ "github.com/containers/storage"
+ "github.com/projectatomic/libpod/libpod"
+ "github.com/urfave/cli"
+)
+
+// Generate a new libpod runtime configured by command line options
+func getRuntime(c *cli.Context) (*libpod.Runtime, error) {
+ options := []libpod.RuntimeOption{}
+
+ if c.GlobalIsSet("root") || c.GlobalIsSet("runroot") ||
+ c.GlobalIsSet("storage-opt") {
+ storageOpts := storage.DefaultStoreOptions
+
+ if c.GlobalIsSet("root") {
+ storageOpts.GraphRoot = c.GlobalString("root")
+ }
+ if c.GlobalIsSet("runroot") {
+ storageOpts.RunRoot = c.GlobalString("runroot")
+ }
+ // TODO add CLI option to set graph driver
+ if c.GlobalIsSet("storage-opt") {
+ storageOpts.GraphDriverOptions = c.GlobalStringSlice("storage-opt")
+ }
+
+ options = append(options, libpod.WithStorageConfig(storageOpts))
+ }
+
+ // TODO CLI flags for image config?
+ // TODO CLI flag for signature policy?
+
+ if c.GlobalIsSet("runtime") {
+ options = append(options, libpod.WithOCIRuntime(c.GlobalString("runtime")))
+ }
+
+ if c.GlobalIsSet("conmon") {
+ options = append(options, libpod.WithConmonPath(c.GlobalString("conmon")))
+ }
+
+ // TODO flag to set CGroup manager?
+ // TODO flag to set libpod static dir?
+ // TODO flag to set libpod tmp dir?
+
+ if c.GlobalIsSet("cni-config-dir") {
+ options = append(options, libpod.WithCNIConfigDir(c.GlobalString("cni-config-dir")))
+ }
+
+ // TODO flag to set CNI plugins dir?
+
+ return libpod.NewRuntime(options...)
+}