Skip to content

Commit c76fd67

Browse files
committed
Add createSubnet() func. and Apply it to CreateVPC() and AddSubnet()
1 parent a1f001d commit c76fd67

File tree

3 files changed

+86
-59
lines changed

3 files changed

+86
-59
lines changed

cloud-control-manager/cloud-driver/drivers/ktcloudvpc/resources/VPCHandler.go

+83-56
Original file line numberDiff line numberDiff line change
@@ -81,12 +81,12 @@ func (vpcHandler *KTVpcVPCHandler) CreateVPC(vpcReqInfo irs.VPCReqInfo) (irs.VPC
8181

8282
// Create the Requested Subnets
8383
for _, subnetReqInfo := range vpcReqInfo.SubnetInfoList {
84-
_, err := vpcHandler.AddSubnet(irs.IID{SystemId: vpcList[0].ID}, subnetReqInfo)
84+
_, err := vpcHandler.createSubnet(&subnetReqInfo)
8585
if err != nil {
8686
newErr := fmt.Errorf("Failed to Create New Subnet : [%v]", err)
8787
cblogger.Error(newErr.Error())
8888
loggingError(callLogInfo, newErr)
89-
return irs.VPCInfo{}, newErr // Caution!!) D1 Platform Abnormal Error
89+
return irs.VPCInfo{}, newErr
9090
}
9191
}
9292

@@ -265,68 +265,26 @@ func (vpcHandler *KTVpcVPCHandler) AddSubnet(vpcIID irs.IID, subnetReqInfo irs.S
265265
cblogger.Info("KT Cloud VPC driver: called AddSubnet()!!")
266266
callLogInfo := getCallLogScheme(vpcHandler.RegionInfo.Zone, call.VPCSUBNET, subnetReqInfo.IId.NameId, "AddSubnet()")
267267

268-
if subnetReqInfo.IId.NameId == "" {
269-
newErr := fmt.Errorf("Invalid Sunbet NameId!!")
268+
if strings.EqualFold(vpcIID.SystemId, "") {
269+
newErr := fmt.Errorf("Invalid VPC ID!!")
270270
cblogger.Error(newErr.Error())
271-
loggingError(callLogInfo, newErr)
272271
return irs.VPCInfo{}, newErr
273272
}
274273

275-
// KT Cloud D1 platform API guide - Tier : https://cloud.kt.com/docs/open-api-guide/d/computing/tier
276-
cidrBlock := strings.Split(subnetReqInfo.IPv4_CIDR, ".")
277-
vmStartIP := cidrBlock[0] + "." + cidrBlock[1] + "." + cidrBlock[2] + "." + "6"
278-
vmEndIP := cidrBlock[0] + "." + cidrBlock[1] + "." + cidrBlock[2] + "." + "180"
279-
lbStartIP := cidrBlock[0] + "." + cidrBlock[1] + "." + cidrBlock[2] + "." + "181"
280-
lbEndIP := cidrBlock[0] + "." + cidrBlock[1] + "." + cidrBlock[2] + "." + "199"
281-
bmStartIP := cidrBlock[0] + "." + cidrBlock[1] + "." + cidrBlock[2] + "." + "201"
282-
bmEndIP := cidrBlock[0] + "." + cidrBlock[1] + "." + cidrBlock[2] + "." + "250"
283-
gatewayIP := cidrBlock[0] + "." + cidrBlock[1] + "." + cidrBlock[2] + "." + "1"
284-
285-
detailTierInfo := subnets.DetailInfo {
286-
CIDR: subnetReqInfo.IPv4_CIDR,
287-
StartIP: vmStartIP, // For VM
288-
EndIP: vmEndIP,
289-
LBStartIP: lbStartIP, // For NLB
290-
LBEndIP: lbEndIP,
291-
BMStartIP: bmStartIP, // For BareMetal Machine
292-
BMEndIP: bmEndIP,
293-
Gateway: gatewayIP,
274+
if subnetReqInfo.IId.NameId == "" {
275+
newErr := fmt.Errorf("Invalid Sunbet NameId!!")
276+
cblogger.Error(newErr.Error())
277+
return irs.VPCInfo{}, newErr
294278
}
295279

296-
// Create Subnet
297-
createOpts := subnets.CreateOpts{
298-
Name: subnetReqInfo.IId.NameId, // Required
299-
Zone: vpcHandler.RegionInfo.Zone, // Required
300-
Type: "tier", // Required
301-
UserCustom: "y", // Required
302-
Detail: detailTierInfo,
303-
}
304-
// cblogger.Info("\n### Subnet createOpts : ")
305-
// spew.Dump(createOpts)
306-
// cblogger.Info("\n")
307-
308-
cblogger.Info("\n### Adding New Subnet Now!!")
309-
start := call.Start()
310-
_, err := subnets.Create(vpcHandler.NetworkClient, createOpts).Extract()
311-
// subnet, err := subnets.Create(vpcHandler.NetworkClient, createOpts).Extract()
280+
_, err := vpcHandler.createSubnet(&subnetReqInfo)
312281
if err != nil {
313-
if !strings.Contains(err.Error(), ":true") { // Cauton!! : Abnormal Error when creating a subnet on D1 Platform
314-
newErr := fmt.Errorf("Failed to Add the Subnet on KT Coud : [%v]", err)
315-
cblogger.Error(newErr.Error())
316-
loggingError(callLogInfo, newErr)
317-
return irs.VPCInfo{}, newErr
318-
}
319-
} else {
320-
cblogger.Info("\n### Waiting for Adding the Subnet!!")
321-
time.Sleep(time.Second * 20)
322-
323-
// cblogger.Infof("Succeeded in Adding the Subnet : [%s]", subnet.ID) // To prevent 'panic: runtime error', maded this line as a comment.
282+
newErr := fmt.Errorf("Failed to Add New Subnet : [%v]", err)
283+
cblogger.Error(newErr.Error())
284+
loggingError(callLogInfo, newErr)
285+
return irs.VPCInfo{}, newErr
324286
}
325-
loggingInfo(callLogInfo, start)
326287

327-
// subnetInfo := vpcHandler.setterSubnet(*subnet)
328-
// return *subnetInfo, nil
329-
330288
vpcInfo, err := vpcHandler.GetVPC(irs.IID{SystemId: vpcIID.SystemId})
331289
if err != nil {
332290
newErr := fmt.Errorf("Failed to Get the VPC Info!! : [%v] ", err)
@@ -393,7 +351,7 @@ func (vpcHandler *KTVpcVPCHandler) mappingVpcInfo(nvpc *networks.Network) (*irs.
393351
if !strings.EqualFold(subnet.Name, "Private_Sub") && !strings.EqualFold(subnet.Name, "DMZ_Sub") && !strings.EqualFold(subnet.Name, "external"){
394352
// # When apply filtering
395353

396-
cblogger.Info("# Subnet Name : [%s]", subnet.Name)
354+
// cblogger.Infof("# Subnet Name : [%s]", subnet.Name)
397355
// if strings.EqualFold(subnet.Name, "NLB-SUBNET_Sub"){ // Note) '_Sub' is automatically appended to the original subnet name
398356

399357
subnetInfo := vpcHandler.mappingSubnetInfo(subnet)
@@ -433,6 +391,75 @@ func (vpcHandler *KTVpcVPCHandler) mappingSubnetInfo(subnet subnets.Subnet) *irs
433391
return &subnetInfo
434392
}
435393

394+
// Create New Subnet (Tire) and Return OS Network ID
395+
func (vpcHandler *KTVpcVPCHandler) createSubnet(subnetReqInfo *irs.SubnetInfo) (string, error) {
396+
cblogger.Info("KT Cloud VPC driver: called createSubnet()!!")
397+
callLogInfo := getCallLogScheme(vpcHandler.RegionInfo.Zone, call.VPCSUBNET, subnetReqInfo.IId.NameId, "createSubnet()")
398+
399+
if subnetReqInfo.IId.NameId == "" {
400+
newErr := fmt.Errorf("Invalid Sunbet NameId!!")
401+
cblogger.Error(newErr.Error())
402+
loggingError(callLogInfo, newErr)
403+
return "", newErr
404+
}
405+
406+
// KT Cloud D1 platform API guide - Tier : https://cloud.kt.com/docs/open-api-guide/d/computing/tier
407+
cidrBlock := strings.Split(subnetReqInfo.IPv4_CIDR, ".")
408+
vmStartIP := cidrBlock[0] + "." + cidrBlock[1] + "." + cidrBlock[2] + "." + "6"
409+
vmEndIP := cidrBlock[0] + "." + cidrBlock[1] + "." + cidrBlock[2] + "." + "180"
410+
lbStartIP := cidrBlock[0] + "." + cidrBlock[1] + "." + cidrBlock[2] + "." + "181"
411+
lbEndIP := cidrBlock[0] + "." + cidrBlock[1] + "." + cidrBlock[2] + "." + "199"
412+
bmStartIP := cidrBlock[0] + "." + cidrBlock[1] + "." + cidrBlock[2] + "." + "201"
413+
bmEndIP := cidrBlock[0] + "." + cidrBlock[1] + "." + cidrBlock[2] + "." + "250"
414+
gatewayIP := cidrBlock[0] + "." + cidrBlock[1] + "." + cidrBlock[2] + "." + "1"
415+
416+
detailTierInfo := subnets.DetailInfo {
417+
CIDR: subnetReqInfo.IPv4_CIDR,
418+
StartIP: vmStartIP, // For VM
419+
EndIP: vmEndIP,
420+
LBStartIP: lbStartIP, // For NLB
421+
LBEndIP: lbEndIP,
422+
BMStartIP: bmStartIP, // For BareMetal Machine
423+
BMEndIP: bmEndIP,
424+
Gateway: gatewayIP,
425+
}
426+
427+
// Create Subnet
428+
createOpts := subnets.CreateOpts{
429+
Name: subnetReqInfo.IId.NameId, // Required
430+
Zone: vpcHandler.RegionInfo.Zone, // Required
431+
Type: "tier", // Required
432+
UserCustom: "y", // Required
433+
Detail: detailTierInfo,
434+
}
435+
// cblogger.Info("\n### Subnet createOpts : ")
436+
// spew.Dump(createOpts)
437+
// cblogger.Info("\n")
438+
439+
cblogger.Info("\n### Adding New Subnet Now!!")
440+
start := call.Start()
441+
result, err := subnets.Create(vpcHandler.NetworkClient, createOpts).ExtractCreateInfo()
442+
if err != nil {
443+
if !strings.Contains(err.Error(), ":true") {
444+
newErr := fmt.Errorf("Failed to Create the Subnet : [%v]", err)
445+
cblogger.Error(newErr.Error())
446+
loggingError(callLogInfo, newErr)
447+
return "", newErr
448+
}
449+
} else if strings.EqualFold(result.NetworkID, "") {
450+
newErr := fmt.Errorf("Failed to Create the Subnet!!")
451+
cblogger.Error(newErr.Error())
452+
loggingError(callLogInfo, newErr)
453+
return "", newErr
454+
} else {
455+
cblogger.Info("\n### Waiting for Creating the Subnet!!")
456+
time.Sleep(time.Second * 20)
457+
}
458+
loggingInfo(callLogInfo, start)
459+
460+
return result.NetworkID, nil
461+
}
462+
436463
func (vpcHandler *KTVpcVPCHandler) getKtCloudVpc(vpcId string) (*networks.Network, error) {
437464
cblogger.Info("KT Cloud VPC Driver: called getKtCloudVpc()!")
438465
callLogInfo := getCallLogScheme(vpcHandler.RegionInfo.Zone, call.VPCSUBNET, vpcId, "getKtCloudVpc()")

go.mod

+1-1
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ require (
6666
github.com/alibabacloud-go/tea v1.2.2
6767
github.com/alibabacloud-go/vpc-20160428/v6 v6.4.0
6868
github.com/cloud-barista/ktcloud-sdk-go v0.2.1-0.20240123114820-8684cfc5deeb
69-
github.com/cloud-barista/ktcloudvpc-sdk-go v0.0.0-20240524035950-e31ad87778e0
69+
github.com/cloud-barista/ktcloudvpc-sdk-go v0.0.0-20240812121947-01daa5e57030
7070
github.com/cloud-barista/nhncloud-sdk-go v0.0.0-20240709053216-536bc37fa6c9
7171
github.com/go-openapi/strfmt v0.21.3
7272
github.com/hashicorp/go-version v1.6.0

go.sum

+2-2
Original file line numberDiff line numberDiff line change
@@ -182,8 +182,8 @@ github.com/cloud-barista/cb-log v0.8.2 h1:hPCbLj6TW6m9UWlq002sDuGgxKFVp68w4V3k49
182182
github.com/cloud-barista/cb-log v0.8.2/go.mod h1:nGgfTFMPwl1MpCO3FBjexUkNdOYA0BNJoyM9Pd0lMms=
183183
github.com/cloud-barista/ktcloud-sdk-go v0.2.1-0.20240123114820-8684cfc5deeb h1:JAQQ/wBdkcoGCeim+J84F8hIuxbtn/XTe/iDYRsr+t0=
184184
github.com/cloud-barista/ktcloud-sdk-go v0.2.1-0.20240123114820-8684cfc5deeb/go.mod h1:ZIrUxItUvMIGZyX6Re7tUdcS3cwBIzBPcL+Pk/6lt/8=
185-
github.com/cloud-barista/ktcloudvpc-sdk-go v0.0.0-20240524035950-e31ad87778e0 h1:mnQnZHMwt8V/WihpgnIDcqK9fsLE8A+uTdVSGdPaQ+Q=
186-
github.com/cloud-barista/ktcloudvpc-sdk-go v0.0.0-20240524035950-e31ad87778e0/go.mod h1:SDTNI+0ZyoEWhQKHASGwhS1a9kad+mxsXCKSfnpWnSA=
185+
github.com/cloud-barista/ktcloudvpc-sdk-go v0.0.0-20240812121947-01daa5e57030 h1:KZSxMftDrIKpk0+qW0rt3UX/e2QsHolvesazvl2av4s=
186+
github.com/cloud-barista/ktcloudvpc-sdk-go v0.0.0-20240812121947-01daa5e57030/go.mod h1:SDTNI+0ZyoEWhQKHASGwhS1a9kad+mxsXCKSfnpWnSA=
187187
github.com/cloud-barista/nhncloud-sdk-go v0.0.0-20240709053216-536bc37fa6c9 h1:br7+CBDJEXofGPWUj79sldxuvrj4GNktmF6T8zVrVOk=
188188
github.com/cloud-barista/nhncloud-sdk-go v0.0.0-20240709053216-536bc37fa6c9/go.mod h1:G+VjfmHi5IUt0oe14A5UXmbrGFlMTMQjLonBuvjy8Yc=
189189
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=

0 commit comments

Comments
 (0)