@@ -81,12 +81,12 @@ func (vpcHandler *KTVpcVPCHandler) CreateVPC(vpcReqInfo irs.VPCReqInfo) (irs.VPC
81
81
82
82
// Create the Requested Subnets
83
83
for _ , subnetReqInfo := range vpcReqInfo .SubnetInfoList {
84
- _ , err := vpcHandler .AddSubnet (irs. IID { SystemId : vpcList [ 0 ]. ID }, subnetReqInfo )
84
+ _ , err := vpcHandler .createSubnet ( & subnetReqInfo )
85
85
if err != nil {
86
86
newErr := fmt .Errorf ("Failed to Create New Subnet : [%v]" , err )
87
87
cblogger .Error (newErr .Error ())
88
88
loggingError (callLogInfo , newErr )
89
- return irs.VPCInfo {}, newErr // Caution!!) D1 Platform Abnormal Error
89
+ return irs.VPCInfo {}, newErr
90
90
}
91
91
}
92
92
@@ -265,68 +265,26 @@ func (vpcHandler *KTVpcVPCHandler) AddSubnet(vpcIID irs.IID, subnetReqInfo irs.S
265
265
cblogger .Info ("KT Cloud VPC driver: called AddSubnet()!!" )
266
266
callLogInfo := getCallLogScheme (vpcHandler .RegionInfo .Zone , call .VPCSUBNET , subnetReqInfo .IId .NameId , "AddSubnet()" )
267
267
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 !!" )
270
270
cblogger .Error (newErr .Error ())
271
- loggingError (callLogInfo , newErr )
272
271
return irs.VPCInfo {}, newErr
273
272
}
274
273
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
294
278
}
295
279
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 )
312
281
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
324
286
}
325
- loggingInfo (callLogInfo , start )
326
287
327
- // subnetInfo := vpcHandler.setterSubnet(*subnet)
328
- // return *subnetInfo, nil
329
-
330
288
vpcInfo , err := vpcHandler .GetVPC (irs.IID {SystemId : vpcIID .SystemId })
331
289
if err != nil {
332
290
newErr := fmt .Errorf ("Failed to Get the VPC Info!! : [%v] " , err )
@@ -393,7 +351,7 @@ func (vpcHandler *KTVpcVPCHandler) mappingVpcInfo(nvpc *networks.Network) (*irs.
393
351
if ! strings .EqualFold (subnet .Name , "Private_Sub" ) && ! strings .EqualFold (subnet .Name , "DMZ_Sub" ) && ! strings .EqualFold (subnet .Name , "external" ){
394
352
// # When apply filtering
395
353
396
- cblogger .Info ("# Subnet Name : [%s]" , subnet .Name )
354
+ // cblogger.Infof ("# Subnet Name : [%s]", subnet.Name)
397
355
// if strings.EqualFold(subnet.Name, "NLB-SUBNET_Sub"){ // Note) '_Sub' is automatically appended to the original subnet name
398
356
399
357
subnetInfo := vpcHandler .mappingSubnetInfo (subnet )
@@ -433,6 +391,75 @@ func (vpcHandler *KTVpcVPCHandler) mappingSubnetInfo(subnet subnets.Subnet) *irs
433
391
return & subnetInfo
434
392
}
435
393
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
+
436
463
func (vpcHandler * KTVpcVPCHandler ) getKtCloudVpc (vpcId string ) (* networks.Network , error ) {
437
464
cblogger .Info ("KT Cloud VPC Driver: called getKtCloudVpc()!" )
438
465
callLogInfo := getCallLogScheme (vpcHandler .RegionInfo .Zone , call .VPCSUBNET , vpcId , "getKtCloudVpc()" )
0 commit comments