cs.ListVirtualMachines(vmid)
takes only the id off one machine and then call this function
// Returns Cloudstack string representation of the Virtual Machine state
func (c CloudstackClient) ListVirtualMachines(id string) (ListVirtualMachinesResponse, error) {
var resp ListVirtualMachinesResponse
params := url.Values{}
params.Set("id", id)
response, err := NewRequest(c, "listVirtualMachines", params)
if err != nil {
return resp, err
}
resp = response.(ListVirtualMachinesResponse)
return resp, err
}
But id isn’t a required parameter to the API https://cloudstack.apache.org/api/apidocs-4.13/apis/listVirtualMachines.html
so maybe you could add your own function
func (c CloudstackClient) ListAllVirtualMachines() (ListVirtualMachinesResponse, error) {
var resp ListVirtualMachinesResponse
params := url.Values{}
response, err := NewRequest(c, "listVirtualMachines", params)
if err != nil {
return resp, err
}
resp = response.(ListVirtualMachinesResponse)
return resp, err
}
But if you put it in your own package you need to add gopherstack package before all types and put gopherstack.CloudstackClient as a parameter and not a reciever
func ListAllVirtualMachines(c gopherstack.CloudstackClient) (gopherstack.ListVirtualMachinesResponse, error) {
var resp gopherstack.ListVirtualMachinesResponse
params := url.Values{}
response, err := gopherstack.NewRequest(c, "listVirtualMachines", params)
if err != nil {
return resp, err
}
resp = response.(gopherstack.ListVirtualMachinesResponse)
return resp, err
}
This is just an idea I haven’t tested it.