148 lines
6.4 KiB
Go
148 lines
6.4 KiB
Go
package egoscale
|
|
|
|
import "net"
|
|
|
|
// IPAddress represents an IP Address
|
|
type IPAddress struct {
|
|
ID string `json:"id"`
|
|
Account string `json:"account,omitempty"`
|
|
AllocatedAt string `json:"allocated,omitempty"`
|
|
AssociatedNetworkID string `json:"associatednetworkid,omitempty"`
|
|
AssociatedNetworkName string `json:"associatednetworkname,omitempty"`
|
|
DomainID string `json:"domainid,omitempty"`
|
|
DomainName string `json:"domainname,omitempty"`
|
|
ForDisplay bool `json:"fordisplay,omitempty"`
|
|
ForVirtualNetwork bool `json:"forvirtualnetwork,omitempty"`
|
|
IPAddress net.IP `json:"ipaddress"`
|
|
IsElastic bool `json:"iselastic,omitempty"`
|
|
IsPortable bool `json:"isportable,omitempty"`
|
|
IsSourceNat bool `json:"issourcenat,omitempty"`
|
|
IsSystem bool `json:"issystem,omitempty"`
|
|
NetworkID string `json:"networkid,omitempty"`
|
|
PhysicalNetworkID string `json:"physicalnetworkid,omitempty"`
|
|
Project string `json:"project,omitempty"`
|
|
ProjectID string `json:"projectid,omitempty"`
|
|
Purpose string `json:"purpose,omitempty"`
|
|
State string `json:"state,omitempty"`
|
|
VirtualMachineDisplayName string `json:"virtualmachinedisplayname,omitempty"`
|
|
VirtualMachineID string `json:"virtualmachineid,omitempty"`
|
|
VirtualMachineName string `json:"virtualmachineName,omitempty"`
|
|
VlanID string `json:"vlanid,omitempty"`
|
|
VlanName string `json:"vlanname,omitempty"`
|
|
VMIPAddress net.IP `json:"vmipaddress,omitempty"`
|
|
VpcID string `json:"vpcid,omitempty"`
|
|
ZoneID string `json:"zoneid,omitempty"`
|
|
ZoneName string `json:"zonename,omitempty"`
|
|
Tags []ResourceTag `json:"tags,omitempty"`
|
|
JobID string `json:"jobid,omitempty"`
|
|
JobStatus JobStatusType `json:"jobstatus,omitempty"`
|
|
}
|
|
|
|
// ResourceType returns the type of the resource
|
|
func (*IPAddress) ResourceType() string {
|
|
return "PublicIpAddress"
|
|
}
|
|
|
|
// AssociateIPAddress (Async) represents the IP creation
|
|
//
|
|
// CloudStack API: https://cloudstack.apache.org/api/apidocs-4.10/apis/associateIpAddress.html
|
|
type AssociateIPAddress struct {
|
|
Account string `json:"account,omitempty"`
|
|
DomainID string `json:"domainid,omitempty"`
|
|
ForDisplay bool `json:"fordisplay,omitempty"`
|
|
IsPortable bool `json:"isportable,omitempty"`
|
|
NetworkdID string `json:"networkid,omitempty"`
|
|
ProjectID string `json:"projectid,omitempty"`
|
|
RegionID string `json:"regionid,omitempty"`
|
|
VpcID string `json:"vpcid,omitempty"`
|
|
ZoneID string `json:"zoneid,omitempty"`
|
|
}
|
|
|
|
func (*AssociateIPAddress) name() string {
|
|
return "associateIpAddress"
|
|
}
|
|
|
|
func (*AssociateIPAddress) asyncResponse() interface{} {
|
|
return new(AssociateIPAddressResponse)
|
|
}
|
|
|
|
// AssociateIPAddressResponse represents the response to the creation of an IPAddress
|
|
type AssociateIPAddressResponse struct {
|
|
IPAddress IPAddress `json:"ipaddress"`
|
|
}
|
|
|
|
// DisassociateIPAddress (Async) represents the IP deletion
|
|
//
|
|
// CloudStack API: https://cloudstack.apache.org/api/apidocs-4.10/apis/disassociateIpAddress.html
|
|
type DisassociateIPAddress struct {
|
|
ID string `json:"id"`
|
|
}
|
|
|
|
func (*DisassociateIPAddress) name() string {
|
|
return "disassociateIpAddress"
|
|
}
|
|
func (*DisassociateIPAddress) asyncResponse() interface{} {
|
|
return new(booleanAsyncResponse)
|
|
}
|
|
|
|
// UpdateIPAddress (Async) represents the IP modification
|
|
//
|
|
// CloudStack API: https://cloudstack.apache.org/api/apidocs-4.10/apis/updateIpAddress.html
|
|
type UpdateIPAddress struct {
|
|
ID string `json:"id"`
|
|
CustomID string `json:"customid,omitempty"` // root only
|
|
ForDisplay bool `json:"fordisplay,omitempty"`
|
|
}
|
|
|
|
func (*UpdateIPAddress) name() string {
|
|
return "updateIpAddress"
|
|
}
|
|
func (*UpdateIPAddress) asyncResponse() interface{} {
|
|
return new(UpdateIPAddressResponse)
|
|
}
|
|
|
|
// UpdateIPAddressResponse represents the modified IP Address
|
|
type UpdateIPAddressResponse AssociateIPAddressResponse
|
|
|
|
// ListPublicIPAddresses represents a search for public IP addresses
|
|
//
|
|
// CloudStack API: https://cloudstack.apache.org/api/apidocs-4.10/apis/listPublicIpAddresses.html
|
|
type ListPublicIPAddresses struct {
|
|
Account string `json:"account,omitempty"`
|
|
AllocatedOnly bool `json:"allocatedonly,omitempty"`
|
|
AllocatedNetworkID string `json:"allocatednetworkid,omitempty"`
|
|
DomainID string `json:"domainid,omitempty"`
|
|
ForDisplay bool `json:"fordisplay,omitempty"`
|
|
ForLoadBalancing bool `json:"forloadbalancing,omitempty"`
|
|
ForVirtualNetwork string `json:"forvirtualnetwork,omitempty"`
|
|
ID string `json:"id,omitempty"`
|
|
IPAddress net.IP `json:"ipaddress,omitempty"`
|
|
IsElastic bool `json:"iselastic,omitempty"`
|
|
IsRecursive bool `json:"isrecursive,omitempty"`
|
|
IsSourceNat bool `json:"issourcenat,omitempty"`
|
|
IsStaticNat bool `json:"isstaticnat,omitempty"`
|
|
Keyword string `json:"keyword,omitempty"`
|
|
ListAll bool `json:"listall,omiempty"`
|
|
Page int `json:"page,omitempty"`
|
|
PageSize int `json:"pagesize,omitempty"`
|
|
PhysicalNetworkID string `json:"physicalnetworkid,omitempty"`
|
|
ProjectID string `json:"projectid,omitempty"`
|
|
Tags []ResourceTag `json:"tags,omitempty"`
|
|
VlanID string `json:"vlanid,omitempty"`
|
|
VpcID string `json:"vpcid,omitempty"`
|
|
ZoneID string `json:"zoneid,omitempty"`
|
|
}
|
|
|
|
func (*ListPublicIPAddresses) name() string {
|
|
return "listPublicIpAddresses"
|
|
}
|
|
|
|
func (*ListPublicIPAddresses) response() interface{} {
|
|
return new(ListPublicIPAddressesResponse)
|
|
}
|
|
|
|
// ListPublicIPAddressesResponse represents a list of public IP addresses
|
|
type ListPublicIPAddressesResponse struct {
|
|
Count int `json:"count"`
|
|
PublicIPAddress []IPAddress `json:"publicipaddress"`
|
|
}
|