forked from TrueCloudLab/lego
91 lines
7.3 KiB
Go
91 lines
7.3 KiB
Go
package egoscale
|
|
|
|
// NetworkOffering corresponds to the Compute Offerings
|
|
type NetworkOffering struct {
|
|
Availability string `json:"availability,omitempty" doc:"availability of the network offering"`
|
|
ConserveMode bool `json:"conservemode,omitempty" doc:"true if network offering is ip conserve mode enabled"`
|
|
Created string `json:"created,omitempty" doc:"the date this network offering was created"`
|
|
Details map[string]string `json:"details,omitempty" doc:"additional key/value details tied with network offering"`
|
|
DisplayText string `json:"displaytext,omitempty" doc:"an alternate display text of the network offering."`
|
|
EgressDefaultPolicy bool `json:"egressdefaultpolicy,omitempty" doc:"true if guest network default egress policy is allow; false if default egress policy is deny"`
|
|
GuestIPType string `json:"guestiptype,omitempty" doc:"guest type of the network offering, can be Shared or Isolated"`
|
|
ID *UUID `json:"id,omitempty" doc:"the id of the network offering"`
|
|
IsDefault bool `json:"isdefault,omitempty" doc:"true if network offering is default, false otherwise"`
|
|
IsPersistent bool `json:"ispersistent,omitempty" doc:"true if network offering supports persistent networks, false otherwise"`
|
|
MaxConnections int `json:"maxconnections,omitempty" doc:"maximum number of concurrents connections to be handled by lb"`
|
|
Name string `json:"name,omitempty" doc:"the name of the network offering"`
|
|
NetworkRate int `json:"networkrate,omitempty" doc:"data transfer rate in megabits per second allowed."`
|
|
Service []Service `json:"service,omitempty" doc:"the list of supported services"`
|
|
ServiceOfferingID *UUID `json:"serviceofferingid,omitempty" doc:"the ID of the service offering used by virtual router provider"`
|
|
SpecifyIPRanges bool `json:"specifyipranges,omitempty" doc:"true if network offering supports specifying ip ranges, false otherwise"`
|
|
SpecifyVlan bool `json:"specifyvlan,omitempty" doc:"true if network offering supports vlans, false otherwise"`
|
|
State string `json:"state,omitempty" doc:"state of the network offering. Can be Disabled/Enabled/Inactive"`
|
|
SupportsStrechedL2Subnet bool `json:"supportsstrechedl2subnet,omitempty" doc:"true if network offering supports network that span multiple zones"`
|
|
Tags string `json:"tags,omitempty" doc:"the tags for the network offering"`
|
|
TrafficType string `json:"traffictype,omitempty" doc:"the traffic type for the network offering, supported types are Public, Management, Control, Guest, Vlan or Storage."`
|
|
}
|
|
|
|
// ListRequest builds the ListNetworkOfferings request
|
|
//
|
|
// This doesn't take into account the IsDefault flag as the default value is true.
|
|
func (no NetworkOffering) ListRequest() (ListCommand, error) {
|
|
req := &ListNetworkOfferings{
|
|
Availability: no.Availability,
|
|
ID: no.ID,
|
|
Name: no.Name,
|
|
State: no.State,
|
|
TrafficType: no.TrafficType,
|
|
}
|
|
|
|
return req, nil
|
|
}
|
|
|
|
//go:generate go run generate/main.go -interface=Listable ListNetworkOfferings
|
|
|
|
// ListNetworkOfferings represents a query for network offerings
|
|
type ListNetworkOfferings struct {
|
|
Availability string `json:"availability,omitempty" doc:"the availability of network offering. Default value is Required"`
|
|
DisplayText string `json:"displaytext,omitempty" doc:"list network offerings by display text"`
|
|
GuestIPType string `json:"guestiptype,omitempty" doc:"list network offerings by guest type: Shared or Isolated"`
|
|
ID *UUID `json:"id,omitempty" doc:"list network offerings by id"`
|
|
IsDefault *bool `json:"isdefault,omitempty" doc:"true if need to list only default network offerings. Default value is false"`
|
|
IsTagged *bool `json:"istagged,omitempty" doc:"true if offering has tags specified"`
|
|
Keyword string `json:"keyword,omitempty" doc:"List by keyword"`
|
|
Name string `json:"name,omitempty" doc:"list network offerings by name"`
|
|
NetworkID *UUID `json:"networkid,omitempty" doc:"the ID of the network. Pass this in if you want to see the available network offering that a network can be changed to."`
|
|
Page int `json:"page,omitempty"`
|
|
PageSize int `json:"pagesize,omitempty"`
|
|
SourceNATSupported *bool `json:"sourcenatsupported,omitempty" doc:"true if need to list only netwok offerings where source nat is supported, false otherwise"`
|
|
SpecifyIPRanges *bool `json:"specifyipranges,omitempty" doc:"true if need to list only network offerings which support specifying ip ranges"`
|
|
SpecifyVlan *bool `json:"specifyvlan,omitempty" doc:"the tags for the network offering."`
|
|
State string `json:"state,omitempty" doc:"list network offerings by state"`
|
|
SupportedServices []Service `json:"supportedservices,omitempty" doc:"list network offerings supporting certain services"`
|
|
Tags string `json:"tags,omitempty" doc:"list network offerings by tags"`
|
|
TrafficType string `json:"traffictype,omitempty" doc:"list by traffic type"`
|
|
ZoneID *UUID `json:"zoneid,omitempty" doc:"list network offerings available for network creation in specific zone"`
|
|
_ bool `name:"listNetworkOfferings" description:"Lists all available network offerings."`
|
|
}
|
|
|
|
// ListNetworkOfferingsResponse represents a list of service offerings
|
|
type ListNetworkOfferingsResponse struct {
|
|
Count int `json:"count"`
|
|
NetworkOffering []NetworkOffering `json:"networkoffering"`
|
|
}
|
|
|
|
// UpdateNetworkOffering represents a modification of a network offering
|
|
type UpdateNetworkOffering struct {
|
|
Availability string `json:"availability,omitempty" doc:"the availability of network offering. Default value is Required for Guest Virtual network offering; Optional for Guest Direct network offering"`
|
|
DisplayText string `json:"displaytext,omitempty" doc:"the display text of the network offering"`
|
|
ID *UUID `json:"id,omitempty" doc:"the id of the network offering"`
|
|
KeepAliveEnabled *bool `json:"keepaliveenabled,omitempty" doc:"if true keepalive will be turned on in the loadbalancer. At the time of writing this has only an effect on haproxy; the mode http and httpclose options are unset in the haproxy conf file."`
|
|
MaxConnections int `json:"maxconnections,omitempty" doc:"maximum number of concurrent connections supported by the network offering"`
|
|
Name string `json:"name,omitempty" doc:"the name of the network offering"`
|
|
SortKey int `json:"sortkey,omitempty" doc:"sort key of the network offering, integer"`
|
|
State string `json:"state,omitempty" doc:"update state for the network offering"`
|
|
_ bool `name:"updateNetworkOffering" description:"Updates a network offering."`
|
|
}
|
|
|
|
// Response returns the struct to unmarshal
|
|
func (UpdateNetworkOffering) Response() interface{} {
|
|
return new(NetworkOffering)
|
|
}
|