resources

package
v0.0.0-...-8fc61e2 Latest Latest
Warning

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

Go to latest
Published: Oct 6, 2021 License: Apache-2.0 Imports: 23 Imported by: 0

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       = "/cloud-driver-libs/.ssh-aliyun/"
	CBCloudInitFilePath = "/cloud-driver-libs/.cloud-init-aliyun/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)

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

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

func (securityHandler *AlibabaSecurityHandler) ExtractSecurityInfo(securityGroupResult *ecs.SecurityGroup) (irs.SecurityInfo, error)

func (*AlibabaSecurityHandler) ExtractSecurityRuleInfo

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

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

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

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

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

func (*AlibabaVMHandler) WaitForRun

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

VM 정보를 조회할 수 있을 때까지 최대 30초간 대기

type AlibabaVPCHandler

type AlibabaVPCHandler struct {
	Region idrv.RegionInfo
	Client *vpc.Client
}

func (*AlibabaVPCHandler) AddSubnet

func (VPCHandler *AlibabaVPCHandler) AddSubnet(vpcIID irs.IID, subnetInfo irs.SubnetInfo) (irs.VPCInfo, error)

func (*AlibabaVPCHandler) CreateSubnet

func (VPCHandler *AlibabaVPCHandler) CreateSubnet(vpcId string, reqSubnetInfo irs.SubnetInfo) (irs.SubnetInfo, error)

func (*AlibabaVPCHandler) CreateVPC

func (VPCHandler *AlibabaVPCHandler) CreateVPC(vpcReqInfo irs.VPCReqInfo) (irs.VPCInfo, error)

func (*AlibabaVPCHandler) DeleteSubnet

func (VPCHandler *AlibabaVPCHandler) DeleteSubnet(subnetIID irs.IID) (bool, error)

func (*AlibabaVPCHandler) DeleteVPC

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

func (VPCHandler *AlibabaVPCHandler) GetSubnet(reqSubnetId string) (irs.SubnetInfo, error)

func (*AlibabaVPCHandler) GetVPC

func (VPCHandler *AlibabaVPCHandler) GetVPC(vpcIID irs.IID) (irs.VPCInfo, error)

func (*AlibabaVPCHandler) ListVPC

func (VPCHandler *AlibabaVPCHandler) ListVPC() ([]*irs.VPCInfo, error)

func (*AlibabaVPCHandler) RemoveSubnet

func (VPCHandler *AlibabaVPCHandler) RemoveSubnet(vpcIID irs.IID, subnetIID irs.IID) (bool, error)

func (*AlibabaVPCHandler) WaitForRun

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)

Jump to

Keyboard shortcuts

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