From d8d0de8ca3575a5d1001dd771108f483d9e19aeb Mon Sep 17 00:00:00 2001 From: Chris Johnson Date: Thu, 25 May 2017 10:27:22 -0400 Subject: [PATCH] Restore previous version for now --- common.go | 40 -------------------------- resource_librato_service.go | 56 +++++++++++++++++++++++++++++++------ 2 files changed, 47 insertions(+), 49 deletions(-) delete mode 100644 common.go diff --git a/common.go b/common.go deleted file mode 100644 index 79056fa..0000000 --- a/common.go +++ /dev/null @@ -1,40 +0,0 @@ -package librato - -import ( - "encoding/json" - "fmt" -) - -// Encodes a hash into a JSON string -func attributesFlatten(attrs map[string]string) (string, error) { - byteArray, err := json.Marshal(attrs) - if err != nil { - return "", fmt.Errorf("Error encoding to JSON: %s", err) - } - - return string(byteArray), nil -} - -// Takes JSON in a string & decodes into a hash -func attributesExpand(raw string) (map[string]string, error) { - attrs := make(map[string]string) - err := json.Unmarshal([]byte(raw), &attrs) - if err != nil { - return nil, fmt.Errorf("Error decoding JSON: %s", err) - } - - return attrs, err -} - -func normalizeJSON(jsonString interface{}) string { - if jsonString == nil || jsonString == "" { - return "" - } - var j interface{} - err := json.Unmarshal([]byte(jsonString.(string)), &j) - if err != nil { - return fmt.Sprintf("Error parsing JSON: %s", err) - } - b, _ := json.Marshal(j) - return string(b[:]) -} diff --git a/resource_librato_service.go b/resource_librato_service.go index 855fc40..e289fee 100644 --- a/resource_librato_service.go +++ b/resource_librato_service.go @@ -1,6 +1,7 @@ package librato import ( + "encoding/json" "fmt" "log" "reflect" @@ -36,12 +37,49 @@ func resourceLibratoService() *schema.Resource { "settings": &schema.Schema{ Type: schema.TypeString, Required: true, - StateFunc: normalizeJSON, + StateFunc: normalizeJson, }, }, } } +// Takes JSON in a string. Decodes JSON into +// settings hash +func resourceLibratoServicesExpandSettings(rawSettings string) (map[string]string, error) { + var settings map[string]string + + settings = make(map[string]string) + err := json.Unmarshal([]byte(rawSettings), &settings) + if err != nil { + return nil, fmt.Errorf("Error decoding JSON: %s", err) + } + + return settings, err +} + +// Encodes a settings hash into a JSON string +func resourceLibratoServicesFlatten(settings map[string]string) (string, error) { + byteArray, err := json.Marshal(settings) + if err != nil { + return "", fmt.Errorf("Error encoding to JSON: %s", err) + } + + return string(byteArray), nil +} + +func normalizeJson(jsonString interface{}) string { + if jsonString == nil || jsonString == "" { + return "" + } + var j interface{} + err := json.Unmarshal([]byte(jsonString.(string)), &j) + if err != nil { + return fmt.Sprintf("Error parsing JSON: %s", err) + } + b, _ := json.Marshal(j) + return string(b[:]) +} + func resourceLibratoServiceCreate(d *schema.ResourceData, meta interface{}) error { client := meta.(*librato.Client) @@ -53,7 +91,7 @@ func resourceLibratoServiceCreate(d *schema.ResourceData, meta interface{}) erro service.Title = librato.String(v.(string)) } if v, ok := d.GetOk("settings"); ok { - res, err := attributesExpand(normalizeJSON(v.(string))) + res, err := resourceLibratoServicesExpandSettings(normalizeJson(v.(string))) if err != nil { return fmt.Errorf("Error expanding Librato service settings: %s", err) } @@ -106,7 +144,7 @@ func resourceLibratoServiceReadResult(d *schema.ResourceData, service *librato.S d.Set("id", *service.ID) d.Set("type", *service.Type) d.Set("title", *service.Title) - settings, _ := attributesFlatten(service.Settings) + settings, _ := resourceLibratoServicesFlatten(service.Settings) d.Set("settings", settings) return nil @@ -136,9 +174,9 @@ func resourceLibratoServiceUpdate(d *schema.ResourceData, meta interface{}) erro fullService.Title = service.Title } if d.HasChange("settings") { - res, getErr := attributesExpand(normalizeJSON(d.Get("settings").(string))) - if getErr != nil { - return fmt.Errorf("Error expanding Librato service settings: %s", getErr) + res, err := resourceLibratoServicesExpandSettings(normalizeJson(d.Get("settings").(string))) + if err != nil { + return fmt.Errorf("Error expanding Librato service settings: %s", err) } service.Settings = res fullService.Settings = res @@ -160,9 +198,9 @@ func resourceLibratoServiceUpdate(d *schema.ResourceData, meta interface{}) erro ContinuousTargetOccurence: 5, Refresh: func() (interface{}, string, error) { log.Printf("[DEBUG] Checking if Librato Service %d was updated yet", serviceID) - changedService, _, scErr := client.Services.Get(uint(serviceID)) - if scErr != nil { - return changedService, "", scErr + changedService, _, err := client.Services.Get(uint(serviceID)) + if err != nil { + return changedService, "", err } isEqual := reflect.DeepEqual(*fullService, *changedService) log.Printf("[DEBUG] Updated Librato Service %d match: %t", serviceID, isEqual)