From a5cca365233a210134aa47f1cc8bfa8489a4abf2 Mon Sep 17 00:00:00 2001 From: tianxiaoliang Date: Fri, 5 Aug 2016 11:19:37 +0800 Subject: [PATCH 1/5] Unmarshal instance metadata JSON --- marshal.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/marshal.go b/marshal.go index 46ed617..55dcf89 100644 --- a/marshal.go +++ b/marshal.go @@ -106,7 +106,13 @@ func parsePort(s string) int { func (i *InstanceMetadata) UnmarshalJSON(b []byte) error { i.Raw = b // TODO(cq) could actually parse Raw here, and in a parallel UnmarshalXML as well. - return nil + var err error + var m map[string]interface{} + if err = json.Unmarshal(b, &m); err == nil { + i.parsed = m + return nil + } + return err } // MarshalJSON is a custom JSON marshaler for InstanceMetadata. From bb80962455e2efedb15a8a654ce2489ca8f395bd Mon Sep 17 00:00:00 2001 From: tianxiaoliang Date: Wed, 31 Aug 2016 09:07:16 +0800 Subject: [PATCH 2/5] Update marshal.go --- marshal.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/marshal.go b/marshal.go index 55dcf89..e29ab26 100644 --- a/marshal.go +++ b/marshal.go @@ -105,10 +105,9 @@ func parsePort(s string) int { // the raw JSON for later parsing. func (i *InstanceMetadata) UnmarshalJSON(b []byte) error { i.Raw = b - // TODO(cq) could actually parse Raw here, and in a parallel UnmarshalXML as well. - var err error + // TODO(cq) could actually parse Raw in a parallel UnmarshalXML as well. var m map[string]interface{} - if err = json.Unmarshal(b, &m); err == nil { + if err := json.Unmarshal(b, &m); err == nil { i.parsed = m return nil } From cfebc47ce1c8cb4e0351335b63fe3bec986663b3 Mon Sep 17 00:00:00 2001 From: tianxiaoliang Date: Wed, 31 Aug 2016 09:19:26 +0800 Subject: [PATCH 3/5] Update marshal.go --- marshal.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/marshal.go b/marshal.go index e29ab26..3a7e1f9 100644 --- a/marshal.go +++ b/marshal.go @@ -107,11 +107,11 @@ func (i *InstanceMetadata) UnmarshalJSON(b []byte) error { i.Raw = b // TODO(cq) could actually parse Raw in a parallel UnmarshalXML as well. var m map[string]interface{} - if err := json.Unmarshal(b, &m); err == nil { - i.parsed = m - return nil + if err := json.Unmarshall(b, &m); err != nil { + return err } - return err + i.parsed = m + return nil } // MarshalJSON is a custom JSON marshaler for InstanceMetadata. From a67a27c3df36cce5e6485324bcd585918b6601be Mon Sep 17 00:00:00 2001 From: tianxiaoliang 00373999 Date: Thu, 1 Sep 2016 09:03:04 +0800 Subject: [PATCH 4/5] Ummarshal Metadata json and Export parsed metadata --- marshal.go | 12 ++++++------ struct.go | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/marshal.go b/marshal.go index 3a7e1f9..e25de6a 100644 --- a/marshal.go +++ b/marshal.go @@ -107,17 +107,17 @@ func (i *InstanceMetadata) UnmarshalJSON(b []byte) error { i.Raw = b // TODO(cq) could actually parse Raw in a parallel UnmarshalXML as well. var m map[string]interface{} - if err := json.Unmarshall(b, &m); err != nil { + if err := json.Unmarshal(b, &m); err != nil { return err } - i.parsed = m + i.Parsed = m return nil } // MarshalJSON is a custom JSON marshaler for InstanceMetadata. func (i *InstanceMetadata) MarshalJSON() ([]byte, error) { - if i.parsed != nil { - return json.Marshal(i.parsed) + if i.Parsed != nil { + return json.Marshal(i.Parsed) } if i.Raw == nil { @@ -131,8 +131,8 @@ func (i *InstanceMetadata) MarshalJSON() ([]byte, error) { func (i InstanceMetadata) MarshalXML(e *xml.Encoder, start xml.StartElement) error { tokens := []xml.Token{start} - if i.parsed != nil { - for key, value := range i.parsed { + if i.Parsed != nil { + for key, value := range i.Parsed { t := xml.StartElement{Name: xml.Name{"", key}} tokens = append(tokens, t, xml.CharData(value.(string)), xml.EndElement{t.Name}) } diff --git a/struct.go b/struct.go index 19b0570..75b212d 100644 --- a/struct.go +++ b/struct.go @@ -113,7 +113,7 @@ type Port struct { // metadata.go for more info. type InstanceMetadata struct { Raw []byte `xml:",innerxml" json:"-"` - parsed map[string]interface{} + Parsed map[string]interface{} `json:"-"` } // AmazonMetadataType is information about AZ's, AMI's, and the AWS instance From 558b027de54cb9e5372e21b9381eaeaedb8a2cd4 Mon Sep 17 00:00:00 2001 From: tianxiaoliang 00373999 Date: Thu, 1 Sep 2016 09:18:33 +0800 Subject: [PATCH 5/5] Ummarshal Metadata json and Export parsed metadata --- metadata.go | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/metadata.go b/metadata.go index f1af0be..d1c79c8 100644 --- a/metadata.go +++ b/metadata.go @@ -23,15 +23,15 @@ func (a *Application) ParseAllMetadata() error { // SetMetadataString for a given instance before register func (ins *Instance) SetMetadataString(key, value string) { - if ins.Metadata.parsed == nil { - ins.Metadata.parsed = map[string]interface{}{} + if ins.Metadata.Parsed == nil { + ins.Metadata.Parsed = map[string]interface{}{} } - ins.Metadata.parsed[key] = value + ins.Metadata.Parsed[key] = value } func (im *InstanceMetadata) parse() error { if len(im.Raw) == 0 { - im.parsed = make(map[string]interface{}) + im.Parsed = make(map[string]interface{}) log.Debug("len(Metadata)==0. Quitting parsing.") return nil } @@ -39,7 +39,7 @@ func (im *InstanceMetadata) parse() error { if len(im.Raw) > 0 && im.Raw[0] == '{' { // JSON - err := json.Unmarshal(im.Raw, &im.parsed) + err := json.Unmarshal(im.Raw, &im.Parsed) if err != nil { log.Errorf("Error unmarshalling: %s", err.Error()) return fmt.Errorf("error unmarshalling: %s", err.Error()) @@ -52,14 +52,14 @@ func (im *InstanceMetadata) parse() error { log.Errorf("Error unmarshalling: %s", err.Error()) return fmt.Errorf("error unmarshalling: %s", err.Error()) } - im.parsed = parsedDoc["d"].(map[string]interface{}) + im.Parsed = parsedDoc["d"].(map[string]interface{}) } return nil } // GetMap returns a map of the metadata parameters for this instance func (im *InstanceMetadata) GetMap() map[string]interface{} { - return im.parsed + return im.Parsed } func (im *InstanceMetadata) getItem(key string) (interface{}, bool, error) { @@ -67,7 +67,7 @@ func (im *InstanceMetadata) getItem(key string) (interface{}, bool, error) { if err != nil { return "", false, fmt.Errorf("parsing error: %s", err.Error()) } - val, present := im.parsed[key] + val, present := im.Parsed[key] return val, present, nil }