Bring partially https://github.com/gophercloud/gophercloud/pull/1221
Change-Id: I185e1991b68a22b387d043bc32bef79cd4c3dc4e
Related-To: PRODX-8893
diff --git a/openstack/orchestration/v1/stacks/results.go b/openstack/orchestration/v1/stacks/results.go
index d4fc967..e00eff2 100644
--- a/openstack/orchestration/v1/stacks/results.go
+++ b/openstack/orchestration/v1/stacks/results.go
@@ -63,17 +63,38 @@
type tmp ListedStack
var s struct {
tmp
- CreationTime gophercloud.JSONRFC3339NoZ `json:"creation_time"`
- UpdatedTime gophercloud.JSONRFC3339NoZ `json:"updated_time"`
+ CreationTime string `json:"creation_time"`
+ UpdatedTime string `json:"updated_time"`
}
+
err := json.Unmarshal(b, &s)
if err != nil {
return err
}
+
*r = ListedStack(s.tmp)
- r.CreationTime = time.Time(s.CreationTime)
- r.UpdatedTime = time.Time(s.UpdatedTime)
+ if s.CreationTime != "" {
+ t, err := time.Parse(time.RFC3339, s.CreationTime)
+ if err != nil {
+ t, err = time.Parse(gophercloud.RFC3339NoZ, s.CreationTime)
+ if err != nil {
+ return err
+ }
+ }
+ r.CreationTime = t
+ }
+
+ if s.UpdatedTime != "" {
+ t, err := time.Parse(time.RFC3339, s.UpdatedTime)
+ if err != nil {
+ t, err = time.Parse(gophercloud.RFC3339NoZ, s.UpdatedTime)
+ if err != nil {
+ return err
+ }
+ }
+ r.UpdatedTime = t
+ }
return nil
}
@@ -112,17 +133,38 @@
type tmp RetrievedStack
var s struct {
tmp
- CreationTime gophercloud.JSONRFC3339NoZ `json:"creation_time"`
- UpdatedTime gophercloud.JSONRFC3339NoZ `json:"updated_time"`
+ CreationTime string `json:"creation_time"`
+ UpdatedTime string `json:"updated_time"`
}
+
err := json.Unmarshal(b, &s)
if err != nil {
return err
}
+
*r = RetrievedStack(s.tmp)
- r.CreationTime = time.Time(s.CreationTime)
- r.UpdatedTime = time.Time(s.UpdatedTime)
+ if s.CreationTime != "" {
+ t, err := time.Parse(time.RFC3339, s.CreationTime)
+ if err != nil {
+ t, err = time.Parse(gophercloud.RFC3339NoZ, s.CreationTime)
+ if err != nil {
+ return err
+ }
+ }
+ r.CreationTime = t
+ }
+
+ if s.UpdatedTime != "" {
+ t, err := time.Parse(time.RFC3339, s.UpdatedTime)
+ if err != nil {
+ t, err = time.Parse(gophercloud.RFC3339NoZ, s.UpdatedTime)
+ if err != nil {
+ return err
+ }
+ }
+ r.UpdatedTime = t
+ }
return nil
}
@@ -173,17 +215,38 @@
type tmp PreviewedStack
var s struct {
tmp
- CreationTime gophercloud.JSONRFC3339NoZ `json:"creation_time"`
- UpdatedTime gophercloud.JSONRFC3339NoZ `json:"updated_time"`
+ CreationTime string `json:"creation_time"`
+ UpdatedTime string `json:"updated_time"`
}
+
err := json.Unmarshal(b, &s)
if err != nil {
return err
}
+
*r = PreviewedStack(s.tmp)
- r.CreationTime = time.Time(s.CreationTime)
- r.UpdatedTime = time.Time(s.UpdatedTime)
+ if s.CreationTime != "" {
+ t, err := time.Parse(time.RFC3339, s.CreationTime)
+ if err != nil {
+ t, err = time.Parse(gophercloud.RFC3339NoZ, s.CreationTime)
+ if err != nil {
+ return err
+ }
+ }
+ r.CreationTime = t
+ }
+
+ if s.UpdatedTime != "" {
+ t, err := time.Parse(time.RFC3339, s.UpdatedTime)
+ if err != nil {
+ t, err = time.Parse(gophercloud.RFC3339NoZ, s.UpdatedTime)
+ if err != nil {
+ return err
+ }
+ }
+ r.UpdatedTime = t
+ }
return nil
}