mirror of https://github.com/containers/podman.git
				
				
				
			
		
			
				
	
	
		
			42 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
| package createconfig
 | |
| 
 | |
| import (
 | |
| 	"github.com/containers/podman/v2/libpod"
 | |
| 	"github.com/containers/podman/v2/libpod/define"
 | |
| 	spec "github.com/opencontainers/runtime-spec/specs-go"
 | |
| 	"github.com/pkg/errors"
 | |
| 	"github.com/sirupsen/logrus"
 | |
| )
 | |
| 
 | |
| // MakeContainerConfig generates all configuration necessary to start a
 | |
| // container with libpod from a completed CreateConfig struct.
 | |
| func (config *CreateConfig) MakeContainerConfig(runtime *libpod.Runtime, pod *libpod.Pod) (*spec.Spec, []libpod.CtrCreateOption, error) {
 | |
| 	if config.Pod != "" && pod == nil {
 | |
| 		return nil, nil, errors.Wrapf(define.ErrInvalidArg, "pod was specified but no pod passed")
 | |
| 	} else if config.Pod == "" && pod != nil {
 | |
| 		return nil, nil, errors.Wrapf(define.ErrInvalidArg, "pod was given but no pod is specified")
 | |
| 	}
 | |
| 
 | |
| 	// Parse volumes flag into OCI spec mounts and libpod Named Volumes.
 | |
| 	// If there is an identical mount in the OCI spec, we will replace it
 | |
| 	// with a mount generated here.
 | |
| 	mounts, namedVolumes, err := config.parseVolumes(runtime)
 | |
| 	if err != nil {
 | |
| 		return nil, nil, err
 | |
| 	}
 | |
| 
 | |
| 	runtimeSpec, err := config.createConfigToOCISpec(runtime, mounts)
 | |
| 	if err != nil {
 | |
| 		return nil, nil, err
 | |
| 	}
 | |
| 
 | |
| 	options, err := config.getContainerCreateOptions(runtime, pod, mounts, namedVolumes)
 | |
| 	if err != nil {
 | |
| 		return nil, nil, err
 | |
| 	}
 | |
| 
 | |
| 	logrus.Debugf("created OCI spec and options for new container")
 | |
| 
 | |
| 	return runtimeSpec, options, nil
 | |
| }
 |