Documentation
¶
Index ¶
- Constants
- Variables
- func GetVirtualServerProductCode(serverClass string, country string) string
- type ApiError
- type Client
- type ConfirmedOrder
- type ContractID
- type CreatedOrder
- type CreatedRCTransaction
- type Credential
- type CustomerID
- type DC
- type DCClient
- type DCGetAllParams
- type DCID
- 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 OrderClient
- type OrderContract
- type OrderContractClient
- type OrderCreateParams
- type OrderGetAllParams
- type OrderID
- type ProductClient
- type ProductCode
- type ProductDetails
- type ProductGroup
- type ProductGroupClient
- type ProductGroupGetAllParams
- type ProductOS
- type ProductOSClient
- type ProductOSGetParams
- type ProductOSID
- type RCTransaction
- type RCTransactionClient
- type RCTransactionCreateParams
- type RCTransactionGetAllParams
- type RCTransactionID
- type RCTransactionMethod
- type RCTransactionObjectID
- type RCTransactionObjectType
- type RCTransactionStatus
- type RegionID
- type Storage
- type Transaction
- type TransactionFilter
- type TransactionStartupCloudInit
- type TransactionStartupData
- type Util
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)
DC() DCClient
Device() DeviceClient
LoadBalancer() LoadBalancerClient
Order() OrderClient
Product() ProductClient
RCTransactions() RCTransactionClient
Util() Util
SetDebugLog(logFunc LogFunc)
}
func NewClientFromEnv ¶ added in v1.1.0
type ConfirmedOrder ¶
type ConfirmedOrder struct {
ContractIds []string
}
type ContractID ¶
type ContractID = apiv2.ContractID
type CreatedOrder ¶
type CreatedRCTransaction ¶
type CreatedRCTransaction struct {
ID RCTransactionID `json:"rcTransactionId"`
ObjectType RCTransactionObjectType `json:"objType"`
ObjectID RCTransactionObjectID `json:"objId"`
Method RCTransactionMethod `json:"method"`
ConfirmationRequired bool `json:"confirmationRequired"`
ConfirmationText string `json:"confirmationText"`
Data string `json:"data"`
}
type Credential ¶
type CustomerID ¶ added in v1.1.0
type CustomerID = apiv2.CustomerID
type DC ¶
type DC struct {
ID DCID `json:"dcId"`
Code string `json:"dcCode"`
Name string `json:"dcName"`
Description string `json:"dcDescription"`
RegionID RegionID `json:"region_id"`
RegionCode string `json:"region_code"`
RegionName string `json:"region_name"`
CountryCode string `json:"dcCountryCode"`
CountryName string `json:"dcCountryName"`
}
type DCGetAllParams ¶
type DCGetAllParams struct{}
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 OrderClient ¶
type OrderClient interface {
Create(ctx context.Context, params OrderCreateParams) (*apiv2.CreatedOrder, error)
// Get(ctx context.Context, id OrderID) (*apiv2.Order, error)
// GetAll(ctx context.Context, params OrderGetAllParams) ([]apiv2.Order, error)
Confirm(ctx context.Context, orderId OrderID) ([]ContractID, error)
Contract() OrderContractClient
}
type OrderContract ¶
type OrderContractClient ¶
type OrderContractClient interface {
Get(ctx context.Context, contractID ContractID) (*apiv2.OrderContract, error)
}
type OrderCreateParams ¶
type OrderCreateParams struct {
ProductCode ProductCode // TODO ServiceBillTagData, TAGCODE
CustomerID CustomerID
ProductDetails apiv2.OrderProductDetails
Quantity int
}
type OrderGetAllParams ¶
type OrderGetAllParams struct {
OrderID OrderID
}
type ProductClient ¶
type ProductClient interface {
Group() ProductGroupClient
OS() ProductOSClient
}
type ProductCode ¶
type ProductCode string
const (
ProductCodeCloudServer ProductCode = "CLOUDSERVER"
)
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 ProductGroup ¶
type ProductGroup struct {
ID string
}
type ProductGroupClient ¶
type ProductGroupClient interface {
GetAll(ctx context.Context, params ProductGroupGetAllParams) ([]ProductGroup, error)
}
type ProductGroupGetAllParams ¶
type ProductGroupGetAllParams struct {
CustomerID CustomerID
}
type ProductOS ¶
type ProductOS struct {
ID ProductOSID `json:"id"`
Name string `json:"name"`
Version string `json:"version"`
CustomerID CustomerID `json:"customerid"`
}
type ProductOSClient ¶
type ProductOSClient interface {
Get(ctx context.Context, params ProductOSGetParams) ([]ProductOS, error)
}
type ProductOSGetParams ¶
type ProductOSGetParams struct {
CustomerID CustomerID `json:"customerid,omitempty"`
Name string `json:"name,omitempty"`
Version string `json:"version,omitempty"`
}
type ProductOSID ¶
type ProductOSID int
func (*ProductOSID) UnmarshalJSON ¶
func (id *ProductOSID) UnmarshalJSON(data []byte) error
type RCTransaction ¶
type RCTransaction struct {
RCTransactionID RCTransactionID `json:"rcTransactionId"`
ObjectType RCTransactionObjectType `json:"objType"`
ObjectID RCTransactionObjectID `json:"objId"`
Method RCTransactionMethod `json:"method"`
Data string `json:"data"`
Status RCTransactionStatus `json:"status"`
StatusInfo string `json:"statusInfo"`
}
type RCTransactionClient ¶
type RCTransactionClient interface {
Get(ctx context.Context, id RCTransactionID) (*RCTransaction, error)
GetAll(ctx context.Context, params RCTransactionGetAllParams) ([]RCTransaction, int, error)
Create(ctx context.Context, params RCTransactionCreateParams) (*CreatedRCTransaction, error)
}
type RCTransactionCreateParams ¶
type RCTransactionCreateParams struct {
ObjectType RCTransactionObjectType `json:"objType"`
ObjectID RCTransactionObjectID `json:"objId"`
Method RCTransactionMethod `json:"method"`
Confirmation bool `json:"confirmation"`
Data string `json:"data"`
}
type RCTransactionGetAllParams ¶
type RCTransactionGetAllParams struct {
ObjectIDs []RCTransactionObjectID `json:"objId,omitempty"`
Statuses []RCTransactionStatus `json:"status,omitempty"`
Methods []RCTransactionMethod `json:"method,omitempty"`
CustomerIDs []CustomerID `json:"customerId,omitempty"`
ResultStart int `json:"resStart,omitempty"`
ResultWindow int `json:"resWindow,omitempty"`
}
type RCTransactionID ¶
type RCTransactionID = apiv2.RCTransactionID
type RCTransactionMethod ¶
type RCTransactionMethod string
const ( RCTransactionMethodCancel RCTransactionMethod = "CANCEL" RCTransactionMethodForceShutdown RCTransactionMethod = "FORCESHUTDOWN" RCTransactionMethodRefreshConfig RCTransactionMethod = "REFRESHCONFIG" RCTransactionMethodRestart RCTransactionMethod = "RESTART" RCTransactionMethodSafeRestart RCTransactionMethod = "SAFERESTART" RCTransactionMethodSafeShutdown RCTransactionMethod = "SAFESHUTDOWN" RCTransactionMethodShutdown RCTransactionMethod = "SHUTDOWN" RCTransactionMethodStartup RCTransactionMethod = "STARTUP" )
type RCTransactionObjectID ¶
type RCTransactionObjectID = apiv2.RCTransactionObjectID
type RCTransactionObjectType ¶
type RCTransactionObjectType string
const ( RCTransactionObjectTypeDatabase RCTransactionObjectType = "DATABASE" RCTransactionObjectTypeDevice RCTransactionObjectType = "DEVICE" RCTransactionObjectTypeStorage RCTransactionObjectType = "STORAGE" RCTransactionObjectTypeVMH RCTransactionObjectType = "VMH" RCTransactionObjectTypeWebsite RCTransactionObjectType = "WEBSITE" )
type RCTransactionStatus ¶
type RCTransactionStatus string
const ( RCTransactionStatusPending RCTransactionStatus = "PENDING" RCTransactionStatusCommenced RCTransactionStatus = "COMMENCED" RCTransactionStatusVerifying RCTransactionStatus = "VERIFYING" RCTransactionStatusCompleted RCTransactionStatus = "COMPLETED" RCTransactionStatusCancelled RCTransactionStatus = "CANCELLED" RCTransactionStatusFailed RCTransactionStatus = "FAILED" )
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"`
}
type Util ¶
type Util interface {
WaitForActiveContract(ctx context.Context, contractID ContractID) (*apiv2.OrderContract, error)
WaitForZeroActiveTransactions(ctx context.Context, objectID RCTransactionObjectID) error
WaitForCompletedTransaction(ctx context.Context, transactionID RCTransactionID) (*RCTransaction, error)
}
Source Files
¶
Click to show internal directories.
Click to hide internal directories.