This is an automated email from the ASF dual-hosted git repository.

weizhouapache pushed a commit to branch fix-vnfnics
in repository https://gitbox.apache.org/repos/asf/cloudstack-go.git

commit e466ae8a6a00097f33aaa0eae7cbe9e47604258a
Author: Wei Zhou <[email protected]>
AuthorDate: Wed Aug 5 10:45:19 2026 +0200

    Fix listing virtual machines with vnfnics
---
 cloudstack/AffinityGroupService.go           |  2 +-
 cloudstack/BackupService.go                  |  2 +-
 cloudstack/ISOService.go                     |  4 +--
 cloudstack/NicService.go                     |  2 +-
 cloudstack/SSHService.go                     |  2 +-
 cloudstack/SnapshotService.go                |  2 +-
 cloudstack/VirtualMachineService.go          | 42 ++++++++++++++--------------
 cloudstack/VirtualNetworkFunctionsService.go | 14 ++++++++--
 generate/generate.go                         | 17 +++++++++++
 9 files changed, 57 insertions(+), 30 deletions(-)

diff --git a/cloudstack/AffinityGroupService.go 
b/cloudstack/AffinityGroupService.go
index afd1767..c635a39 100644
--- a/cloudstack/AffinityGroupService.go
+++ b/cloudstack/AffinityGroupService.go
@@ -1232,7 +1232,7 @@ type UpdateVMAffinityGroupResponse struct {
        Videoram              int64                                        
`json:"videoram"`
        Vmtype                string                                       
`json:"vmtype"`
        Vnfdetails            map[string]string                            
`json:"vnfdetails"`
-       Vnfnics               []string                                     
`json:"vnfnics"`
+       Vnfnics               []*VnfNic                                    
`json:"vnfnics"`
        Zoneid                string                                       
`json:"zoneid"`
        Zonename              string                                       
`json:"zonename"`
 }
diff --git a/cloudstack/BackupService.go b/cloudstack/BackupService.go
index 92033d8..9891473 100644
--- a/cloudstack/BackupService.go
+++ b/cloudstack/BackupService.go
@@ -2301,7 +2301,7 @@ type CreateVMFromBackupResponse struct {
        Videoram              int64                                     
`json:"videoram"`
        Vmtype                string                                    
`json:"vmtype"`
        Vnfdetails            map[string]string                         
`json:"vnfdetails"`
-       Vnfnics               []string                                  
`json:"vnfnics"`
+       Vnfnics               []*VnfNic                                 
`json:"vnfnics"`
        Zoneid                string                                    
`json:"zoneid"`
        Zonename              string                                    
`json:"zonename"`
 }
diff --git a/cloudstack/ISOService.go b/cloudstack/ISOService.go
index d98f004..eb8f483 100644
--- a/cloudstack/ISOService.go
+++ b/cloudstack/ISOService.go
@@ -290,7 +290,7 @@ type AttachIsoResponse struct {
        Videoram              int64                            `json:"videoram"`
        Vmtype                string                           `json:"vmtype"`
        Vnfdetails            map[string]string                
`json:"vnfdetails"`
-       Vnfnics               []string                         `json:"vnfnics"`
+       Vnfnics               []*VnfNic                        `json:"vnfnics"`
        Zoneid                string                           `json:"zoneid"`
        Zonename              string                           `json:"zonename"`
 }
@@ -924,7 +924,7 @@ type DetachIsoResponse struct {
        Videoram              int64                            `json:"videoram"`
        Vmtype                string                           `json:"vmtype"`
        Vnfdetails            map[string]string                
`json:"vnfdetails"`
-       Vnfnics               []string                         `json:"vnfnics"`
+       Vnfnics               []*VnfNic                        `json:"vnfnics"`
        Zoneid                string                           `json:"zoneid"`
        Zonename              string                           `json:"zonename"`
 }
diff --git a/cloudstack/NicService.go b/cloudstack/NicService.go
index 3fe8f33..d4f316f 100644
--- a/cloudstack/NicService.go
+++ b/cloudstack/NicService.go
@@ -695,7 +695,7 @@ type UpdateVmNicIpResponse struct {
        Videoram              int64                                
`json:"videoram"`
        Vmtype                string                               
`json:"vmtype"`
        Vnfdetails            map[string]string                    
`json:"vnfdetails"`
-       Vnfnics               []string                             
`json:"vnfnics"`
+       Vnfnics               []*VnfNic                            
`json:"vnfnics"`
        Zoneid                string                               
`json:"zoneid"`
        Zonename              string                               
`json:"zonename"`
 }
diff --git a/cloudstack/SSHService.go b/cloudstack/SSHService.go
index 30038d4..a250859 100644
--- a/cloudstack/SSHService.go
+++ b/cloudstack/SSHService.go
@@ -1245,7 +1245,7 @@ type ResetSSHKeyForVirtualMachineResponse struct {
        Videoram              int64                                             
  `json:"videoram"`
        Vmtype                string                                            
  `json:"vmtype"`
        Vnfdetails            map[string]string                                 
  `json:"vnfdetails"`
-       Vnfnics               []string                                          
  `json:"vnfnics"`
+       Vnfnics               []*VnfNic                                         
  `json:"vnfnics"`
        Zoneid                string                                            
  `json:"zoneid"`
        Zonename              string                                            
  `json:"zonename"`
 }
diff --git a/cloudstack/SnapshotService.go b/cloudstack/SnapshotService.go
index ab11f36..902a927 100644
--- a/cloudstack/SnapshotService.go
+++ b/cloudstack/SnapshotService.go
@@ -3849,7 +3849,7 @@ type RevertToVMSnapshotResponse struct {
        Videoram              int64                                     
`json:"videoram"`
        Vmtype                string                                    
`json:"vmtype"`
        Vnfdetails            map[string]string                         
`json:"vnfdetails"`
-       Vnfnics               []string                                  
`json:"vnfnics"`
+       Vnfnics               []*VnfNic                                 
`json:"vnfnics"`
        Zoneid                string                                    
`json:"zoneid"`
        Zonename              string                                    
`json:"zonename"`
 }
diff --git a/cloudstack/VirtualMachineService.go 
b/cloudstack/VirtualMachineService.go
index 675b5c8..f10e928 100644
--- a/cloudstack/VirtualMachineService.go
+++ b/cloudstack/VirtualMachineService.go
@@ -397,7 +397,7 @@ type AddNicToVirtualMachineResponse struct {
        Videoram              int64                                         
`json:"videoram"`
        Vmtype                string                                        
`json:"vmtype"`
        Vnfdetails            map[string]string                             
`json:"vnfdetails"`
-       Vnfnics               []string                                      
`json:"vnfnics"`
+       Vnfnics               []*VnfNic                                     
`json:"vnfnics"`
        Zoneid                string                                        
`json:"zoneid"`
        Zonename              string                                        
`json:"zonename"`
 }
@@ -760,7 +760,7 @@ type AssignVirtualMachineResponse struct {
        Videoram              int64                                       
`json:"videoram"`
        Vmtype                string                                      
`json:"vmtype"`
        Vnfdetails            map[string]string                           
`json:"vnfdetails"`
-       Vnfnics               []string                                    
`json:"vnfnics"`
+       Vnfnics               []*VnfNic                                   
`json:"vnfnics"`
        Zoneid                string                                      
`json:"zoneid"`
        Zonename              string                                      
`json:"zonename"`
 }
@@ -1153,7 +1153,7 @@ type ChangeServiceForVirtualMachineResponse struct {
        Videoram              int64                                             
    `json:"videoram"`
        Vmtype                string                                            
    `json:"vmtype"`
        Vnfdetails            map[string]string                                 
    `json:"vnfdetails"`
-       Vnfnics               []string                                          
    `json:"vnfnics"`
+       Vnfnics               []*VnfNic                                         
    `json:"vnfnics"`
        Zoneid                string                                            
    `json:"zoneid"`
        Zonename              string                                            
    `json:"zonename"`
 }
@@ -2937,7 +2937,7 @@ type DeployVirtualMachineResponse struct {
        Videoram              int64                                       
`json:"videoram"`
        Vmtype                string                                      
`json:"vmtype"`
        Vnfdetails            map[string]string                           
`json:"vnfdetails"`
-       Vnfnics               []string                                    
`json:"vnfnics"`
+       Vnfnics               []*VnfNic                                   
`json:"vnfnics"`
        Zoneid                string                                      
`json:"zoneid"`
        Zonename              string                                      
`json:"zonename"`
 }
@@ -3248,7 +3248,7 @@ type DestroyVirtualMachineResponse struct {
        Videoram              int64                                        
`json:"videoram"`
        Vmtype                string                                       
`json:"vmtype"`
        Vnfdetails            map[string]string                            
`json:"vnfdetails"`
-       Vnfnics               []string                                     
`json:"vnfnics"`
+       Vnfnics               []*VnfNic                                    
`json:"vnfnics"`
        Zoneid                string                                       
`json:"zoneid"`
        Zonename              string                                       
`json:"zonename"`
 }
@@ -4800,7 +4800,7 @@ type VirtualMachine struct {
        Videoram              int64                         `json:"videoram"`
        Vmtype                string                        `json:"vmtype"`
        Vnfdetails            map[string]string             `json:"vnfdetails"`
-       Vnfnics               []string                      `json:"vnfnics"`
+       Vnfnics               []*VnfNic                     `json:"vnfnics"`
        Zoneid                string                        `json:"zoneid"`
        Zonename              string                        `json:"zonename"`
 }
@@ -6211,7 +6211,7 @@ type VirtualMachinesMetric struct {
        Videoram              int64                                
`json:"videoram"`
        Vmtype                string                               
`json:"vmtype"`
        Vnfdetails            map[string]string                    
`json:"vnfdetails"`
-       Vnfnics               []string                             
`json:"vnfnics"`
+       Vnfnics               []*VnfNic                            
`json:"vnfnics"`
        Zoneid                string                               
`json:"zoneid"`
        Zonename              string                               
`json:"zonename"`
 }
@@ -6817,7 +6817,7 @@ type MigrateVirtualMachineResponse struct {
        Videoram              int64                                        
`json:"videoram"`
        Vmtype                string                                       
`json:"vmtype"`
        Vnfdetails            map[string]string                            
`json:"vnfdetails"`
-       Vnfnics               []string                                     
`json:"vnfnics"`
+       Vnfnics               []*VnfNic                                    
`json:"vnfnics"`
        Zoneid                string                                       
`json:"zoneid"`
        Zonename              string                                       
`json:"zonename"`
 }
@@ -7170,7 +7170,7 @@ type MigrateVirtualMachineWithVolumeResponse struct {
        Videoram              int64                                             
     `json:"videoram"`
        Vmtype                string                                            
     `json:"vmtype"`
        Vnfdetails            map[string]string                                 
     `json:"vnfdetails"`
-       Vnfnics               []string                                          
     `json:"vnfnics"`
+       Vnfnics               []*VnfNic                                         
     `json:"vnfnics"`
        Zoneid                string                                            
     `json:"zoneid"`
        Zonename              string                                            
     `json:"zonename"`
 }
@@ -7481,7 +7481,7 @@ type RebootVirtualMachineResponse struct {
        Videoram              int64                                       
`json:"videoram"`
        Vmtype                string                                      
`json:"vmtype"`
        Vnfdetails            map[string]string                           
`json:"vnfdetails"`
-       Vnfnics               []string                                    
`json:"vnfnics"`
+       Vnfnics               []*VnfNic                                   
`json:"vnfnics"`
        Zoneid                string                                      
`json:"zoneid"`
        Zonename              string                                      
`json:"zonename"`
 }
@@ -7722,7 +7722,7 @@ type RecoverVirtualMachineResponse struct {
        Videoram              int64                                        
`json:"videoram"`
        Vmtype                string                                       
`json:"vmtype"`
        Vnfdetails            map[string]string                            
`json:"vnfdetails"`
-       Vnfnics               []string                                     
`json:"vnfnics"`
+       Vnfnics               []*VnfNic                                    
`json:"vnfnics"`
        Zoneid                string                                       
`json:"zoneid"`
        Zonename              string                                       
`json:"zonename"`
 }
@@ -8008,7 +8008,7 @@ type RemoveNicFromVirtualMachineResponse struct {
        Videoram              int64                                             
 `json:"videoram"`
        Vmtype                string                                            
 `json:"vmtype"`
        Vnfdetails            map[string]string                                 
 `json:"vnfdetails"`
-       Vnfnics               []string                                          
 `json:"vnfnics"`
+       Vnfnics               []*VnfNic                                         
 `json:"vnfnics"`
        Zoneid                string                                            
 `json:"zoneid"`
        Zonename              string                                            
 `json:"zonename"`
 }
@@ -8293,7 +8293,7 @@ type ResetPasswordForVirtualMachineResponse struct {
        Videoram              int64                                             
    `json:"videoram"`
        Vmtype                string                                            
    `json:"vmtype"`
        Vnfdetails            map[string]string                                 
    `json:"vnfdetails"`
-       Vnfnics               []string                                          
    `json:"vnfnics"`
+       Vnfnics               []*VnfNic                                         
    `json:"vnfnics"`
        Zoneid                string                                            
    `json:"zoneid"`
        Zonename              string                                            
    `json:"zonename"`
 }
@@ -8681,7 +8681,7 @@ type ResetUserDataForVirtualMachineResponse struct {
        Videoram              int64                                             
    `json:"videoram"`
        Vmtype                string                                            
    `json:"vmtype"`
        Vnfdetails            map[string]string                                 
    `json:"vnfdetails"`
-       Vnfnics               []string                                          
    `json:"vnfnics"`
+       Vnfnics               []*VnfNic                                         
    `json:"vnfnics"`
        Zoneid                string                                            
    `json:"zoneid"`
        Zonename              string                                            
    `json:"zonename"`
 }
@@ -9067,7 +9067,7 @@ type RestoreVirtualMachineResponse struct {
        Videoram              int64                                        
`json:"videoram"`
        Vmtype                string                                       
`json:"vmtype"`
        Vnfdetails            map[string]string                            
`json:"vnfdetails"`
-       Vnfnics               []string                                     
`json:"vnfnics"`
+       Vnfnics               []*VnfNic                                    
`json:"vnfnics"`
        Zoneid                string                                       
`json:"zoneid"`
        Zonename              string                                       
`json:"zonename"`
 }
@@ -9708,7 +9708,7 @@ type StartVirtualMachineResponse struct {
        Videoram              int64                                      
`json:"videoram"`
        Vmtype                string                                     
`json:"vmtype"`
        Vnfdetails            map[string]string                          
`json:"vnfdetails"`
-       Vnfnics               []string                                   
`json:"vnfnics"`
+       Vnfnics               []*VnfNic                                  
`json:"vnfnics"`
        Zoneid                string                                     
`json:"zoneid"`
        Zonename              string                                     
`json:"zonename"`
 }
@@ -9994,7 +9994,7 @@ type StopVirtualMachineResponse struct {
        Videoram              int64                                     
`json:"videoram"`
        Vmtype                string                                    
`json:"vmtype"`
        Vnfdetails            map[string]string                         
`json:"vnfdetails"`
-       Vnfnics               []string                                  
`json:"vnfnics"`
+       Vnfnics               []*VnfNic                                 
`json:"vnfnics"`
        Zoneid                string                                    
`json:"zoneid"`
        Zonename              string                                    
`json:"zonename"`
 }
@@ -10280,7 +10280,7 @@ type UpdateDefaultNicForVirtualMachineResponse struct {
        Videoram              int64                                             
       `json:"videoram"`
        Vmtype                string                                            
       `json:"vmtype"`
        Vnfdetails            map[string]string                                 
       `json:"vnfdetails"`
-       Vnfnics               []string                                          
       `json:"vnfnics"`
+       Vnfnics               []*VnfNic                                         
       `json:"vnfnics"`
        Zoneid                string                                            
       `json:"zoneid"`
        Zonename              string                                            
       `json:"zonename"`
 }
@@ -11058,7 +11058,7 @@ type UpdateVirtualMachineResponse struct {
        Videoram              int64                                       
`json:"videoram"`
        Vmtype                string                                      
`json:"vmtype"`
        Vnfdetails            map[string]string                           
`json:"vnfdetails"`
-       Vnfnics               []string                                    
`json:"vnfnics"`
+       Vnfnics               []*VnfNic                                   
`json:"vnfnics"`
        Zoneid                string                                      
`json:"zoneid"`
        Zonename              string                                      
`json:"zonename"`
 }
@@ -12581,7 +12581,7 @@ type ImportVmResponse struct {
        Videoram              int64                           `json:"videoram"`
        Vmtype                string                          `json:"vmtype"`
        Vnfdetails            map[string]string               
`json:"vnfdetails"`
-       Vnfnics               []string                        `json:"vnfnics"`
+       Vnfnics               []*VnfNic                       `json:"vnfnics"`
        Zoneid                string                          `json:"zoneid"`
        Zonename              string                          `json:"zonename"`
 }
@@ -13532,7 +13532,7 @@ type ImportUnmanagedInstanceResponse struct {
        Videoram              int64                                          
`json:"videoram"`
        Vmtype                string                                         
`json:"vmtype"`
        Vnfdetails            map[string]string                              
`json:"vnfdetails"`
-       Vnfnics               []string                                       
`json:"vnfnics"`
+       Vnfnics               []*VnfNic                                      
`json:"vnfnics"`
        Zoneid                string                                         
`json:"zoneid"`
        Zonename              string                                         
`json:"zonename"`
 }
diff --git a/cloudstack/VirtualNetworkFunctionsService.go 
b/cloudstack/VirtualNetworkFunctionsService.go
index 90f7dee..6890a48 100644
--- a/cloudstack/VirtualNetworkFunctionsService.go
+++ b/cloudstack/VirtualNetworkFunctionsService.go
@@ -1810,7 +1810,7 @@ type DeployVnfApplianceResponse struct {
        Videoram              int64                                     
`json:"videoram"`
        Vmtype                string                                    
`json:"vmtype"`
        Vnfdetails            map[string]string                         
`json:"vnfdetails"`
-       Vnfnics               []string                                  
`json:"vnfnics"`
+       Vnfnics               []*VnfNic                                 
`json:"vnfnics"`
        Zoneid                string                                    
`json:"zoneid"`
        Zonename              string                                    
`json:"zonename"`
 }
@@ -3009,6 +3009,16 @@ func (s *VirtualNetworkFunctionsService) 
ListVnfAppliances(p *ListVnfAppliancesP
        return &r, nil
 }
 
+type VnfNic struct {
+       Deviceid    int64  `json:"deviceid"`
+       Description string `json:"description"`
+       Management  bool   `json:"management"`
+       Name        string `json:"name"`
+       Networkid   string `json:"networkid"`
+       Networkname string `json:"networkname"`
+       Required    bool   `json:"required"`
+}
+
 type ListVnfAppliancesResponse struct {
        Count         int             `json:"count"`
        VnfAppliances []*VnfAppliance `json:"vnfappliance"`
@@ -3118,7 +3128,7 @@ type VnfAppliance struct {
        Videoram              int64                       `json:"videoram"`
        Vmtype                string                      `json:"vmtype"`
        Vnfdetails            map[string]string           `json:"vnfdetails"`
-       Vnfnics               []string                    `json:"vnfnics"`
+       Vnfnics               []*VnfNic                   `json:"vnfnics"`
        Zoneid                string                      `json:"zoneid"`
        Zonename              string                      `json:"zonename"`
 }
diff --git a/generate/generate.go b/generate/generate.go
index c967967..23647fb 100644
--- a/generate/generate.go
+++ b/generate/generate.go
@@ -2009,6 +2009,20 @@ func (s *service) generateResponseType(a *API) {
                pn("")
                return
        }
+       if a.Name == "listVnfAppliances" {
+               // The API docs do not describe the shape of the "vnfnics" 
field, so this
+               // type is hand maintained to mirror 
org.apache.cloudstack.api.response.VnfNicResponse.
+               pn("type VnfNic struct {")
+               pn("    Deviceid    int64  `json:\"deviceid\"`")
+               pn("    Description string `json:\"description\"`")
+               pn("    Management  bool   `json:\"management\"`")
+               pn("    Name        string `json:\"name\"`")
+               pn("    Networkid   string `json:\"networkid\"`")
+               pn("    Networkname string `json:\"networkname\"`")
+               pn("    Required    bool   `json:\"required\"`")
+               pn("}")
+               pn("")
+       }
 
        ln := capitalize(strings.TrimPrefix(a.Name, "list"))
 
@@ -2403,6 +2417,9 @@ func mapType(aName string, pName string, pType string) 
string {
                if pName == "scaledownpolicies" || pName == "scaleuppolicies" {
                        return "[]*AutoScalePolicy"
                }
+               if pName == "vnfnics" {
+                       return "[]*VnfNic"
+               }
                return "[]string"
        case "map":
                if mapRequireList[aName] != nil && mapRequireList[aName][pName] 
{

Reply via email to