Skip to content

Commit 792b9d5

Browse files
authored
Fix GetUploadParamsFor{Volume,Template} (#19)
* fix reponse parsing for Template:getUploadParamsForTemplate and Volume:getUploadParamsForVolume * add generate binary in gitignore
1 parent cfc84fc commit 792b9d5

4 files changed

Lines changed: 36 additions & 8 deletions

File tree

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,7 @@ _testmain.go
2121

2222
*.exe
2323
*.test
24+
25+
generate/generate
2426
bin/mockgen
27+

cloudstack/TemplateService.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1419,10 +1419,13 @@ func (s *TemplateService) GetUploadParamsForTemplate(p *GetUploadParamsForTempla
14191419
return nil, err
14201420
}
14211421

1422-
var r GetUploadParamsForTemplateResponse
1423-
if err := json.Unmarshal(resp, &r); err != nil {
1422+
var nested struct {
1423+
Response GetUploadParamsForTemplateResponse `json:"getuploadparams"`
1424+
}
1425+
if err := json.Unmarshal(resp, &nested); err != nil {
14241426
return nil, err
14251427
}
1428+
r := nested.Response
14261429

14271430
return &r, nil
14281431
}

cloudstack/VolumeService.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1326,10 +1326,13 @@ func (s *VolumeService) GetUploadParamsForVolume(p *GetUploadParamsForVolumePara
13261326
return nil, err
13271327
}
13281328

1329-
var r GetUploadParamsForVolumeResponse
1330-
if err := json.Unmarshal(resp, &r); err != nil {
1329+
var nested struct {
1330+
Response GetUploadParamsForVolumeResponse `json:"getuploadparams"`
1331+
}
1332+
if err := json.Unmarshal(resp, &nested); err != nil {
13311333
return nil, err
13321334
}
1335+
r := nested.Response
13331336

13341337
return &r, nil
13351338
}

generate/generate.go

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,14 @@ var mapRequireList = map[string]map[string]bool{
6363
},
6464
}
6565

66+
// nestedResponse is a prefilled map with the list of endpoints
67+
// that responses fields are nested in a parent object. The map value
68+
// gives the object field name.
69+
var nestedResponse = map[string]string{
70+
"getUploadParamsForTemplate": "getuploadparams",
71+
"getUploadParamsForVolume": "getuploadparams",
72+
}
73+
6674
// We prefill this one value to make sure it is not
6775
// created twice, as this is also a top level type.
6876
var typeNames = map[string]bool{"Nic": true}
@@ -1479,10 +1487,21 @@ func (s *service) generateNewAPICallFunc(a *API) {
14791487
pn(" }")
14801488
pn("")
14811489
}
1482-
pn(" var r %s", strings.TrimPrefix(n, "Configure")+"Response")
1483-
pn(" if err := json.Unmarshal(resp, &r); err != nil {")
1484-
pn(" return nil, err")
1485-
pn(" }")
1490+
1491+
if field, isNested := nestedResponse[a.Name]; isNested {
1492+
pn(" var nested struct {")
1493+
pn(" Response %sResponse `json:\"%s\"`", strings.TrimPrefix(n, "Configure"), field)
1494+
pn(" }")
1495+
pn(" if err := json.Unmarshal(resp, &nested); err != nil {")
1496+
pn(" return nil, err")
1497+
pn(" }")
1498+
pn(" r := nested.Response")
1499+
} else {
1500+
pn(" var r %sResponse", strings.TrimPrefix(n, "Configure"))
1501+
pn(" if err := json.Unmarshal(resp, &r); err != nil {")
1502+
pn(" return nil, err")
1503+
pn(" }")
1504+
}
14861505
pn("")
14871506
if a.Isasync {
14881507
pn(" // If we have a async client, we need to wait for the async result")

0 commit comments

Comments
 (0)