123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- package runconfig
- // Compare two Config struct. Do not compare the "Image" nor "Hostname" fields
- // If OpenStdin is set, then it differs
- func Compare(a, b *Config) bool {
- if a == nil || b == nil ||
- a.OpenStdin || b.OpenStdin {
- return false
- }
- if a.AttachStdout != b.AttachStdout ||
- a.AttachStderr != b.AttachStderr ||
- a.User != b.User ||
- a.Memory != b.Memory ||
- a.MemorySwap != b.MemorySwap ||
- a.CpuShares != b.CpuShares ||
- a.OpenStdin != b.OpenStdin ||
- a.Tty != b.Tty {
- return false
- }
- if len(a.Cmd) != len(b.Cmd) ||
- len(a.Env) != len(b.Env) ||
- len(a.PortSpecs) != len(b.PortSpecs) ||
- len(a.ExposedPorts) != len(b.ExposedPorts) ||
- len(a.Entrypoint) != len(b.Entrypoint) ||
- len(a.Volumes) != len(b.Volumes) {
- return false
- }
- for i := 0; i < len(a.Cmd); i++ {
- if a.Cmd[i] != b.Cmd[i] {
- return false
- }
- }
- for i := 0; i < len(a.Env); i++ {
- if a.Env[i] != b.Env[i] {
- return false
- }
- }
- for i := 0; i < len(a.PortSpecs); i++ {
- if a.PortSpecs[i] != b.PortSpecs[i] {
- return false
- }
- }
- for k := range a.ExposedPorts {
- if _, exists := b.ExposedPorts[k]; !exists {
- return false
- }
- }
- for i := 0; i < len(a.Entrypoint); i++ {
- if a.Entrypoint[i] != b.Entrypoint[i] {
- return false
- }
- }
- for key := range a.Volumes {
- if _, exists := b.Volumes[key]; !exists {
- return false
- }
- }
- return true
- }
|