resources

package
v0.5.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 9, 2022 License: Apache-2.0 Imports: 19 Imported by: 1

Documentation

Overview

VPC & Subnet 처리 (AlibabaCloud's Subnet --> VSwitch 임)

Index

Constants

View Source
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"
	CBCloudInitFilePath = "/cloud-driver-libs/.cloud-init-common/cloud-init"
)

Variables

This section is empty.

Functions

func ConvertJsonString

func ConvertJsonString(v interface{}) (string, error)

Cloud Object를 JSON String 타입으로 변환

func ConvertKeyValueList

func ConvertKeyValueList(v interface{}) ([]irs.KeyValue, error)

Cloud Object를 CB-KeyValue 형식으로 변환이 필요할 경우 이용

func ConvertToString

func ConvertToString(value interface{}) (string, error)

CB-KeyValue 등을 위해 String 타입으로 변환

func ExtractImageDescribeInfo

func ExtractImageDescribeInfo(image *ecs.Image) irs.ImageInfo

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)

2021-10-27 이슈#480에 의해 Local Key 로직 제거 KeyPair 정보를 추출함

func ExtractSubnetDescribeInfo

func ExtractSubnetDescribeInfo(subnetInfo vpc.VSwitch) irs.SubnetInfo

Subnet(VSwitch) 정보를 추출함

func ExtractVMSpecInfo

func ExtractVMSpecInfo(Region string, instanceTypeInfo ecs.InstanceType) irs.VMSpecInfo

인스턴스 스펙 정보를 추출함

func ExtractVpcDescribeInfo

func ExtractVpcDescribeInfo(vpcInfo *vpc.Vpc) irs.VPCInfo

VPC 정보를 추출함

func GetCBResourceGroupName

func GetCBResourceGroupName() string

func GetCBSubnetName

func GetCBSubnetName() string

Subnet

func GetCBVirutalNetworkName

func GetCBVirutalNetworkName() string

VPC

func GetCBVnetDefaultCidr

func GetCBVnetDefaultCidr() string

func SetNameTag

func SetNameTag(Client *ecs.Client, resourceId string, resourceType string, value string) bool

Types

type AlibabaCBNetworkInfo

type AlibabaCBNetworkInfo struct {
	VpcName   string
	VpcId     string
	CidrBlock string
	IsDefault bool
	State     string

	SubnetName string
	SubnetId   string
}

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)

func (*AlibabaImageHandler) GetImage

func (imageHandler *AlibabaImageHandler) GetImage(imageIID irs.IID) (irs.ImageInfo, error)

func (*AlibabaImageHandler) ListImage

func (imageHandler *AlibabaImageHandler) ListImage() ([]*irs.ImageInfo, 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)

2021-10-27 이슈#480에 의해 Local Key 로직 제거

func (*AlibabaKeyPairHandler) DeleteKey

func (keyPairHandler *AlibabaKeyPairHandler) DeleteKey(keyIID irs.IID) (bool, error)

2021-10-27 이슈#480에 의해 Local Key 로직 제거

func (*AlibabaKeyPairHandler) GetKey

func (keyPairHandler *AlibabaKeyPairHandler) GetKey(keyIID irs.IID) (irs.KeyPairInfo, error)

2021-10-27 이슈#480에 의해 Local Key 로직 제거 혼선을 피하기 위해 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) GetVM

func (vmHandler *AlibabaVMHandler) GetVM(vmIID irs.IID) (irs.VMInfo, error)

func (*AlibabaVMHandler) GetVMStatus

func (vmHandler *AlibabaVMHandler) GetVMStatus(vmIID irs.IID) (irs.VMStatus, error)

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) RebootVM

func (vmHandler *AlibabaVMHandler) RebootVM(vmIID irs.IID) (irs.VMStatus, error)

func (*AlibabaVMHandler) ResumeVM

func (vmHandler *AlibabaVMHandler) ResumeVM(vmIID irs.IID) (irs.VMStatus, error)

func (*AlibabaVMHandler) StartVM

func (vmHandler *AlibabaVMHandler) StartVM(vmReqInfo irs.VMReqInfo) (irs.VMInfo, error)

참고 : VM 생성 시 인증 방식은 KeyPair 또는 ID&PWD 방식이 가능하지만 계정은 모두 root - 비번 조회 기능은 없음

비밀번호는 8-30자로서 대문자, 소문자, 숫자 및/또는 특수 문자가 포함되어야 합니다.

@TODO : root 계정의 비번만 설정 가능한 데 다른 계정이 요청되었을 경우 예외 처리할 것인지.. 아니면 비번을 설정할 것인지 확인 필요. @TODO : PublicIp 요금제 방식과 대역폭 설정 방법 논의 필요

func (*AlibabaVMHandler) SuspendVM

func (vmHandler *AlibabaVMHandler) SuspendVM(vmIID irs.IID) (irs.VMStatus, error)

@TODO - 이슈 : 인스턴스 일시정지 시에 과금 정책을 결정해야 함 - StopCharging / KeepCharging

func (*AlibabaVMHandler) TerminateVM

func (vmHandler *AlibabaVMHandler) TerminateVM(vmIID irs.IID) (irs.VMStatus, error)

func (*AlibabaVMHandler) WaitForExist added in v0.3.14

func (vmHandler *AlibabaVMHandler) WaitForExist(vmIID irs.IID) (irs.VMStatus, error)

VM 상태가 정보를 조회할 수 있는 상태가 될때까지 기다림(최대 30초간 대기)

func (*AlibabaVMHandler) WaitForRun added in v0.1.4

func (vmHandler *AlibabaVMHandler) WaitForRun(vmIID irs.IID) (irs.VMStatus, error)

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) GetVPC added in v0.1.4

func (VPCHandler *AlibabaVPCHandler) GetVPC(vpcIID irs.IID) (irs.VPCInfo, 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 (VPCHandler *AlibabaVPCHandler) RemoveSubnet(vpcIID irs.IID, subnetIID irs.IID) (bool, error)

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
}

func (*AlibabaVmSpecHandler) GetOrgVMSpec

func (vmSpecHandler *AlibabaVmSpecHandler) GetOrgVMSpec(Name string) (string, error)

func (*AlibabaVmSpecHandler) GetVMSpec

func (vmSpecHandler *AlibabaVmSpecHandler) GetVMSpec(Name string) (irs.VMSpecInfo, error)

func (*AlibabaVmSpecHandler) ListOrgVMSpec

func (vmSpecHandler *AlibabaVmSpecHandler) ListOrgVMSpec() (string, error)

Alibaba Cloud의 정보 그대로를 가공 없이 JSON으로 리턴 함.

func (*AlibabaVmSpecHandler) ListVMSpec

func (vmSpecHandler *AlibabaVmSpecHandler) ListVMSpec() ([]*irs.VMSpecInfo, error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL