mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2024-05-11 05:55:12 +00:00
NEW PROVIDER: Exoscale (#390)
* Add exoscale provider Signed-off-by: Pierre-Emmanuel Jacquier <pierre-emmanuel.jacquier@epitech.eu> * Fix validation Signed-off-by: Pierre-Emmanuel Jacquier <pierre-emmanuel.jacquier@epitech.eu> * Fix DualProvider Signed-off-by: Pierre-Emmanuel Jacquier <pierre-emmanuel.jacquier@epitech.eu>
This commit is contained in:
committed by
Tom Limoncelli
parent
5c03761fa6
commit
511c0bf7de
141
vendor/github.com/exoscale/egoscale/nics.go
generated
vendored
Normal file
141
vendor/github.com/exoscale/egoscale/nics.go
generated
vendored
Normal file
@ -0,0 +1,141 @@
|
||||
package egoscale
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"net"
|
||||
)
|
||||
|
||||
// Nic represents a Network Interface Controller (NIC)
|
||||
//
|
||||
// See: http://docs.cloudstack.apache.org/projects/cloudstack-administration/en/latest/networking_and_traffic.html#configuring-multiple-ip-addresses-on-a-single-nic
|
||||
type Nic struct {
|
||||
BroadcastURI string `json:"broadcasturi,omitempty" doc:"the broadcast uri of the nic"`
|
||||
DeviceID string `json:"deviceid,omitempty" doc:"device id for the network when plugged into the virtual machine"`
|
||||
Gateway net.IP `json:"gateway,omitempty" doc:"the gateway of the nic"`
|
||||
ID string `json:"id,omitempty" doc:"the ID of the nic"`
|
||||
IP6Address net.IP `json:"ip6address,omitempty" doc:"the IPv6 address of network"`
|
||||
IP6CIDR *CIDR `json:"ip6cidr,omitempty" doc:"the cidr of IPv6 network"`
|
||||
IP6Gateway net.IP `json:"ip6gateway,omitempty" doc:"the gateway of IPv6 network"`
|
||||
IPAddress net.IP `json:"ipaddress,omitempty" doc:"the ip address of the nic"`
|
||||
IsDefault bool `json:"isdefault,omitempty" doc:"true if nic is default, false otherwise"`
|
||||
IsolationURI string `json:"isolationuri,omitempty" doc:"the isolation uri of the nic"`
|
||||
MACAddress MACAddress `json:"macaddress,omitempty" doc:"true if nic is default, false otherwise"`
|
||||
Netmask net.IP `json:"netmask,omitempty" doc:"the netmask of the nic"`
|
||||
NetworkID string `json:"networkid,omitempty" doc:"the ID of the corresponding network"`
|
||||
NetworkName string `json:"networkname,omitempty" doc:"the name of the corresponding network"`
|
||||
ReverseDNS []ReverseDNS `json:"reversedns,omitempty" doc:"the list of PTR record(s) associated with the virtual machine"`
|
||||
SecondaryIP []NicSecondaryIP `json:"secondaryip,omitempty" doc:"the Secondary ipv4 addr of nic"`
|
||||
TrafficType string `json:"traffictype,omitempty" doc:"the traffic type of the nic"`
|
||||
Type string `json:"type,omitempty" doc:"the type of the nic"`
|
||||
VirtualMachineID string `json:"virtualmachineid,omitempty" doc:"Id of the vm to which the nic belongs"`
|
||||
}
|
||||
|
||||
// ListRequest build a ListNics request from the given Nic
|
||||
func (nic Nic) ListRequest() (ListCommand, error) {
|
||||
if nic.VirtualMachineID == "" {
|
||||
return nil, errors.New("command ListNics requires the VirtualMachineID field to be set")
|
||||
}
|
||||
|
||||
req := &ListNics{
|
||||
VirtualMachineID: nic.VirtualMachineID,
|
||||
NicID: nic.ID,
|
||||
NetworkID: nic.NetworkID,
|
||||
}
|
||||
|
||||
return req, nil
|
||||
}
|
||||
|
||||
// NicSecondaryIP represents a link between NicID and IPAddress
|
||||
type NicSecondaryIP struct {
|
||||
ID string `json:"id,omitempty" doc:"the ID of the secondary private IP addr"`
|
||||
IPAddress net.IP `json:"ipaddress,omitempty" doc:"Secondary IP address"`
|
||||
NetworkID string `json:"networkid,omitempty" doc:"the ID of the network"`
|
||||
NicID string `json:"nicid,omitempty" doc:"the ID of the nic"`
|
||||
VirtualMachineID string `json:"virtualmachineid,omitempty" doc:"the ID of the vm"`
|
||||
}
|
||||
|
||||
// ListNics represents the NIC search
|
||||
type ListNics struct {
|
||||
ForDisplay bool `json:"fordisplay,omitempty" doc:"list resources by display flag; only ROOT admin is eligible to pass this parameter"`
|
||||
Keyword string `json:"keyword,omitempty" doc:"List by keyword"`
|
||||
NetworkID string `json:"networkid,omitempty" doc:"list nic of the specific vm's network"`
|
||||
NicID string `json:"nicid,omitempty" doc:"the ID of the nic to to list IPs"`
|
||||
Page int `json:"page,omitempty"`
|
||||
PageSize int `json:"pagesize,omitempty"`
|
||||
VirtualMachineID string `json:"virtualmachineid" doc:"the ID of the vm"`
|
||||
_ bool `name:"listNics" description:"list the vm nics IP to NIC"`
|
||||
}
|
||||
|
||||
// ListNicsResponse represents a list of templates
|
||||
type ListNicsResponse struct {
|
||||
Count int `json:"count"`
|
||||
Nic []Nic `json:"nic"`
|
||||
}
|
||||
|
||||
func (ListNics) response() interface{} {
|
||||
return new(ListNicsResponse)
|
||||
}
|
||||
|
||||
// SetPage sets the current page
|
||||
func (ls *ListNics) SetPage(page int) {
|
||||
ls.Page = page
|
||||
}
|
||||
|
||||
// SetPageSize sets the page size
|
||||
func (ls *ListNics) SetPageSize(pageSize int) {
|
||||
ls.PageSize = pageSize
|
||||
}
|
||||
|
||||
func (ListNics) each(resp interface{}, callback IterateItemFunc) {
|
||||
nics := resp.(*ListNicsResponse)
|
||||
for i := range nics.Nic {
|
||||
if !callback(&(nics.Nic[i]), nil) {
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// AddIPToNic (Async) represents the assignation of a secondary IP
|
||||
type AddIPToNic struct {
|
||||
NicID string `json:"nicid" doc:"the ID of the nic to which you want to assign private IP"`
|
||||
IPAddress net.IP `json:"ipaddress,omitempty" doc:"Secondary IP Address"`
|
||||
_ bool `name:"addIpToNic" description:"Assigns secondary IP to NIC"`
|
||||
}
|
||||
|
||||
func (AddIPToNic) response() interface{} {
|
||||
return new(AsyncJobResult)
|
||||
}
|
||||
|
||||
func (AddIPToNic) asyncResponse() interface{} {
|
||||
return new(NicSecondaryIP)
|
||||
}
|
||||
|
||||
// RemoveIPFromNic (Async) represents a deletion request
|
||||
type RemoveIPFromNic struct {
|
||||
ID string `json:"id" doc:"the ID of the secondary ip address to nic"`
|
||||
_ bool `name:"removeIpFromNic" description:"Removes secondary IP from the NIC."`
|
||||
}
|
||||
|
||||
func (RemoveIPFromNic) response() interface{} {
|
||||
return new(AsyncJobResult)
|
||||
}
|
||||
|
||||
func (RemoveIPFromNic) asyncResponse() interface{} {
|
||||
return new(booleanResponse)
|
||||
}
|
||||
|
||||
// ActivateIP6 (Async) activates the IP6 on the given NIC
|
||||
//
|
||||
// Exoscale specific API: https://community.exoscale.ch/api/compute/#activateip6_GET
|
||||
type ActivateIP6 struct {
|
||||
NicID string `json:"nicid" doc:"the ID of the nic to which you want to assign the IPv6"`
|
||||
_ bool `name:"activateIp6" description:"Activate the IPv6 on the VM's nic"`
|
||||
}
|
||||
|
||||
func (ActivateIP6) response() interface{} {
|
||||
return new(AsyncJobResult)
|
||||
}
|
||||
|
||||
func (ActivateIP6) asyncResponse() interface{} {
|
||||
return new(Nic)
|
||||
}
|
Reference in New Issue
Block a user