summaryrefslogtreecommitdiff
path: root/pkg/domain/infra/runtime_abi.go
diff options
context:
space:
mode:
authorJhon Honce <jhonce@redhat.com>2020-03-12 10:49:03 -0700
committerJhon Honce <jhonce@redhat.com>2020-03-18 16:41:12 -0700
commitfbe743501e2a3ea28fe446754b9b12988b4e7a0e (patch)
tree7582c99d828bcbc83b6bb312e253f006ac637734 /pkg/domain/infra/runtime_abi.go
parentbd9386ddac4ef6730fbe6ce4104e80f56a48fe43 (diff)
downloadpodman-fbe743501e2a3ea28fe446754b9b12988b4e7a0e.tar.gz
podman-fbe743501e2a3ea28fe446754b9b12988b4e7a0e.tar.bz2
podman-fbe743501e2a3ea28fe446754b9b12988b4e7a0e.zip
V2 podman command
Signed-off-by: Jhon Honce <jhonce@redhat.com>
Diffstat (limited to 'pkg/domain/infra/runtime_abi.go')
-rw-r--r--pkg/domain/infra/runtime_abi.go39
1 files changed, 39 insertions, 0 deletions
diff --git a/pkg/domain/infra/runtime_abi.go b/pkg/domain/infra/runtime_abi.go
new file mode 100644
index 000000000..de996f567
--- /dev/null
+++ b/pkg/domain/infra/runtime_abi.go
@@ -0,0 +1,39 @@
+// +build ABISupport
+
+package infra
+
+import (
+ "context"
+ "fmt"
+
+ "github.com/containers/libpod/pkg/bindings"
+ "github.com/containers/libpod/pkg/domain/entities"
+ "github.com/containers/libpod/pkg/domain/infra/abi"
+ "github.com/containers/libpod/pkg/domain/infra/tunnel"
+)
+
+// NewContainerEngine factory provides a libpod runtime for container-related operations
+func NewContainerEngine(mode entities.EngineMode, opts entities.EngineOptions) (entities.ContainerEngine, error) {
+ switch mode {
+ case entities.ABIMode:
+ r, err := NewLibpodRuntime(opts.FlagSet, opts.Flags)
+ return &abi.ContainerEngine{ContainerEngine: r}, err
+ case entities.TunnelMode:
+ ctx, err := bindings.NewConnection(context.Background(), opts.Uri.String(), opts.Identities...)
+ return &tunnel.ContainerEngine{ClientCxt: ctx}, err
+ }
+ return nil, fmt.Errorf("runtime mode '%v' is not supported", mode)
+}
+
+// NewContainerEngine factory provides a libpod runtime for image-related operations
+func NewImageEngine(mode entities.EngineMode, opts entities.EngineOptions) (entities.ImageEngine, error) {
+ switch mode {
+ case entities.ABIMode:
+ r, err := NewLibpodImageRuntime(opts.FlagSet, opts.Flags)
+ return r, err
+ case entities.TunnelMode:
+ ctx, err := bindings.NewConnection(context.Background(), opts.Uri.String(), opts.Identities...)
+ return &tunnel.ImageEngine{ClientCxt: ctx}, err
+ }
+ return nil, fmt.Errorf("runtime mode '%v' is not supported", mode)
+}