Sort cliOpts fields alphabetically in Compat Create

Improve code readability by sorting ContainerCreateOptions field
assignments alphabetically and simplifying access to embedded
Config fields.
Fixes: #28377

Signed-off-by: Donal O'Sullivan <donal.osullivan@elastic.co>
This commit is contained in:
Donal O'Sullivan 2026-04-16 16:36:47 +01:00
parent db6378e58d
commit f15b8e1b2b

View file

@ -411,44 +411,55 @@ func cliOpts(cc handlers.CreateContainerConfig, rtc *config.Config) (*entities.C
// like with start. We believe this is just a difference in podman/compat
cliOpts := entities.ContainerCreateOptions{
// Attach: nil, // don't need?
Annotation: stringMaptoArray(cc.HostConfig.Annotations),
Arch: "",
Authfile: "",
CapAdd: cc.HostConfig.CapAdd,
CapDrop: cc.HostConfig.CapDrop,
CgroupNS: string(cc.HostConfig.CgroupnsMode),
CgroupParent: cc.HostConfig.CgroupParent,
CIDFile: cc.HostConfig.ContainerIDFile,
// CPUS: 0, // don't need?
CPUPeriod: uint64(cc.HostConfig.CPUPeriod),
CPUQuota: cc.HostConfig.CPUQuota,
CPURTPeriod: uint64(cc.HostConfig.CPURealtimePeriod),
CPURTRuntime: cc.HostConfig.CPURealtimeRuntime,
CPUSetCPUs: cc.HostConfig.CpusetCpus,
CPUSetMems: cc.HostConfig.CpusetMems,
CPUShares: uint64(cc.HostConfig.CPUShares),
// CPUS: 0, // don't need?
CPUSetCPUs: cc.HostConfig.CpusetCpus,
CPUSetMems: cc.HostConfig.CpusetMems,
// Detach: false, // don't need
// DetachKeys: "", // don't need
Devices: devices,
DeviceCgroupRule: cc.HostConfig.DeviceCgroupRules,
DeviceReadBPs: readBps,
DeviceReadIOPs: readIops,
Devices: devices,
DeviceWriteBPs: writeBps,
DeviceWriteIOPs: writeIops,
Entrypoint: entrypoint,
Env: cc.Config.Env,
Env: cc.Env,
EnvMerge: cc.EnvMerge,
Expose: expose,
GroupAdd: cc.HostConfig.GroupAdd,
Hostname: cc.Config.Hostname,
HealthInterval: define.DefaultHealthCheckInterval,
HealthLogDestination: define.DefaultHealthCheckLocalDestination,
HealthMaxLogCount: define.DefaultHealthMaxLogCount,
HealthMaxLogSize: define.DefaultHealthMaxLogSize,
HealthRetries: define.DefaultHealthCheckRetries,
HealthStartPeriod: define.DefaultHealthCheckStartPeriod,
HealthTimeout: define.DefaultHealthCheckTimeout,
Hostname: cc.Hostname,
ImageVolume: "anonymous",
Init: init,
Interactive: cc.Config.OpenStdin,
Interactive: cc.OpenStdin,
IPC: string(cc.HostConfig.IpcMode),
Label: stringMaptoArray(cc.Config.Labels),
Label: stringMaptoArray(cc.Labels),
LogDriver: cc.HostConfig.LogConfig.Type,
LogOptions: stringMaptoArray(cc.HostConfig.LogConfig.Config),
Mount: mounts,
Name: cc.Name,
Net: &netInfo,
OOMScoreAdj: &cc.HostConfig.OomScoreAdj,
Arch: "",
OS: "",
Variant: "",
PID: string(cc.HostConfig.PidMode),
PIDsLimit: cc.HostConfig.PidsLimit,
Privileged: cc.HostConfig.Privileged,
@ -457,33 +468,22 @@ func cliOpts(cc handlers.CreateContainerConfig, rtc *config.Config) (*entities.C
ReadOnly: cc.HostConfig.ReadonlyRootfs,
ReadWriteTmpFS: true, // podman default
Rm: cc.HostConfig.AutoRemove,
Annotation: stringMaptoArray(cc.HostConfig.Annotations),
SecurityOpt: cc.HostConfig.SecurityOpt,
StopSignal: cc.Config.StopSignal,
StopSignal: cc.StopSignal,
StopTimeout: rtc.Engine.StopTimeout, // podman default
StorageOpts: stringMaptoArray(cc.HostConfig.StorageOpt),
Sysctl: stringMaptoArray(cc.HostConfig.Sysctls),
Systemd: "true", // podman default
TmpFS: parsedTmp,
TTY: cc.Config.Tty,
EnvMerge: cc.EnvMerge,
TTY: cc.Tty,
UnsetEnv: cc.UnsetEnv,
UnsetEnvAll: cc.UnsetEnvAll,
User: cc.Config.User,
User: cc.User,
UserNS: string(cc.HostConfig.UsernsMode),
UTS: string(cc.HostConfig.UTSMode),
CgroupNS: string(cc.HostConfig.CgroupnsMode),
Mount: mounts,
Variant: "",
VolumesFrom: cc.HostConfig.VolumesFrom,
Workdir: cc.Config.WorkingDir,
Net: &netInfo,
HealthInterval: define.DefaultHealthCheckInterval,
HealthRetries: define.DefaultHealthCheckRetries,
HealthTimeout: define.DefaultHealthCheckTimeout,
HealthStartPeriod: define.DefaultHealthCheckStartPeriod,
HealthLogDestination: define.DefaultHealthCheckLocalDestination,
HealthMaxLogCount: define.DefaultHealthMaxLogCount,
HealthMaxLogSize: define.DefaultHealthMaxLogSize,
Workdir: cc.WorkingDir,
}
var ulimits []string