Skip to content

Commit 2ef659e

Browse files
authored
Merge pull request #1344 from innodreamer/master
[NCP Classic] Update Zone-based control
2 parents 7b5614d + cce585f commit 2ef659e

File tree

4 files changed

+413
-42
lines changed

4 files changed

+413
-42
lines changed

cloud-control-manager/cloud-driver/drivers/ncp/resources/CommonNcpFunc.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,3 +142,9 @@ func randSeq(n int) string {
142142
}
143143
return string(b)
144144
}
145+
146+
func getSeoulCurrentTime() string {
147+
loc, _ := time.LoadLocation("Asia/Seoul")
148+
currentTime := time.Now().In(loc)
149+
return currentTime.Format("2006-01-02 15:04:05")
150+
}

cloud-control-manager/cloud-driver/drivers/ncp/resources/DiskHandler.go

Lines changed: 71 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,11 @@ import (
1414
// "errors"
1515
"errors"
1616
"fmt"
17-
1817
// "io/ioutil"
1918
// "os"
2019
"strconv"
2120
"strings"
2221
"time"
23-
2422
// "github.com/davecgh/go-spew/spew"
2523

2624
"github.com/NaverCloudPlatform/ncloud-sdk-go-v2/ncloud"
@@ -51,8 +49,14 @@ func (diskHandler *NcpDiskHandler) CreateDisk(diskReqInfo irs.DiskInfo) (irs.Dis
5149
return irs.DiskInfo{}, rtnErr
5250
}
5351

52+
var reqZoneId string
53+
if strings.EqualFold(diskReqInfo.Zone, "") {
54+
reqZoneId = diskHandler.RegionInfo.Zone
55+
} else {
56+
reqZoneId = diskReqInfo.Zone
57+
}
5458
// $$$ At least one VM is required to create new disk volume in case of NCP.
55-
instanceList, err := diskHandler.GetNcpVMList()
59+
instanceList, err := diskHandler.GetNcpVMListWithZone(reqZoneId)
5660
if err != nil {
5761
rtnErr := logAndReturnError(callLogInfo, "Failed to Get NCP Instacne List :", err)
5862
return irs.DiskInfo{}, rtnErr
@@ -634,6 +638,7 @@ func (diskHandler *NcpDiskHandler) MappingDiskInfo(storage server.BlockStorageIn
634638
NameId: ncloud.StringValue(storage.BlockStorageName),
635639
SystemId: ncloud.StringValue(storage.BlockStorageInstanceNo),
636640
},
641+
Zone: ncloud.StringValue(storage.Zone.ZoneCode),
637642
DiskSize: strconv.FormatInt((*storage.BlockStorageSize)/(1024*1024*1024), 10),
638643
Status: ConvertDiskStatus(ncloud.StringValue(storage.BlockStorageInstanceStatusName)), // Not BlockStorageInstanceStatus.Code
639644
CreatedTime: convertedTime,
@@ -645,14 +650,33 @@ func (diskHandler *NcpDiskHandler) MappingDiskInfo(storage server.BlockStorageIn
645650
RegionInfo: diskHandler.RegionInfo,
646651
VMClient: diskHandler.VMClient,
647652
}
648-
vmInfo, err := vmHandler.GetNcpVMInfo(ncloud.StringValue(storage.ServerInstanceNo))
653+
subnetZone, err := vmHandler.getVMSubnetZone(ncloud.StringValue(storage.ServerInstanceNo))
649654
if err != nil {
650-
newErr := fmt.Errorf("Failed to Get the VM Info. : [%v] ", err)
651-
cblogger.Error(newErr.Error())
652-
return irs.DiskInfo{}, newErr
655+
newErr := fmt.Errorf("Failed to Get the Subnet Zone info of the VM!! : [%v]", err)
656+
cblogger.Debug(newErr.Error())
657+
// return irs.VMInfo{}, newErr // Caution!!
658+
}
659+
660+
var ncpVMInfo *server.ServerInstance
661+
vmErr := errors.New("")
662+
if strings.EqualFold(vmHandler.RegionInfo.Zone, subnetZone){ // Not diskHandler.RegionInfo.Zone
663+
ncpVMInfo, vmErr = vmHandler.GetNcpVMInfo(ncloud.StringValue(storage.ServerInstanceNo))
664+
if vmErr != nil {
665+
newErr := fmt.Errorf("Failed to Get the VM Info of the Zone : [%s], [%v]", subnetZone, vmErr)
666+
cblogger.Error(newErr.Error())
667+
return irs.DiskInfo{}, newErr
668+
}
669+
} else {
670+
ncpVMInfo, vmErr = vmHandler.GetNcpTargetZoneVMInfo(ncloud.StringValue(storage.ServerInstanceNo))
671+
if vmErr != nil {
672+
newErr := fmt.Errorf("Failed to Get the VM Info of the Zone : [%s], [%v]", subnetZone, vmErr)
673+
cblogger.Error(newErr.Error())
674+
return irs.DiskInfo{}, newErr
675+
}
653676
}
677+
654678
diskInfo.OwnerVM = irs.IID{
655-
NameId: ncloud.StringValue(vmInfo.ServerName),
679+
NameId: ncloud.StringValue(ncpVMInfo.ServerName),
656680
SystemId: ncloud.StringValue(storage.ServerInstanceNo),
657681
}
658682
}
@@ -733,6 +757,45 @@ func (diskHandler *NcpDiskHandler) GetNcpVMList() ([]*server.ServerInstance, err
733757
return result.ServerInstanceList, nil
734758
}
735759

760+
func (diskHandler *NcpDiskHandler) GetNcpVMListWithZone(reqZoneId string) ([]*server.ServerInstance, error) {
761+
cblogger.Info("NCP Cloud Driver: called GetNcpVMListWithZone()")
762+
callLogInfo := GetCallLogScheme(diskHandler.RegionInfo.Region, call.DISK, "GetNcpVMList()", "GetNcpVMListWithSubnetZone()")
763+
764+
vmHandler := NcpVMHandler{
765+
RegionInfo: diskHandler.RegionInfo,
766+
VMClient: diskHandler.VMClient,
767+
}
768+
regionNo, err := vmHandler.GetRegionNo(diskHandler.RegionInfo.Region)
769+
if err != nil {
770+
rtnErr := logAndReturnError(callLogInfo, "Failed to Get NCP Region No of the Region Code : ", err)
771+
return nil, rtnErr
772+
}
773+
reqZoneNo, err := vmHandler.GetZoneNo(diskHandler.RegionInfo.Region, reqZoneId) // Not diskHandler.RegionInfo.Zone
774+
if err != nil {
775+
rtnErr := logAndReturnError(callLogInfo, "Failed to Get NCP Zone No of the Zone Code : ", err)
776+
return nil, rtnErr
777+
}
778+
instanceReq := server.GetServerInstanceListRequest{
779+
ServerInstanceNoList: []*string{},
780+
RegionNo: regionNo, // Caution : Not RegionCode
781+
ZoneNo: reqZoneNo, // Caution : Not ZoneCode
782+
}
783+
callLogStart := call.Start()
784+
result, err := diskHandler.VMClient.V2Api.GetServerInstanceList(&instanceReq)
785+
if err != nil {
786+
rtnErr := logAndReturnError(callLogInfo, "Failed to Find the VM Instance list from NCP : ", err)
787+
return nil, rtnErr
788+
}
789+
LoggingInfo(callLogInfo, callLogStart)
790+
791+
if len(result.ServerInstanceList) < 1 {
792+
cblogger.Info("### VM Instance does Not Exist!!")
793+
} else {
794+
cblogger.Info("Succeeded in Getting VM Instance list from NCP")
795+
}
796+
return result.ServerInstanceList, nil
797+
}
798+
736799
func (diskHandler *NcpDiskHandler) IsBasicBlockStorage(diskIID irs.IID) (bool, error) {
737800
cblogger.Info("NCP Cloud Driver: called IsBasicBlockStorage()")
738801

0 commit comments

Comments
 (0)