From 900621a96947d795ed85092a206623a6225a9efb Mon Sep 17 00:00:00 2001 From: ish Date: Thu, 18 Apr 2024 01:30:42 +0900 Subject: [PATCH 1/2] IBM: Support setting zone for VPC --- .../ibmcloud-vpc/resources/VPCHandler.go | 34 ++++++------------- 1 file changed, 11 insertions(+), 23 deletions(-) diff --git a/cloud-control-manager/cloud-driver/drivers/ibmcloud-vpc/resources/VPCHandler.go b/cloud-control-manager/cloud-driver/drivers/ibmcloud-vpc/resources/VPCHandler.go index c78bd09be..54a8360f8 100644 --- a/cloud-control-manager/cloud-driver/drivers/ibmcloud-vpc/resources/VPCHandler.go +++ b/cloud-control-manager/cloud-driver/drivers/ibmcloud-vpc/resources/VPCHandler.go @@ -49,7 +49,7 @@ func (vpcHandler *IbmVPCHandler) CreateVPC(vpcReqInfo irs.VPCReqInfo) (irs.VPCIn } if vpcHandler.Region.Zone == "" { - createErr := errors.New(fmt.Sprintf("Failed to Create VPC err = not exist Zone")) + createErr := errors.New(fmt.Sprintf("Failed to Create VPC err = Zone is not provided")) cblogger.Error(createErr.Error()) LoggingError(hiscallInfo, createErr) return irs.VPCInfo{}, createErr @@ -63,7 +63,7 @@ func (vpcHandler *IbmVPCHandler) CreateVPC(vpcReqInfo irs.VPCReqInfo) (irs.VPCIn return irs.VPCInfo{}, createErr } if exist { - createErr := errors.New(fmt.Sprintf("Failed to Create VPC err = already exist VPC")) + createErr := errors.New(fmt.Sprintf("Failed to Create VPC err = VPC is already exist")) cblogger.Error(createErr.Error()) LoggingError(hiscallInfo, createErr) return irs.VPCInfo{}, createErr @@ -84,13 +84,19 @@ func (vpcHandler *IbmVPCHandler) CreateVPC(vpcReqInfo irs.VPCReqInfo) (irs.VPCIn NameId: *vpc.Name, SystemId: *vpc.ID, } + if len(vpcReqInfo.SubnetInfoList) == 0 { + createErr := errors.New("Failed to Create VPC err = Subnet info list is not provided") + cblogger.Error(createErr.Error()) + LoggingError(hiscallInfo, createErr) + return irs.VPCInfo{}, createErr + } // createVPCAddressPrefix createVPCAddressPrefixOptions := &vpcv1.CreateVPCAddressPrefixOptions{} createVPCAddressPrefixOptions.SetVPCID(newVpcIId.SystemId) createVPCAddressPrefixOptions.SetCIDR(vpcReqInfo.IPv4_CIDR) createVPCAddressPrefixOptions.SetName(newVpcIId.NameId) createVPCAddressPrefixOptions.SetZone(&vpcv1.ZoneIdentity{ - Name: core.StringPtr(vpcHandler.Region.Zone), + Name: core.StringPtr(vpcReqInfo.SubnetInfoList[0].Zone), }) _, _, err = vpcHandler.VpcService.CreateVPCAddressPrefixWithContext(vpcHandler.Ctx, createVPCAddressPrefixOptions) // createVPCAddressPrefix error @@ -407,10 +413,6 @@ func attachSubnet(vpc vpcv1.VPC, subnetInfo irs.SubnetInfo, vpcService *vpcv1.Vp err = errors.New(fmt.Sprintf("already exist %s", subnetInfo.IId.NameId)) return err } - zone, err := getFirstVPCZone(vpc, vpcService, ctx) - if err != nil { - return err - } options := &vpcv1.CreateSubnetOptions{} options.SetSubnetPrototype(&vpcv1.SubnetPrototype{ Ipv4CIDRBlock: core.StringPtr(subnetInfo.IPv4_CIDR), @@ -419,7 +421,7 @@ func attachSubnet(vpc vpcv1.VPC, subnetInfo irs.SubnetInfo, vpcService *vpcv1.Vp ID: vpc.ID, }, Zone: &vpcv1.ZoneIdentity{ - Name: &zone, + Name: &subnetInfo.Zone, }, }) _, _, err = vpcService.CreateSubnetWithContext(ctx, options) @@ -572,21 +574,6 @@ func GetRawVPC(vpcIID irs.IID, vpcService *vpcv1.VpcV1, ctx context.Context) (vp } } -func getFirstVPCZone(vpc vpcv1.VPC, vpcService *vpcv1.VpcV1, ctx context.Context) (string, error) { - // get first AddressPrefix Zone - listVpcAddressPrefixesOptions := &vpcv1.ListVPCAddressPrefixesOptions{} - listVpcAddressPrefixesOptions.SetVPCID(*vpc.ID) - addressPrefixes, _, err := vpcService.ListVPCAddressPrefixesWithContext(ctx, listVpcAddressPrefixesOptions) - if err != nil { - return "", err - } - if *addressPrefixes.TotalCount > 0 { - return *addressPrefixes.AddressPrefixes[0].Zone.Name, nil - } - err = errors.New("VPC not found FirstVPCZone") - return "", err -} - func getVPCRawSubnets(vpc vpcv1.VPC, vpcService *vpcv1.VpcV1, ctx context.Context) ([]vpcv1.Subnet, error) { options := &vpcv1.ListSubnetsOptions{} subnets, _, err := vpcService.ListSubnetsWithContext(ctx, options) @@ -679,6 +666,7 @@ func setVPCInfo(vpc vpcv1.VPC, vpcService *vpcv1.VpcV1, ctx context.Context) (ir NameId: *subnet.Name, SystemId: *subnet.ID, }, + Zone: *subnet.Zone.Name, IPv4_CIDR: *subnet.Ipv4CIDRBlock, } newSubnetInfos = append(newSubnetInfos, subnetInfo) From 86a8e8e3101974b8a0a6aa4f9124cbc26efd0806 Mon Sep 17 00:00:00 2001 From: ish Date: Thu, 18 Apr 2024 01:38:25 +0900 Subject: [PATCH 2/2] IBM: Support setting zone for disk --- .../cloud-driver/drivers/ibmcloud-vpc/resources/DiskHandler.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cloud-control-manager/cloud-driver/drivers/ibmcloud-vpc/resources/DiskHandler.go b/cloud-control-manager/cloud-driver/drivers/ibmcloud-vpc/resources/DiskHandler.go index 75160d72e..ee8bd8fb8 100644 --- a/cloud-control-manager/cloud-driver/drivers/ibmcloud-vpc/resources/DiskHandler.go +++ b/cloud-control-manager/cloud-driver/drivers/ibmcloud-vpc/resources/DiskHandler.go @@ -43,7 +43,7 @@ func (diskHandler *IbmDiskHandler) CreateDisk(diskReqInfo irs.DiskInfo) (irs.Dis Name: &diskReqInfo.DiskType, }, Zone: &vpcv1.ZoneIdentity{ - Name: &diskHandler.Region.Zone, + Name: &diskReqInfo.Zone, }, Name: &diskReqInfo.IId.NameId, Capacity: ptrCapacity, @@ -293,6 +293,7 @@ func (diskHandler *IbmDiskHandler) ToIRSDisk(disk *vpcv1.Volume) *irs.DiskInfo { SystemId: *disk.ID, NameId: *disk.Name, }, + Zone: *disk.Zone.Name, DiskType: *disk.Profile.Name, DiskSize: strCapacity, Status: diskStatus,