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  }