Documentation
¶
Index ¶
- func RSTypeString(rsType RSType) string
- type AccessInfo
- type AddonsInfo
- type AnyCallHandler
- type AnyCallInfo
- type CloudPrice
- type CloudPriceData
- type ClusterHandler
- type ClusterInfo
- type ClusterStatus
- type DiskHandler
- type DiskInfo
- type DiskStatus
- type GpuInfo
- type HealthCheckerInfo
- type HealthInfo
- type IID
- type ImageHandler
- type ImageInfo
- type ImageReqInfo
- type ImageType
- type KeyPairHandler
- type KeyPairInfo
- type KeyPairReqInfo
- type KeyValue
- type ListenerInfo
- type Meta
- type MyImageHandler
- type MyImageInfo
- type MyImageStatus
- type NLBHandler
- type NLBInfo
- type NetworkInfo
- type NodeGroupInfo
- type NodeGroupStatus
- type Platform
- type Price
- type PriceInfo
- type PriceInfoHandler
- type PricingPolicies
- type PricingPolicyInfo
- type ProductInfo
- type RSType
- type RegionInfo
- type RegionZoneHandler
- type RegionZoneInfo
- type SecurityHandler
- type SecurityInfo
- type SecurityReqInfo
- type SecurityRuleInfo
- type SubnetInfo
- type TagHandler
- type TagInfo
- type VCpuInfo
- type VMGroupInfo
- type VMHandler
- type VMInfo
- type VMReqInfo
- type VMSpecHandler
- type VMSpecInfo
- type VMStatus
- type VMStatusInfo
- type VPCHandler
- type VPCInfo
- type VPCReqInfo
- type ZoneInfo
- type ZoneStatus
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func RSTypeString ¶ added in v0.8.20
Types ¶
type AccessInfo ¶ added in v0.6.15
type AccessInfo struct {
Endpoint string `json:"Endpoint,omitempty" example:"https://1.2.3.4"`
Kubeconfig string `json:"Kubeconfig,omitempty" example:"apiVersion: v1\nclusters:\n- cluster:\n ...."`
}
AccessInfo represents the access information of a Cluster. @description Access Information for a Kubernetes Cluster. <br> Take some time to provide.
type AddonsInfo ¶ added in v0.6.3
type AddonsInfo struct {
KeyValueList []KeyValue `json:"KeyValueList,omitempty" validate:"omitempty"`
}
AddonsInfo represents the additional configuration information of a Cluster. @description Addons Information for a Kubernetes Cluster
type AnyCallHandler ¶ added in v0.6.9
type AnyCallHandler interface {
AnyCall(callInfo AnyCallInfo) (AnyCallInfo, error)
}
type AnyCallInfo ¶ added in v0.6.9
type AnyCallInfo struct {
FID string `json:"FID" validate:"required" example:"countAll"` // Function ID, ex: countAll
IKeyValueList []KeyValue `json:"IKeyValueList" validate:"required"` // Input Arguments List, ex:[{"Key": "rsType", "Value": "vpc"}]
OKeyValueList []KeyValue `json:"OKeyValueList" validate:"required"` // Output Results List, ex:[{"Key": "Count", "Value": "10"}]"
}
AnyCallInfo represents the structure for performing AnyCall API requests and responses. @description This structure holds both the input and output parameters for the AnyCall API.
type CloudPrice ¶ added in v0.8.0
type CloudPrice struct {
CloudName string `json:"cloudName" validate:"required" example:"AWS"` // Name of the cloud provider
PriceList []Price `json:"priceList" validate:"required" description:"List of prices"` // List of prices for different services/products
}
CloudPrice represents the pricing information for a specific cloud provider.
type CloudPriceData ¶ added in v0.8.0
type CloudPriceData struct {
Meta Meta `json:"meta" validate:"required" description:"Metadata information about the price data"`
CloudPriceList []CloudPrice `json:"cloudPriceList" validate:"required" description:"List of cloud prices"`
}
CloudPriceData represents the structure of cloud pricing data.
type ClusterHandler ¶ added in v0.6.3
type ClusterHandler interface {
//------ Cluster Management
ListIID() ([]*IID, error)
CreateCluster(clusterReqInfo ClusterInfo) (ClusterInfo, error)
ListCluster() ([]*ClusterInfo, error)
GetCluster(clusterIID IID) (ClusterInfo, error)
DeleteCluster(clusterIID IID) (bool, error)
//------ NodeGroup Management
AddNodeGroup(clusterIID IID, nodeGroupReqInfo NodeGroupInfo) (NodeGroupInfo, error)
SetNodeGroupAutoScaling(clusterIID IID, nodeGroupIID IID, on bool) (bool, error)
ChangeNodeGroupScaling(clusterIID IID, nodeGroupIID IID,
DesiredNodeSize int, MinNodeSize int, MaxNodeSize int) (NodeGroupInfo, error)
RemoveNodeGroup(clusterIID IID, nodeGroupIID IID) (bool, error)
//------ Upgrade K8S
UpgradeCluster(clusterIID IID, newVersion string) (ClusterInfo, error)
}
-------- Cluster API
type ClusterInfo ¶ added in v0.6.3
type ClusterInfo struct {
IId IID `json:"IId" validate:"required"`
Version string `json:"Version" validate:"required" example:"1.30"` // Kubernetes Version, ex) 1.30
Network NetworkInfo `json:"Network" validate:"required"`
// ---
NodeGroupList []NodeGroupInfo `json:"NodeGroupList" validate:"omitempty"`
AccessInfo AccessInfo `json:"AccessInfo,omitempty"`
Addons AddonsInfo `json:"Addons,omitempty"`
Status ClusterStatus `json:"Status" validate:"required" example:"Active"`
CreatedTime time.Time `json:"CreatedTime,omitempty" example:"2024-08-27T10:00:00Z"`
TagList []KeyValue `json:"TagList,omitempty" validate:"omitempty"`
KeyValueList []KeyValue `json:"KeyValueList,omitempty" validate:"omitempty"`
}
-------- Info Structure ClusterInfo represents the details of a Kubernetes Cluster. @description Kubernetes Cluster Information
type ClusterStatus ¶ added in v0.6.3
type ClusterStatus string
-------- Const
const ( ClusterCreating ClusterStatus = "Creating" ClusterActive ClusterStatus = "Active" ClusterInactive ClusterStatus = "Inactive" ClusterUpdating ClusterStatus = "Updating" ClusterDeleting ClusterStatus = "Deleting" )
type DiskHandler ¶ added in v0.6.4
type DiskHandler interface {
//------ Disk Management
ListIID() ([]*IID, error)
CreateDisk(DiskReqInfo DiskInfo) (DiskInfo, error)
ListDisk() ([]*DiskInfo, error)
GetDisk(diskIID IID) (DiskInfo, error)
ChangeDiskSize(diskIID IID, size string) (bool, error)
DeleteDisk(diskIID IID) (bool, error)
//------ Disk Attachment
AttachDisk(diskIID IID, ownerVM IID) (DiskInfo, error)
DetachDisk(diskIID IID, ownerVM IID) (bool, error)
}
-------- Disk API
type DiskInfo ¶ added in v0.6.4
type DiskInfo struct {
IId IID `json:"IId" validate:"required"` // {NameId, SystemId}
Zone string `json:"Zone" validate:"required" example:"us-east-1a"` // Target Zone Name
DiskType string `json:"DiskType" validate:"required" example:"gp2"` // "gp2", "Premium SSD", ...
DiskSize string `json:"DiskSize" validate:"required" example:"100"` // "default", "50", "1000" (unit is GB)
Status DiskStatus `json:"Status" validate:"required" example:"Available"`
OwnerVM IID `json:"OwnerVM" validate:"omitempty"` // When the Status is DiskAttached
CreatedTime time.Time `json:"CreatedTime" validate:"required"` // The time when the disk was created
TagList []KeyValue `json:"TagList,omitempty" validate:"omitempty"` // A list of tags associated with this disk
KeyValueList []KeyValue `json:"KeyValueList,omitempty" validate:"omitempty"` // Additional key-value pairs associated with this disk
}
-------- Info Structure DiskInfo represents the information of a Disk resource.
type DiskStatus ¶ added in v0.6.4
type DiskStatus string
-------- Const
const ( DiskCreating DiskStatus = "Creating" DiskAvailable DiskStatus = "Available" DiskAttached DiskStatus = "Attached" DiskDeleting DiskStatus = "Deleting" DiskError DiskStatus = "Error" )
type GpuInfo ¶
type GpuInfo struct {
Count string `json:"Count" validate:"required" example:"1"` // Number of GPUs
Mfr string `json:"Mfr,omitempty" validate:"omitempty" example:"NVIDIA"` // Manufacturer of the GPU
Model string `json:"Model,omitempty" validate:"omitempty" example:"Tesla K80"` // Model of the GPU
Mem string `json:"Mem,omitempty" validate:"omitempty" example:"8192"` // Memory size of the GPU in MB
}
GpuInfo represents the GPU details of a VM specification.
type HealthCheckerInfo ¶ added in v0.5.5
type HealthCheckerInfo struct {
Protocol string `json:"Protocol" validate:"required" example:"TCP"` // TCP|HTTP
Port string `json:"Port" validate:"required" example:"80"` // Listener Port or 1-65535
Interval int `json:"Interval" validate:"required" example:"30"` // secs, Interval time between health checks.
Timeout int `json:"Timeout" validate:"required" example:"5"` // secs, Waiting time to decide an unhealthy VM when no response.
Threshold int `json:"Threshold" validate:"required" example:"3"` // num, The number of continuous health checks to change the VM status.
CspID string `json:"CspID,omitempty" validate:"omitempty"`
KeyValueList []KeyValue `json:"KeyValueList,omitempty" validate:"omitempty"`
}
HealthCheckerInfo represents the health check configuration for an NLB. @description Health Checker Information for a Network Load Balancer (NLB)
type HealthInfo ¶ added in v0.5.6
type HealthInfo struct {
AllVMs *[]IID `json:"AllVMs" validate:"required"`
HealthyVMs *[]IID `json:"HealthyVMs" validate:"required"`
UnHealthyVMs *[]IID `json:"UnHealthyVMs" validate:"required"`
}
HealthInfo represents the health status of the VM group in an NLB. @description Health Information for a Network Load Balancer (NLB)
type IID ¶ added in v0.1.2
type IID struct {
NameId string `json:"NameId" validate:"required" example:"user-defined-name"`
SystemId string `json:"SystemId" validate:"required" example:"csp-defined-id"`
}
Integrated-ID consisting of User's ID and CloudOS's ID
type ImageHandler ¶
type ImageInfo ¶
type ImageInfo struct {
IId IID `json:"IId" validate:"required" description:"The ID of the image."` // {NameId, SystemId}
GuestOS string `json:"GuestOS" validate:"required" example:"Ubuntu 18.04" description:"The operating system of the image."` // Windows7, Ubuntu etc.
Status string `json:"Status" validate:"required" example:"available" description:"The status of the image, e.g., available or unavailable."` // available, unavailable
KeyValueList []KeyValue `json:"KeyValueList,omitempty" validate:"omitempty" description:"A list of key-value pairs associated with the image."`
}
ImageInfo represents the information of an Image.
type ImageReqInfo ¶
type ImageReqInfo struct {
IId IID // {NameId, SystemId}
}
type KeyPairHandler ¶
type KeyPairHandler interface {
CreateKey(keyPairReqInfo KeyPairReqInfo) (KeyPairInfo, error)
ListKey() ([]*KeyPairInfo, error)
GetKey(keyIID IID) (KeyPairInfo, error)
DeleteKey(keyIID IID) (bool, error)
ListIID() ([]*IID, error)
}
type KeyPairInfo ¶
type KeyPairInfo struct {
IId IID `json:"IId" validate:"required"` // {NameId, SystemId}
Fingerprint string `json:"Fingerprint,omitempty" validate:"omitempty" example:"3b:16:bf:1b:13:4b:b3:58:97:dc:72:19:45:bb:2c:8f"` // Unique identifier for the public key
PublicKey string `json:"PublicKey,omitempty" validate:"omitempty" example:"ssh-rsa AAAAB3..."` // Public part of the KeyPair
PrivateKey string `json:"PrivateKey,omitempty" validate:"omitempty" example:"-----BEGIN PRIVATE KEY-----..."` // Private part of the KeyPair
VMUserID string `json:"VMUserID,omitempty" validate:"omitempty" example:"cb-user"` // cb-user or Administrator
TagList []KeyValue `json:"TagList,omitempty" validate:"omitempty"` // List of tags associated with this KeyPair
KeyValueList []KeyValue `json:"KeyValueList,omitempty" validate:"omitempty"` // Additional metadata as key-value pairs
}
KeyPairInfo represents information about a KeyPair.
type KeyPairReqInfo ¶
type ListenerInfo ¶ added in v0.5.5
type ListenerInfo struct {
Protocol string `json:"Protocol" validate:"required" example:"TCP"` // TCP|UDP
IP string `json:"IP" validate:"omitempty" example:"192.168.0.1"`
Port string `json:"Port" validate:"required" example:"80"` // 1-65535
DNSName string `json:"DNSName" validate:"omitempty" example:"nlb.example.com"`
CspID string `json:"CspID,omitempty" validate:"omitempty"`
KeyValueList []KeyValue `json:"KeyValueList,omitempty" validate:"omitempty"`
}
ListenerInfo represents the frontend listener configuration for an NLB. @description Listener Information for a Network Load Balancer (NLB)
type Meta ¶ added in v0.8.0
type Meta struct {
Version string `json:"version" validate:"required" example:"1.0"` // Version of the pricing data
Description string `json:"description,omitempty" example:"Cloud price data"` // Description of the pricing data
}
Meta contains metadata information about the price data.
type MyImageHandler ¶ added in v0.6.5
type MyImageHandler interface {
//------ Snapshot to create a MyImage
SnapshotVM(snapshotReqInfo MyImageInfo) (MyImageInfo, error)
//------ MyImage Management
ListIID() ([]*IID, error)
ListMyImage() ([]*MyImageInfo, error)
GetMyImage(myImageIID IID) (MyImageInfo, error)
CheckWindowsImage(myImageIID IID) (bool, error)
DeleteMyImage(myImageIID IID) (bool, error)
}
-------- MyImage API
type MyImageInfo ¶ added in v0.6.5
type MyImageInfo struct {
IId IID `json:"IId" validate:"required"` // {NameId, SystemId}
SourceVM IID `json:"SourceVM" validate:"omitempty"`
Status MyImageStatus `json:"Status" validate:"required" example:"Available"` // Available | Unavailable
CreatedTime time.Time `json:"CreatedTime" validate:"required"`
TagList []KeyValue `json:"TagList,omitempty" validate:"omitempty"`
KeyValueList []KeyValue `json:"KeyValueList,omitempty" validate:"omitempty"`
}
-------- Info Structure MyImageInfo represents the information of a MyImage resource.
type MyImageStatus ¶ added in v0.6.5
type MyImageStatus string
-------- Const
const ( MyImageAvailable MyImageStatus = "Available" )
type NLBHandler ¶ added in v0.5.5
type NLBHandler interface {
//------ NLB Management
ListIID() ([]*IID, error)
CreateNLB(nlbReqInfo NLBInfo) (NLBInfo, error)
ListNLB() ([]*NLBInfo, error)
GetNLB(nlbIID IID) (NLBInfo, error)
DeleteNLB(nlbIID IID) (bool, error)
GetVMGroupHealthInfo(nlbIID IID) (HealthInfo, error)
AddVMs(nlbIID IID, vmIIDs *[]IID) (VMGroupInfo, error)
RemoveVMs(nlbIID IID, vmIIDs *[]IID) (bool, error)
//------ Frontend Control
ChangeListener(nlbIID IID, listener ListenerInfo) (ListenerInfo, error)
//------ Backend Control
ChangeVMGroupInfo(nlbIID IID, vmGroup VMGroupInfo) (VMGroupInfo, error)
ChangeHealthCheckerInfo(nlbIID IID, healthChecker HealthCheckerInfo) (HealthCheckerInfo, error)
}
-------- API
type NLBInfo ¶ added in v0.5.5
type NLBInfo struct {
IId IID `json:"IId" validate:"required"`
VpcIID IID `json:"VpcIID" validate:"required"` // Owner VPC IID
Type string `json:"Type" validate:"required" example:"PUBLIC"` // PUBLIC(V) | INTERNAL
Scope string `json:"Scope" validate:"required" example:"REGION"` // REGION(V) | GLOBAL
//------ Frontend
Listener ListenerInfo `json:"Listener" validate:"required"`
//------ Backend
VMGroup VMGroupInfo `json:"VMGroup" validate:"required"`
HealthChecker HealthCheckerInfo `json:"HealthChecker" validate:"required"`
CreatedTime time.Time `json:"CreatedTime" validate:"required" example:"2024-08-27T10:00:00Z"`
TagList []KeyValue `json:"TagList,omitempty" validate:"omitempty"`
KeyValueList []KeyValue `json:"KeyValueList,omitempty" validate:"omitempty"`
}
-------- Info Structure NLBInfo represents the details of a Network Load Balancer (NLB). @description Network Load Balancer (NLB) Information
type NetworkInfo ¶ added in v0.6.3
type NetworkInfo struct {
VpcIID IID `json:"VpcIID" validate:"required"`
SubnetIIDs []IID `json:"SubnetIIDs" validate:"required"`
SecurityGroupIIDs []IID `json:"SecurityGroupIIDs" validate:"required"`
// ---
KeyValueList []KeyValue `json:"KeyValueList,omitempty" validate:"omitempty"`
}
NetworkInfo represents the network configuration of a Cluster. @description Network Information for a Kubernetes Cluster
type NodeGroupInfo ¶ added in v0.6.3
type NodeGroupInfo struct {
IId IID `json:"IId" validate:"required"`
// VM config.
ImageIID IID `json:"ImageIID" validate:"required"`
VMSpecName string `json:"VMSpecName" validate:"required" example:"t3.medium"`
RootDiskType string `json:"RootDiskType,omitempty" validate:"omitempty"`
RootDiskSize string `json:"RootDiskSize,omitempty" validate:"omitempty" example:"50"` // in GB
KeyPairIID IID `json:"KeyPairIID" validate:"required"`
// Scaling config.
OnAutoScaling bool `json:"OnAutoScaling" validate:"required" example:"true"`
DesiredNodeSize int `json:"DesiredNodeSize" validate:"required" example:"2"`
MinNodeSize int `json:"MinNodeSize" validate:"required" example:"1"`
MaxNodeSize int `json:"MaxNodeSize" validate:"required" example:"3"`
// ---
Status NodeGroupStatus `json:"Status" validate:"required" example:"Active"`
Nodes []IID `json:"Nodes,omitempty" validate:"omitempty"`
KeyValueList []KeyValue `json:"KeyValueList,omitempty" validate:"omitempty"`
}
NodeGroupInfo represents the configuration of a Node Group in a Cluster. @description Node Group Information for a Kubernetes Cluster
type NodeGroupStatus ¶ added in v0.6.7
type NodeGroupStatus string
const ( NodeGroupCreating NodeGroupStatus = "Creating" NodeGroupActive NodeGroupStatus = "Active" NodeGroupInactive NodeGroupStatus = "Inactive" NodeGroupUpdating NodeGroupStatus = "Updating" NodeGroupDeleting NodeGroupStatus = "Deleting" )
type Price ¶ added in v0.8.1
type Price struct {
ProductInfo ProductInfo `json:"productInfo" validate:"required" description:"Information about the product"` // Information about the product
PriceInfo PriceInfo `json:"priceInfo" validate:"required" description:"Pricing details of the product"` // Pricing details of the product
}
Price represents the price information for a specific product.
type PriceInfo ¶ added in v0.8.0
type PriceInfo struct {
PricingPolicies []PricingPolicies `json:"pricingPolicies" validate:"required" description:"List of pricing policies"` // List of pricing policies
CSPPriceInfo interface{} `json:"cspPriceInfo" validate:"required" description:"Additional price info"` // Additional price information specific to CSP
}
PriceInfo represents the pricing details for a product.
type PriceInfoHandler ¶ added in v0.8.0
type PricingPolicies ¶ added in v0.8.0
type PricingPolicies struct {
PricingId string `json:"pricingId" validate:"required" example:"price-123"` // ID of the pricing policy
PricingPolicy string `json:"pricingPolicy" validate:"required" example:"On-Demand"` // Name of the pricing policy
Unit string `json:"unit" validate:"required" example:"hour"` // Unit of the pricing (e.g., per hour)
Currency string `json:"currency" validate:"required" example:"USD"` // Currency of the pricing
Price string `json:"price" validate:"required" example:"0.02"` // Price in the specified currency per unit
Description string `json:"description,omitempty" example:"Pricing for t2.micro"` // Description of the pricing policy
PricingPolicyInfo *PricingPolicyInfo `json:"pricingPolicyInfo" description:"Detailed info about pricing"` // Detail information about the pricing policy
}
PricingPolicies represents a single pricing policy.
type PricingPolicyInfo ¶ added in v0.8.0
type PricingPolicyInfo struct {
LeaseContractLength string `json:"LeaseContractLength,omitempty" example:"1 year"` // Length of the lease contract
OfferingClass string `json:"OfferingClass,omitempty" example:"standard"` // Offering class (e.g., standard, convertible)
PurchaseOption string `json:"PurchaseOption,omitempty" example:"No Upfront"` // Purchase option (e.g., no upfront, partial upfront)
}
PricingPolicyInfo represents additional details about a pricing policy.
type ProductInfo ¶ added in v0.8.0
type ProductInfo struct {
ProductId string `json:"productId" validate:"required" example:"prod-123"` // ID of the product
RegionName string `json:"regionName" validate:"required" example:"us-east-1"` // Name of the region
ZoneName string `json:"zoneName,omitempty" example:"us-east-1a"` // Name of the zone
//--------- Compute Instance Info
InstanceType string `json:"instanceType,omitempty" example:"t2.micro"` // Type of the instance
Vcpu string `json:"vcpu,omitempty" example:"2"` // Number of vCPUs
Memory string `json:"memory,omitempty" example:"4096"` // Amount of memory in MB
Storage string `json:"storage,omitempty" example:"100"` // Root-disk storage size in GB
Gpu string `json:"gpu,omitempty" example:"1"` // Number of GPUs
GpuMemory string `json:"gpuMemory,omitempty" example:"8192"` // GPU memory size in MB
OperatingSystem string `json:"operatingSystem,omitempty" example:"Linux"` // Operating system type
PreInstalledSw string `json:"preInstalledSw,omitempty" example:"None"` // Pre-installed software
//--------- Storage Info // Data-Disk(AWS:EBS)
VolumeType string `json:"volumeType,omitempty" example:"gp2"` // Type of volume
StorageMedia string `json:"storageMedia,omitempty" example:"SSD"` // Storage media type
MaxVolumeSize string `json:"maxVolumeSize,omitempty" example:"16384"` // Maximum volume size in GB
MaxIOPSVolume string `json:"maxIopsvolume,omitempty" example:"3000"` // Maximum IOPS for the volume
MaxThroughputVolume string `json:"maxThroughputvolume,omitempty" example:"250"` // Maximum throughput for the volume in MB/s
Description string `json:"description,omitempty" example:"General purpose instance"` // Description of the product
CSPProductInfo interface{} `json:"cspProductInfo" validate:"required" description:"Additional product info"` // Additional product information specific to CSP
}
ProductInfo represents the product details.
type RegionInfo ¶
type RegionZoneHandler ¶ added in v0.7.6
type RegionZoneHandler interface {
ListRegionZone() ([]*RegionZoneInfo, error)
GetRegionZone(Name string) (RegionZoneInfo, error)
ListOrgRegion() (string, error) // return string: json format
ListOrgZone() (string, error) // return string: json format
}
type RegionZoneInfo ¶ added in v0.7.6
type RegionZoneInfo struct {
Name string `json:"Name" validate:"required" example:"us-east"`
DisplayName string `json:"DisplayName" validate:"required" example:"US East"`
ZoneList []ZoneInfo `json:"ZoneList,omitempty" validate:"omitempty"`
KeyValueList []KeyValue `json:"KeyValueList,omitempty" validate:"omitempty"`
}
RegionZoneInfo represents the information of a Region Zone. @example {"Name": "us-east", "DisplayName": "US East", "ZoneList": [{"Name": "us-east-1a", "DisplayName": "US East 1A", "Status": "Available"}], "KeyValueList": [{"Key": "regionKey1", "Value": "regionValue1"}]}
type SecurityHandler ¶
type SecurityHandler interface {
ListIID() ([]*IID, error)
CreateSecurity(securityReqInfo SecurityReqInfo) (SecurityInfo, error)
ListSecurity() ([]*SecurityInfo, error)
GetSecurity(securityIID IID) (SecurityInfo, error)
DeleteSecurity(securityIID IID) (bool, error)
AddRules(sgIID IID, securityRules *[]SecurityRuleInfo) (SecurityInfo, error)
RemoveRules(sgIID IID, securityRules *[]SecurityRuleInfo) (bool, error)
}
type SecurityInfo ¶
type SecurityInfo struct {
IId IID `json:"IId" validate:"required"` // {NameId, SystemId}
VpcIID IID `json:"VpcIID" validate:"required"` // {NameId, SystemId}
SecurityRules *[]SecurityRuleInfo `json:"SecurityRules" validate:"required" description:"A list of security rules applied to this security group"`
TagList []KeyValue `json:"TagList,omitempty" validate:"omitempty" description:"A list of tags associated with this security group"`
KeyValueList []KeyValue `` /* 127-byte string literal not displayed */
}
type SecurityReqInfo ¶
type SecurityReqInfo struct {
IId IID // {NameId, SystemId}
VpcIID IID // {NameId, SystemId}
//Direction string // To be deprecated
SecurityRules *[]SecurityRuleInfo
TagList []KeyValue
}
type SecurityRuleInfo ¶
type SecurityRuleInfo struct {
Direction string `json:"Direction" validate:"required" example:"inbound"` // inbound or outbound
IPProtocol string `json:"IPProtocol" validate:"required" example:"TCP"` // TCP, UDP, ICMP, ALL
FromPort string `json:"FromPort" validate:"required" example:"22"` // TCP, UDP: 1~65535, ICMP, ALL: -1
ToPort string `json:"ToPort" validate:"required" example:"22"` // TCP, UDP: 1~65535, ICMP, ALL: -1
CIDR string `json:"CIDR,omitempty" validate:"omitempty" example:"0.0.0.0/0"` // if not specified, defaults to 0.0.0.0/0
}
type SubnetInfo ¶ added in v0.1.3
type SubnetInfo struct {
IId IID `json:"IId" validate:"required"` // {NameId, SystemId}
Zone string `json:"Zone" validate:"required" example:"us-east-1a"`
IPv4_CIDR string `json:"IPv4_CIDR" validate:"required" example:"10.0.8.0/22" description:"The IPv4 CIDR block for the subnet"`
TagList []KeyValue `json:"TagList,omitempty" validate:"omitempty" description:"A list of tags associated with this subnet"`
KeyValueList []KeyValue `json:"KeyValueList,omitempty" validate:"omitempty" description:"Additional key-value pairs associated with this subnet"`
}
type TagHandler ¶ added in v0.8.20
type TagHandler interface {
AddTag(resType RSType, resIID IID, tag KeyValue) (KeyValue, error)
ListTag(resType RSType, resIID IID) ([]KeyValue, error)
GetTag(resType RSType, resIID IID, key string) (KeyValue, error)
RemoveTag(resType RSType, resIID IID, key string) (bool, error)
// Find tags by tag key or value
// resType: ALL | VPC, SUBNET, etc.,.
// keyword: The keyword to search for in the tag key or value.
// if you want to find all tags, set keyword to "" or "*".
FindTag(resType RSType, keyword string) ([]*TagInfo, error)
}
type TagInfo ¶ added in v0.8.20
type TagInfo struct {
ResType RSType `json:"ResType" validate:"required" example:"VPC"`
ResIId IID `json:"ResIId" validate:"required"`
TagList []KeyValue `json:"TagList,omitempty" validate:"omitempty"`
KeyValueList []KeyValue `json:"KeyValueList,omitempty" validate:"omitempty"`
}
TagInfo represents the tagging information for a cloud resource. @description Tag Information for a Cloud Resource.
type VCpuInfo ¶
type VCpuInfo struct {
Count string `json:"Count" validate:"required" example:"2"` // Number of CPU cores
Clock string `json:"Clock,omitempty" validate:"omitempty" example:"2.5"` // Clock speed in GHz
}
VCpuInfo represents the CPU details of a VM specification.
type VMGroupInfo ¶ added in v0.5.6
type VMGroupInfo struct {
Protocol string `json:"Protocol" validate:"required" example:"TCP"` // TCP|UDP
Port string `json:"Port" validate:"required" example:"8080"` // 1-65535
VMs *[]IID `json:"VMs" validate:"required"`
CspID string `json:"CspID,omitempty" validate:"omitempty"`
KeyValueList []KeyValue `json:"KeyValueList,omitempty" validate:"omitempty"`
}
VMGroupInfo represents the backend VM group configuration for an NLB. @description VM Group Information for a Network Load Balancer (NLB)
type VMHandler ¶
type VMHandler interface {
ListIID() ([]*IID, error)
StartVM(vmReqInfo VMReqInfo) (VMInfo, error)
SuspendVM(vmIID IID) (VMStatus, error)
ResumeVM(vmIID IID) (VMStatus, error)
RebootVM(vmIID IID) (VMStatus, error)
TerminateVM(vmIID IID) (VMStatus, error)
ListVMStatus() ([]*VMStatusInfo, error)
GetVMStatus(vmIID IID) (VMStatus, error)
ListVM() ([]*VMInfo, error)
GetVM(vmIID IID) (VMInfo, error)
}
type VMInfo ¶
type VMInfo struct {
IId IID `json:"IId" validate:"required"` // example:"{NameId: 'vm-01', SystemId: 'i-12345678'}"
StartTime time.Time `json:"StartTime" validate:"required" example:"2024-08-27T10:00:00Z"` // Timezone: based on cloud-barista server location.
Region RegionInfo `json:"Region" validate:"required"` // example:"{Region: 'us-east-1', Zone: 'us-east-1a'}"
ImageType ImageType `json:"ImageType" validate:"required" example:"PublicImage"` // PublicImage | MyImage
ImageIId IID `json:"ImageIId" validate:"required"` // example:"{NameId: 'ami-12345678', SystemId: 'ami-12345678'}"
VMSpecName string `json:"VMSpecName" validate:"required" example:"t2.micro"` // instance type or flavour, etc... ex) t2.micro or f1.micro
VpcIID IID `json:"VpcIID" validate:"required"` // example:"{NameId: 'vpc-01', SystemId: 'vpc-12345678'}"
SubnetIID IID `json:"SubnetIID" validate:"required"` // example:"{NameId: 'subnet-01', SystemId: 'subnet-12345678'}"
SecurityGroupIIds []IID `json:"SecurityGroupIIds" validate:"required"` // example:"[{NameId: 'sg-01', SystemId: 'sg-12345678'}]"
KeyPairIId IID `json:"KeyPairIId" validate:"required"` // example:"{NameId: 'keypair-01', SystemId: 'keypair-12345678'}"
RootDiskType string `json:"RootDiskType" validate:"required" example:"gp2"` // "gp2", "Premium SSD", ...
RootDiskSize string `json:"RootDiskSize" validate:"required" example:"50"` // "default", "50", "1000" (unit is GB)
RootDeviceName string `json:"RootDeviceName" validate:"required" example:"/dev/sda1"` // "/dev/sda1", ...
DataDiskIIDs []IID `json:"DataDiskIIDs,omitempty" validate:"omitempty"` // example:"[{NameId: 'datadisk-01', SystemId: 'datadisk-12345678'}]"
VMBootDisk string `json:"VMBootDisk,omitempty" validate:"omitempty" example:"/dev/sda1"` // Deprecated soon
VMBlockDisk string `json:"VMBlockDisk,omitempty" validate:"omitempty" example:"/dev/sda2"` // Deprecated soon
VMUserId string `json:"VMUserId" validate:"required" example:"cb-user"` // cb-user or Administrator
VMUserPasswd string `json:"VMUserPasswd,omitempty" validate:"omitempty" example:"password1234"` // Only for Windows
NetworkInterface string `json:"NetworkInterface" validate:"required" example:"eni-12345678"`
PublicIP string `json:"PublicIP" validate:"required" example:"1.2.3.4"`
PublicDNS string `json:"PublicDNS,omitempty" validate:"omitempty" example:"ec2-1-2-3-4.compute-1.amazonaws.com"`
PrivateIP string `json:"PrivateIP" validate:"required" example:"192.168.1.1"`
PrivateDNS string `json:"PrivateDNS,omitempty" validate:"omitempty" example:"ip-192-168-1-1.ec2.internal"`
Platform Platform `json:"Platform" validate:"required" example:"LINUX"` // LINUX | WINDOWS
SSHAccessPoint string `json:"SSHAccessPoint,omitempty" validate:"omitempty" example:"10.2.3.2:22"` // Deprecated
AccessPoint string `json:"AccessPoint" validate:"required" example:"1.2.3.4:22"` // 10.2.3.2:22, 123.456.789.123:432
TagList []KeyValue `json:"TagList,omitempty" validate:"omitempty"` // example:"[{Key: 'Name', Value: 'MyVM'}]"
KeyValueList []KeyValue `json:"KeyValueList,omitempty" validate:"omitempty"` // example:"[{Key: 'Architecture', Value: 'x86_64'}]"
}
type VMReqInfo ¶
type VMReqInfo struct {
IId IID // {NameId, SystemId}
ImageType ImageType // PublicImage | MyImage, default: PublicImage
ImageIID IID
VpcIID IID
SubnetIID IID
SecurityGroupIIDs []IID
VMSpecName string
KeyPairIID IID
RootDiskType string // "", "SSD(gp2)", "Premium SSD", ...
RootDiskSize string // "", "default", "50", "1000" (unit is GB)
DataDiskIIDs []IID
VMUserId string
VMUserPasswd string
WindowsType bool
TagList []KeyValue
}
type VMSpecHandler ¶
type VMSpecHandler interface {
ListVMSpec() ([]*VMSpecInfo, error)
GetVMSpec(Name string) (VMSpecInfo, error)
ListOrgVMSpec() (string, error) // return string: json format
GetOrgVMSpec(Name string) (string, error) // return string: json format
}
type VMSpecInfo ¶
type VMSpecInfo struct {
Region string `json:"Region" validate:"required" example:"us-east-1"` // Region where the VM spec is available
Name string `json:"Name" validate:"required" example:"t2.micro"` // Name of the VM spec
VCpu VCpuInfo `json:"VCpu" validate:"required"` // CPU details of the VM spec
Mem string `json:"Mem" validate:"required" example:"1024"` // Memory size in MB
Gpu []GpuInfo `json:"Gpu,omitempty" validate:"omitempty"` // GPU details if available
KeyValueList []KeyValue `json:"KeyValueList,omitempty" validate:"omitempty"` // Additional key-value pairs for the VM spec
}
VMSpecInfo represents the detailed information of a VM specification.
type VMStatus ¶
type VMStatus string
VMStatus represents the possible statuses of a VM. @description The status of a Virtual Machine (VM). @enum string @enum values [Creating, Running, Suspending, Suspended, Resuming, Rebooting, Terminating, Terminated, NotExist, Failed]
const ( Creating VMStatus = "Creating" // from launch to running Running VMStatus = "Running" Suspending VMStatus = "Suspending" // from running to suspended Suspended VMStatus = "Suspended" Resuming VMStatus = "Resuming" // from suspended to running Rebooting VMStatus = "Rebooting" // from running to running Terminating VMStatus = "Terminating" // from running, suspended to terminated Terminated VMStatus = "Terminated" NotExist VMStatus = "NotExist" // VM does not exist Failed VMStatus = "Failed" )
type VMStatusInfo ¶
type VPCHandler ¶ added in v0.1.3
type VPCHandler interface {
ListIID() ([]*IID, error)
CreateVPC(vpcReqInfo VPCReqInfo) (VPCInfo, error)
ListVPC() ([]*VPCInfo, error)
GetVPC(vpcIID IID) (VPCInfo, error)
DeleteVPC(vpcIID IID) (bool, error)
AddSubnet(vpcIID IID, subnetInfo SubnetInfo) (VPCInfo, error)
RemoveSubnet(vpcIID IID, subnetIID IID) (bool, error)
}
type VPCInfo ¶ added in v0.1.3
type VPCInfo struct {
IId IID `json:"IId" validate:"required"` // {NameId, SystemId}
IPv4_CIDR string `json:"IPv4_CIDR" validate:"required" example:"10.0.0.0/16" description:"The IPv4 CIDR block for the VPC"`
SubnetInfoList []SubnetInfo `json:"SubnetInfoList" validate:"required" description:"A list of subnet information associated with this VPC"`
TagList []KeyValue `json:"TagList,omitempty" validate:"omitempty" description:"A list of tags associated with this VPC"`
KeyValueList []KeyValue `json:"KeyValueList,omitempty" validate:"omitempty" description:"Additional key-value pairs associated with this VPC"`
}
type VPCReqInfo ¶ added in v0.1.3
type VPCReqInfo struct {
IId IID // {NameId, SystemId}
IPv4_CIDR string
SubnetInfoList []SubnetInfo
TagList []KeyValue
}
type ZoneInfo ¶ added in v0.7.6
type ZoneInfo struct {
Name string `json:"Name" validate:"required" example:"us-east-1a"`
DisplayName string `json:"DisplayName" validate:"required" example:"US East 1A"`
Status ZoneStatus `json:"Status" validate:"required" example:"Available"`
KeyValueList []KeyValue `json:"KeyValueList,omitempty" validate:"omitempty"`
}
ZoneInfo represents the information of a Zone. @example {"Name": "us-east-1a", "DisplayName": "US East 1A", "Status": "Available", "KeyValueList": [{"Key": "zoneKey1", "Value": "zoneValue1"}]}
type ZoneStatus ¶ added in v0.7.6
type ZoneStatus string
-------- Const
const ( ZoneAvailable ZoneStatus = "Available" NotSupported ZoneStatus = "StatusNotSupported" )