This is an automated email from the ASF dual-hosted git repository. weizhou pushed a commit to branch fix-datadisksdetails in repository https://gitbox.apache.org/repos/asf/cloudstack-go.git
commit 5fe04df62a24c3f82fb7aa172179693ac1732800 Author: Wei Zhou <[email protected]> AuthorDate: Sat Mar 14 21:28:25 2026 +0100 Fix datadisksdetails --- cloudstack/BackupService.go | 3 +-- cloudstack/VirtualMachineService.go | 29 +++++++++++++++++++++------- cloudstack/VirtualNetworkFunctionsService.go | 3 +-- generate/generate.go | 3 +++ 4 files changed, 27 insertions(+), 11 deletions(-) diff --git a/cloudstack/BackupService.go b/cloudstack/BackupService.go index 92033d8..f2c9266 100644 --- a/cloudstack/BackupService.go +++ b/cloudstack/BackupService.go @@ -749,8 +749,7 @@ func (p *CreateVMFromBackupParams) toURLValues() url.Values { if v, found := p.p["datadisksdetails"]; found { m := v.(map[string]string) for i, k := range getSortedKeysFromMap(m) { - u.Set(fmt.Sprintf("datadisksdetails[%d].key", i), k) - u.Set(fmt.Sprintf("datadisksdetails[%d].value", i), m[k]) + u.Set(fmt.Sprintf("datadisksdetails[%d].%s", i, k), m[k]) } } if v, found := p.p["deploymentplanner"]; found { diff --git a/cloudstack/VirtualMachineService.go b/cloudstack/VirtualMachineService.go index 675b5c8..55e647b 100644 --- a/cloudstack/VirtualMachineService.go +++ b/cloudstack/VirtualMachineService.go @@ -1335,10 +1335,11 @@ func (p *DeployVirtualMachineParams) toURLValues() url.Values { } } if v, found := p.p["datadisksdetails"]; found { - m := v.(map[string]string) - for i, k := range getSortedKeysFromMap(m) { - u.Set(fmt.Sprintf("datadisksdetails[%d].key", i), k) - u.Set(fmt.Sprintf("datadisksdetails[%d].value", i), m[k]) + l := v.([]map[string]string) + for i, m := range l { + for key, val := range m { + u.Set(fmt.Sprintf("datadisksdetails[%d].%s", i, key), val) + } } } if v, found := p.p["deploymentplanner"]; found { @@ -1737,7 +1738,7 @@ func (p *DeployVirtualMachineParams) GetDatadiskofferinglist() (map[string]strin return value, ok } -func (p *DeployVirtualMachineParams) SetDatadisksdetails(v map[string]string) { +func (p *DeployVirtualMachineParams) SetDatadisksdetails(v []map[string]string) { if p.p == nil { p.p = make(map[string]interface{}) } @@ -1750,14 +1751,28 @@ func (p *DeployVirtualMachineParams) ResetDatadisksdetails() { } } -func (p *DeployVirtualMachineParams) GetDatadisksdetails() (map[string]string, bool) { +func (p *DeployVirtualMachineParams) GetDatadisksdetails() ([]map[string]string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } - value, ok := p.p["datadisksdetails"].(map[string]string) + value, ok := p.p["datadisksdetails"].([]map[string]string) return value, ok } +func (p *DeployVirtualMachineParams) AddDatadisksdetails(item map[string]string) { + if p.p == nil { + p.p = make(map[string]interface{}) + } + val, found := p.p["datadisksdetails"] + if !found { + p.p["datadisksdetails"] = []map[string]string{} + val = p.p["datadisksdetails"] + } + l := val.([]map[string]string) + l = append(l, item) + p.p["datadisksdetails"] = l +} + func (p *DeployVirtualMachineParams) SetDeploymentplanner(v string) { if p.p == nil { p.p = make(map[string]interface{}) diff --git a/cloudstack/VirtualNetworkFunctionsService.go b/cloudstack/VirtualNetworkFunctionsService.go index 90f7dee..f202cec 100644 --- a/cloudstack/VirtualNetworkFunctionsService.go +++ b/cloudstack/VirtualNetworkFunctionsService.go @@ -251,8 +251,7 @@ func (p *DeployVnfApplianceParams) toURLValues() url.Values { if v, found := p.p["datadisksdetails"]; found { m := v.(map[string]string) for i, k := range getSortedKeysFromMap(m) { - u.Set(fmt.Sprintf("datadisksdetails[%d].key", i), k) - u.Set(fmt.Sprintf("datadisksdetails[%d].value", i), m[k]) + u.Set(fmt.Sprintf("datadisksdetails[%d].%s", i, k), m[k]) } } if v, found := p.p["deploymentplanner"]; found { diff --git a/generate/generate.go b/generate/generate.go index 448b614..48ba0c6 100644 --- a/generate/generate.go +++ b/generate/generate.go @@ -93,6 +93,7 @@ var mapRequireList = map[string]map[string]bool{ "dhcpoptionsnetworklist": true, "iptonetworklist": true, "nicnetworklist": true, + "datadisksdetails": true, }, "updateVirtualMachine": map[string]bool{ "dhcpoptionsnetworklist": true, @@ -1440,6 +1441,8 @@ func (s *service) generateConvertCode(cmd, name, typ string) { pn(" u.Set(fmt.Sprintf(\"%s[%%d].template\", i), m[k])", name) case "cniconfigdetails": pn(" u.Set(fmt.Sprintf(\"%s[%%d].%%s\", i, k), m[k])", name) + case "datadisksdetails": + pn(" u.Set(fmt.Sprintf(\"%s[%%d].%%s\", i, k), m[k])", name) default: if shouldUseStaticZeroIndex && !detailsRequireKeyValue[cmd] { pn(" u.Set(fmt.Sprintf(\"%s[0].%%s\", k), m[k])", name)
