Skip to content

Commit

Permalink
Merge pull request #523 from dev4unet/master
Browse files Browse the repository at this point in the history
개선 기능및 이슈 #348에 의한 AWS RootDisk 및 사이즈 변경 기능 지원및 Tencent 방식 개선
  • Loading branch information
powerkimhub authored Nov 10, 2021
2 parents bcccb60 + 80a30f5 commit 19d8b32
Show file tree
Hide file tree
Showing 4 changed files with 85 additions and 41 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -908,10 +908,11 @@ func handleVM() {
VMSpecName: "t2.micro",
KeyPairIID: irs.IID{SystemId: "japan-test"},

//RootDiskType: "pd-ssd", //standard/io1/io2/gp2/sc1/st1/gp3
//RootDiskType: "pd-balanced", //pd-standard/pd-balanced/pd-ssd/pd-extreme
RootDiskSize: "15", //최소 10GB 이상이어야 함.
//RootDiskSize: "default", //10GB
RootDiskType: "standard", //gp2/standard/io1/io2/sc1/st1/gp3
//RootDiskType: "gp2", //gp2/standard/io1/io2/sc1/st1/gp3
//RootDiskType: "gp3", //gp2/standard/io1/io2/sc1/st1/gp3
RootDiskSize: "60", //최소 8GB 이상이어야 함.
//RootDiskSize: "Default", //8GB
}

vmInfo, err := vmHandler.StartVM(vmReqInfo)
Expand All @@ -921,6 +922,7 @@ func handleVM() {
} else {
cblogger.Info("VM 생성 완료!!", vmInfo)
spew.Dump(vmInfo)
VmID = vmInfo.IId
}
//cblogger.Info(vm)

Expand Down Expand Up @@ -1132,11 +1134,11 @@ func main() {
//handleKeyPair()
//handlePublicIP() // PublicIP 생성 후 conf
//handleSecurity()
//handleVM()
handleVM()

//handleImage() //AMI
//handleVNic() //Lancard
handleVMSpec()
//handleVMSpec()
}

//handlerType : resources폴더의 xxxHandler.go에서 Handler이전까지의 문자열
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import (
"io/ioutil"
"os"
"reflect"
"strconv"
"strings"

"github.com/aws/aws-sdk-go/aws"
Expand Down Expand Up @@ -191,7 +192,52 @@ func (vmHandler *AwsVMHandler) StartVM(vmReqInfo irs.VMReqInfo) (irs.VMInfo, err
//ec2.InstanceNetworkInterfaceSpecification
UserData: userDataBase64,
}
cblogger.Info(input)

//=============================
// SystemDisk 처리 - 이슈 #348에 의해 RootDisk 기능 지원
//=============================
if vmReqInfo.RootDiskType != "" || vmReqInfo.RootDiskSize != "" {
blockDeviceMappings := []*ec2.BlockDeviceMapping{
{
DeviceName: aws.String("/dev/sda1"),
//DeviceName: aws.String("/dev/sdh"),
Ebs: &ec2.EbsBlockDevice{
//RootDeviceName
//VolumeType: aws.String(diskType),
//VolumeSize: diskSize,
},
},
}
input.SetBlockDeviceMappings(blockDeviceMappings)

//=============================
// Root Disk Type 변경
//=============================
if vmReqInfo.RootDiskType != "" {
//diskType = vmReqInfo.RootDiskType
input.BlockDeviceMappings[0].Ebs.VolumeType = aws.String(vmReqInfo.RootDiskType)
}

//=============================
// Root Disk Size 변경
//=============================
if vmReqInfo.RootDiskSize != "" {
if strings.EqualFold(vmReqInfo.RootDiskSize, "default") {
input.BlockDeviceMappings[0].Ebs.VolumeSize = aws.Int64(8)
} else {
iDiskSize, err := strconv.ParseInt(vmReqInfo.RootDiskSize, 10, 64)
if err != nil {
cblogger.Error(err)
return irs.VMInfo{}, err
}
//diskSize = aws.Int64(iDiskSize)
//input.BlockDeviceMappings[0].Ebs.VolumeSize = diskSize
input.BlockDeviceMappings[0].Ebs.VolumeSize = aws.Int64(iDiskSize)
}
}
}

cblogger.Debug(input)

// logger for HisCall
callogger := call.GetLogger("HISCALL")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -646,16 +646,16 @@ func handleVM() {
//ImageIID: irs.IID{SystemId: "img-22trbn9x"}, //Ubuntu Server 20.04 LTS 64
ImageIID: irs.IID{SystemId: "img-pi0ii46r"}, //Ubuntu Server 18.04.1 LTS 64
VpcIID: irs.IID{SystemId: "vpc-2u04wg7k"},
SubnetIID: irs.IID{SystemId: "subnet-ccawa5nz"},
SubnetIID: irs.IID{SystemId: "subnet-ccawa5nz"}, //Zone2
SecurityGroupIIDs: []irs.IID{{SystemId: "sg-3baxppe6"}},
VMSpecName: "S5.SMALL1",
VMSpecName: "C4.LARGE8",
KeyPairIID: irs.IID{SystemId: "skey-lk66iuyh"}, //cb_user_test
//VMUserId: "root", //root만 가능
//VMUserPasswd: "Cbuser!@#", //대문자 소문자 모두 사용되어야 함. 그리고 숫자나 특수 기호 중 하나가 포함되어야 함.
RootDiskType: "CLOUD_PREMIUM", //LOCAL_BASIC/LOCAL_SSD/CLOUD_BASIC/CLOUD_SSD/CLOUD_PREMIUM
//RootDiskType: "CLOUD_SSD", //LOCAL_BASIC/LOCAL_SSD/CLOUD_BASIC/CLOUD_SSD/CLOUD_PREMIUM
//RootDiskSize: "60", //Image Size 보다 작으면 에러 남
RootDiskSize: "Default", //Image Size 보다 작으면 에러 남
//RootDiskType: "CLOUD_PREMIUM", //LOCAL_BASIC/LOCAL_SSD/CLOUD_BASIC/CLOUD_SSD/CLOUD_PREMIUM
RootDiskType: "CLOUD_SSD", //LOCAL_BASIC/LOCAL_SSD/CLOUD_BASIC/CLOUD_SSD/CLOUD_PREMIUM
RootDiskSize: "60", //Image Size 보다 작으면 에러 남
//RootDiskSize: "Default", //Image Size 보다 작으면 에러 남
}

vmInfo, err := vmHandler.StartVM(vmReqInfo)
Expand Down Expand Up @@ -768,11 +768,11 @@ func handleVM() {
func main() {
cblogger.Info("Tencent Cloud Resource Test")
//handleVPC() //VPC
handleVMSpec()
//handleVMSpec()
//handleSecurity()
//handleImage() //AMI
//handleKeyPair()
//handleVM()
handleVM()

//handlePublicIP() // PublicIP 생성 후 conf
//handleVNic() //Lancard
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -160,44 +160,40 @@ func (vmHandler *TencentVMHandler) StartVM(vmReqInfo irs.VMReqInfo) (irs.VMInfo,
Zone: common.StringPtr(vmHandler.Region.Zone),
}

//=============================
// SystemDisk 처리
//=============================
/* 이슈 #348에 의해 RootDisk 기능 지원하면서 기존 로직 제거
request.SystemDisk = &cvm.SystemDisk{
DiskType: common.StringPtr("CLOUD_PREMIUM"),
DiskType: common.StringPtr("CLOUD_PREMIUM"), //일부 인스턴스의 경우 기본 스토리지가 없는 스펙이 있어서 강제로 CLOUD_PREMIUM 지정
}
*/

diskType := "CLOUD_PREMIUM" // 특정 인스턴스 생성이 안되기에 기본 값을 CLOUD_PREMIUM으로 셋팅 (이슈 #348에 의해 이젠 필요 없을 듯)
diskSize := common.Int64Ptr(50) // 기본 사이즈는 50GB

//=============================
// Root Disk Type 변경
// SystemDisk 처리 - 이슈 #348에 의해 RootDisk 기능 지원
//=============================
if vmReqInfo.RootDiskType != "" {
diskType = vmReqInfo.RootDiskType
}
if vmReqInfo.RootDiskType != "" || vmReqInfo.RootDiskSize != "" {
request.SystemDisk = &cvm.SystemDisk{}
//=============================
// Root Disk Type 변경
//=============================
if vmReqInfo.RootDiskType != "" {
request.SystemDisk.DiskType = common.StringPtr(vmReqInfo.RootDiskType)
}

//=============================
// Root Disk Size 변경
//=============================
if vmReqInfo.RootDiskSize != "" {
if !strings.EqualFold(vmReqInfo.RootDiskSize, "default") {
iDiskSize, err := strconv.ParseInt(vmReqInfo.RootDiskSize, 10, 64)
if err != nil {
cblogger.Error(err)
return irs.VMInfo{}, err
//=============================
// Root Disk Size 변경
//=============================
if vmReqInfo.RootDiskSize != "" {
if !strings.EqualFold(vmReqInfo.RootDiskSize, "default") {
iDiskSize, err := strconv.ParseInt(vmReqInfo.RootDiskSize, 10, 64)
if err != nil {
cblogger.Error(err)
return irs.VMInfo{}, err
}

request.SystemDisk.DiskSize = common.Int64Ptr(iDiskSize)
}
diskSize = common.Int64Ptr(iDiskSize)
}
}

request.SystemDisk = &cvm.SystemDisk{
DiskType: common.StringPtr(diskType),
DiskSize: diskSize,
}

//=============================
// UserData생성 처리(File기반)
//=============================
Expand Down

0 comments on commit 19d8b32

Please sign in to comment.