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)

Reply via email to