From 0d113f63071c85be1c0ba863fff64289bdc5e172 Mon Sep 17 00:00:00 2001 From: dogfootman Date: Fri, 5 Apr 2024 09:34:31 +0900 Subject: [PATCH] issue_1067 alibaba : set zone for subnet, disk --- .../drivers/alibaba/resources/DiskHandler.go | 15 +++++++++++---- .../drivers/alibaba/resources/VPCHandler.go | 17 +++++++++++------ 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/cloud-control-manager/cloud-driver/drivers/alibaba/resources/DiskHandler.go b/cloud-control-manager/cloud-driver/drivers/alibaba/resources/DiskHandler.go index 76dd9ab38..f022f21ba 100644 --- a/cloud-control-manager/cloud-driver/drivers/alibaba/resources/DiskHandler.go +++ b/cloud-control-manager/cloud-driver/drivers/alibaba/resources/DiskHandler.go @@ -52,10 +52,16 @@ func (diskHandler *AlibabaDiskHandler) CreateDisk(diskReqInfo irs.DiskInfo) (irs return irs.DiskInfo{}, err } + // #issue 1067 : 입력받은 zone에 생성 + zoneId := diskHandler.Region.Zone + if diskReqInfo.Zone != "" { + zoneId = diskReqInfo.Zone + } + destinationResource := "DataDisk" resourceType := "disk" // instance, disk, reservedinstance, ddh //client *ecs.Client, regionId string, zoneId string, resourceType string, destinationResource string, categoryValue string - _, err = DescribeAvailableResource(diskHandler.Client, diskHandler.Region.Region, diskHandler.Region.Zone, resourceType, destinationResource, diskReqInfo.DiskType) + _, err = DescribeAvailableResource(diskHandler.Client, diskHandler.Region.Region, zoneId, resourceType, destinationResource, diskReqInfo.DiskType) if err != nil { return irs.DiskInfo{}, err } @@ -63,7 +69,7 @@ func (diskHandler *AlibabaDiskHandler) CreateDisk(diskReqInfo irs.DiskInfo) (irs request := ecs.CreateCreateDiskRequest() request.Scheme = "https" // 필수 Req Name - request.ZoneId = diskHandler.Region.Zone + request.ZoneId = zoneId request.DiskName = diskReqInfo.IId.NameId request.DiskCategory = diskReqInfo.DiskType request.Size = requests.Integer(diskReqInfo.DiskSize) @@ -75,7 +81,7 @@ func (diskHandler *AlibabaDiskHandler) CreateDisk(diskReqInfo irs.DiskInfo) (irs }, } - spew.Dump(request) + //spew.Dump(request) // Creates a new custom Image with the given name result, err := diskHandler.Client.CreateDisk(request) hiscallInfo.ElapsedTime = call.Elapsed(start) @@ -88,7 +94,7 @@ func (diskHandler *AlibabaDiskHandler) CreateDisk(diskReqInfo irs.DiskInfo) (irs calllogger.Info(call.String(hiscallInfo)) cblogger.Infof("Created Disk %q %s\n %s\n", result.DiskId, diskReqInfo.IId.NameId, result.RequestId) - spew.Dump(result) + //spew.Dump(result) // 생성된 Disk 정보 획득 후, Image 정보 리턴 diskInfo, err := diskHandler.GetDisk(irs.IID{SystemId: result.DiskId}) @@ -624,6 +630,7 @@ func ExtractDiskDescribeInfo(aliDisk *ecs.Disk) (irs.DiskInfo, error) { diskInfo.DiskSize = strconv.Itoa(aliDisk.Size) diskInfo.DiskType = aliDisk.Category + diskInfo.Zone = aliDisk.ZoneId diskInfo.CreatedTime, _ = time.Parse( time.RFC3339, aliDisk.CreationTime) diff --git a/cloud-control-manager/cloud-driver/drivers/alibaba/resources/VPCHandler.go b/cloud-control-manager/cloud-driver/drivers/alibaba/resources/VPCHandler.go index 91e8130bd..ae22f763a 100644 --- a/cloud-control-manager/cloud-driver/drivers/alibaba/resources/VPCHandler.go +++ b/cloud-control-manager/cloud-driver/drivers/alibaba/resources/VPCHandler.go @@ -62,7 +62,7 @@ func (VPCHandler *AlibabaVPCHandler) CreateVPC(vpcReqInfo irs.VPCReqInfo) (irs.V response, err := VPCHandler.Client.CreateVpc(request) callLogInfo.ElapsedTime = call.Elapsed(callLogStart) cblogger.Info(response) - spew.Dump(response) + //spew.Dump(response) if err != nil { callLogInfo.ErrorMSG = err.Error() callogger.Info(call.String(callLogInfo)) @@ -116,20 +116,24 @@ func (VPCHandler *AlibabaVPCHandler) CreateSubnet(vpcId string, reqSubnetInfo ir } */ + zoneId := VPCHandler.Region.Zone + if reqSubnetInfo.Zone != ""{ + zoneId = reqSubnetInfo.Zone + } //서브넷 생성 request := vpc.CreateCreateVSwitchRequest() request.Scheme = "https" request.VpcId = vpcId request.CidrBlock = reqSubnetInfo.IPv4_CIDR request.VSwitchName = reqSubnetInfo.IId.NameId - request.ZoneId = VPCHandler.Region.Zone //"ap-northeast-1a" // @TOTO : ZoneId 전달 받아야 함. + request.ZoneId = zoneId cblogger.Info(request) // logger for HisCall callogger := call.GetLogger("HISCALL") callLogInfo := call.CLOUDLOGSCHEMA{ CloudOS: call.ALIBABA, - RegionZone: VPCHandler.Region.Zone, + RegionZone: zoneId, ResourceType: call.VPCSUBNET, ResourceName: reqSubnetInfo.IId.NameId, CloudOSAPI: "CreateVSwitch()", @@ -148,7 +152,7 @@ func (VPCHandler *AlibabaVPCHandler) CreateSubnet(vpcId string, reqSubnetInfo ir return irs.SubnetInfo{}, err } callogger.Info(call.String(callLogInfo)) - spew.Dump(response) + //spew.Dump(response) subnetInfo, errSunetInfo := VPCHandler.GetSubnet(response.VSwitchId) if errSunetInfo != nil { @@ -302,7 +306,7 @@ func (VPCHandler *AlibabaVPCHandler) GetVPC(vpcIID irs.IID) (irs.VPCInfo, error) } vpcInfo := ExtractVpcDescribeInfo(&result.Vpcs.Vpc[0]) - spew.Dump(vpcInfo) + //spew.Dump(vpcInfo) //========================== // VPC의 서브넷들 처리 @@ -454,7 +458,7 @@ func (VPCHandler *AlibabaVPCHandler) GetSubnet(reqSubnetId string) (irs.SubnetIn result, err := VPCHandler.Client.DescribeVSwitches(request) callLogInfo.ElapsedTime = call.Elapsed(callLogStart) - spew.Dump(result) + //spew.Dump(result) //cblogger.Info(result) if err != nil { callLogInfo.ErrorMSG = err.Error() @@ -481,6 +485,7 @@ func ExtractSubnetDescribeInfo(subnetInfo vpc.VSwitch) irs.SubnetInfo { vNetworkInfo := irs.SubnetInfo{ IId: irs.IID{NameId: subnetInfo.VSwitchName, SystemId: subnetInfo.VSwitchId}, IPv4_CIDR: subnetInfo.CidrBlock, + Zone: subnetInfo.ZoneId, } keyValueList := []irs.KeyValue{