111 lines
2.5 KiB
Go
111 lines
2.5 KiB
Go
|
package egoscale
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"net/url"
|
||
|
)
|
||
|
|
||
|
// ListRequest builds the ListNetworks request
|
||
|
func (network *Network) ListRequest() (ListCommand, error) {
|
||
|
//TODO add tags support
|
||
|
req := &ListNetworks{
|
||
|
Account: network.Account,
|
||
|
ACLType: network.ACLType,
|
||
|
CanUseForDeploy: &network.CanUseForDeploy,
|
||
|
DomainID: network.DomainID,
|
||
|
ID: network.ID,
|
||
|
PhysicalNetworkID: network.PhysicalNetworkID,
|
||
|
RestartRequired: &network.RestartRequired,
|
||
|
TrafficType: network.TrafficType,
|
||
|
Type: network.Type,
|
||
|
ZoneID: network.ZoneID,
|
||
|
}
|
||
|
|
||
|
return req, nil
|
||
|
}
|
||
|
|
||
|
// ResourceType returns the type of the resource
|
||
|
func (*Network) ResourceType() string {
|
||
|
return "Network"
|
||
|
}
|
||
|
|
||
|
// name returns the CloudStack API command name
|
||
|
func (*CreateNetwork) name() string {
|
||
|
return "createNetwork"
|
||
|
}
|
||
|
|
||
|
func (*CreateNetwork) response() interface{} {
|
||
|
return new(CreateNetworkResponse)
|
||
|
}
|
||
|
|
||
|
func (req *CreateNetwork) onBeforeSend(params *url.Values) error {
|
||
|
// Those fields are required but might be empty
|
||
|
if req.Name == "" {
|
||
|
params.Set("name", "")
|
||
|
}
|
||
|
if req.DisplayText == "" {
|
||
|
params.Set("displaytext", "")
|
||
|
}
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
// name returns the CloudStack API command name
|
||
|
func (*UpdateNetwork) name() string {
|
||
|
return "updateNetwork"
|
||
|
}
|
||
|
|
||
|
func (*UpdateNetwork) asyncResponse() interface{} {
|
||
|
return new(UpdateNetworkResponse)
|
||
|
}
|
||
|
|
||
|
// name returns the CloudStack API command name
|
||
|
func (*RestartNetwork) name() string {
|
||
|
return "restartNetwork"
|
||
|
}
|
||
|
|
||
|
func (*RestartNetwork) asyncResponse() interface{} {
|
||
|
return new(RestartNetworkResponse)
|
||
|
}
|
||
|
|
||
|
// name returns the CloudStack API command name
|
||
|
func (*DeleteNetwork) name() string {
|
||
|
return "deleteNetwork"
|
||
|
}
|
||
|
|
||
|
func (*DeleteNetwork) asyncResponse() interface{} {
|
||
|
return new(booleanResponse)
|
||
|
}
|
||
|
|
||
|
// name returns the CloudStack API command name
|
||
|
func (*ListNetworks) name() string {
|
||
|
return "listNetworks"
|
||
|
}
|
||
|
|
||
|
func (*ListNetworks) response() interface{} {
|
||
|
return new(ListNetworksResponse)
|
||
|
}
|
||
|
|
||
|
// SetPage sets the current page
|
||
|
func (listNetwork *ListNetworks) SetPage(page int) {
|
||
|
listNetwork.Page = page
|
||
|
}
|
||
|
|
||
|
// SetPageSize sets the page size
|
||
|
func (listNetwork *ListNetworks) SetPageSize(pageSize int) {
|
||
|
listNetwork.PageSize = pageSize
|
||
|
}
|
||
|
|
||
|
func (*ListNetworks) each(resp interface{}, callback IterateItemFunc) {
|
||
|
networks, ok := resp.(*ListNetworksResponse)
|
||
|
if !ok {
|
||
|
callback(nil, fmt.Errorf("ListNetworksResponse expected, got %t", resp))
|
||
|
return
|
||
|
}
|
||
|
|
||
|
for i := range networks.Network {
|
||
|
if !callback(&networks.Network[i], nil) {
|
||
|
break
|
||
|
}
|
||
|
}
|
||
|
}
|