pkg/config: turn devices into attributedstring.Slice

The tests are messy and should be turned into table-driven tests but I
do not have time at the moment.

Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
This commit is contained in:
Valentin Rothberg 2023-10-25 13:45:29 +02:00
parent 29b42f3f4f
commit b8c3014c2a
5 changed files with 14 additions and 13 deletions

View File

@ -69,7 +69,7 @@ type Config struct {
// containers global options for containers tools
type ContainersConfig struct {
// Devices to add to all containers
Devices []string `toml:"devices,omitempty"`
Devices attributedstring.Slice `toml:"devices,omitempty"`
// Volumes to add to all containers
Volumes attributedstring.Slice `toml:"volumes,omitempty"`

View File

@ -31,7 +31,7 @@ func (c *EngineConfig) validatePaths() error {
}
func (c *ContainersConfig) validateDevices() error {
for _, d := range c.Devices {
for _, d := range c.Devices.Values {
if parser.IsQualifiedName(d) {
continue
}

View File

@ -155,7 +155,7 @@ var _ = Describe("Config Local", func() {
gomega.Expect(defConf).NotTo(gomega.BeNil())
// Given
defConf.Containers.Devices = []string{"/dev/null:/dev/null:abc"}
defConf.Containers.Devices = attributedstring.Slice{Values: []string{"/dev/null:/dev/null:abc"}}
// When
err = defConf.Containers.Validate()
@ -170,7 +170,7 @@ var _ = Describe("Config Local", func() {
gomega.Expect(defConf).NotTo(gomega.BeNil())
// Given
defConf.Containers.Devices = []string{"wrong:/dev/null:rw"}
defConf.Containers.Devices = attributedstring.Slice{Values: []string{"wrong:/dev/null:rw"}}
// When
err = defConf.Containers.Validate()
@ -185,7 +185,7 @@ var _ = Describe("Config Local", func() {
gomega.Expect(defConf).NotTo(gomega.BeNil())
// Given
defConf.Containers.Devices = []string{"/dev/null:wrong:rw"}
defConf.Containers.Devices = attributedstring.Slice{Values: []string{"/dev/null:wrong:rw"}}
// When
err = defConf.Containers.Validate()
@ -200,7 +200,7 @@ var _ = Describe("Config Local", func() {
gomega.Expect(defConf).NotTo(gomega.BeNil())
// Given
defConf.Containers.Devices = []string{invalidPath}
defConf.Containers.Devices = attributedstring.Slice{Values: []string{invalidPath}}
// When
err = defConf.Containers.Validate()
@ -215,7 +215,7 @@ var _ = Describe("Config Local", func() {
gomega.Expect(defConf).NotTo(gomega.BeNil())
// Given
defConf.Containers.Devices = []string{"::::"}
defConf.Containers.Devices = attributedstring.Slice{Values: []string{"::::"}}
// When
err = defConf.Containers.Validate()
@ -353,12 +353,12 @@ var _ = Describe("Config Local", func() {
config, err := ReadCustomConfig()
gomega.Expect(err).To(gomega.BeNil())
config.Containers.Devices = []string{
config.Containers.Devices = attributedstring.Slice{Values: []string{
"/dev/null:/dev/null:rw",
"/dev/sdc/",
"/dev/sdc:/dev/xvdc",
"/dev/sdc:rm",
}
}}
boolTrue := true
config.Containers.Env = attributedstring.Slice{Values: []string{"A", "B", "C"}}
config.Containers.Env.Attributes.Append = &boolTrue

View File

@ -9,6 +9,7 @@ import (
"sort"
"strings"
"github.com/containers/common/internal/attributedstring"
"github.com/containers/common/pkg/apparmor"
"github.com/containers/common/pkg/capabilities"
. "github.com/onsi/ginkgo/v2"
@ -59,12 +60,12 @@ var _ = Describe("Config", func() {
gomega.Expect(defConf).NotTo(gomega.BeNil())
// Given
defConf.Containers.Devices = []string{
defConf.Containers.Devices = attributedstring.Slice{Values: []string{
"/dev/null:/dev/null:rw",
"/dev/sdc/",
"/dev/sdc:/dev/xvdc",
"/dev/sdc:rm",
}
}}
// When
err = defConf.Containers.Validate()

View File

@ -202,7 +202,7 @@ func defaultConfig() (*Config, error) {
DefaultCapabilities: DefaultCapabilities,
DefaultSysctls: []string{},
DefaultUlimits: getDefaultProcessLimits(),
Devices: []string{},
Devices: attributedstring.Slice{},
EnableKeyring: true,
EnableLabeling: selinuxEnabled(),
Env: attributedstring.Slice{
@ -520,7 +520,7 @@ func (c *Config) Mounts() []string {
// Devices returns the default additional devices for containers.
func (c *Config) Devices() []string {
return c.Containers.Devices
return c.Containers.Devices.Get()
}
// DNSServers returns the default DNS servers to add to resolv.conf in containers.