You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ro...@apache.org on 2021/11/19 06:57:00 UTC
[cloudstack-go] branch main updated: Fix GetUploadParamsFor{Volume, Template} (#19)
This is an automated email from the ASF dual-hosted git repository.
rohit pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cloudstack-go.git
The following commit(s) were added to refs/heads/main by this push:
new 792b9d5 Fix GetUploadParamsFor{Volume,Template} (#19)
792b9d5 is described below
commit 792b9d51f124aaa04cf92d64676113726f5b2354
Author: Xavier MARCELET <xa...@orange.com>
AuthorDate: Fri Nov 19 07:56:52 2021 +0100
Fix GetUploadParamsFor{Volume,Template} (#19)
* fix reponse parsing for Template:getUploadParamsForTemplate and Volume:getUploadParamsForVolume
* add generate binary in gitignore
---
.gitignore | 3 +++
cloudstack/TemplateService.go | 7 +++++--
cloudstack/VolumeService.go | 7 +++++--
generate/generate.go | 27 +++++++++++++++++++++++----
4 files changed, 36 insertions(+), 8 deletions(-)
diff --git a/.gitignore b/.gitignore
index ab16549..c7f8ea7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -21,4 +21,7 @@ _testmain.go
*.exe
*.test
+
+generate/generate
bin/mockgen
+
diff --git a/cloudstack/TemplateService.go b/cloudstack/TemplateService.go
index 8dd117a..43c2f14 100644
--- a/cloudstack/TemplateService.go
+++ b/cloudstack/TemplateService.go
@@ -1419,10 +1419,13 @@ func (s *TemplateService) GetUploadParamsForTemplate(p *GetUploadParamsForTempla
return nil, err
}
- var r GetUploadParamsForTemplateResponse
- if err := json.Unmarshal(resp, &r); err != nil {
+ var nested struct {
+ Response GetUploadParamsForTemplateResponse `json:"getuploadparams"`
+ }
+ if err := json.Unmarshal(resp, &nested); err != nil {
return nil, err
}
+ r := nested.Response
return &r, nil
}
diff --git a/cloudstack/VolumeService.go b/cloudstack/VolumeService.go
index eeeec79..91aa924 100644
--- a/cloudstack/VolumeService.go
+++ b/cloudstack/VolumeService.go
@@ -1326,10 +1326,13 @@ func (s *VolumeService) GetUploadParamsForVolume(p *GetUploadParamsForVolumePara
return nil, err
}
- var r GetUploadParamsForVolumeResponse
- if err := json.Unmarshal(resp, &r); err != nil {
+ var nested struct {
+ Response GetUploadParamsForVolumeResponse `json:"getuploadparams"`
+ }
+ if err := json.Unmarshal(resp, &nested); err != nil {
return nil, err
}
+ r := nested.Response
return &r, nil
}
diff --git a/generate/generate.go b/generate/generate.go
index 89ce4b5..b82a030 100644
--- a/generate/generate.go
+++ b/generate/generate.go
@@ -63,6 +63,14 @@ var mapRequireList = map[string]map[string]bool{
},
}
+// nestedResponse is a prefilled map with the list of endpoints
+// that responses fields are nested in a parent object. The map value
+// gives the object field name.
+var nestedResponse = map[string]string{
+ "getUploadParamsForTemplate": "getuploadparams",
+ "getUploadParamsForVolume": "getuploadparams",
+}
+
// We prefill this one value to make sure it is not
// created twice, as this is also a top level type.
var typeNames = map[string]bool{"Nic": true}
@@ -1479,10 +1487,21 @@ func (s *service) generateNewAPICallFunc(a *API) {
pn(" }")
pn("")
}
- pn(" var r %s", strings.TrimPrefix(n, "Configure")+"Response")
- pn(" if err := json.Unmarshal(resp, &r); err != nil {")
- pn(" return nil, err")
- pn(" }")
+
+ if field, isNested := nestedResponse[a.Name]; isNested {
+ pn(" var nested struct {")
+ pn(" Response %sResponse `json:\"%s\"`", strings.TrimPrefix(n, "Configure"), field)
+ pn(" }")
+ pn(" if err := json.Unmarshal(resp, &nested); err != nil {")
+ pn(" return nil, err")
+ pn(" }")
+ pn(" r := nested.Response")
+ } else {
+ pn(" var r %sResponse", strings.TrimPrefix(n, "Configure"))
+ pn(" if err := json.Unmarshal(resp, &r); err != nil {")
+ pn(" return nil, err")
+ pn(" }")
+ }
pn("")
if a.Isasync {
pn(" // If we have a async client, we need to wait for the async result")