github.com/Cloud-Foundations/Dominator@v0.3.4/lib/mdb/compare.go (about) 1 package mdb 2 3 import ( 4 "github.com/Cloud-Foundations/Dominator/lib/tags" 5 ) 6 7 func (left Machine) compare(right Machine) bool { 8 if left.Hostname != right.Hostname { 9 return false 10 } 11 if left.IpAddress != right.IpAddress { 12 return false 13 } 14 if left.Location != right.Location { 15 return false 16 } 17 if left.RequiredImage != right.RequiredImage { 18 return false 19 } 20 if left.PlannedImage != right.PlannedImage { 21 return false 22 } 23 if left.DisableUpdates != right.DisableUpdates { 24 return false 25 } 26 if left.OwnerGroup != right.OwnerGroup { 27 return false 28 } 29 if !compareOwners(left.OwnerGroups, right.OwnerGroups) { 30 return false 31 } 32 if !compareOwners(left.OwnerUsers, right.OwnerUsers) { 33 return false 34 } 35 if !compareTags(left.Tags, right.Tags) { 36 return false 37 } 38 if right.AwsMetadata == nil { 39 if left.AwsMetadata != nil { 40 return false 41 } 42 } else if left.AwsMetadata == nil { 43 return false 44 } else if !compareAwsMetadata(left.AwsMetadata, right.AwsMetadata) { 45 return false 46 } 47 return true 48 } 49 50 func compareAwsMetadata(left, right *AwsMetadata) bool { 51 if left.AccountId != right.AccountId { 52 return false 53 } 54 if left.AccountName != right.AccountName { 55 return false 56 } 57 if left.InstanceId != right.InstanceId { 58 return false 59 } 60 if left.Region != right.Region { 61 return false 62 } 63 if len(left.Tags) != len(right.Tags) { 64 return false 65 } 66 return compareTags(left.Tags, right.Tags) 67 } 68 69 func compareOwners(left, right []string) bool { 70 if len(left) != len(right) { 71 return false 72 } 73 for index, value := range left { 74 if right[index] != value { 75 return false 76 } 77 } 78 return true 79 } 80 81 func compareTags(left, right tags.Tags) bool { 82 if len(left) != len(right) { 83 return false 84 } 85 for key, value := range left { 86 if right[key] != value { 87 return false 88 } 89 } 90 return true 91 }