Documentation
¶
Index ¶
- Constants
- Variables
- func GetVirtualServerProductCode(serverClass string, country string) string
- type ApiError
- type Client
- type ConfirmedOrder
- type CreatedOrder
- type Credential
- type CustomerID
- type Device
- type DeviceClient
- type DeviceGetAllFilter
- type FirewallPolicy
- type Install
- type LoadBalancer
- type LoadBalancerACL
- type LoadBalancerACLAction
- type LoadBalancerACLID
- type LoadBalancerBackend
- type LoadBalancerBalanceMode
- type LoadBalancerBrowserRefresh
- type LoadBalancerCheckMode
- type LoadBalancerClient
- type LoadBalancerFilter
- type LoadBalancerID
- type LoadBalancerIPRestriction
- type LoadBalancerRefreshPattern
- type LoadBalancerRefreshPatternID
- type LoadBalancerScope
- type LoadBalancerTCPProxyMode
- type LoadBalancerType
- type LogFunc
- type NetworkID
- type Nic
- type Order
- type OrderContract
- type ProductDetails
- type RegionID
- type Storage
- type Transaction
- type TransactionFilter
- type TransactionStartupCloudInit
- type TransactionStartupData
Constants ¶
View Source
const ( ServerClassBudget = "BUDGET" ServerClassPerformance = "PERFORMANCE" ServerClassStorage = "STORAGE" ServerClassTraffic = "TRAFFIC" StorageTypeMagnetic = "MAGNETIC" StorageTypeSSD = "SSD" FirewallPolicyDirectionAny = "ANY" FirewallPolicyDirectionInbound = "INBOUND" FirewallPolicyDirectionOutbound = "OUTBOUND" FirewallPolicyTypeAllow = "ALLOW" FirewallPolicyTypeDeny = "DENY" FirewallPolicyTypeDisabled = "DISABLED" FirewallPolicyTypeReject = "REJECT" )
View Source
const ( TransactionObjectTypeDevice = "DEVICE" TransactionStatusCommenced = "COMMENCED" TransactionStatusCompleted = "COMPLETED" TransactionStatusPending = "PENDING" TransactionTypeCancel = "CANCEL" TransactionTypeCloseVNC = "CLOSEVNC" TransactionTypeForceShutdown = "FORCESHUTDOWN" TransactionTypeOpenVNC = "OPENVNC" // data parameter contains public IP that allows VNC TransactionTypeRefreshConfig = "REFRESHCONFIG" TransactionTypeSafeShutdown = "SAFESHUTDOWN" TransactionTypeShutdown = "SHUTDOWN" TransactionTypeStartup = "STARTUP" )
Variables ¶
View Source
var ( ServerClasses = []string{ ServerClassBudget, ServerClassPerformance, ServerClassStorage, ServerClassTraffic, } StorageTypes = []string{ StorageTypeMagnetic, StorageTypeSSD, } FirewallPolicyDirections = []string{ FirewallPolicyDirectionAny, FirewallPolicyDirectionInbound, FirewallPolicyDirectionOutbound, } FirewallPolicyTypes = []string{ FirewallPolicyTypeAllow, FirewallPolicyTypeDeny, FirewallPolicyTypeDisabled, FirewallPolicyTypeReject, } )
View Source
var DefaultLogger = slog.Default()
Functions ¶
Types ¶
type Client ¶
type Client interface {
OrderConfirm(ctx context.Context, orderId string) (*ConfirmedOrder, error)
OrderCreate(ctx context.Context, productCode string, customerId string, productDetails ProductDetails) (*CreatedOrder, error)
OrderGet(ctx context.Context, orderId string) (*Order, error)
OrderContractGet(ctx context.Context, contractId string) (*OrderContract, error)
DeviceGet(ctx context.Context, deviceId int) (*Device, error)
DeviceUpdateFirewall(ctx context.Context, deviceId int, policies []FirewallPolicy) error
TransactionCreate(ctx context.Context, transactionType string, objectType string, objectId string, confirm bool) (*Transaction, error)
TransactionDeviceStartup(ctx context.Context, deviceId string, data TransactionStartupData) (*Transaction, error)
TransactionGet(ctx context.Context, transactionId string) (*Transaction, error)
TransactionGetAll(ctx context.Context, filter TransactionFilter) ([]Transaction, int, error)
LoadBalancer() LoadBalancerClient
Device() DeviceClient
SetDebugLog(logFunc LogFunc)
}
func NewClientFromEnv ¶ added in v1.1.0
type ConfirmedOrder ¶
type ConfirmedOrder struct {
ContractIds []string
}
type CreatedOrder ¶
type Credential ¶
type CustomerID ¶ added in v1.1.0
type CustomerID = apiv2.CustomerID
type Device ¶
type Device struct {
DeviceId int `json:"deviceId"`
Name string `json:"name"`
CustomerId int `json:"customerId"`
PrimaryIP string `json:"primaryIP"`
Status string `json:"status"`
DataCenterId int `json:"dcid"`
FirewallPolicies []FirewallPolicy `json:"firewallPolicies"`
StdName string `json:"stdName"`
DateCreated int64 `json:"dateCreated"`
DateModified int64 `json:"dateModified"`
TrafficCurrent string `json:"trafficCurrent"`
TrafficEstimated float64 `json:"trafficEstimated"`
TrafficMB int64 `json:"trafficMB"`
DCName string `json:"dcName"`
Extra map[string]interface{} `json:"extra"`
}
type DeviceClient ¶ added in v1.1.0
type DeviceGetAllFilter ¶ added in v1.1.0
type DeviceGetAllFilter struct {
ID apiv2.DeviceID `json:"id,omitempty"`
CustomerID CustomerID `json:"customerID,omitempty"`
Name string `json:"name,omitempty"`
StdName string `json:"stdName,omitempty"`
// TODO ipAddress
// TODO dcID
// TODO dcName
// TODO status
// TODO creationFromDate
// TODO creationToDate
// TODO assetID
// TODO assetCode
// TODO deviceType
// TODO trafficShared
// TODO hostDeviceID
// TODO hostDeviceName
// TODO transactionsPending
ResultStart int `json:"resStart,omitempty"`
ResultWindow int `json:"resWindow,omitempty"`
}
type FirewallPolicy ¶
type FirewallPolicy struct {
ID int `json:"id"`
Direction string `json:"direction"`
Policy string `json:"policy"`
Order int `json:"order"`
Comment string `json:"comment,omitempty"`
IpAddressFrom string `json:"ipAddressFrom,omitempty"`
IpAddressTo string `json:"ipAddressTo,omitempty"`
Protocol string `json:"protocol,omitempty"`
PortFrom string `json:"portFrom,omitempty"`
PortTo string `json:"portTo,omitempty"`
DeviceId int `json:"deviceId"`
OldDeviceID string `json:"deviceID,omitempty"` //needed b/c of quirks with case-sensitivity in the GO json parser https://github.com/golang/go/issues/14750
}
type LoadBalancer ¶ added in v1.1.0
type LoadBalancer struct {
ID LoadBalancerID
Name string
CustomerID CustomerID
Hostname string
StdName string
HostSource string
HostSourceForceHost string
BackendHostnameForce string
Type LoadBalancerType
// Status string // TODO LoadBalancerStatus
DateCreated time.Time
DateModified time.Time
Version int
Scope LoadBalancerScope
ScopeNetworkID NetworkID
ScopeInstances int
MonthlyAllocationMB int
MonthlyUsageMB int
TrafficRemainingMB int
Aliases []string
AutoUpgradeHTTPS bool
Backends []LoadBalancerBackend
BalanceMode LoadBalancerBalanceMode
CheckMode LoadBalancerCheckMode
Ports []int
RefreshPatterns []LoadBalancerRefreshPattern
Regions []RegionID
}
type LoadBalancerACL ¶ added in v1.1.0
type LoadBalancerACL struct {
ID LoadBalancerACLID `json:"id,omitempty"`
Data string `json:"acl_data,omitempty"` // TODO ip mask
Action LoadBalancerACLAction `json:"acl_action,omitempty"`
}
type LoadBalancerACLAction ¶ added in v1.1.0
type LoadBalancerACLAction string
const ( LoadBalancerACLActionAllow LoadBalancerACLAction = "ALLOW" LoadBalancerACLActionDeny LoadBalancerACLAction = "DENY" )
type LoadBalancerACLID ¶ added in v1.1.0
type LoadBalancerACLID int
func (*LoadBalancerACLID) UnmarshalJSON ¶ added in v1.1.0
func (id *LoadBalancerACLID) UnmarshalJSON(data []byte) error
type LoadBalancerBackend ¶ added in v1.1.0
type LoadBalancerBalanceMode ¶ added in v1.1.0
type LoadBalancerBalanceMode string
const ( LoadBalancerBalanceModeRoundRobin LoadBalancerBalanceMode = "roundrobin" LoadBalancerBalanceModeLeast LoadBalancerBalanceMode = "least" LoadBalancerBalanceModeRandom LoadBalancerBalanceMode = "random" )
type LoadBalancerBrowserRefresh ¶ added in v1.1.0
type LoadBalancerBrowserRefresh string
const ( LoadBalancerBrowserRefreshCache LoadBalancerBrowserRefresh = "CACHE" LoadBalancerBrowserRefreshIfModifiedSince LoadBalancerBrowserRefresh = "IFMODIFIEDSINCE" LoadBalancerBrowserRefreshRefresh LoadBalancerBrowserRefresh = "REFRESH" )
type LoadBalancerCheckMode ¶ added in v1.1.0
type LoadBalancerCheckMode string
const ( LoadBalancerCheckModeHTTP LoadBalancerCheckMode = "HTTP" LoadBalancerCheckModeTCP LoadBalancerCheckMode = "TCP" )
type LoadBalancerClient ¶ added in v1.1.0
type LoadBalancerClient interface {
Create(ctx context.Context, lb LoadBalancer) (*LoadBalancer, error)
Delete(ctx context.Context, id LoadBalancerID) error
Get(ctx context.Context, id LoadBalancerID) (*LoadBalancer, error)
GetAll(ctx context.Context, filter LoadBalancerFilter) ([]LoadBalancer, error)
Update(ctx context.Context, lb LoadBalancer) (*LoadBalancer, error)
}
type LoadBalancerFilter ¶ added in v1.1.0
type LoadBalancerFilter struct {
Id LoadBalancerID `json:"id,omitempty"`
CustomerID CustomerID `json:"customerid,omitempty"`
Name string `json:"name,omitempty"`
StdName string `json:"stdname,omitempty"`
Hostname string `json:"hostname,omitempty"`
// Status string `json:"status,omitempty"` // TODO LoadBalancerStatus enum DELETED,INACTIVE
// Type []string `json:"type,omitempty"` // TODO LoadBalancerType enum GLB,TCP,HTTP,UDP,CDN?
// LastModified time.Time `json:"lastmodified,omitempty"` // TODO serialize as unixepoch
ResultStart int `json:"resStart,omitempty"`
ResultWindow int `json:"resWindow,omitempty"`
}
type LoadBalancerID ¶ added in v1.1.0
type LoadBalancerID int
func (LoadBalancerID) IsZero ¶ added in v1.1.0
func (id LoadBalancerID) IsZero() bool
func (*LoadBalancerID) UnmarshalJSON ¶ added in v1.1.0
func (id *LoadBalancerID) UnmarshalJSON(data []byte) error
type LoadBalancerIPRestriction ¶ added in v1.1.0
type LoadBalancerRefreshPattern ¶ added in v1.1.0
type LoadBalancerRefreshPattern struct {
ID LoadBalancerRefreshPatternID
RegularExpression string
MinTTL time.Duration
CacheTime time.Duration
MaxTTL time.Duration
CheckTTL time.Duration
OverrideExpire bool
OverrideLastModified bool
IgnoreSetCookie bool
IgnoreCacheControl bool
CacheAuthorizedPages bool
BrowserRefresh LoadBalancerBrowserRefresh
ForceExpireMins time.Duration
PseudoStreamFLV bool
PseudoStreamH264 bool
CGIIgnoreParams bool
NoCompression bool
RedirectCode int
RedirectURL string
RedirectPreserveParams bool
RedirectForceHTTPS bool
IPRestrictionDefaultPolicy string
IPRestrictions []LoadBalancerIPRestriction
}
type LoadBalancerRefreshPatternID ¶ added in v1.1.0
type LoadBalancerRefreshPatternID int
func (*LoadBalancerRefreshPatternID) UnmarshalJSON ¶ added in v1.1.0
func (id *LoadBalancerRefreshPatternID) UnmarshalJSON(data []byte) error
type LoadBalancerScope ¶ added in v1.1.0
type LoadBalancerScope string
const ( LoadBalancerScopeGlobal LoadBalancerScope = "global" LoadBalancerScopeLocal LoadBalancerScope = "local" )
type LoadBalancerTCPProxyMode ¶ added in v1.1.0
type LoadBalancerTCPProxyMode int
const ( LoadBalancerTCPProxyModeNone LoadBalancerTCPProxyMode = 0 LoadBalancerTCPProxyModeV2 LoadBalancerTCPProxyMode = 2 )
type LoadBalancerType ¶ added in v1.1.0
type LoadBalancerType string
const ( LoadBalancerTypeCDN LoadBalancerType = "CDN" LoadBalancerTypeGLB LoadBalancerType = "GLB" LoadBalancerTypeHTTP LoadBalancerType = "HTTP" LoadBalancerTypeTCP LoadBalancerType = "TCP" LoadBalancerTypeUDP LoadBalancerType = "UDP" )
type OrderContract ¶
type ProductDetails ¶
type ProductDetails struct {
Hostname string `json:"hostname,omitempty"`
DataCenterId string `json:"dcId,omitempty"`
Credentials []Credential `json:"credentials"`
Install Install `json:"install"`
CpuCount int `json:"cpu"`
Storage []Storage `json:"storage,omitempty"`
MemoryGB int `json:"memoryGB"`
TrafficGB int `json:"trafficGB,omitempty"`
FirewallPolicies []FirewallPolicy `json:"firewallPolicies,omitempty"`
Nics []Nic `json:"nics,omitempty"`
HostGroupID *int `json:"hostGroupId,omitempty"`
Location string `json:"location,omitempty"`
Timezone string `json:"timezone,omitempty"`
}
type Transaction ¶
type TransactionFilter ¶
type TransactionFilter struct {
ObjectType string `json:"objType"`
ObjectId []string `json:"objId,omitempty"`
Type []string `json:"method,omitempty"`
Status []string `json:"status,omitempty"`
CustomerId []string `json:"customerId,omitempty"`
ResultStart int `json:"resStart,omitempty"`
ResultWindow int `json:"resWindow,omitempty"`
}
type TransactionStartupData ¶
type TransactionStartupData struct {
DeployMediaImageAccessKey string `json:"deployMediaImageAccessKey,omitempty"`
DeployMediaImageAccessSecret string `json:"deployMediaImageAccessSecret,omitempty"`
DeployMediaImageBucket string `json:"deployMediaImageBucket,omitempty"`
DeployMediaImageId string `json:"deployMediaImageId,omitempty"`
DeployMediaImagePath string `json:"deployMediaImagePath,omitempty"`
CloudInit TransactionStartupCloudInit `json:"cloudInit"`
}
Source Files
¶
Click to show internal directories.
Click to hide internal directories.