github.com/containers/podman/v2@v2.2.2-0.20210501105131-c1e07d070c4c/pkg/domain/infra/runtime_tunnel.go (about) 1 // +build remote 2 3 package infra 4 5 import ( 6 "context" 7 "fmt" 8 9 "github.com/containers/podman/v2/pkg/bindings" 10 "github.com/containers/podman/v2/pkg/domain/entities" 11 "github.com/containers/podman/v2/pkg/domain/infra/tunnel" 12 ) 13 14 func NewContainerEngine(facts *entities.PodmanConfig) (entities.ContainerEngine, error) { 15 switch facts.EngineMode { 16 case entities.ABIMode: 17 return nil, fmt.Errorf("direct runtime not supported") 18 case entities.TunnelMode: 19 ctx, err := bindings.NewConnectionWithIdentity(context.Background(), facts.URI, facts.Identity) 20 return &tunnel.ContainerEngine{ClientCxt: ctx}, err 21 } 22 return nil, fmt.Errorf("runtime mode '%v' is not supported", facts.EngineMode) 23 } 24 25 // NewImageEngine factory provides a libpod runtime for image-related operations 26 func NewImageEngine(facts *entities.PodmanConfig) (entities.ImageEngine, error) { 27 switch facts.EngineMode { 28 case entities.ABIMode: 29 return nil, fmt.Errorf("direct image runtime not supported") 30 case entities.TunnelMode: 31 ctx, err := bindings.NewConnectionWithIdentity(context.Background(), facts.URI, facts.Identity) 32 return &tunnel.ImageEngine{ClientCxt: ctx}, err 33 } 34 return nil, fmt.Errorf("runtime mode '%v' is not supported", facts.EngineMode) 35 }