From 3aeaf737881f6131e28dabaaed654069da8936f2 Mon Sep 17 00:00:00 2001 From: Justin Santa Barbara Date: Mon, 30 May 2016 17:46:11 -0400 Subject: [PATCH] upup: move string-slice comparison functions to utils --- .../fi/nodeup/cloudinit/cloud_init_target.go | 14 +-------- upup/pkg/fi/utils/equals.go | 30 +++++++++++++++++++ 2 files changed, 31 insertions(+), 13 deletions(-) create mode 100644 upup/pkg/fi/utils/equals.go diff --git a/upup/pkg/fi/nodeup/cloudinit/cloud_init_target.go b/upup/pkg/fi/nodeup/cloudinit/cloud_init_target.go index ed220be7a3..a6ab1e8631 100644 --- a/upup/pkg/fi/nodeup/cloudinit/cloud_init_target.go +++ b/upup/pkg/fi/nodeup/cloudinit/cloud_init_target.go @@ -126,18 +126,6 @@ func (t *CloudInitTarget) Chown(path string, user, group string) { t.AddCommand(Always, "chown", user+":"+group, path) } -func stringSlicesEquals(l, r []string) bool { - if len(l) != len(r) { - return false - } - for i, v := range l { - if r[i] != v { - return false - } - } - return true -} - func (t *CloudInitTarget) AddCommand(addBehaviour AddBehaviour, args ...string) { switch addBehaviour { case Always: @@ -145,7 +133,7 @@ func (t *CloudInitTarget) AddCommand(addBehaviour AddBehaviour, args ...string) case Once: for _, c := range t.Config.RunCommmands { - if stringSlicesEquals(args, c) { + if utils.StringSlicesEqual(args, c) { glog.V(2).Infof("skipping pre-existing command because AddBehaviour=Once: %q", args) return } diff --git a/upup/pkg/fi/utils/equals.go b/upup/pkg/fi/utils/equals.go new file mode 100644 index 0000000000..3cbcdb3897 --- /dev/null +++ b/upup/pkg/fi/utils/equals.go @@ -0,0 +1,30 @@ +package utils + +func StringSlicesEqual(l, r []string) bool { + if len(l) != len(r) { + return false + } + for i, v := range l { + if r[i] != v { + return false + } + } + return true +} + +func StringSlicesEqualIgnoreOrder(l, r []string) bool { + if len(l) != len(r) { + return false + } + + lMap := map[string]bool{} + for _, lv := range l { + lMap[lv] = true + } + for _, rv := range r { + if !lMap[rv] { + return false + } + } + return true +}