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  }