Skip to content

Commit

Permalink
Submit resource tags in a predictable order
Browse files Browse the repository at this point in the history
  • Loading branch information
nettoclaudio committed Mar 30, 2020
1 parent f0c20be commit 24d5283
Showing 1 changed file with 18 additions and 10 deletions.
28 changes: 18 additions & 10 deletions cloudstack/ResourcetagsService.go
Expand Up @@ -20,6 +20,7 @@ import (
"encoding/json"
"fmt"
"net/url"
"sort"
"strconv"
"strings"
)
Expand All @@ -44,11 +45,10 @@ func (p *CreateTagsParams) toURLValues() url.Values {
u.Set("resourcetype", v.(string))
}
if v, found := p.p["tags"]; found {
i := 0
for k, vv := range v.(map[string]string) {
u.Set(fmt.Sprintf("tags[%d].key", i), k)
u.Set(fmt.Sprintf("tags[%d].value", i), vv)
i++
tags := v.(map[string]string)
for i, key := range getSortedKeysFromMap(tags) {
u.Set(fmt.Sprintf("tags[%d].key", i), key)
u.Set(fmt.Sprintf("tags[%d].value", i), tags[key])
}
}
return u
Expand Down Expand Up @@ -151,11 +151,10 @@ func (p *DeleteTagsParams) toURLValues() url.Values {
u.Set("resourcetype", v.(string))
}
if v, found := p.p["tags"]; found {
i := 0
for k, vv := range v.(map[string]string) {
u.Set(fmt.Sprintf("tags[%d].key", i), k)
u.Set(fmt.Sprintf("tags[%d].value", i), vv)
i++
tags := v.(map[string]string)
for i, key := range getSortedKeysFromMap(tags) {
u.Set(fmt.Sprintf("tags[%d].key", i), key)
u.Set(fmt.Sprintf("tags[%d].value", i), tags[key])
}
}
return u
Expand Down Expand Up @@ -552,3 +551,12 @@ type Tag struct {
Resourcetype string `json:"resourcetype"`
Value string `json:"value"`
}

func getSortedKeysFromMap(m map[string]string) []string {
var keys []string
for k := range m {
keys = append(keys, k)
}
sort.Strings(keys)
return keys
}

0 comments on commit 24d5283

Please sign in to comment.