Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[v0.44] config: add omitzero for numeric types #796

Merged
merged 1 commit into from
Oct 1, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 10 additions & 26 deletions pkg/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ type ContainersConfig struct {
// will be truncated. It can be expressed as a human-friendly string
// that is parsed to bytes.
// Negative values indicate that the log file won't be truncated.
LogSizeMax int64 `toml:"log_size_max,omitempty"`
LogSizeMax int64 `toml:"log_size_max,omitempty,omitzero"`

// Specifies default format tag for container log messages.
// This is useful for creating a specific tag for container log messages.
Expand All @@ -155,7 +155,7 @@ type ContainersConfig struct {

// PidsLimit is the number of processes each container is restricted to
// by the cgroup process number controller.
PidsLimit int64 `toml:"pids_limit,omitempty"`
PidsLimit int64 `toml:"pids_limit,omitempty,omitzero"`

// PidNS indicates how to create a pid namespace for the container
PidNS string `toml:"pidns,omitempty"`
Expand Down Expand Up @@ -192,7 +192,7 @@ type ContainersConfig struct {
UserNS string `toml:"userns,omitempty"`

// UserNSSize how many UIDs to allocate for automatically created UserNS
UserNSSize int `toml:"userns_size,omitempty"`
UserNSSize int `toml:"userns_size,omitempty,omitzero"`
}

// EngineConfig contains configuration options used to set up a engine runtime
Expand Down Expand Up @@ -256,7 +256,7 @@ type EngineConfig struct {
// ImageParallelCopies indicates the maximum number of image layers
// to be copied simultaneously. If this is zero, container engines
// will fall back to containers/image defaults.
ImageParallelCopies uint `toml:"image_parallel_copies,omitempty"`
ImageParallelCopies uint `toml:"image_parallel_copies,omitempty,omitzero"`

// ImageDefaultFormat specified the manifest Type (oci, v2s2, or v2s1)
// to use when pulling, pushing, building container images. By default
Expand Down Expand Up @@ -305,7 +305,7 @@ type EngineConfig struct {

// NumLocks is the number of locks to make available for containers and
// pods.
NumLocks uint32 `toml:"num_locks,omitempty"`
NumLocks uint32 `toml:"num_locks,omitempty,omitzero"`

// OCIRuntime is the OCI runtime to use.
OCIRuntime string `toml:"runtime,omitempty"`
Expand Down Expand Up @@ -381,7 +381,7 @@ type EngineConfig struct {

// StopTimeout is the number of seconds to wait for container to exit
// before sending kill signal.
StopTimeout uint `toml:"stop_timeout,omitempty"`
StopTimeout uint `toml:"stop_timeout,omitempty,omitzero"`

// TmpDir is the path to a temporary directory to store per-boot container
// files. Must be stored in a tmpfs.
Expand All @@ -400,7 +400,7 @@ type EngineConfig struct {

// ChownCopiedFiles tells the container engine whether to chown files copied
// into a container to the container's primary uid/gid.
ChownCopiedFiles bool `toml:"chown_copied_files"`
ChownCopiedFiles bool `toml:"chown_copied_files,omitempty"`
}

// SetOptions contains a subset of options in a Config. It's used to indicate if
Expand Down Expand Up @@ -479,13 +479,13 @@ type SecretConfig struct {
// MachineConfig represents the "machine" TOML config table
type MachineConfig struct {
// Number of CPU's a machine is created with.
CPUs uint64 `toml:"cpus,omitempty"`
CPUs uint64 `toml:"cpus,omitempty,omitzero"`
// DiskSize is the size of the disk in GB created when init-ing a podman-machine VM
DiskSize uint64 `toml:"disk_size,omitempty"`
DiskSize uint64 `toml:"disk_size,omitempty,omitzero"`
// MachineImage is the image used when init-ing a podman-machine VM
Image string `toml:"image,omitempty"`
// Memory in MB a machine is created with.
Memory uint64 `toml:"memory,omitempty"`
Memory uint64 `toml:"memory,omitempty,omitzero"`
}

// Destination represents destination for remote service
Expand Down Expand Up @@ -1054,17 +1054,6 @@ func ReadCustomConfig() (*Config, error) {
if err != nil {
return nil, err
}
// hack since Ommitempty does not seem to work with Write
c, err := Default()
if err != nil {
if os.IsNotExist(errors.Cause(err)) {
c, err = DefaultConfig()
}
if err != nil {
return nil, err
}
}

newConfig := &Config{}
if _, err := os.Stat(path); err == nil {
if err := readConfigFromFile(path, newConfig); err != nil {
Expand All @@ -1075,11 +1064,6 @@ func ReadCustomConfig() (*Config, error) {
return nil, err
}
}
newConfig.Containers.LogSizeMax = c.Containers.LogSizeMax
newConfig.Containers.PidsLimit = c.Containers.PidsLimit
newConfig.Containers.UserNSSize = c.Containers.UserNSSize
newConfig.Engine.NumLocks = c.Engine.NumLocks
newConfig.Engine.StopTimeout = c.Engine.StopTimeout
return newConfig, nil
}

Expand Down
11 changes: 11 additions & 0 deletions pkg/config/config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -467,6 +467,17 @@ var _ = Describe("Config", func() {
err = cfg.Write()
gomega.Expect(err).ShouldNot(gomega.HaveOccurred())

// test that we do not write zero values to the file
path, err := customConfigFile()
gomega.Expect(err).ShouldNot(gomega.HaveOccurred())
f, err := os.Open(path)
gomega.Expect(err).ShouldNot(gomega.HaveOccurred())
data, err := ioutil.ReadAll(f)
gomega.Expect(err).ShouldNot(gomega.HaveOccurred())
gomega.Expect(string(data)).ShouldNot(gomega.ContainSubstring("cpus"))
gomega.Expect(string(data)).ShouldNot(gomega.ContainSubstring("disk_size"))
gomega.Expect(string(data)).ShouldNot(gomega.ContainSubstring("memory"))

cfg, err = ReadCustomConfig()
gomega.Expect(err).ShouldNot(gomega.HaveOccurred())

Expand Down