diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2020-03-03 14:48:10 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-03 14:48:10 +0100 |
commit | 3bc5f431d4df9724501a42a68e333f7e98a0b0cf (patch) | |
tree | 1f17afda2b289133dc4feaec4d8fb495c43372f2 /pkg/spec/spec.go | |
parent | 34baea814ba6af58e7f7b65622fd0fb7b838fbf7 (diff) | |
parent | f678b3fcf13d78cf45ea4fdb7f9f0937773b8371 (diff) | |
download | podman-3bc5f431d4df9724501a42a68e333f7e98a0b0cf.tar.gz podman-3bc5f431d4df9724501a42a68e333f7e98a0b0cf.tar.bz2 podman-3bc5f431d4df9724501a42a68e333f7e98a0b0cf.zip |
Merge pull request #5206 from rhatdan/capabilities
Allow devs to set labels in container images for default capabilities.
Diffstat (limited to 'pkg/spec/spec.go')
-rw-r--r-- | pkg/spec/spec.go | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/pkg/spec/spec.go b/pkg/spec/spec.go index 77f8bc657..8f0630b85 100644 --- a/pkg/spec/spec.go +++ b/pkg/spec/spec.go @@ -3,6 +3,7 @@ package createconfig import ( "strings" + "github.com/containers/common/pkg/capabilities" "github.com/containers/libpod/libpod" libpodconfig "github.com/containers/libpod/libpod/config" "github.com/containers/libpod/libpod/define" @@ -10,6 +11,7 @@ import ( "github.com/containers/libpod/pkg/env" "github.com/containers/libpod/pkg/rootless" "github.com/containers/libpod/pkg/sysinfo" + "github.com/containers/libpod/pkg/util" "github.com/docker/go-units" "github.com/opencontainers/runc/libcontainer/user" spec "github.com/opencontainers/runtime-spec/specs-go" @@ -330,6 +332,18 @@ func (config *CreateConfig) createConfigToOCISpec(runtime *libpod.Runtime, userM } configSpec := g.Config + // If the container image specifies an label with a + // capabilities.ContainerImageLabel then split the comma separated list + // of capabilities and record them. This list indicates the only + // capabilities, required to run the container. + var capRequired []string + for key, val := range config.Labels { + if util.StringInSlice(key, capabilities.ContainerImageLabels) { + capRequired = strings.Split(val, ",") + } + } + config.Security.CapRequired = capRequired + if err := config.Security.ConfigureGenerator(&g, &config.User); err != nil { return nil, err } |