Skip to content

Commit

Permalink
Merge pull request #1452 from innodreamer/master
Browse files Browse the repository at this point in the history
[NCP Classic] Update CheckWindowsImage(), Deduplicate VM Spec info list, and, Enhance Supported VM Spec Info
  • Loading branch information
powerkimhub authored Feb 5, 2025
2 parents 35fc7b6 + 9675bad commit 505c337
Show file tree
Hide file tree
Showing 4 changed files with 142 additions and 103 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@ func init() {

func (imageHandler *NcpImageHandler) GetImage(imageIID irs.IID) (irs.ImageInfo, error) {
cblogger.Info("NCP Classic Cloud Driver: called GetImage()!!")

InitLog()
callLogInfo := GetCallLogScheme(imageHandler.RegionInfo.Zone, call.VMIMAGE, imageIID.SystemId, "GetImage()")

Expand All @@ -63,7 +62,6 @@ func (imageHandler *NcpImageHandler) GetImage(imageIID irs.IID) (irs.ImageInfo,

func (imageHandler *NcpImageHandler) ListImage() ([]*irs.ImageInfo, error) {
cblogger.Info("NCP Classic Cloud Driver: called ListImage()!")

InitLog()
callLogInfo := GetCallLogScheme(imageHandler.RegionInfo.Zone, call.VMIMAGE, "ListImage()", "ListImage()")

Expand Down Expand Up @@ -185,7 +183,6 @@ func (imageHandler *NcpImageHandler) CreateImage(imageReqInfo irs.ImageReqInfo)

func (imageHandler *NcpImageHandler) CheckWindowsImage(imageIID irs.IID) (bool, error) {
cblogger.Info("NCP Classic Cloud Driver: called CheckWindowsImage()")

InitLog()
callLogInfo := GetCallLogScheme(imageHandler.RegionInfo.Region, call.MYIMAGE, imageIID.SystemId, "CheckWindowsImage()")

Expand All @@ -196,21 +193,21 @@ func (imageHandler *NcpImageHandler) CheckWindowsImage(imageIID irs.IID) (bool,
return false, newErr
}

myImageHandler := NcpMyImageHandler{
RegionInfo: imageHandler.RegionInfo,
VMClient: imageHandler.VMClient,
}
myImagePlatform, err := myImageHandler.GetOriginImageOSPlatform(imageIID)
ncpImageInfo, err := imageHandler.GetNcpImageInfo(imageIID)
if err != nil {
newErr := fmt.Errorf("Failed to Get MyImage Info. [%v]", err.Error())
newErr := fmt.Errorf("Failed to Get the Image Info from NCP : [%v]", err)
cblogger.Error(newErr.Error())
LoggingError(callLogInfo, newErr)
return false, newErr
}
}

isWindowsImage := false
if strings.Contains(myImagePlatform, "WINDOWS") {
isWindowsImage = true
if ncpImageInfo.ProductType != nil {
if ncpImageInfo.ProductType.Code != nil {
if strings.EqualFold(*ncpImageInfo.ProductType.Code, "WINNT") {
isWindowsImage = true
}
}
}
return isWindowsImage, nil
}
Expand Down Expand Up @@ -272,3 +269,30 @@ func (imageHandler *NcpImageHandler) GetNcpImageInfo(imageIID irs.IID) (*server.
cblogger.Info("Succeeded in Getting NCP Image info.")
return result.ProductList[0], nil
}

func (imageHandler *NcpImageHandler) isPublicImage(imageIID irs.IID) (bool, error) {
cblogger.Info("NCP Classic Cloud Driver: called isPublicImage()")
InitLog()
callLogInfo := GetCallLogScheme(imageHandler.RegionInfo.Region, call.MYIMAGE, imageIID.SystemId, "isPublicImage()") // HisCall logging

if strings.EqualFold(imageIID.SystemId, "") {
newErr := fmt.Errorf("Invalid Image SystemId!!")
cblogger.Error(newErr.Error())
LoggingError(callLogInfo, newErr)
return false, newErr
}

ncpImageInfo, err := imageHandler.GetNcpImageInfo(imageIID)
if err != nil {
newErr := fmt.Errorf("Failed to Get the Image Info from NCP : [%v]", err)
cblogger.Error(newErr.Error())
LoggingError(callLogInfo, newErr)
return false, nil // Caution!!
} else {
isPublicImage := false
if strings.EqualFold(*ncpImageInfo.ProductCode, imageIID.SystemId) {
isPublicImage = true
}
return isPublicImage, nil
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -400,17 +400,17 @@ func (myImageHandler *NcpMyImageHandler) GetOriginImageOSPlatform(imageIID irs.I
return "", newErr
}

isPublicImage, err := myImageHandler.isPublicImage(imageIID)
imageHandler := NcpImageHandler{
RegionInfo: myImageHandler.RegionInfo,
VMClient: myImageHandler.VMClient,
}
isPublicImage, err := imageHandler.isPublicImage(imageIID)
if err != nil {
newErr := fmt.Errorf("Failed to Check Whether the Image is Public Image : [%v]", err)
cblogger.Error(newErr.Error())
return "", newErr
}
if isPublicImage {
imageHandler := NcpImageHandler{
RegionInfo: myImageHandler.RegionInfo,
VMClient: myImageHandler.VMClient,
}
ncpImageInfo, err := imageHandler.GetNcpImageInfo(imageIID)
if err != nil {
newErr := fmt.Errorf("Failed to Get the Image Info from NCP : [%v]", err)
Expand Down Expand Up @@ -464,37 +464,6 @@ func (myImageHandler *NcpMyImageHandler) GetOriginImageOSPlatform(imageIID irs.I
}
}

func (myImageHandler *NcpMyImageHandler) isPublicImage(imageIID irs.IID) (bool, error) {
cblogger.Info("NCP Classic Cloud Driver: called isPublicImage()")
InitLog()
callLogInfo := GetCallLogScheme(myImageHandler.RegionInfo.Region, call.MYIMAGE, imageIID.SystemId, "isPublicImage()") // HisCall logging

if strings.EqualFold(imageIID.SystemId, "") {
newErr := fmt.Errorf("Invalid Image SystemId!!")
cblogger.Error(newErr.Error())
LoggingError(callLogInfo, newErr)
return false, newErr
}

imageHandler := NcpImageHandler{
RegionInfo: myImageHandler.RegionInfo,
VMClient: myImageHandler.VMClient,
}
ncpImageInfo, err := imageHandler.GetNcpImageInfo(imageIID)
if err != nil {
newErr := fmt.Errorf("Failed to Get the Image Info from NCP : [%v]", err)
cblogger.Error(newErr.Error())
LoggingError(callLogInfo, newErr)
return false, nil // Caution!!
} else {
isPublicImage := false
if strings.EqualFold(*ncpImageInfo.ProductCode, imageIID.SystemId) {
isPublicImage = true
}
return isPublicImage, nil
}
}

func (myImageHandler *NcpMyImageHandler) ListIID() ([]*irs.IID, error) {
cblogger.Info("NCP Classic Cloud Driver: called myImageHandler ListIID()")
InitLog()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -121,11 +121,11 @@ func (vmHandler *NcpVMHandler) StartVM(vmReqInfo irs.VMReqInfo) (irs.VMInfo, err
var initUserData *string

if vmReqInfo.ImageType == irs.PublicImage || vmReqInfo.ImageType == "" || vmReqInfo.ImageType == "default" {
myImageHandler := NcpMyImageHandler{
imageHandler := NcpImageHandler{
RegionInfo: vmHandler.RegionInfo,
VMClient: vmHandler.VMClient,
}
isPublicImage, err := myImageHandler.isPublicImage(vmReqInfo.ImageIID)
isPublicImage, err := imageHandler.isPublicImage(vmReqInfo.ImageIID)
if err != nil {
newErr := fmt.Errorf("Failed to Check Whether the Image is Public Image : [%v]", err)
cblogger.Error(newErr.Error())
Expand All @@ -139,7 +139,7 @@ func (vmHandler *NcpVMHandler) StartVM(vmReqInfo irs.VMReqInfo) (irs.VMInfo, err
publicImageId = vmReqInfo.ImageIID.SystemId
}

isPublicWindowsImage, err := myImageHandler.CheckWindowsImage(vmReqInfo.ImageIID)
isPublicWindowsImage, err := imageHandler.CheckWindowsImage(vmReqInfo.ImageIID)
if err != nil {
rtnErr := logAndReturnError(callLogInfo, "Failed to Check Whether the Image is MS Windows Image : ", err)
return irs.VMInfo{}, rtnErr
Expand All @@ -160,11 +160,11 @@ func (vmHandler *NcpVMHandler) StartVM(vmReqInfo irs.VMReqInfo) (irs.VMInfo, err
}
}
} else {
myImageHandler := NcpMyImageHandler{
imageHandler := NcpImageHandler{
RegionInfo: vmHandler.RegionInfo,
VMClient: vmHandler.VMClient,
}
isPublicImage, err := myImageHandler.isPublicImage(vmReqInfo.ImageIID)
isPublicImage, err := imageHandler.isPublicImage(vmReqInfo.ImageIID)
if err != nil {
newErr := fmt.Errorf("Failed to Check Whether the Image is Public Image : [%v]", err)
cblogger.Error(newErr.Error())
Expand All @@ -178,6 +178,10 @@ func (vmHandler *NcpVMHandler) StartVM(vmReqInfo irs.VMReqInfo) (irs.VMInfo, err
myImageId = vmReqInfo.ImageIID.SystemId
}

myImageHandler := NcpMyImageHandler{
RegionInfo: vmHandler.RegionInfo,
VMClient: vmHandler.VMClient,
}
isMyWindowsImage, err := myImageHandler.CheckWindowsImage(vmReqInfo.ImageIID)
if err != nil {
rtnErr := logAndReturnError(callLogInfo, "Failed to Check Whether My Image is MS Windows Image : ", err)
Expand Down Expand Up @@ -445,7 +449,7 @@ func (vmHandler *NcpVMHandler) mappingServerInfo(NcpInstance *server.ServerInsta
},
}

myImageHandler := NcpMyImageHandler{
imageHandler := NcpImageHandler{
RegionInfo: vmHandler.RegionInfo,
VMClient: vmHandler.VMClient,
}
Expand All @@ -454,7 +458,7 @@ func (vmHandler *NcpVMHandler) mappingServerInfo(NcpInstance *server.ServerInsta
vmInfo.ImageIId.SystemId = *NcpInstance.ServerDescription // Note!! : Since MyImage ID is not included in the 'NcpInstance' info
vmInfo.ImageIId.NameId = *NcpInstance.ServerDescription

isPublicImage, err := myImageHandler.isPublicImage(irs.IID{SystemId: *NcpInstance.ServerDescription}) // Caution!! : Not '*NcpInstance.ServerImageProductCode'
isPublicImage, err := imageHandler.isPublicImage(irs.IID{SystemId: *NcpInstance.ServerDescription}) // Caution!! : Not '*NcpInstance.ServerImageProductCode'
if err != nil {
newErr := fmt.Errorf("Failed to Check Whether the Image is Public Image : [%v]", err)
return irs.VMInfo{}, newErr
Expand Down
Loading

0 comments on commit 505c337

Please sign in to comment.