summaryrefslogtreecommitdiff
path: root/pkg/spec/spec.go
diff options
context:
space:
mode:
authorOpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com>2020-03-03 14:48:10 +0100
committerGitHub <noreply@github.com>2020-03-03 14:48:10 +0100
commit3bc5f431d4df9724501a42a68e333f7e98a0b0cf (patch)
tree1f17afda2b289133dc4feaec4d8fb495c43372f2 /pkg/spec/spec.go
parent34baea814ba6af58e7f7b65622fd0fb7b838fbf7 (diff)
parentf678b3fcf13d78cf45ea4fdb7f9f0937773b8371 (diff)
downloadpodman-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.go14
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
}