mirror of
https://github.com/containers/podman.git
synced 2025-09-27 00:34:32 +08:00
[NO TESTS NEEDED] Vendor in containers/buildah v1.20.0
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
This commit is contained in:
91
vendor/github.com/containers/buildah/run.go
generated
vendored
91
vendor/github.com/containers/buildah/run.go
generated
vendored
@ -4,12 +4,13 @@ import (
|
||||
"fmt"
|
||||
"io"
|
||||
|
||||
"github.com/containers/buildah/define"
|
||||
"github.com/opencontainers/runtime-spec/specs-go"
|
||||
)
|
||||
|
||||
const (
|
||||
// runUsingRuntimeCommand is a command we use as a key for reexec
|
||||
runUsingRuntimeCommand = Package + "-oci-runtime"
|
||||
runUsingRuntimeCommand = define.Package + "-oci-runtime"
|
||||
)
|
||||
|
||||
// TerminalPolicy takes the value DefaultTerminal, WithoutTerminal, or WithTerminal.
|
||||
@ -41,74 +42,38 @@ func (t TerminalPolicy) String() string {
|
||||
}
|
||||
|
||||
// NamespaceOption controls how we set up a namespace when launching processes.
|
||||
type NamespaceOption struct {
|
||||
// Name specifies the type of namespace, typically matching one of the
|
||||
// ...Namespace constants defined in
|
||||
// github.com/opencontainers/runtime-spec/specs-go.
|
||||
Name string
|
||||
// Host is used to force our processes to use the host's namespace of
|
||||
// this type.
|
||||
Host bool
|
||||
// Path is the path of the namespace to attach our process to, if Host
|
||||
// is not set. If Host is not set and Path is also empty, a new
|
||||
// namespace will be created for the process that we're starting.
|
||||
// If Name is specs.NetworkNamespace, if Path doesn't look like an
|
||||
// absolute path, it is treated as a comma-separated list of CNI
|
||||
// configuration names which will be selected from among all of the CNI
|
||||
// network configurations which we find.
|
||||
Path string
|
||||
}
|
||||
type NamespaceOption = define.NamespaceOption
|
||||
|
||||
// NamespaceOptions provides some helper methods for a slice of NamespaceOption
|
||||
// structs.
|
||||
type NamespaceOptions []NamespaceOption
|
||||
type NamespaceOptions = define.NamespaceOptions
|
||||
|
||||
// IDMappingOptions controls how we set up UID/GID mapping when we set up a
|
||||
// user namespace.
|
||||
type IDMappingOptions struct {
|
||||
HostUIDMapping bool
|
||||
HostGIDMapping bool
|
||||
UIDMap []specs.LinuxIDMapping
|
||||
GIDMap []specs.LinuxIDMapping
|
||||
}
|
||||
type IDMappingOptions = define.IDMappingOptions
|
||||
|
||||
// Isolation provides a way to specify whether we're supposed to use a proper
|
||||
// OCI runtime, or some other method for running commands.
|
||||
type Isolation int
|
||||
type Isolation = define.Isolation
|
||||
|
||||
const (
|
||||
// IsolationDefault is whatever we think will work best.
|
||||
IsolationDefault Isolation = iota
|
||||
IsolationDefault = define.IsolationDefault
|
||||
// IsolationOCI is a proper OCI runtime.
|
||||
IsolationOCI
|
||||
IsolationOCI = define.IsolationOCI
|
||||
// IsolationChroot is a more chroot-like environment: less isolation,
|
||||
// but with fewer requirements.
|
||||
IsolationChroot
|
||||
IsolationChroot = define.IsolationChroot
|
||||
// IsolationOCIRootless is a proper OCI runtime in rootless mode.
|
||||
IsolationOCIRootless
|
||||
IsolationOCIRootless = define.IsolationOCIRootless
|
||||
)
|
||||
|
||||
// String converts a Isolation into a string.
|
||||
func (i Isolation) String() string {
|
||||
switch i {
|
||||
case IsolationDefault:
|
||||
return "IsolationDefault"
|
||||
case IsolationOCI:
|
||||
return "IsolationOCI"
|
||||
case IsolationChroot:
|
||||
return "IsolationChroot"
|
||||
case IsolationOCIRootless:
|
||||
return "IsolationOCIRootless"
|
||||
}
|
||||
return fmt.Sprintf("unrecognized isolation type %d", i)
|
||||
}
|
||||
|
||||
// RunOptions can be used to alter how a command is run in the container.
|
||||
type RunOptions struct {
|
||||
// Hostname is the hostname we set for the running container.
|
||||
Hostname string
|
||||
// Isolation is either IsolationDefault, IsolationOCI, IsolationChroot, or IsolationOCIRootless.
|
||||
Isolation Isolation
|
||||
Isolation define.Isolation
|
||||
// Runtime is the name of the runtime to run. It should accept the
|
||||
// same arguments that runc does, and produce similar output.
|
||||
Runtime string
|
||||
@ -131,13 +96,13 @@ type RunOptions struct {
|
||||
// Entrypoint is an override for the configured entry point.
|
||||
Entrypoint []string
|
||||
// NamespaceOptions controls how we set up the namespaces for the process.
|
||||
NamespaceOptions NamespaceOptions
|
||||
NamespaceOptions define.NamespaceOptions
|
||||
// ConfigureNetwork controls whether or not network interfaces and
|
||||
// routing are configured for a new network namespace (i.e., when not
|
||||
// joining another's namespace and not just using the host's
|
||||
// namespace), effectively deciding whether or not the process has a
|
||||
// usable network.
|
||||
ConfigureNetwork NetworkConfigurationPolicy
|
||||
ConfigureNetwork define.NetworkConfigurationPolicy
|
||||
// CNIPluginPath is the location of CNI plugin helpers, if they should be
|
||||
// run from a location other than the default location.
|
||||
CNIPluginPath string
|
||||
@ -168,33 +133,5 @@ type RunOptions struct {
|
||||
// lists, it will be dropped.
|
||||
DropCapabilities []string
|
||||
// Devices are the additional devices to add to the containers
|
||||
Devices ContainerDevices
|
||||
}
|
||||
|
||||
// Find the configuration for the namespace of the given type. If there are
|
||||
// duplicates, find the _last_ one of the type, since we assume it was appended
|
||||
// more recently.
|
||||
func (n *NamespaceOptions) Find(namespace string) *NamespaceOption {
|
||||
for i := range *n {
|
||||
j := len(*n) - 1 - i
|
||||
if (*n)[j].Name == namespace {
|
||||
return &((*n)[j])
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// AddOrReplace either adds or replaces the configuration for a given namespace.
|
||||
func (n *NamespaceOptions) AddOrReplace(options ...NamespaceOption) {
|
||||
nextOption:
|
||||
for _, option := range options {
|
||||
for i := range *n {
|
||||
j := len(*n) - 1 - i
|
||||
if (*n)[j].Name == option.Name {
|
||||
(*n)[j] = option
|
||||
continue nextOption
|
||||
}
|
||||
}
|
||||
*n = append(*n, option)
|
||||
}
|
||||
Devices define.ContainerDevices
|
||||
}
|
||||
|
Reference in New Issue
Block a user