From 4108721116b72aceff379a2d41cbffaec4c93e54 Mon Sep 17 00:00:00 2001 From: innodreamer Date: Wed, 21 Feb 2024 17:15:12 +0900 Subject: [PATCH 1/4] Prevent an error due to abnormal result value of 'totalrows' --- .../drivers/ncpvpc/resources/VMHandler.go | 103 +++++++++--------- .../drivers/ncpvpc/resources/VPCHandler.go | 14 +-- 2 files changed, 60 insertions(+), 57 deletions(-) diff --git a/cloud-control-manager/cloud-driver/drivers/ncpvpc/resources/VMHandler.go b/cloud-control-manager/cloud-driver/drivers/ncpvpc/resources/VMHandler.go index 33802c811..ee65728be 100644 --- a/cloud-control-manager/cloud-driver/drivers/ncpvpc/resources/VMHandler.go +++ b/cloud-control-manager/cloud-driver/drivers/ncpvpc/resources/VMHandler.go @@ -268,11 +268,11 @@ func (vmHandler *NcpVpcVMHandler) StartVM(vmReqInfo irs.VMReqInfo) (irs.VMInfo, cblogger.Infof("# Waitting while Initializing New VM!!") time.Sleep(time.Second * 15) // Waitting Before Getting New VM Status Info!! - curStatus, errStatus := vmHandler.WaitToGetInfo(newVMIID) // # Waitting while Creating VM!!") - if errStatus != nil { - cblogger.Error(errStatus.Error()) - LoggingError(callLogInfo, errStatus) - return irs.VMInfo{}, errStatus + curStatus, statusErr := vmHandler.WaitToGetInfo(newVMIID) // # Waitting while Creating VM!!") + if statusErr != nil { + cblogger.Error(statusErr.Error()) + LoggingError(callLogInfo, statusErr) + return irs.VMInfo{}, statusErr } cblogger.Infof("==> VM [%s] status : [%s]", newVMIID.SystemId, curStatus) cblogger.Info("VM Creation Processes are Finished !!") @@ -332,9 +332,9 @@ func (vmHandler *NcpVpcVMHandler) GetVM(vmIID irs.IID) (irs.VMInfo, error) { /* newVMIID := irs.IID{SystemId: systemId} - curStatus, errStatus := vmHandler.WaitToGetInfo(newVMIID) - if errStatus != nil { - cblogger.Error(errStatus.Error()) + curStatus, statusErr := vmHandler.WaitToGetInfo(newVMIID) + if statusErr != nil { + cblogger.Error(statusErr.Error()) return irs.VMInfo{}, nil } */ @@ -353,7 +353,7 @@ func (vmHandler *NcpVpcVMHandler) GetVM(vmIID irs.IID) (irs.VMInfo, error) { } LoggingInfo(callLogInfo, start) - if *result.TotalRows < 1 { + if len(result.ServerInstanceList) < 1 { newErr := fmt.Errorf("Failed to Find the VM Info. The VM does Not Exist!!") cblogger.Error(newErr.Error()) LoggingError(callLogInfo, newErr) @@ -630,7 +630,7 @@ func (vmHandler *NcpVpcVMHandler) TerminateVM(vmIID irs.IID) (irs.VMStatus, erro cblogger.Info(runResult) // If the NCP instance has a 'Public IP', delete it after termination of the instance. - if ncloud.String(vmInfo.PublicIP) != nil { + if !strings.EqualFold(vmInfo.PublicIP, "") { // PublicIP 삭제 vmStatus, err := vmHandler.DeletePublicIP(vmInfo) if err != nil { @@ -660,9 +660,9 @@ func (vmHandler *NcpVpcVMHandler) TerminateVM(vmIID irs.IID) (irs.VMStatus, erro curRetryCnt := 0 maxRetryCnt := 15 for { - curStatus, errStatus := vmHandler.GetVMStatus(vmIID) - if errStatus != nil { - cblogger.Error(errStatus.Error()) + curStatus, statusErr := vmHandler.GetVMStatus(vmIID) + if statusErr != nil { + cblogger.Error(statusErr.Error()) } cblogger.Infof("===> VM Status : [%s]", curStatus) @@ -696,7 +696,7 @@ func (vmHandler *NcpVpcVMHandler) TerminateVM(vmIID irs.IID) (irs.VMStatus, erro cblogger.Info(runResult) // If the NCP instance has a 'Public IP', delete it after termination of the instance. - if ncloud.String(vmInfo.PublicIP) != nil { + if !strings.EqualFold(vmInfo.PublicIP, "") { // PublicIP 삭제 vmStatus, err := vmHandler.DeletePublicIP(vmInfo) if err != nil { @@ -803,7 +803,7 @@ func (vmHandler *NcpVpcVMHandler) GetVMStatus(vmIID irs.IID) (irs.VMStatus, erro } LoggingInfo(callLogInfo, callLogStart) - if *result.TotalRows < 1 { + if len(result.ServerInstanceList) < 1 { cblogger.Info("The VM instance does Not Exist!!") return irs.VMStatus("Not Exist!!"), nil //Caution!! } else { @@ -812,9 +812,9 @@ func (vmHandler *NcpVpcVMHandler) GetVMStatus(vmIID irs.IID) (irs.VMStatus, erro for _, vm := range result.ServerInstanceList { //*vm.ServerInstanceStatusName - vmStatus, errStatus := ConvertVMStatusString(*vm.ServerInstanceStatusName) + vmStatus, statusErr := ConvertVMStatusString(*vm.ServerInstanceStatusName) cblogger.Infof("VM Status of [%s] : [%s]", vmIID.SystemId, vmStatus) - return vmStatus, errStatus + return vmStatus, statusErr } return irs.VMStatus("Failed."), errors.New("Failed to Get the VM Status info!!") @@ -885,10 +885,10 @@ func (vmHandler *NcpVpcVMHandler) ListVM() ([]*irs.VMInfo, error) { for _, vm := range result.ServerInstanceList { cblogger.Infof("Inquiry of NCP VM Instance info : [%s]", *vm.ServerInstanceNo) - curStatus, errStatus := vmHandler.GetVMStatus(irs.IID{SystemId: *vm.ServerInstanceNo}) - if errStatus != nil { + curStatus, statusErr := vmHandler.GetVMStatus(irs.IID{SystemId: *vm.ServerInstanceNo}) + if statusErr != nil { cblogger.Errorf("Failed to Get the VM Status of VM : [%s]", *vm.ServerInstanceNo) - cblogger.Error(errStatus.Error()) + cblogger.Error(statusErr.Error()) } else { cblogger.Infof("Succeed in Getting the VM Status of [%s] : [%s]", *vm.ServerInstanceNo, curStatus) } @@ -943,7 +943,7 @@ func (vmHandler *NcpVpcVMHandler) MappingServerInfo(NcpInstance *vserver.ServerI cblogger.Error(newErr.Error()) return irs.VMInfo{}, newErr } - if *result.TotalRows < 1 { + if len(result.PublicIpInstanceList) < 1 { newErr := fmt.Errorf("Failed to Create Any Public IP!!") cblogger.Error(newErr.Error()) return irs.VMInfo{}, newErr @@ -970,7 +970,7 @@ func (vmHandler *NcpVpcVMHandler) MappingServerInfo(NcpInstance *vserver.ServerI cblogger.Error(newErr.Error()) return irs.VMInfo{}, newErr } - if *result.TotalRows < 1 { + if len(result.PublicIpInstanceList) < 1 { newErr := fmt.Errorf("Failed to Find Any PublicIpInstance!!") cblogger.Error(newErr.Error()) return irs.VMInfo{}, newErr @@ -1204,8 +1204,8 @@ func (vmHandler *NcpVpcVMHandler) CreateLinuxInitScript(imageIID irs.IID, keyPai newErr := fmt.Errorf("Failed to Create Linux type Cloud-Init Script : [%v]", err) cblogger.Error(newErr.Error()) return nil, newErr - } - if *result.TotalRows < 1 { + } + if len(result.InitScriptList) < 1 { newErr := fmt.Errorf("Failed to Create any Linux type Cloud-Init Script!!") cblogger.Error(newErr.Error()) return nil, newErr @@ -1255,8 +1255,8 @@ func (vmHandler *NcpVpcVMHandler) CreateWinInitScript(passWord string) (*string, newErr := fmt.Errorf("Failed to Create Windows Cloud-Init Script : [%v]", err) cblogger.Error(newErr.Error()) return nil, newErr - } - if *result.TotalRows < 1 { + } + if len(result.InitScriptList) < 1 { newErr := fmt.Errorf("Failed to Create any Windows Cloud-Init Script!!") cblogger.Error(newErr.Error()) return nil, newErr @@ -1300,10 +1300,10 @@ func (vmHandler *NcpVpcVMHandler) WaitToGetInfo(vmIID irs.IID) (irs.VMStatus, er maxRetryCnt := 500 for { - curStatus, errStatus := vmHandler.GetVMStatus(vmIID) - if errStatus != nil { + curStatus, statusErr := vmHandler.GetVMStatus(vmIID) + if statusErr != nil { cblogger.Errorf("Failed to Get the VM Status of [%s]", vmIID.SystemId) - cblogger.Error(errStatus.Error()) + cblogger.Error(statusErr.Error()) } else { cblogger.Infof("Succeeded in Getting the Status of VM [%s] : [%s]", vmIID.SystemId, curStatus) } @@ -1334,10 +1334,10 @@ func (vmHandler *NcpVpcVMHandler) WaitToDelPublicIp(vmIID irs.IID) (irs.VMStatus maxRetryCnt := 600 for { - curStatus, errStatus := vmHandler.GetVMStatus(vmIID) - if errStatus != nil { + curStatus, statusErr := vmHandler.GetVMStatus(vmIID) + if statusErr != nil { cblogger.Errorf("Failed to Get the VM Status of : [%s]", vmIID.SystemId) - cblogger.Error(errStatus.Error()) + cblogger.Error(statusErr.Error()) // return irs.VMStatus("Failed. "), errors.New("Failed to Get the VM Status.") // Caution!! } else { cblogger.Infof("Succeeded in Getting the VM Status of [%s]", vmIID.SystemId) @@ -1353,6 +1353,10 @@ func (vmHandler *NcpVpcVMHandler) WaitToDelPublicIp(vmIID irs.IID) (irs.VMStatus cblogger.Errorf("Despite waiting for a long time(%d sec), the VM status is '%s', so it is forcibly finishied.", maxRetryCnt, curStatus) return irs.VMStatus("Failed"), errors.New("Despite waiting for a long time, the VM status is 'Creating', so it is forcibly finishied.") } + + case "Not Exist!!": // Caution!! + break + default: cblogger.Infof("===>### The VM Termination is finished, so stopping the waiting.") return irs.VMStatus(curStatus), nil @@ -1365,24 +1369,22 @@ func (vmHandler *NcpVpcVMHandler) DeletePublicIP(vmInfo irs.VMInfo) (irs.VMStatu cblogger.Info("NCPVPC Cloud driver: called DeletePublicIP()!") var publicIPId string - for _, keyInfo := range vmInfo.KeyValueList { if keyInfo.Key == "PublicIpID" { publicIPId = keyInfo.Value break } } - cblogger.Infof("vmInfo.PublicIP : [%s]", vmInfo.PublicIP) cblogger.Infof("publicIPId : [%s]", publicIPId) //========================================= // Wait for that the VM is terminated //========================================= - curStatus, errStatus := vmHandler.WaitToDelPublicIp(vmInfo.IId) - if errStatus != nil { - cblogger.Error(errStatus.Error()) - // return irs.VMStatus("Failed. "), errStatus // Caution!! + curStatus, statusErr := vmHandler.WaitToDelPublicIp(vmInfo.IId) + if statusErr != nil { + cblogger.Error(statusErr.Error()) + // return irs.VMStatus("Failed. "), statusErr // Caution!! } cblogger.Infof("==> VM status of [%s] : [%s]", vmInfo.IId.NameId, curStatus) @@ -1396,12 +1398,6 @@ func (vmHandler *NcpVpcVMHandler) DeletePublicIP(vmInfo irs.VMInfo) (irs.VMStatu cblogger.Error(newErr.Error()) cblogger.Error(*result.ReturnMessage) return irs.VMStatus("Failed. "), newErr - } - - if *result.TotalRows < 1 { - newErr := fmt.Errorf("Failed to Delete any Public IP of the VM instance.") - cblogger.Error(newErr.Error()) - return irs.VMStatus("Failed. "), newErr } else { cblogger.Infof("Succeed in Deleting the PublicIP of the instance. : [%s]", vmInfo.PublicIP) } @@ -1428,8 +1424,7 @@ func (vmHandler *NcpVpcVMHandler) GetVmRootDiskInfo(vmId *string) (*string, *str cblogger.Error(newErr.Error()) return nil, nil, newErr } - - if *storageResult.TotalRows < 1 { + if len(storageResult.BlockStorageInstanceList) < 1 { newErr := fmt.Errorf("Failed to Get any BlockStorage Info!! : [%v]", err) cblogger.Error(newErr.Error()) return nil, nil, newErr @@ -1469,7 +1464,7 @@ func (vmHandler *NcpVpcVMHandler) GetVmDataDiskList(vmId *string) ([]irs.IID, er return nil, newErr } - if *storageResult.TotalRows < 1 { + if len(storageResult.BlockStorageInstanceList) < 1 { newErr := fmt.Errorf("Failed to Get any BlockStorage Info!! : [%v]", err) cblogger.Error(newErr.Error()) return nil, newErr @@ -1507,7 +1502,7 @@ func (vmHandler *NcpVpcVMHandler) GetNetworkInterfaceName(netInterfaceNo *string return nil, newErr } - if *netResult.TotalRows < 1 { + if len(netResult.NetworkInterfaceList) < 1 { newErr := fmt.Errorf("Failed to Get any NetworkInterface Info with the Network Interface ID!! : [%v]", err) cblogger.Error(newErr.Error()) return nil, newErr @@ -1544,7 +1539,7 @@ func (vmHandler *NcpVpcVMHandler) GetVmIdByName(vmNameId string) (string, error) // Search by Name in the VM list var vmId string - if *instanceResult.TotalRows < 1 { + if len(instanceResult.ServerInstanceList) < 1 { cblogger.Info("### VM Instance does Not Exist on NCP VPC!!") } else { cblogger.Info("Succeeded in Getting VM Instance List from NCP VPC.") @@ -1587,7 +1582,7 @@ func (vmHandler *NcpVpcVMHandler) GetNcpVMInfo(instanceId string) (*vserver.Serv } LoggingInfo(callLogInfo, callLogStart) - if *instanceResult.TotalRows < 1 { + if len(instanceResult.ServerInstanceList) < 1 { newErr := fmt.Errorf("Failed to Find Any NCP VPC VM Instance Info!!") cblogger.Error(newErr.Error()) LoggingError(callLogInfo, newErr) @@ -1619,5 +1614,13 @@ func (vmHandler *NcpVpcVMHandler) GetRootPassword(vmId *string, privateKey *stri cblogger.Error(newErr.Error()) return nil, newErr } + if strings.EqualFold(*result.RootPassword, "") { + newErr := fmt.Errorf("Failed to Get the Root Password of the VM!!") + cblogger.Error(newErr.Error()) + return nil, newErr + } else { + cblogger.Info("Succeeded in Getting the Root Password of the VM!!") + } + return result.RootPassword, nil } diff --git a/cloud-control-manager/cloud-driver/drivers/ncpvpc/resources/VPCHandler.go b/cloud-control-manager/cloud-driver/drivers/ncpvpc/resources/VPCHandler.go index 2c3d209cf..fa72f493a 100644 --- a/cloud-control-manager/cloud-driver/drivers/ncpvpc/resources/VPCHandler.go +++ b/cloud-control-manager/cloud-driver/drivers/ncpvpc/resources/VPCHandler.go @@ -84,7 +84,7 @@ func (vpcHandler *NcpVpcVPCHandler) CreateVPC(vpcReqInfo irs.VPCReqInfo) (irs.VP } LoggingInfo(callLogInfo, callLogStart) - if *vpcResult.TotalRows < 1 { + if len(vpcResult.VpcList) < 1 { newErr := fmt.Errorf("Failed to Create any VPC. Neww VPC does Not Exist!!") cblogger.Error(newErr.Error()) LoggingError(callLogInfo, newErr) @@ -189,7 +189,7 @@ func (vpcHandler *NcpVpcVPCHandler) ListVPC() ([]*irs.VPCInfo, error) { LoggingInfo(callLogInfo, callLogStart) var vpcInfoList []*irs.VPCInfo - if *result.TotalRows < 1 { + if len(result.VpcList) < 1 { cblogger.Info("### VPC does Not Exist!!") } else { for _, vpc := range result.VpcList { @@ -265,7 +265,7 @@ func (vpcHandler *NcpVpcVPCHandler) GetNcpVpcInfo(vpcId *string) (*vpc.Vpc, erro } LoggingInfo(callLogInfo, callLogStart) - if *result.TotalRows < 1 { + if len(result.VpcList) < 1 { newErr := fmt.Errorf("Failed to Find Any VPC Info with the ID!!") cblogger.Error(newErr.Error()) LoggingError(callLogInfo, newErr) @@ -571,7 +571,7 @@ func (vpcHandler *NcpVpcVPCHandler) CreateSubnet(vpcIID irs.IID, netAclNo *strin } LoggingInfo(callLogInfo, callLogStart) - if *subnet.TotalRows < 1 { + if len(subnet.SubnetList) < 1 { newErr := fmt.Errorf("Failed to Create the Subnet. New Subnet does Not Exist!!") cblogger.Error(newErr.Error()) LoggingError(callLogInfo, newErr) @@ -609,7 +609,7 @@ func (vpcHandler *NcpVpcVPCHandler) GetNcpSubnetInfo(sunbnetId *string) (*vpc.Su } LoggingInfo(callLogInfo, callLogStart) - if *result.TotalRows < 1 { + if len(result.SubnetList) < 1 { newErr := fmt.Errorf("Failed to Get any Subnet Info with the ID!!") cblogger.Error(newErr.Error()) LoggingError(callLogInfo, newErr) @@ -643,7 +643,7 @@ func (vpcHandler *NcpVpcVPCHandler) ListSubnet(vpcNo *string) ([]*irs.SubnetInfo } var subnetInfoList []*irs.SubnetInfo - if *result.TotalRows < 1 { + if len(result.SubnetList) < 1 { cblogger.Infof("### The VPC has No Subnet!!") } else { cblogger.Infof("Succeeded in Getting SubnetList!! : ") @@ -688,7 +688,7 @@ func (vpcHandler *NcpVpcVPCHandler) GetDefaultNetworkAclNo(vpcIID irs.IID) (*str LoggingInfo(callLogInfo, callLogStart) var netACLNo *string - if *netAclResult.TotalRows < 1 { + if len(netAclResult.NetworkAclList) < 1 { cblogger.Info("# NetworkACL does Not Exist!!") } else { for _, netACL := range netAclResult.NetworkAclList { From ca5bb62cb5b1d3f13b1d8e36942d1d45c894bd1a Mon Sep 17 00:00:00 2001 From: innodreamer Date: Wed, 21 Feb 2024 18:14:35 +0900 Subject: [PATCH 2/4] Prevent the state as '~ instance does Not Exist' during VM Termination --- .../cloud-driver/drivers/ncpvpc/resources/VMHandler.go | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/cloud-control-manager/cloud-driver/drivers/ncpvpc/resources/VMHandler.go b/cloud-control-manager/cloud-driver/drivers/ncpvpc/resources/VMHandler.go index ee65728be..1393a6a28 100644 --- a/cloud-control-manager/cloud-driver/drivers/ncpvpc/resources/VMHandler.go +++ b/cloud-control-manager/cloud-driver/drivers/ncpvpc/resources/VMHandler.go @@ -631,7 +631,6 @@ func (vmHandler *NcpVpcVMHandler) TerminateVM(vmIID irs.IID) (irs.VMStatus, erro // If the NCP instance has a 'Public IP', delete it after termination of the instance. if !strings.EqualFold(vmInfo.PublicIP, "") { - // PublicIP 삭제 vmStatus, err := vmHandler.DeletePublicIP(vmInfo) if err != nil { cblogger.Error(err) @@ -697,7 +696,6 @@ func (vmHandler *NcpVpcVMHandler) TerminateVM(vmIID irs.IID) (irs.VMStatus, erro // If the NCP instance has a 'Public IP', delete it after termination of the instance. if !strings.EqualFold(vmInfo.PublicIP, "") { - // PublicIP 삭제 vmStatus, err := vmHandler.DeletePublicIP(vmInfo) if err != nil { cblogger.Error(err) @@ -1354,8 +1352,8 @@ func (vmHandler *NcpVpcVMHandler) WaitToDelPublicIp(vmIID irs.IID) (irs.VMStatus return irs.VMStatus("Failed"), errors.New("Despite waiting for a long time, the VM status is 'Creating', so it is forcibly finishied.") } - case "Not Exist!!": // Caution!! - break + case "Not Exist!!": + return irs.VMStatus(curStatus), nil default: cblogger.Infof("===>### The VM Termination is finished, so stopping the waiting.") From bc6930d7ca4f9b3d79ad09f1549aa00eb91654b8 Mon Sep 17 00:00:00 2001 From: innodreamer Date: Wed, 21 Feb 2024 18:29:02 +0900 Subject: [PATCH 3/4] Add NCP VPC default VMImage and VMSpec info for AdminWeb --- api-runtime/rest-runtime/admin-web/AdminWeb-VM.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/api-runtime/rest-runtime/admin-web/AdminWeb-VM.go b/api-runtime/rest-runtime/admin-web/AdminWeb-VM.go index 495653ced..f29d330ce 100644 --- a/api-runtime/rest-runtime/admin-web/AdminWeb-VM.go +++ b/api-runtime/rest-runtime/admin-web/AdminWeb-VM.go @@ -558,6 +558,9 @@ func VM(c echo.Context) error { case "NCP": imageName = "SPSW0LINUX000130" specName = "SPSVRHICPUSSD002" + case "NCPVPC": + imageName = "SW.VSVR.OS.LNX64.UBNTU.SVR1804.B050" + specName = "SVR.VSVR.HICPU.C004.M008.NET.SSD.B050.G002" case "KTCLOUD": imageName = "97ef0091-fdf7-44e9-be79-c99dc9b1a0ad" specName = "d3530ad2-462b-43ad-97d5-e1087b952b7d!87c0a6f6-c684-4fbe-a393-d8412bcf788d_disk100GB" From 549aa5500c5f7e82efd725733a7d28eaae897b79 Mon Sep 17 00:00:00 2001 From: innodreamer Date: Wed, 21 Feb 2024 21:36:16 +0900 Subject: [PATCH 4/4] Prevent the state as '~ instance does Not Exist' during VM Termination --- .../drivers/ncpvpc/resources/VMHandler.go | 47 +++++++++++-------- 1 file changed, 28 insertions(+), 19 deletions(-) diff --git a/cloud-control-manager/cloud-driver/drivers/ncpvpc/resources/VMHandler.go b/cloud-control-manager/cloud-driver/drivers/ncpvpc/resources/VMHandler.go index 1393a6a28..00bcd39eb 100644 --- a/cloud-control-manager/cloud-driver/drivers/ncpvpc/resources/VMHandler.go +++ b/cloud-control-manager/cloud-driver/drivers/ncpvpc/resources/VMHandler.go @@ -384,8 +384,9 @@ func (vmHandler *NcpVpcVMHandler) SuspendVM(vmIID irs.IID) (irs.VMStatus, error) vmStatus, err := vmHandler.GetVMStatus(vmIID) if err != nil { - cblogger.Errorf("Failed to Get the VM Status of [%s]", vmIID.SystemId) - cblogger.Error(err) + newErr := fmt.Errorf("Failed to Get the VM Status with the VM ID : [%s], [%v]", vmIID.SystemId, err) + cblogger.Debug(newErr.Error()) + return irs.VMStatus("Failed"), newErr } else { cblogger.Infof("Succeed in Getting the VM Status of [%s] : [%s]", vmIID.SystemId, vmStatus) } @@ -449,8 +450,9 @@ func (vmHandler *NcpVpcVMHandler) ResumeVM(vmIID irs.IID) (irs.VMStatus, error) vmStatus, err := vmHandler.GetVMStatus(vmIID) if err != nil { - cblogger.Errorf("Failed to Get the VM Status of [%s]", vmIID.SystemId) - cblogger.Error(err) + newErr := fmt.Errorf("Failed to Get the VM Status with the VM ID : [%s], [%v]", vmIID.SystemId, err) + cblogger.Debug(newErr.Error()) + return irs.VMStatus("Failed"), newErr } else { cblogger.Infof("Succeed in Getting the VM Status of [%s] : [%s]", vmIID.SystemId, vmStatus) } @@ -521,8 +523,9 @@ func (vmHandler *NcpVpcVMHandler) RebootVM(vmIID irs.IID) (irs.VMStatus, error) vmStatus, err := vmHandler.GetVMStatus(vmIID) if err != nil { - cblogger.Errorf("Failed to Get the VM Status of [%s]", vmIID.SystemId) - cblogger.Error(err) + newErr := fmt.Errorf("Failed to Get the VM Status with the VM ID : [%s], [%v]", vmIID.SystemId, err) + cblogger.Debug(newErr.Error()) + return irs.VMStatus("Failed"), newErr } else { cblogger.Infof("Succeed in Getting the VM Status of [%s] : [%s]", vmIID.SystemId, vmStatus) } @@ -594,9 +597,9 @@ func (vmHandler *NcpVpcVMHandler) TerminateVM(vmIID irs.IID) (irs.VMStatus, erro vmStatus, err := vmHandler.GetVMStatus(vmIID) if err != nil { - LoggingError(callLogInfo, err) - cblogger.Errorf("Failed to Get the VM Status of [%s]", vmIID.SystemId) - cblogger.Error(err) + newErr := fmt.Errorf("Failed to Get the VM Status with the VM ID : [%s], [%v]", vmIID.SystemId, err) + cblogger.Error(newErr.Error()) + return irs.VMStatus("Failed"), newErr } else { cblogger.Infof("Succeed in Getting the VM Status of [%s] : [%s]", vmIID.SystemId, vmStatus) } @@ -705,10 +708,15 @@ func (vmHandler *NcpVpcVMHandler) TerminateVM(vmIID irs.IID) (irs.VMStatus, erro return irs.VMStatus("Terminating"), nil + case "Not Exist!!": + newErr := fmt.Errorf("The VM instance does Not Exist!!") + cblogger.Error(newErr.Error()) + return irs.VMStatus("Failed to Terminate!!"), newErr + default: - resultStatus := "The VM status is not 'Running' or 'Suspended' yet. so it Can NOT be Terminated!! Run or Suspend the VM before terminating." - cblogger.Error(resultStatus) - return irs.VMStatus("Failed. " + resultStatus), err + newErr := fmt.Errorf("The VM status is not 'Running' or 'Suspended' yet. so it Can NOT be Terminated!! Run or Suspend the VM before terminating.") + cblogger.Error(newErr.Error()) + return irs.VMStatus("Failed to Terminate!!"), newErr } } @@ -802,8 +810,9 @@ func (vmHandler *NcpVpcVMHandler) GetVMStatus(vmIID irs.IID) (irs.VMStatus, erro LoggingInfo(callLogInfo, callLogStart) if len(result.ServerInstanceList) < 1 { - cblogger.Info("The VM instance does Not Exist!!") - return irs.VMStatus("Not Exist!!"), nil //Caution!! + newErr := fmt.Errorf("The VM instance does Not Exist!!") + cblogger.Debug(newErr.Error()) + return irs.VMStatus("Not Exist!!"), newErr } else { cblogger.Info("Succeeded in Getting ServerInstanceList from NCP VPC!!") } @@ -1334,9 +1343,9 @@ func (vmHandler *NcpVpcVMHandler) WaitToDelPublicIp(vmIID irs.IID) (irs.VMStatus for { curStatus, statusErr := vmHandler.GetVMStatus(vmIID) if statusErr != nil { - cblogger.Errorf("Failed to Get the VM Status of : [%s]", vmIID.SystemId) - cblogger.Error(statusErr.Error()) - // return irs.VMStatus("Failed. "), errors.New("Failed to Get the VM Status.") // Caution!! + newErr := fmt.Errorf("Failed to Get the VM Status with the VM ID : [%s], [%v]", vmIID.SystemId, statusErr) + cblogger.Debug(newErr.Error()) + return irs.VMStatus("Not Exist!!"), newErr } else { cblogger.Infof("Succeeded in Getting the VM Status of [%s]", vmIID.SystemId) } @@ -1381,8 +1390,8 @@ func (vmHandler *NcpVpcVMHandler) DeletePublicIP(vmInfo irs.VMInfo) (irs.VMStatu //========================================= curStatus, statusErr := vmHandler.WaitToDelPublicIp(vmInfo.IId) if statusErr != nil { - cblogger.Error(statusErr.Error()) - // return irs.VMStatus("Failed. "), statusErr // Caution!! + cblogger.Debug(statusErr.Error()) + // return irs.VMStatus("Failed. "), statusErr // Caution!! For in case 'VM instance does Not Exist' after VM Termination finished } cblogger.Infof("==> VM status of [%s] : [%s]", vmInfo.IId.NameId, curStatus)