Documentation
¶
Overview ¶
VPC & Subnet 처리 (AlibabaCloud's Subnet --> VSwitch 임)
Index ¶
- Constants
- func ConvertJsonString(v interface{}) (string, error)
- func ConvertKeyValueList(v interface{}) ([]irs.KeyValue, error)
- func ConvertToString(value interface{}) (string, error)
- func ExtractImageDescribeInfo(image *ecs.Image) irs.ImageInfo
- func ExtractKeyPairDescribeInfo(keyPair *ecs.KeyPair) (irs.KeyPairInfo, error)
- func ExtractSubnetDescribeInfo(subnetInfo vpc.VSwitch) irs.SubnetInfo
- func ExtractVMSpecInfo(Region string, instanceTypeInfo ecs.InstanceType) irs.VMSpecInfo
- func ExtractVpcDescribeInfo(vpcInfo *vpc.Vpc) irs.VPCInfo
- func GetCBResourceGroupName() string
- func GetCBSubnetName() string
- func GetCBVirutalNetworkName() string
- func GetCBVnetDefaultCidr() string
- func SetNameTag(Client *ecs.Client, resourceId string, resourceType string, value string) bool
- type AlibabaCBNetworkInfo
- type AlibabaImageHandler
- func (imageHandler *AlibabaImageHandler) CreateImage(imageReqInfo irs.ImageReqInfo) (irs.ImageInfo, error)
- func (imageHandler *AlibabaImageHandler) DeleteImage(imageIID irs.IID) (bool, error)
- func (imageHandler *AlibabaImageHandler) GetImage(imageIID irs.IID) (irs.ImageInfo, error)
- func (imageHandler *AlibabaImageHandler) ListImage() ([]*irs.ImageInfo, error)
- type AlibabaKeyPairHandler
- func (keyPairHandler *AlibabaKeyPairHandler) CheckKeyPairFolder(keyPairPath string) error
- func (keyPairHandler *AlibabaKeyPairHandler) CreateKey(keyPairReqInfo irs.KeyPairReqInfo) (irs.KeyPairInfo, error)
- func (keyPairHandler *AlibabaKeyPairHandler) DeleteKey(keyIID irs.IID) (bool, error)
- func (keyPairHandler *AlibabaKeyPairHandler) GetKey(keyIID irs.IID) (irs.KeyPairInfo, error)
- func (keyPairHandler *AlibabaKeyPairHandler) ListKey() ([]*irs.KeyPairInfo, error)
- type AlibabaSecurityHandler
- func (securityHandler *AlibabaSecurityHandler) AuthorizeSecurityRules(securityGroupId string, vpcId string, ...) (*[]irs.SecurityRuleInfo, error)
- func (securityHandler *AlibabaSecurityHandler) CreateSecurity(securityReqInfo irs.SecurityReqInfo) (irs.SecurityInfo, error)
- func (securityHandler *AlibabaSecurityHandler) DeleteSecurity(securityIID irs.IID) (bool, error)
- func (securityHandler *AlibabaSecurityHandler) ExtractSecurityInfo(securityGroupResult *ecs.SecurityGroup) (irs.SecurityInfo, error)
- func (securityHandler *AlibabaSecurityHandler) ExtractSecurityRuleInfo(securityGroupId string) ([]irs.SecurityRuleInfo, error)
- func (securityHandler *AlibabaSecurityHandler) GetSecurity(securityIID irs.IID) (irs.SecurityInfo, error)
- func (securityHandler *AlibabaSecurityHandler) ListSecurity() ([]*irs.SecurityInfo, error)
- type AlibabaVMHandler
- func (vmHandler *AlibabaVMHandler) ConvertVMStatusString(vmStatus string) (irs.VMStatus, error)
- func (vmHandler *AlibabaVMHandler) ExtractDescribeInstances(instancInfo *ecs.Instance) irs.VMInfo
- func (vmHandler *AlibabaVMHandler) GetVM(vmIID irs.IID) (irs.VMInfo, error)
- func (vmHandler *AlibabaVMHandler) GetVMStatus(vmIID irs.IID) (irs.VMStatus, error)
- func (vmHandler *AlibabaVMHandler) ListVM() ([]*irs.VMInfo, error)
- func (vmHandler *AlibabaVMHandler) ListVMStatus() ([]*irs.VMStatusInfo, error)
- func (vmHandler *AlibabaVMHandler) RebootVM(vmIID irs.IID) (irs.VMStatus, error)
- func (vmHandler *AlibabaVMHandler) ResumeVM(vmIID irs.IID) (irs.VMStatus, error)
- func (vmHandler *AlibabaVMHandler) StartVM(vmReqInfo irs.VMReqInfo) (irs.VMInfo, error)
- func (vmHandler *AlibabaVMHandler) SuspendVM(vmIID irs.IID) (irs.VMStatus, error)
- func (vmHandler *AlibabaVMHandler) TerminateVM(vmIID irs.IID) (irs.VMStatus, error)
- func (vmHandler *AlibabaVMHandler) WaitForExist(vmIID irs.IID) (irs.VMStatus, error)
- func (vmHandler *AlibabaVMHandler) WaitForRun(vmIID irs.IID) (irs.VMStatus, error)
- type AlibabaVPCHandler
- func (VPCHandler *AlibabaVPCHandler) AddSubnet(vpcIID irs.IID, subnetInfo irs.SubnetInfo) (irs.VPCInfo, error)
- func (VPCHandler *AlibabaVPCHandler) CreateSubnet(vpcId string, reqSubnetInfo irs.SubnetInfo) (irs.SubnetInfo, error)
- func (VPCHandler *AlibabaVPCHandler) CreateVPC(vpcReqInfo irs.VPCReqInfo) (irs.VPCInfo, error)
- func (VPCHandler *AlibabaVPCHandler) DeleteSubnet(subnetIID irs.IID) (bool, error)
- func (VPCHandler *AlibabaVPCHandler) DeleteVPC(vpcIID irs.IID) (bool, error)
- func (VPCHandler *AlibabaVPCHandler) GetSubnet(reqSubnetId string) (irs.SubnetInfo, error)
- func (VPCHandler *AlibabaVPCHandler) GetVPC(vpcIID irs.IID) (irs.VPCInfo, error)
- func (VPCHandler *AlibabaVPCHandler) ListVPC() ([]*irs.VPCInfo, error)
- func (VPCHandler *AlibabaVPCHandler) RemoveSubnet(vpcIID irs.IID, subnetIID irs.IID) (bool, error)
- func (VPCHandler *AlibabaVPCHandler) WaitForRun(vpcId string) error
- type AlibabaVmSpecHandler
- func (vmSpecHandler *AlibabaVmSpecHandler) GetOrgVMSpec(Region string, Name string) (string, error)
- func (vmSpecHandler *AlibabaVmSpecHandler) GetVMSpec(Region string, Name string) (irs.VMSpecInfo, error)
- func (vmSpecHandler *AlibabaVmSpecHandler) ListOrgVMSpec(Region string) (string, error)
- func (vmSpecHandler *AlibabaVmSpecHandler) ListVMSpec(Region string) ([]*irs.VMSpecInfo, error)
Constants ¶
const ( // default Resource GROUP Name CBResourceGroupName = "CB-GROUP" // default VPC Name CBVirutalNetworkName = "CB-VNet" // default CIDR Block CBVnetDefaultCidr = "130.0.0.0/16" // default VM User Name CBDefaultVmUserName = "cb-user" // default Subnet Name CBSubnetName = "CB-VNet-Sub" // default Bandwidth is 5 Mbit/s CBBandwidth = "5" // default InstanceChargeType CBInstanceChargeType = "PostPaid" // default InternetChargeType CBInternetChargeType = "PayByTraffic" // default Tag Name CBMetaDefaultTagName = "cbCate" // default Tag Value CBMetaDefaultTagValue = "cbAlibaba" CBPageOn = true // page number for control pages CBPageNumber = 1 // page size for control pages CBPageSize = 100 CBKeyPairPath = "/meta_db/.ssh-aliyun/" CBCloudInitFilePath = "/cloud-driver-libs/.cloud-init-aliyun/cloud-init" )
Variables ¶
This section is empty.
Functions ¶
func ConvertJsonString ¶
Cloud Object를 JSON String 타입으로 변환
func ConvertKeyValueList ¶
Cloud Object를 CB-KeyValue 형식으로 변환이 필요할 경우 이용
func ConvertToString ¶
CB-KeyValue 등을 위해 String 타입으로 변환
func ExtractImageDescribeInfo ¶
https://pkg.go.dev/github.com/aliyun/alibaba-cloud-sdk-go/services/ecs?tab=doc#Image package ecs v1.61.170 Latest Published: Apr 30, 2020 Image 정보를 추출함
func ExtractKeyPairDescribeInfo ¶
func ExtractKeyPairDescribeInfo(keyPair *ecs.KeyPair) (irs.KeyPairInfo, error)
KeyPair 정보를 추출함
func ExtractSubnetDescribeInfo ¶
func ExtractSubnetDescribeInfo(subnetInfo vpc.VSwitch) irs.SubnetInfo
Subnet(VSwitch) 정보를 추출함
func ExtractVMSpecInfo ¶
func ExtractVMSpecInfo(Region string, instanceTypeInfo ecs.InstanceType) irs.VMSpecInfo
인스턴스 스펙 정보를 추출함
func GetCBResourceGroupName ¶
func GetCBResourceGroupName() string
func GetCBVnetDefaultCidr ¶
func GetCBVnetDefaultCidr() string
Types ¶
type AlibabaCBNetworkInfo ¶
type AlibabaImageHandler ¶
type AlibabaImageHandler struct { Region idrv.RegionInfo Client *ecs.Client }
func (*AlibabaImageHandler) CreateImage ¶
func (imageHandler *AlibabaImageHandler) CreateImage(imageReqInfo irs.ImageReqInfo) (irs.ImageInfo, error)
func (*AlibabaImageHandler) DeleteImage ¶
func (imageHandler *AlibabaImageHandler) DeleteImage(imageIID irs.IID) (bool, error)
type AlibabaKeyPairHandler ¶
type AlibabaKeyPairHandler struct { Region idrv.RegionInfo Client *ecs.Client }
func (*AlibabaKeyPairHandler) CheckKeyPairFolder ¶ added in v0.3.8
func (keyPairHandler *AlibabaKeyPairHandler) CheckKeyPairFolder(keyPairPath string) error
================================= 공개 키 변환 및 키 정보 로컬 보관 로직 추가 =================================
func (*AlibabaKeyPairHandler) CreateKey ¶
func (keyPairHandler *AlibabaKeyPairHandler) CreateKey(keyPairReqInfo irs.KeyPairReqInfo) (irs.KeyPairInfo, error)
func (*AlibabaKeyPairHandler) DeleteKey ¶
func (keyPairHandler *AlibabaKeyPairHandler) DeleteKey(keyIID irs.IID) (bool, error)
func (*AlibabaKeyPairHandler) GetKey ¶
func (keyPairHandler *AlibabaKeyPairHandler) GetKey(keyIID irs.IID) (irs.KeyPairInfo, error)
혼선을 피하기 위해 keyPairID 대신 keyPairName으로 변경 함.
func (*AlibabaKeyPairHandler) ListKey ¶
func (keyPairHandler *AlibabaKeyPairHandler) ListKey() ([]*irs.KeyPairInfo, error)
type AlibabaSecurityHandler ¶
type AlibabaSecurityHandler struct { Region idrv.RegionInfo Client *ecs.Client }
func (*AlibabaSecurityHandler) AuthorizeSecurityRules ¶
func (securityHandler *AlibabaSecurityHandler) AuthorizeSecurityRules(securityGroupId string, vpcId string, securityRuleInfos *[]irs.SecurityRuleInfo) (*[]irs.SecurityRuleInfo, error)
func (*AlibabaSecurityHandler) CreateSecurity ¶
func (securityHandler *AlibabaSecurityHandler) CreateSecurity(securityReqInfo irs.SecurityReqInfo) (irs.SecurityInfo, error)
func (*AlibabaSecurityHandler) DeleteSecurity ¶
func (securityHandler *AlibabaSecurityHandler) DeleteSecurity(securityIID irs.IID) (bool, error)
func (*AlibabaSecurityHandler) ExtractSecurityInfo ¶ added in v0.1.4
func (securityHandler *AlibabaSecurityHandler) ExtractSecurityInfo(securityGroupResult *ecs.SecurityGroup) (irs.SecurityInfo, error)
func (*AlibabaSecurityHandler) ExtractSecurityRuleInfo ¶ added in v0.1.4
func (securityHandler *AlibabaSecurityHandler) ExtractSecurityRuleInfo(securityGroupId string) ([]irs.SecurityRuleInfo, error)
보안 그룹의 InBound / OutBound 정보를 조회함.
func (*AlibabaSecurityHandler) GetSecurity ¶
func (securityHandler *AlibabaSecurityHandler) GetSecurity(securityIID irs.IID) (irs.SecurityInfo, error)
func (*AlibabaSecurityHandler) ListSecurity ¶
func (securityHandler *AlibabaSecurityHandler) ListSecurity() ([]*irs.SecurityInfo, error)
type AlibabaVMHandler ¶
type AlibabaVMHandler struct { Region idrv.RegionInfo Client *ecs.Client }
func (*AlibabaVMHandler) ConvertVMStatusString ¶ added in v0.1.4
func (vmHandler *AlibabaVMHandler) ConvertVMStatusString(vmStatus string) (irs.VMStatus, error)
알리 클라우드 라이프 사이클 : https://www.alibabacloud.com/help/doc-detail/25380.htm
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“
)
<최종 상태> Running(동작 상태): MCIS가 동작 상태 Suspended(중지 상태): MCIS가 중지된 상태 Failed(실패 상태): MCIS가 오류로 인해 중단된 상태 Terminated(종료 상태): MCIS가 종료된 상태
<전이 상태> Creating(생성 진행 상태): MCIS가 생성되는 중간 상태 Suspending(중지 진행 상태): MCIS를 일시 중지하기 위한 중간 상태 Resuming(재개 진행 상태): MCIS를 다시 실행하기 위한 중간 상태 Rebooting(재시작 진행 상태): MCIS를 재부팅하는 상태 Terminating(종료 진행 상태): MCIS의 종료를 실행하고 있는 중간 상태
func (*AlibabaVMHandler) ExtractDescribeInstances ¶ added in v0.1.4
func (vmHandler *AlibabaVMHandler) ExtractDescribeInstances(instancInfo *ecs.Instance) irs.VMInfo
@TODO : 2020-03-26 Ali클라우드 API 구조가 바뀐 것 같아서 임시로 변경해 놓음. func (vmHandler *AlibabaVMHandler) ExtractDescribeInstances() irs.VMInfo {
func (*AlibabaVMHandler) GetVMStatus ¶
SHUTTING-DOWN / TERMINATED
func (*AlibabaVMHandler) ListVM ¶
func (vmHandler *AlibabaVMHandler) ListVM() ([]*irs.VMInfo, error)
func (*AlibabaVMHandler) ListVMStatus ¶
func (vmHandler *AlibabaVMHandler) ListVMStatus() ([]*irs.VMStatusInfo, error)
func (*AlibabaVMHandler) StartVM ¶
참고 : VM 생성 시 인증 방식은 KeyPair 또는 ID&PWD 방식이 가능하지만 계정은 모두 root - 비번 조회 기능은 없음
비밀번호는 8-30자로서 대문자, 소문자, 숫자 및/또는 특수 문자가 포함되어야 합니다.
@TODO : root 계정의 비번만 설정 가능한 데 다른 계정이 요청되었을 경우 예외 처리할 것인지.. 아니면 비번을 설정할 것인지 확인 필요. @TODO : PublicIp 요금제 방식과 대역폭 설정 방법 논의 필요
func (*AlibabaVMHandler) SuspendVM ¶
@TODO - 이슈 : 인스턴스 일시정지 시에 과금 정책을 결정해야 함 - StopCharging / KeepCharging
func (*AlibabaVMHandler) TerminateVM ¶
func (*AlibabaVMHandler) WaitForExist ¶ added in v0.3.14
VM 상태가 정보를 조회할 수 있는 상태가 될때까지 기다림(최대 30초간 대기)
func (*AlibabaVMHandler) WaitForRun ¶ added in v0.1.4
VM 정보를 조회할 수 있을 때까지 최대 30초간 대기
type AlibabaVPCHandler ¶ added in v0.1.4
type AlibabaVPCHandler struct { Region idrv.RegionInfo Client *vpc.Client }
func (*AlibabaVPCHandler) AddSubnet ¶ added in v0.2.1
func (VPCHandler *AlibabaVPCHandler) AddSubnet(vpcIID irs.IID, subnetInfo irs.SubnetInfo) (irs.VPCInfo, error)
func (*AlibabaVPCHandler) CreateSubnet ¶ added in v0.1.4
func (VPCHandler *AlibabaVPCHandler) CreateSubnet(vpcId string, reqSubnetInfo irs.SubnetInfo) (irs.SubnetInfo, error)
func (*AlibabaVPCHandler) CreateVPC ¶ added in v0.1.4
func (VPCHandler *AlibabaVPCHandler) CreateVPC(vpcReqInfo irs.VPCReqInfo) (irs.VPCInfo, error)
func (*AlibabaVPCHandler) DeleteSubnet ¶ added in v0.1.4
func (VPCHandler *AlibabaVPCHandler) DeleteSubnet(subnetIID irs.IID) (bool, error)
func (*AlibabaVPCHandler) DeleteVPC ¶ added in v0.1.4
func (VPCHandler *AlibabaVPCHandler) DeleteVPC(vpcIID irs.IID) (bool, error)
@TODO : 라우트 삭제 로직이 없어서 VPC가 삭제 안되는 현상이 있어서 라우트 정보를 조회해서 삭제하려다 서브넷 삭제 후 특정 시간 이후에 Route가 자동으로 삭제되기 때문에 임시로 4초 대기 후 VPC를 삭제하도록 로직을 변경함. @TODO : VPCHandler로 생성하지 않은 VPC의 경우 다른 서비스가 있을 수 있기 때문에 관련 서비스들을 조회후 삭제하는 로직이 필요할 수 있음.
- 삭제 오류 자동 할당된 Route가 남아있어서 삭제가 안되는 듯. ErrorCode: Forbbiden Recommend: RequestId: 8871BF19-330B-4F00-93ED-D886F2CE066F Message: Active custom route in vpc.)
func (*AlibabaVPCHandler) GetSubnet ¶ added in v0.1.4
func (VPCHandler *AlibabaVPCHandler) GetSubnet(reqSubnetId string) (irs.SubnetInfo, error)
func (*AlibabaVPCHandler) ListVPC ¶ added in v0.1.4
func (VPCHandler *AlibabaVPCHandler) ListVPC() ([]*irs.VPCInfo, error)
func (*AlibabaVPCHandler) RemoveSubnet ¶ added in v0.2.1
func (*AlibabaVPCHandler) WaitForRun ¶ added in v0.1.4
func (VPCHandler *AlibabaVPCHandler) WaitForRun(vpcId string) error
Pending , Available
type AlibabaVmSpecHandler ¶
type AlibabaVmSpecHandler struct { Region idrv.RegionInfo Client *ecs.Client }
https://docs.aws.amazon.com/sdk-for-go/api/service/ec2/#EC2.DescribeInstanceTypes
func (*AlibabaVmSpecHandler) GetOrgVMSpec ¶
func (vmSpecHandler *AlibabaVmSpecHandler) GetOrgVMSpec(Region string, Name string) (string, error)
AWS의 정보 그대로를 가공 없이 JSON으로 리턴 함.
func (*AlibabaVmSpecHandler) GetVMSpec ¶
func (vmSpecHandler *AlibabaVmSpecHandler) GetVMSpec(Region string, Name string) (irs.VMSpecInfo, error)
func (*AlibabaVmSpecHandler) ListOrgVMSpec ¶
func (vmSpecHandler *AlibabaVmSpecHandler) ListOrgVMSpec(Region string) (string, error)
Alibaba Cloud의 정보 그대로를 가공 없이 JSON으로 리턴 함.
func (*AlibabaVmSpecHandler) ListVMSpec ¶
func (vmSpecHandler *AlibabaVmSpecHandler) ListVMSpec(Region string) ([]*irs.VMSpecInfo, error)