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 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 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) }
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 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 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 { 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 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 { 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 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" )