lego/vendor/github.com/exoscale/egoscale/networks.go

111 lines
2.5 KiB
Go
Raw Normal View History

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
}
}
}