fix: vmware sync os info may override os distribution and ip (#17979)

Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
This commit is contained in:
Jian Qiu
2023-09-10 23:38:37 +08:00
committed by GitHub
co-authored by Qiu Jian
parent a6ac366804
commit 3f6857242e
22 changed files with 258 additions and 221 deletions
+1 -1
View File
@@ -83,7 +83,7 @@ require (
k8s.io/client-go v0.19.3
k8s.io/cluster-bootstrap v0.19.3
moul.io/http2curl/v2 v2.3.0
yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230904084148-c98f51a511c0
yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230910053442-8d45e74f111b
yunion.io/x/executor v0.0.0-20230705125604-c5ac3141db32
yunion.io/x/jsonutils v1.0.1-0.20230613121553-0f3b41e2ef19
yunion.io/x/log v1.0.1-0.20230411060016-feb3f46ab361
+2 -2
View File
@@ -1174,8 +1174,8 @@ sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK
sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o=
sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q=
sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc=
yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230904084148-c98f51a511c0 h1:Xr/uiR0SjP5CPlAkJZAsJ6trL0wsJP7yRFQUpqKE5jM=
yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230904084148-c98f51a511c0/go.mod h1:2sgCN7nRPQL3woLfdgqLDd92vwAHqtlz3KKiHxC5BAw=
yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230910053442-8d45e74f111b h1:Kw1gNCTZ0uED77s051x7n1RyiEha5hltoF/5hxHRmAI=
yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230910053442-8d45e74f111b/go.mod h1:2sgCN7nRPQL3woLfdgqLDd92vwAHqtlz3KKiHxC5BAw=
yunion.io/x/executor v0.0.0-20230705125604-c5ac3141db32 h1:v7POYkQwo1XzOxBoIoRVr/k0V9Y5JyjpshlIFa9raug=
yunion.io/x/executor v0.0.0-20230705125604-c5ac3141db32/go.mod h1:Uxuou9WQIeJXNpy7t2fPLL0BYLvLiMvGQwY7Qc6aSws=
yunion.io/x/jsonutils v0.0.0-20190625054549-a964e1e8a051/go.mod h1:4N0/RVzsYL3kH3WE/H1BjUQdFiWu50JGCFQuuy+Z634=
+1 -1
View File
@@ -83,7 +83,7 @@ func (self *SAliyunGuestDriver) GetStorageTypes() []string {
}
func (self *SAliyunGuestDriver) ChooseHostStorage(host *models.SHost, guest *models.SGuest, diskConfig *api.DiskConfig, storageIds []string) (*models.SStorage, error) {
return self.chooseHostStorage(self, host, diskConfig.Backend, storageIds), nil
return chooseHostStorage(self, host, diskConfig.Backend, storageIds), nil
}
func (self *SAliyunGuestDriver) GetDetachDiskStatus() ([]string, error) {
+1 -1
View File
@@ -164,7 +164,7 @@ func (self *SAwsGuestDriver) GetStorageTypes() []string {
}
func (self *SAwsGuestDriver) ChooseHostStorage(host *models.SHost, guest *models.SGuest, diskConfig *api.DiskConfig, storageIds []string) (*models.SStorage, error) {
return self.chooseHostStorage(self, host, diskConfig.Backend, storageIds), nil
return chooseHostStorage(self, host, diskConfig.Backend, storageIds), nil
}
func (self *SAwsGuestDriver) GetDetachDiskStatus() ([]string, error) {
+1 -1
View File
@@ -79,7 +79,7 @@ func (self *SAzureGuestDriver) GetStorageTypes() []string {
}
func (self *SAzureGuestDriver) ChooseHostStorage(host *models.SHost, guest *models.SGuest, diskConfig *api.DiskConfig, storageIds []string) (*models.SStorage, error) {
return self.chooseHostStorage(self, host, diskConfig.Backend, storageIds), nil
return chooseHostStorage(self, host, diskConfig.Backend, storageIds), nil
}
func (self *SAzureGuestDriver) GetMaxSecurityGroupCount() int {
+106 -102
View File
@@ -57,11 +57,11 @@ type SBaseGuestDriver struct {
SBaseGuestScheduleDriver
}
func (self *SBaseGuestDriver) IsAllowSaveImageOnRunning() bool {
func (drv *SBaseGuestDriver) IsAllowSaveImageOnRunning() bool {
return false
}
func (self *SBaseGuestDriver) StartGuestCreateTask(guest *models.SGuest, ctx context.Context, userCred mcclient.TokenCredential, data *jsonutils.JSONDict, pendingUsage quotas.IQuota, parentTaskId string) error {
func (drv *SBaseGuestDriver) StartGuestCreateTask(guest *models.SGuest, ctx context.Context, userCred mcclient.TokenCredential, data *jsonutils.JSONDict, pendingUsage quotas.IQuota, parentTaskId string) error {
task, err := taskman.TaskManager.NewTask(ctx, "GuestCreateTask", guest, userCred, data, parentTaskId, "", pendingUsage)
if err != nil {
return err
@@ -70,7 +70,7 @@ func (self *SBaseGuestDriver) StartGuestCreateTask(guest *models.SGuest, ctx con
return nil
}
func (self *SBaseGuestDriver) OnGuestCreateTaskComplete(ctx context.Context, guest *models.SGuest, task taskman.ITask) error {
func (drv *SBaseGuestDriver) OnGuestCreateTaskComplete(ctx context.Context, guest *models.SGuest, task taskman.ITask) error {
duration, _ := task.GetParams().GetString("duration")
if len(duration) > 0 {
bc, err := billing.ParseBillingCycle(duration)
@@ -95,7 +95,7 @@ func (self *SBaseGuestDriver) OnGuestCreateTaskComplete(ctx context.Context, gue
}
}
func (self *SBaseGuestDriver) StartDeleteGuestTask(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest, params *jsonutils.JSONDict, parentTaskId string) error {
func (drv *SBaseGuestDriver) StartDeleteGuestTask(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest, params *jsonutils.JSONDict, parentTaskId string) error {
task, err := taskman.TaskManager.NewTask(ctx, "GuestDeleteTask", guest, userCred, params, parentTaskId, "", nil)
if err != nil {
return err
@@ -104,114 +104,114 @@ func (self *SBaseGuestDriver) StartDeleteGuestTask(ctx context.Context, userCred
return nil
}
func (self *SBaseGuestDriver) ValidateImage(ctx context.Context, image *cloudprovider.SImage) error {
func (drv *SBaseGuestDriver) ValidateImage(ctx context.Context, image *cloudprovider.SImage) error {
return nil
}
func (self *SBaseGuestDriver) RequestDetachDisksFromGuestForDelete(ctx context.Context, guest *models.SGuest, task taskman.ITask) error {
func (drv *SBaseGuestDriver) RequestDetachDisksFromGuestForDelete(ctx context.Context, guest *models.SGuest, task taskman.ITask) error {
task.ScheduleRun(nil)
return nil
}
func (self *SBaseGuestDriver) OnDeleteGuestFinalCleanup(ctx context.Context, guest *models.SGuest, userCred mcclient.TokenCredential) error {
func (drv *SBaseGuestDriver) OnDeleteGuestFinalCleanup(ctx context.Context, guest *models.SGuest, userCred mcclient.TokenCredential) error {
return guest.DeleteAllDisksInDB(ctx, userCred)
}
func (self *SBaseGuestDriver) RequestDetachDisk(ctx context.Context, guest *models.SGuest, disk *models.SDisk, task taskman.ITask) error {
func (drv *SBaseGuestDriver) RequestDetachDisk(ctx context.Context, guest *models.SGuest, disk *models.SDisk, task taskman.ITask) error {
task.ScheduleRun(nil)
return nil
}
func (self *SBaseGuestDriver) RequestAttachDisk(ctx context.Context, guest *models.SGuest, disk *models.SDisk, task taskman.ITask) error {
func (drv *SBaseGuestDriver) RequestAttachDisk(ctx context.Context, guest *models.SGuest, disk *models.SDisk, task taskman.ITask) error {
task.ScheduleRun(nil)
return nil
}
func (self *SBaseGuestDriver) RequestOpenForward(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest, req *guestdriver_types.OpenForwardRequest) (*guestdriver_types.OpenForwardResponse, error) {
func (drv *SBaseGuestDriver) RequestOpenForward(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest, req *guestdriver_types.OpenForwardRequest) (*guestdriver_types.OpenForwardResponse, error) {
return nil, cloudprovider.ErrNotImplemented
}
func (self *SBaseGuestDriver) RequestListForward(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest, req *guestdriver_types.ListForwardRequest) (*guestdriver_types.ListForwardResponse, error) {
func (drv *SBaseGuestDriver) RequestListForward(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest, req *guestdriver_types.ListForwardRequest) (*guestdriver_types.ListForwardResponse, error) {
return nil, cloudprovider.ErrNotImplemented
}
func (self *SBaseGuestDriver) RequestCloseForward(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest, req *guestdriver_types.CloseForwardRequest) (*guestdriver_types.CloseForwardResponse, error) {
func (drv *SBaseGuestDriver) RequestCloseForward(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest, req *guestdriver_types.CloseForwardRequest) (*guestdriver_types.CloseForwardResponse, error) {
return nil, cloudprovider.ErrNotImplemented
}
func (self *SBaseGuestDriver) RequestSaveImage(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest, task taskman.ITask) error {
func (drv *SBaseGuestDriver) RequestSaveImage(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest, task taskman.ITask) error {
return errors.Wrapf(cloudprovider.ErrNotImplemented, "RequestSaveImage")
}
func (self *SBaseGuestDriver) RequestGuestCreateAllDisks(ctx context.Context, guest *models.SGuest, task taskman.ITask) error {
func (drv *SBaseGuestDriver) RequestGuestCreateAllDisks(ctx context.Context, guest *models.SGuest, task taskman.ITask) error {
return fmt.Errorf("Not Implement")
}
func (self *SBaseGuestDriver) GetDetachDiskStatus() ([]string, error) {
func (drv *SBaseGuestDriver) GetDetachDiskStatus() ([]string, error) {
return []string{}, fmt.Errorf("This Guest driver dose not implement GetDetachDiskStatus")
}
func (self *SBaseGuestDriver) GetAttachDiskStatus() ([]string, error) {
func (drv *SBaseGuestDriver) GetAttachDiskStatus() ([]string, error) {
return []string{}, fmt.Errorf("This Guest driver dose not implement GetAttachDiskStatus")
}
func (self *SBaseGuestDriver) GetRebuildRootStatus() ([]string, error) {
func (drv *SBaseGuestDriver) GetRebuildRootStatus() ([]string, error) {
return []string{}, fmt.Errorf("This Guest driver dose not implement GetRebuildRootStatus")
}
func (self *SBaseGuestDriver) IsRebuildRootSupportChangeImage() bool {
func (drv *SBaseGuestDriver) IsRebuildRootSupportChangeImage() bool {
return true
}
func (self *SBaseGuestDriver) IsRebuildRootSupportChangeUEFI() bool {
func (drv *SBaseGuestDriver) IsRebuildRootSupportChangeUEFI() bool {
return true
}
func (self *SBaseGuestDriver) GetChangeConfigStatus(guest *models.SGuest) ([]string, error) {
func (drv *SBaseGuestDriver) GetChangeConfigStatus(guest *models.SGuest) ([]string, error) {
return []string{}, fmt.Errorf("This Guest driver dose not implement GetChangeConfigStatus")
}
func (self *SBaseGuestDriver) ValidateChangeConfig(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest, cpuChanged bool, memChanged bool, newDisks []*api.DiskConfig) error {
func (drv *SBaseGuestDriver) ValidateChangeConfig(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest, cpuChanged bool, memChanged bool, newDisks []*api.DiskConfig) error {
return nil
}
func (self *SBaseGuestDriver) ValidateDetachDisk(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest, disk *models.SDisk) error {
func (drv *SBaseGuestDriver) ValidateDetachDisk(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest, disk *models.SDisk) error {
return nil
}
func (self *SBaseGuestDriver) ValidateCreateEip(ctx context.Context, userCred mcclient.TokenCredential, input api.ServerCreateEipInput) error {
func (drv *SBaseGuestDriver) ValidateCreateEip(ctx context.Context, userCred mcclient.TokenCredential, input api.ServerCreateEipInput) error {
return httperrors.NewInputParameterError("Not Implement ValidateCreateEip")
}
func (self *SBaseGuestDriver) ValidateResizeDisk(guest *models.SGuest, disk *models.SDisk, storage *models.SStorage) error {
func (drv *SBaseGuestDriver) ValidateResizeDisk(guest *models.SGuest, disk *models.SDisk, storage *models.SStorage) error {
return fmt.Errorf("This Guest driver dose not implement ValidateResizeDisk")
}
func (self *SBaseGuestDriver) GetDeployStatus() ([]string, error) {
func (drv *SBaseGuestDriver) GetDeployStatus() ([]string, error) {
return []string{}, fmt.Errorf("This Guest driver dose not implement GetDeployStatus")
}
func (self *SBaseGuestDriver) IsNeedRestartForResetLoginInfo() bool {
func (drv *SBaseGuestDriver) IsNeedRestartForResetLoginInfo() bool {
return true
}
func (self *SBaseGuestDriver) RequestDeleteDetachedDisk(ctx context.Context, disk *models.SDisk, task taskman.ITask, isPurge bool) error {
func (drv *SBaseGuestDriver) RequestDeleteDetachedDisk(ctx context.Context, disk *models.SDisk, task taskman.ITask, isPurge bool) error {
return fmt.Errorf("Not Implement")
}
func (self *SBaseGuestDriver) RequestSuspendOnHost(ctx context.Context, guest *models.SGuest, task taskman.ITask) error {
func (drv *SBaseGuestDriver) RequestSuspendOnHost(ctx context.Context, guest *models.SGuest, task taskman.ITask) error {
return fmt.Errorf("Not Implement")
}
func (self *SBaseGuestDriver) RequestResumeOnHost(ctx context.Context, guest *models.SGuest, task taskman.ITask) error {
func (drv *SBaseGuestDriver) RequestResumeOnHost(ctx context.Context, guest *models.SGuest, task taskman.ITask) error {
return fmt.Errorf("Not Implement")
}
func (self *SBaseGuestDriver) StartGuestResetTask(guest *models.SGuest, ctx context.Context, userCred mcclient.TokenCredential, isHard bool, parentTaskId string) error {
func (drv *SBaseGuestDriver) StartGuestResetTask(guest *models.SGuest, ctx context.Context, userCred mcclient.TokenCredential, isHard bool, parentTaskId string) error {
return fmt.Errorf("Not Implement")
}
func (self *SBaseGuestDriver) StartGuestRestartTask(guest *models.SGuest, ctx context.Context, userCred mcclient.TokenCredential, isForce bool, parentTaskId string) error {
func (drv *SBaseGuestDriver) StartGuestRestartTask(guest *models.SGuest, ctx context.Context, userCred mcclient.TokenCredential, isForce bool, parentTaskId string) error {
data := jsonutils.NewDict()
data.Set("is_force", jsonutils.NewBool(isForce))
if err := guest.SetStatus(userCred, api.VM_STOPPING, ""); err != nil {
@@ -225,248 +225,248 @@ func (self *SBaseGuestDriver) StartGuestRestartTask(guest *models.SGuest, ctx co
return nil
}
func (self *SBaseGuestDriver) RequestSoftReset(ctx context.Context, guest *models.SGuest, task taskman.ITask) error {
func (drv *SBaseGuestDriver) RequestSoftReset(ctx context.Context, guest *models.SGuest, task taskman.ITask) error {
return fmt.Errorf("Not Implement")
}
func (self *SBaseGuestDriver) AllowReconfigGuest() bool {
func (drv *SBaseGuestDriver) AllowReconfigGuest() bool {
return true
}
func (self *SBaseGuestDriver) DoGuestCreateDisksTask(ctx context.Context, guest *models.SGuest, task taskman.ITask) error {
func (drv *SBaseGuestDriver) DoGuestCreateDisksTask(ctx context.Context, guest *models.SGuest, task taskman.ITask) error {
return fmt.Errorf("Not Implement")
}
func (self *SBaseGuestDriver) RequestChangeVmConfig(ctx context.Context, guest *models.SGuest, task taskman.ITask, instanceType string, vcpuCount, vmemSize int64) error {
func (drv *SBaseGuestDriver) RequestChangeVmConfig(ctx context.Context, guest *models.SGuest, task taskman.ITask, instanceType string, vcpuCount, vmemSize int64) error {
return fmt.Errorf("Not Implement")
}
func (self *SBaseGuestDriver) NeedRequestGuestHotAddIso(ctx context.Context, guest *models.SGuest) bool {
func (drv *SBaseGuestDriver) NeedRequestGuestHotAddIso(ctx context.Context, guest *models.SGuest) bool {
return false
}
func (self *SBaseGuestDriver) RequestGuestHotAddIso(ctx context.Context, guest *models.SGuest, path string, boot bool, task taskman.ITask) error {
func (drv *SBaseGuestDriver) RequestGuestHotAddIso(ctx context.Context, guest *models.SGuest, path string, boot bool, task taskman.ITask) error {
return fmt.Errorf("Not Implement")
}
func (self *SBaseGuestDriver) RequestGuestHotRemoveIso(ctx context.Context, guest *models.SGuest, task taskman.ITask) error {
func (drv *SBaseGuestDriver) RequestGuestHotRemoveIso(ctx context.Context, guest *models.SGuest, task taskman.ITask) error {
return fmt.Errorf("Not Implement")
}
func (self *SBaseGuestDriver) RequestRebuildRootDisk(ctx context.Context, guest *models.SGuest, task taskman.ITask) error {
func (drv *SBaseGuestDriver) RequestRebuildRootDisk(ctx context.Context, guest *models.SGuest, task taskman.ITask) error {
return fmt.Errorf("Not Implement")
}
func (self *SBaseGuestDriver) NeedRequestGuestHotAddVfd(ctx context.Context, guest *models.SGuest) bool {
func (drv *SBaseGuestDriver) NeedRequestGuestHotAddVfd(ctx context.Context, guest *models.SGuest) bool {
return false
}
func (self *SBaseGuestDriver) RequestGuestHotAddVfd(ctx context.Context, guest *models.SGuest, path string, boot bool, task taskman.ITask) error {
func (drv *SBaseGuestDriver) RequestGuestHotAddVfd(ctx context.Context, guest *models.SGuest, path string, boot bool, task taskman.ITask) error {
return fmt.Errorf("Not Implement")
}
func (self *SBaseGuestDriver) RequestGuestHotRemoveVfd(ctx context.Context, guest *models.SGuest, task taskman.ITask) error {
func (drv *SBaseGuestDriver) RequestGuestHotRemoveVfd(ctx context.Context, guest *models.SGuest, task taskman.ITask) error {
return fmt.Errorf("Not Implement")
}
func (self *SBaseGuestDriver) RequestDiskSnapshot(ctx context.Context, guest *models.SGuest, task taskman.ITask, snapshotId, diskId string) error {
func (drv *SBaseGuestDriver) RequestDiskSnapshot(ctx context.Context, guest *models.SGuest, task taskman.ITask, snapshotId, diskId string) error {
return fmt.Errorf("Not Implement")
}
func (self *SBaseGuestDriver) RequestDeleteSnapshot(ctx context.Context, guest *models.SGuest, task taskman.ITask, params *jsonutils.JSONDict) error {
func (drv *SBaseGuestDriver) RequestDeleteSnapshot(ctx context.Context, guest *models.SGuest, task taskman.ITask, params *jsonutils.JSONDict) error {
return fmt.Errorf("Not Implement")
}
func (self *SBaseGuestDriver) RequestReloadDiskSnapshot(ctx context.Context, guest *models.SGuest, task taskman.ITask, params *jsonutils.JSONDict) error {
func (drv *SBaseGuestDriver) RequestReloadDiskSnapshot(ctx context.Context, guest *models.SGuest, task taskman.ITask, params *jsonutils.JSONDict) error {
return fmt.Errorf("Not Implement")
}
func (self *SBaseGuestDriver) RequestSyncToBackup(ctx context.Context, guest *models.SGuest, task taskman.ITask) error {
func (drv *SBaseGuestDriver) RequestSyncToBackup(ctx context.Context, guest *models.SGuest, task taskman.ITask) error {
return fmt.Errorf("Not Implement")
}
func (self *SBaseGuestDriver) RequestSlaveBlockStreamDisks(ctx context.Context, guest *models.SGuest, task taskman.ITask) error {
func (drv *SBaseGuestDriver) RequestSlaveBlockStreamDisks(ctx context.Context, guest *models.SGuest, task taskman.ITask) error {
return fmt.Errorf("Not Implement")
}
func (self *SBaseGuestDriver) GetMaxSecurityGroupCount() int {
func (drv *SBaseGuestDriver) GetMaxSecurityGroupCount() int {
return 5
}
func (self *SBaseGuestDriver) getTaskRequestHeader(task taskman.ITask) http.Header {
func (drv *SBaseGuestDriver) getTaskRequestHeader(task taskman.ITask) http.Header {
return task.GetTaskRequestHeader()
}
func (self *SBaseGuestDriver) IsSupportedBillingCycle(bc billing.SBillingCycle) bool {
func (drv *SBaseGuestDriver) IsSupportedBillingCycle(bc billing.SBillingCycle) bool {
return true
}
func (self *SBaseGuestDriver) IsSupportPostpaidExpire() bool {
func (drv *SBaseGuestDriver) IsSupportPostpaidExpire() bool {
return true
}
func (self *SBaseGuestDriver) IsSupportShutdownMode() bool {
func (drv *SBaseGuestDriver) IsSupportShutdownMode() bool {
return false
}
func (self *SBaseGuestDriver) RequestRenewInstance(ctx context.Context, guest *models.SGuest, bc billing.SBillingCycle) (time.Time, error) {
func (drv *SBaseGuestDriver) RequestRenewInstance(ctx context.Context, guest *models.SGuest, bc billing.SBillingCycle) (time.Time, error) {
return time.Time{}, nil
}
func (self *SBaseGuestDriver) IsSupportEip() bool {
func (drv *SBaseGuestDriver) IsSupportEip() bool {
return false
}
func (self *SBaseGuestDriver) IsSupportPublicIp() bool {
func (drv *SBaseGuestDriver) IsSupportPublicIp() bool {
return false
}
func (self *SBaseGuestDriver) NeedStopForChangeSpec(ctx context.Context, guest *models.SGuest, cpuChanged, memChanged bool) bool {
func (drv *SBaseGuestDriver) NeedStopForChangeSpec(ctx context.Context, guest *models.SGuest, cpuChanged, memChanged bool) bool {
return false
}
func (self *SBaseGuestDriver) RemoteDeployGuestForCreate(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest, host *models.SHost, desc cloudprovider.SManagedVMCreateConfig) (jsonutils.JSONObject, error) {
func (drv *SBaseGuestDriver) RemoteDeployGuestForCreate(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest, host *models.SHost, desc cloudprovider.SManagedVMCreateConfig) (jsonutils.JSONObject, error) {
return nil, cloudprovider.ErrNotSupported
}
func (self *SBaseGuestDriver) RemoteDeployGuestSyncHost(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest, host *models.SHost, iVM cloudprovider.ICloudVM) (cloudprovider.ICloudHost, error) {
func (drv *SBaseGuestDriver) RemoteDeployGuestSyncHost(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest, host *models.SHost, iVM cloudprovider.ICloudVM) (cloudprovider.ICloudHost, error) {
return nil, cloudprovider.ErrNotSupported
}
func (self *SBaseGuestDriver) RemoteActionAfterGuestCreated(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest, host *models.SHost, ivm cloudprovider.ICloudVM, desc *cloudprovider.SManagedVMCreateConfig) {
func (drv *SBaseGuestDriver) RemoteActionAfterGuestCreated(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest, host *models.SHost, ivm cloudprovider.ICloudVM, desc *cloudprovider.SManagedVMCreateConfig) {
return
}
func (self *SBaseGuestDriver) RemoteDeployGuestForDeploy(ctx context.Context, guest *models.SGuest, ihost cloudprovider.ICloudHost, task taskman.ITask, desc cloudprovider.SManagedVMCreateConfig) (jsonutils.JSONObject, error) {
func (drv *SBaseGuestDriver) RemoteDeployGuestForDeploy(ctx context.Context, guest *models.SGuest, ihost cloudprovider.ICloudHost, task taskman.ITask, desc cloudprovider.SManagedVMCreateConfig) (jsonutils.JSONObject, error) {
return nil, cloudprovider.ErrNotSupported
}
func (self *SBaseGuestDriver) RemoteDeployGuestForRebuildRoot(ctx context.Context, guest *models.SGuest, ihost cloudprovider.ICloudHost, task taskman.ITask, desc cloudprovider.SManagedVMCreateConfig) (jsonutils.JSONObject, error) {
func (drv *SBaseGuestDriver) RemoteDeployGuestForRebuildRoot(ctx context.Context, guest *models.SGuest, ihost cloudprovider.ICloudHost, task taskman.ITask, desc cloudprovider.SManagedVMCreateConfig) (jsonutils.JSONObject, error) {
return nil, cloudprovider.ErrNotSupported
}
func (self *SBaseGuestDriver) GetGuestInitialStateAfterCreate() string {
func (drv *SBaseGuestDriver) GetGuestInitialStateAfterCreate() string {
return api.VM_READY
}
func (self *SBaseGuestDriver) GetGuestInitialStateAfterRebuild() string {
func (drv *SBaseGuestDriver) GetGuestInitialStateAfterRebuild() string {
return api.VM_READY
}
func (self *SBaseGuestDriver) IsNeedInjectPasswordByCloudInit() bool {
func (drv *SBaseGuestDriver) IsNeedInjectPasswordByCloudInit() bool {
return false
}
func (self *SBaseGuestDriver) GetWindowsUserDataType() string {
func (drv *SBaseGuestDriver) GetWindowsUserDataType() string {
return cloudprovider.CLOUD_POWER_SHELL
}
func (self *SBaseGuestDriver) IsWindowsUserDataTypeNeedEncode() bool {
func (drv *SBaseGuestDriver) IsWindowsUserDataTypeNeedEncode() bool {
return false
}
func (self *SBaseGuestDriver) IsSupportdDcryptPasswordFromSecretKey() bool {
func (drv *SBaseGuestDriver) IsSupportdDcryptPasswordFromSecretKey() bool {
return true
}
func (self *SBaseGuestDriver) GetUserDataType() string {
func (drv *SBaseGuestDriver) GetUserDataType() string {
return cloudprovider.CLOUD_CONFIG
}
func (self *SBaseGuestDriver) GetDefaultAccount(osType, osDist, imageType string) string {
func (drv *SBaseGuestDriver) GetDefaultAccount(osType, osDist, imageType string) string {
if strings.ToLower(osType) == strings.ToLower(osprofile.OS_TYPE_WINDOWS) {
return api.VM_DEFAULT_WINDOWS_LOGIN_USER
}
return api.VM_DEFAULT_LINUX_LOGIN_USER
}
func (self *SBaseGuestDriver) OnGuestChangeCpuMemFailed(ctx context.Context, guest *models.SGuest, data *jsonutils.JSONDict, task taskman.ITask) error {
func (drv *SBaseGuestDriver) OnGuestChangeCpuMemFailed(ctx context.Context, guest *models.SGuest, data *jsonutils.JSONDict, task taskman.ITask) error {
return nil
}
func (self *SBaseGuestDriver) RequestSyncConfigOnHost(ctx context.Context, guest *models.SGuest, host *models.SHost, task taskman.ITask) error {
func (drv *SBaseGuestDriver) RequestSyncConfigOnHost(ctx context.Context, guest *models.SGuest, host *models.SHost, task taskman.ITask) error {
return fmt.Errorf("SBaseGuestDriver: Not Implement")
}
func (self *SBaseGuestDriver) IsSupportGuestClone() bool {
func (drv *SBaseGuestDriver) IsSupportGuestClone() bool {
return true
}
func (self *SBaseGuestDriver) RequestSyncSecgroupsOnHost(ctx context.Context, guest *models.SGuest, host *models.SHost, task taskman.ITask) error {
func (drv *SBaseGuestDriver) RequestSyncSecgroupsOnHost(ctx context.Context, guest *models.SGuest, host *models.SHost, task taskman.ITask) error {
return nil // do nothing
}
func (self *SBaseGuestDriver) CancelExpireTime(
func (drv *SBaseGuestDriver) CancelExpireTime(
ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest) error {
return guest.CancelExpireTime(ctx, userCred)
}
func (self *SBaseGuestDriver) IsSupportPublicipToEip() bool {
func (drv *SBaseGuestDriver) IsSupportPublicipToEip() bool {
return false
}
func (self *SBaseGuestDriver) RequestConvertPublicipToEip(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest, task taskman.ITask) error {
func (drv *SBaseGuestDriver) RequestConvertPublicipToEip(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest, task taskman.ITask) error {
return fmt.Errorf("Not Implement RequestConvertPublicipToEip")
}
func (self *SBaseGuestDriver) IsSupportSetAutoRenew() bool {
func (drv *SBaseGuestDriver) IsSupportSetAutoRenew() bool {
return false
}
func (self *SBaseGuestDriver) RequestSetAutoRenewInstance(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest, input api.GuestAutoRenewInput, task taskman.ITask) error {
func (drv *SBaseGuestDriver) RequestSetAutoRenewInstance(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest, input api.GuestAutoRenewInput, task taskman.ITask) error {
return fmt.Errorf("Not Implement RequestSetAutoRenewInstance")
}
func (self *SBaseGuestDriver) IsSupportMigrate() bool {
func (drv *SBaseGuestDriver) IsSupportMigrate() bool {
return false
}
func (self *SBaseGuestDriver) IsSupportLiveMigrate() bool {
func (drv *SBaseGuestDriver) IsSupportLiveMigrate() bool {
return false
}
func (self *SBaseGuestDriver) CheckMigrate(ctx context.Context, guest *models.SGuest, userCred mcclient.TokenCredential, input api.GuestMigrateInput) error {
func (drv *SBaseGuestDriver) CheckMigrate(ctx context.Context, guest *models.SGuest, userCred mcclient.TokenCredential, input api.GuestMigrateInput) error {
return httperrors.NewNotAcceptableError("Not allow for hypervisor %s", guest.GetHypervisor())
}
func (self *SBaseGuestDriver) CheckLiveMigrate(ctx context.Context, guest *models.SGuest, userCred mcclient.TokenCredential, input api.GuestLiveMigrateInput) error {
func (drv *SBaseGuestDriver) CheckLiveMigrate(ctx context.Context, guest *models.SGuest, userCred mcclient.TokenCredential, input api.GuestLiveMigrateInput) error {
return httperrors.NewNotAcceptableError("Not allow for hypervisor %s", guest.GetHypervisor())
}
func (self *SBaseGuestDriver) RequestMigrate(ctx context.Context, guest *models.SGuest, userCred mcclient.TokenCredential, input api.GuestMigrateInput, task taskman.ITask) error {
func (drv *SBaseGuestDriver) RequestMigrate(ctx context.Context, guest *models.SGuest, userCred mcclient.TokenCredential, input api.GuestMigrateInput, task taskman.ITask) error {
return errors.Wrapf(cloudprovider.ErrNotImplemented, "RequestMigrate")
}
func (self *SBaseGuestDriver) RequestLiveMigrate(ctx context.Context, guest *models.SGuest, userCred mcclient.TokenCredential, input api.GuestLiveMigrateInput, task taskman.ITask) error {
func (drv *SBaseGuestDriver) RequestLiveMigrate(ctx context.Context, guest *models.SGuest, userCred mcclient.TokenCredential, input api.GuestLiveMigrateInput, task taskman.ITask) error {
return errors.Wrapf(cloudprovider.ErrNotImplemented, "RequestLiveMigrate")
}
func (self *SVirtualizedGuestDriver) ValidateCreateData(ctx context.Context, userCred mcclient.TokenCredential, input *api.ServerCreateInput) (*api.ServerCreateInput, error) {
func (drv *SVirtualizedGuestDriver) ValidateCreateData(ctx context.Context, userCred mcclient.TokenCredential, input *api.ServerCreateInput) (*api.ServerCreateInput, error) {
return input, nil
}
func (self *SBaseGuestDriver) ValidateUpdateData(ctx context.Context, guest *models.SGuest, userCred mcclient.TokenCredential, input api.ServerUpdateInput) (api.ServerUpdateInput, error) {
func (drv *SBaseGuestDriver) ValidateUpdateData(ctx context.Context, guest *models.SGuest, userCred mcclient.TokenCredential, input api.ServerUpdateInput) (api.ServerUpdateInput, error) {
return input, nil
}
func (self *SBaseGuestDriver) RequestRemoteUpdate(ctx context.Context, guest *models.SGuest, userCred mcclient.TokenCredential, replaceTags bool) error {
func (drv *SBaseGuestDriver) RequestRemoteUpdate(ctx context.Context, guest *models.SGuest, userCred mcclient.TokenCredential, replaceTags bool) error {
// nil ops
return nil
}
func (self *SBaseGuestDriver) ValidateRebuildRoot(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest, input *api.ServerRebuildRootInput) (*api.ServerRebuildRootInput, error) {
func (drv *SBaseGuestDriver) ValidateRebuildRoot(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest, input *api.ServerRebuildRootInput) (*api.ServerRebuildRootInput, error) {
return input, nil
}
func (self *SBaseGuestDriver) ValidateDetachNetwork(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest) error {
func (drv *SBaseGuestDriver) ValidateDetachNetwork(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest) error {
return nil
}
func (self *SBaseGuestDriver) ValidateChangeDiskStorage(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest, targetStorageId string) error {
func (drv *SBaseGuestDriver) ValidateChangeDiskStorage(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest, targetStorageId string) error {
return cloudprovider.ErrNotImplemented
}
func (self *SBaseGuestDriver) StartChangeDiskStorageTask(guest *models.SGuest, ctx context.Context, userCred mcclient.TokenCredential, params *api.ServerChangeDiskStorageInternalInput, parentTaskId string) error {
func (drv *SBaseGuestDriver) StartChangeDiskStorageTask(guest *models.SGuest, ctx context.Context, userCred mcclient.TokenCredential, params *api.ServerChangeDiskStorageInternalInput, parentTaskId string) error {
task, err := taskman.TaskManager.NewTask(ctx, "GuestChangeDiskStorageTask", guest, userCred, jsonutils.Marshal(params).(*jsonutils.JSONDict), parentTaskId, "", nil)
if err != nil {
return err
@@ -475,40 +475,40 @@ func (self *SBaseGuestDriver) StartChangeDiskStorageTask(guest *models.SGuest, c
return nil
}
func (self *SBaseGuestDriver) RequestChangeDiskStorage(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest, input *api.ServerChangeDiskStorageInternalInput, task taskman.ITask) error {
func (drv *SBaseGuestDriver) RequestChangeDiskStorage(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest, input *api.ServerChangeDiskStorageInternalInput, task taskman.ITask) error {
return cloudprovider.ErrNotImplemented
}
func (self *SBaseGuestDriver) RequestSwitchToTargetStorageDisk(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest, input *api.ServerChangeDiskStorageInternalInput, task taskman.ITask) error {
func (drv *SBaseGuestDriver) RequestSwitchToTargetStorageDisk(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest, input *api.ServerChangeDiskStorageInternalInput, task taskman.ITask) error {
return cloudprovider.ErrNotImplemented
}
func (self *SBaseGuestDriver) RequestSyncIsolatedDevice(ctx context.Context, guest *models.SGuest, task taskman.ITask) error {
func (drv *SBaseGuestDriver) RequestSyncIsolatedDevice(ctx context.Context, guest *models.SGuest, task taskman.ITask) error {
task.ScheduleRun(nil)
return nil
}
func (self *SBaseGuestDriver) RequestCPUSet(ctx context.Context, userCred mcclient.TokenCredential, host *models.SHost, guest *models.SGuest, input *api.ServerCPUSetInput) (*api.ServerCPUSetResp, error) {
func (drv *SBaseGuestDriver) RequestCPUSet(ctx context.Context, userCred mcclient.TokenCredential, host *models.SHost, guest *models.SGuest, input *api.ServerCPUSetInput) (*api.ServerCPUSetResp, error) {
return nil, httperrors.ErrNotImplemented
}
func (self *SBaseGuestDriver) RequestCPUSetRemove(ctx context.Context, userCred mcclient.TokenCredential, host *models.SHost, guest *models.SGuest, input *api.ServerCPUSetRemoveInput) error {
func (drv *SBaseGuestDriver) RequestCPUSetRemove(ctx context.Context, userCred mcclient.TokenCredential, host *models.SHost, guest *models.SGuest, input *api.ServerCPUSetRemoveInput) error {
return httperrors.ErrNotImplemented
}
func (self *SBaseGuestDriver) QgaRequestGuestPing(ctx context.Context, header http.Header, host *models.SHost, guest *models.SGuest, async bool, input *api.ServerQgaTimeoutInput) error {
func (drv *SBaseGuestDriver) QgaRequestGuestPing(ctx context.Context, header http.Header, host *models.SHost, guest *models.SGuest, async bool, input *api.ServerQgaTimeoutInput) error {
return httperrors.ErrNotImplemented
}
func (self *SBaseGuestDriver) QgaRequestSetUserPassword(ctx context.Context, task taskman.ITask, host *models.SHost, guest *models.SGuest, input *api.ServerQgaSetPasswordInput) error {
func (drv *SBaseGuestDriver) QgaRequestSetUserPassword(ctx context.Context, task taskman.ITask, host *models.SHost, guest *models.SGuest, input *api.ServerQgaSetPasswordInput) error {
return httperrors.ErrNotImplemented
}
func (self *SBaseGuestDriver) RequestQgaCommand(ctx context.Context, userCred mcclient.TokenCredential, body jsonutils.JSONObject, host *models.SHost, guest *models.SGuest) (jsonutils.JSONObject, error) {
func (drv *SBaseGuestDriver) RequestQgaCommand(ctx context.Context, userCred mcclient.TokenCredential, body jsonutils.JSONObject, host *models.SHost, guest *models.SGuest) (jsonutils.JSONObject, error) {
return nil, httperrors.ErrNotImplemented
}
func (self *SBaseGuestDriver) FetchMonitorUrl(ctx context.Context, guest *models.SGuest) string {
func (drv *SBaseGuestDriver) FetchMonitorUrl(ctx context.Context, guest *models.SGuest) string {
s := auth.GetAdminSessionWithPublic(ctx, consts.GetRegion())
influxdbUrl, err := s.GetServiceURL(apis.SERVICE_TYPE_INFLUXDB, options.Options.MonitorEndpointType)
if err != nil {
@@ -517,10 +517,14 @@ func (self *SBaseGuestDriver) FetchMonitorUrl(ctx context.Context, guest *models
return influxdbUrl
}
func (self *SBaseGuestDriver) RequestResetNicTrafficLimit(ctx context.Context, task taskman.ITask, host *models.SHost, guest *models.SGuest, input *api.ServerNicTrafficLimit) error {
func (drv *SBaseGuestDriver) RequestResetNicTrafficLimit(ctx context.Context, task taskman.ITask, host *models.SHost, guest *models.SGuest, input *api.ServerNicTrafficLimit) error {
return httperrors.ErrNotImplemented
}
func (self *SBaseGuestDriver) RequestSetNicTrafficLimit(ctx context.Context, task taskman.ITask, host *models.SHost, guest *models.SGuest, input *api.ServerNicTrafficLimit) error {
func (drv *SBaseGuestDriver) RequestSetNicTrafficLimit(ctx context.Context, task taskman.ITask, host *models.SHost, guest *models.SGuest, input *api.ServerNicTrafficLimit) error {
return httperrors.ErrNotImplemented
}
func (drv *SBaseGuestDriver) SyncOsInfo(ctx context.Context, userCred mcclient.TokenCredential, g *models.SGuest, extVM cloudprovider.IOSInfo) error {
return nil
}
+30
View File
@@ -780,3 +780,33 @@ func (self *SESXiGuestDriver) StartDeleteGuestTask(ctx context.Context, userCred
params.Add(jsonutils.JSONTrue, "delete_snapshots")
return self.SBaseGuestDriver.StartDeleteGuestTask(ctx, userCred, guest, params, parentTaskId)
}
func (self *SESXiGuestDriver) SyncOsInfo(ctx context.Context, userCred mcclient.TokenCredential, g *models.SGuest, extVM cloudprovider.IOSInfo) error {
ometa, err := g.GetAllMetadata(ctx, userCred)
if err != nil {
return errors.Wrap(err, "GetAllMetadata")
}
// save os info
osinfo := map[string]interface{}{}
for k, v := range map[string]string{
"os_full_name": extVM.GetFullOsName(),
"os_name": string(extVM.GetOsType()),
"os_arch": extVM.GetOsArch(),
"os_type": string(extVM.GetOsType()),
"os_distribution": extVM.GetOsDist(),
"os_version": extVM.GetOsVersion(),
"os_language": extVM.GetOsLang(),
} {
if len(v) == 0 || len(ometa[k]) > 0 {
continue
}
osinfo[k] = v
}
if len(osinfo) > 0 {
err := g.SetAllMetadata(ctx, osinfo, userCred)
if err != nil {
return errors.Wrap(err, "SetAllMetadata")
}
}
return nil
}
+1 -1
View File
@@ -110,7 +110,7 @@ func (self *SGoogleGuestDriver) GetStorageTypes() []string {
}
func (self *SGoogleGuestDriver) ChooseHostStorage(host *models.SHost, guest *models.SGuest, diskConfig *api.DiskConfig, storageIds []string) (*models.SStorage, error) {
return self.chooseHostStorage(self, host, diskConfig.Backend, storageIds), nil
return chooseHostStorage(self, host, diskConfig.Backend, storageIds), nil
}
func (self *SGoogleGuestDriver) GetGuestInitialStateAfterCreate() string {
+1 -1
View File
@@ -83,7 +83,7 @@ func (self *SH3CGuestDriver) GetStorageTypes() []string {
}
func (self *SH3CGuestDriver) ChooseHostStorage(host *models.SHost, guest *models.SGuest, diskConfig *api.DiskConfig, storageIds []string) (*models.SStorage, error) {
return self.chooseHostStorage(self, host, diskConfig.Backend, storageIds), nil
return chooseHostStorage(self, host, diskConfig.Backend, storageIds), nil
}
func (self *SH3CGuestDriver) GetDetachDiskStatus() ([]string, error) {
+1 -1
View File
@@ -83,7 +83,7 @@ func (self *SHCSGuestDriver) GetStorageTypes() []string {
}
func (self *SHCSGuestDriver) ChooseHostStorage(host *models.SHost, guest *models.SGuest, diskConfig *api.DiskConfig, storageIds []string) (*models.SStorage, error) {
return self.chooseHostStorage(self, host, diskConfig.Backend, storageIds), nil
return chooseHostStorage(self, host, diskConfig.Backend, storageIds), nil
}
func (self *SHCSGuestDriver) GetDetachDiskStatus() ([]string, error) {
+1 -1
View File
@@ -83,7 +83,7 @@ func (self *SHCSOPGuestDriver) GetStorageTypes() []string {
}
func (self *SHCSOPGuestDriver) ChooseHostStorage(host *models.SHost, guest *models.SGuest, diskConfig *api.DiskConfig, storageIds []string) (*models.SStorage, error) {
return self.chooseHostStorage(self, host, diskConfig.Backend, storageIds), nil
return chooseHostStorage(self, host, diskConfig.Backend, storageIds), nil
}
func (self *SHCSOPGuestDriver) GetDetachDiskStatus() ([]string, error) {
+1 -1
View File
@@ -74,7 +74,7 @@ func (self *SHuaweiGuestDriver) GetStorageTypes() []string {
}
func (self *SHuaweiGuestDriver) ChooseHostStorage(host *models.SHost, guest *models.SGuest, diskConfig *api.DiskConfig, storageIds []string) (*models.SStorage, error) {
return self.chooseHostStorage(self, host, diskConfig.Backend, storageIds), nil
return chooseHostStorage(self, host, diskConfig.Backend, storageIds), nil
}
func (self *SHuaweiGuestDriver) GetDetachDiskStatus() ([]string, error) {
+1 -1
View File
@@ -78,7 +78,7 @@ func (self *SHCSOGuestDriver) GetStorageTypes() []string {
}
func (self *SHCSOGuestDriver) ChooseHostStorage(host *models.SHost, guest *models.SGuest, diskConfig *api.DiskConfig, storageIds []string) (*models.SStorage, error) {
return self.chooseHostStorage(self, host, diskConfig.Backend, storageIds), nil
return chooseHostStorage(self, host, diskConfig.Backend, storageIds), nil
}
func (self *SHCSOGuestDriver) GetDetachDiskStatus() ([]string, error) {
+59 -33
View File
@@ -60,7 +60,7 @@ func (d SManagedVirtualizedGuestDriver) DoScheduleStorageFilter() bool { return
func (d SManagedVirtualizedGuestDriver) DoScheduleCloudproviderTagFilter() bool { return true }
func (self *SManagedVirtualizedGuestDriver) GetJsonDescAtHost(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest, host *models.SHost, params *jsonutils.JSONDict) (jsonutils.JSONObject, error) {
func (drv *SManagedVirtualizedGuestDriver) GetJsonDescAtHost(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest, host *models.SHost, params *jsonutils.JSONDict) (jsonutils.JSONObject, error) {
config := cloudprovider.SManagedVMCreateConfig{
IsNeedInjectPasswordByCloudInit: guest.GetDriver().IsNeedInjectPasswordByCloudInit(),
UserDataType: guest.GetDriver().GetUserDataType(),
@@ -173,7 +173,7 @@ func (self *SManagedVirtualizedGuestDriver) GetJsonDescAtHost(ctx context.Contex
return jsonutils.Marshal(&config), nil
}
func (self *SManagedVirtualizedGuestDriver) RequestSaveImage(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest, task taskman.ITask) error {
func (drv *SManagedVirtualizedGuestDriver) RequestSaveImage(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest, task taskman.ITask) error {
taskman.LocalTaskRun(task, func() (jsonutils.JSONObject, error) {
iVm, err := guest.GetIVM(ctx)
if err != nil {
@@ -282,7 +282,7 @@ func (self *SManagedVirtualizedGuestDriver) RequestSaveImage(ctx context.Context
return nil
}
func (self *SManagedVirtualizedGuestDriver) RequestGuestCreateAllDisks(ctx context.Context, guest *models.SGuest, task taskman.ITask) error {
func (drv *SManagedVirtualizedGuestDriver) RequestGuestCreateAllDisks(ctx context.Context, guest *models.SGuest, task taskman.ITask) error {
diskCat := guest.CategorizeDisks()
var imageId string
if diskCat.Root != nil {
@@ -309,7 +309,7 @@ func (self *SManagedVirtualizedGuestDriver) RequestGuestCreateAllDisks(ctx conte
return storageCache.StartImageCacheTask(ctx, task.GetUserCred(), input)
}
func (self *SManagedVirtualizedGuestDriver) ValidateCreateData(ctx context.Context, userCred mcclient.TokenCredential, input *api.ServerCreateInput) (*api.ServerCreateInput, error) {
func (drv *SManagedVirtualizedGuestDriver) ValidateCreateData(ctx context.Context, userCred mcclient.TokenCredential, input *api.ServerCreateInput) (*api.ServerCreateInput, error) {
if input.Cdrom != "" {
return nil, httperrors.NewInputParameterError("%s not support cdrom params", input.Hypervisor)
}
@@ -323,11 +323,11 @@ func (self *SManagedVirtualizedGuestDriver) ValidateCreateData(ctx context.Conte
return input, nil
}
func (self *SManagedVirtualizedGuestDriver) ValidateCreateEip(ctx context.Context, userCred mcclient.TokenCredential, input api.ServerCreateEipInput) error {
func (drv *SManagedVirtualizedGuestDriver) ValidateCreateEip(ctx context.Context, userCred mcclient.TokenCredential, input api.ServerCreateEipInput) error {
return nil
}
func (self *SManagedVirtualizedGuestDriver) RequestDetachDisk(ctx context.Context, guest *models.SGuest, disk *models.SDisk, task taskman.ITask) error {
func (drv *SManagedVirtualizedGuestDriver) RequestDetachDisk(ctx context.Context, guest *models.SGuest, disk *models.SDisk, task taskman.ITask) error {
taskman.LocalTaskRun(task, func() (jsonutils.JSONObject, error) {
iVM, err := guest.GetIVM(ctx)
if err != nil {
@@ -384,7 +384,7 @@ func (self *SManagedVirtualizedGuestDriver) RequestDetachDisk(ctx context.Contex
return nil
}
func (self *SManagedVirtualizedGuestDriver) RequestAttachDisk(ctx context.Context, guest *models.SGuest, disk *models.SDisk, task taskman.ITask) error {
func (drv *SManagedVirtualizedGuestDriver) RequestAttachDisk(ctx context.Context, guest *models.SGuest, disk *models.SDisk, task taskman.ITask) error {
taskman.LocalTaskRun(task, func() (jsonutils.JSONObject, error) {
iVM, err := guest.GetIVM(ctx)
if err != nil {
@@ -432,7 +432,7 @@ func (self *SManagedVirtualizedGuestDriver) RequestAttachDisk(ctx context.Contex
return nil
}
func (self *SManagedVirtualizedGuestDriver) RequestStartOnHost(ctx context.Context, guest *models.SGuest, host *models.SHost, userCred mcclient.TokenCredential, task taskman.ITask) error {
func (drv *SManagedVirtualizedGuestDriver) RequestStartOnHost(ctx context.Context, guest *models.SGuest, host *models.SHost, userCred mcclient.TokenCredential, task taskman.ITask) error {
ivm, err := guest.GetIVM(ctx)
if err != nil {
return errors.Wrapf(err, "GetIVM")
@@ -455,7 +455,7 @@ func (self *SManagedVirtualizedGuestDriver) RequestStartOnHost(ctx context.Conte
return guest.SetStatus(userCred, api.VM_RUNNING, "StartOnHost")
}
func (self *SManagedVirtualizedGuestDriver) RequestDeployGuestOnHost(ctx context.Context, guest *models.SGuest, host *models.SHost, task taskman.ITask) error {
func (drv *SManagedVirtualizedGuestDriver) RequestDeployGuestOnHost(ctx context.Context, guest *models.SGuest, host *models.SHost, task taskman.ITask) error {
config, err := guest.GetDeployConfigOnHost(ctx, task.GetUserCred(), host, task.GetParams())
if err != nil {
return errors.Wrapf(err, "GetDeployConfigOnHost")
@@ -560,15 +560,15 @@ func (self *SManagedVirtualizedGuestDriver) RequestDeployGuestOnHost(ctx context
return nil
}
func (self *SManagedVirtualizedGuestDriver) GetGuestInitialStateAfterCreate() string {
func (drv *SManagedVirtualizedGuestDriver) GetGuestInitialStateAfterCreate() string {
return api.VM_READY
}
func (self *SManagedVirtualizedGuestDriver) GetGuestInitialStateAfterRebuild() string {
func (drv *SManagedVirtualizedGuestDriver) GetGuestInitialStateAfterRebuild() string {
return api.VM_READY
}
func (self *SManagedVirtualizedGuestDriver) RemoteDeployGuestForCreate(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest, host *models.SHost, desc cloudprovider.SManagedVMCreateConfig) (jsonutils.JSONObject, error) {
func (drv *SManagedVirtualizedGuestDriver) RemoteDeployGuestForCreate(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest, host *models.SHost, desc cloudprovider.SManagedVMCreateConfig) (jsonutils.JSONObject, error) {
ihost, err := host.GetIHost(ctx)
if err != nil {
return nil, errors.Wrapf(err, "RemoteDeployGuestForCreate.GetIHost")
@@ -694,7 +694,7 @@ func (self *SManagedVirtualizedGuestDriver) RemoteDeployGuestForCreate(ctx conte
return data, nil
}
func (self *SManagedVirtualizedGuestDriver) RemoteDeployGuestSyncHost(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest, host *models.SHost, iVM cloudprovider.ICloudVM) (cloudprovider.ICloudHost, error) {
func (drv *SManagedVirtualizedGuestDriver) RemoteDeployGuestSyncHost(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest, host *models.SHost, iVM cloudprovider.ICloudVM) (cloudprovider.ICloudHost, error) {
if hostId := iVM.GetIHostId(); len(hostId) > 0 {
nh, err := db.FetchByExternalIdAndManagerId(models.HostManager, hostId, func(q *sqlchemy.SQuery) *sqlchemy.SQuery {
return q.Equals("manager_id", host.ManagerId)
@@ -710,7 +710,7 @@ func (self *SManagedVirtualizedGuestDriver) RemoteDeployGuestSyncHost(ctx contex
return host.GetIHost(ctx)
}
func (self *SManagedVirtualizedGuestDriver) RemoteDeployGuestForDeploy(ctx context.Context, guest *models.SGuest, ihost cloudprovider.ICloudHost, task taskman.ITask, desc cloudprovider.SManagedVMCreateConfig) (jsonutils.JSONObject, error) {
func (drv *SManagedVirtualizedGuestDriver) RemoteDeployGuestForDeploy(ctx context.Context, guest *models.SGuest, ihost cloudprovider.ICloudHost, task taskman.ITask, desc cloudprovider.SManagedVMCreateConfig) (jsonutils.JSONObject, error) {
iVM, err := ihost.GetIVMById(guest.GetExternalId())
if err != nil || iVM == nil {
log.Errorf("cannot find vm %s", err)
@@ -762,7 +762,7 @@ func (self *SManagedVirtualizedGuestDriver) RemoteDeployGuestForDeploy(ctx conte
return data, nil
}
func (self *SManagedVirtualizedGuestDriver) RemoteDeployGuestForRebuildRoot(ctx context.Context, guest *models.SGuest, ihost cloudprovider.ICloudHost, task taskman.ITask, desc cloudprovider.SManagedVMCreateConfig) (jsonutils.JSONObject, error) {
func (drv *SManagedVirtualizedGuestDriver) RemoteDeployGuestForRebuildRoot(ctx context.Context, guest *models.SGuest, ihost cloudprovider.ICloudHost, task taskman.ITask, desc cloudprovider.SManagedVMCreateConfig) (jsonutils.JSONObject, error) {
iVM, err := ihost.GetIVMById(guest.GetExternalId())
if err != nil {
return nil, errors.Wrapf(err, "ihost.GetIVMById(%s)", guest.GetExternalId())
@@ -837,7 +837,7 @@ func (self *SManagedVirtualizedGuestDriver) RemoteDeployGuestForRebuildRoot(ctx
return data, nil
}
func (self *SManagedVirtualizedGuestDriver) RequestUndeployGuestOnHost(ctx context.Context, guest *models.SGuest, host *models.SHost, task taskman.ITask) error {
func (drv *SManagedVirtualizedGuestDriver) RequestUndeployGuestOnHost(ctx context.Context, guest *models.SGuest, host *models.SHost, task taskman.ITask) error {
taskman.LocalTaskRun(task, func() (jsonutils.JSONObject, error) {
ihost, err := host.GetIHost(ctx)
if err != nil {
@@ -894,7 +894,7 @@ func (self *SManagedVirtualizedGuestDriver) RequestUndeployGuestOnHost(ctx conte
return nil
}
func (self *SManagedVirtualizedGuestDriver) RequestStopOnHost(ctx context.Context, guest *models.SGuest, host *models.SHost, task taskman.ITask, syncStatus bool) error {
func (drv *SManagedVirtualizedGuestDriver) RequestStopOnHost(ctx context.Context, guest *models.SGuest, host *models.SHost, task taskman.ITask, syncStatus bool) error {
taskman.LocalTaskRun(task, func() (jsonutils.JSONObject, error) {
ivm, err := guest.GetIVM(ctx)
if err != nil {
@@ -919,7 +919,7 @@ func (self *SManagedVirtualizedGuestDriver) RequestStopOnHost(ctx context.Contex
return nil
}
func (self *SManagedVirtualizedGuestDriver) RequestSyncstatusOnHost(ctx context.Context, guest *models.SGuest, host *models.SHost, userCred mcclient.TokenCredential, task taskman.ITask) error {
func (drv *SManagedVirtualizedGuestDriver) RequestSyncstatusOnHost(ctx context.Context, guest *models.SGuest, host *models.SHost, userCred mcclient.TokenCredential, task taskman.ITask) error {
taskman.LocalTaskRun(task, func() (jsonutils.JSONObject, error) {
ihost, err := host.GetIHost(ctx)
if err != nil {
@@ -944,7 +944,7 @@ func (self *SManagedVirtualizedGuestDriver) RequestSyncstatusOnHost(ctx context.
return nil
}
func (self *SManagedVirtualizedGuestDriver) GetGuestVncInfo(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest, host *models.SHost, input *cloudprovider.ServerVncInput) (*cloudprovider.ServerVncOutput, error) {
func (drv *SManagedVirtualizedGuestDriver) GetGuestVncInfo(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest, host *models.SHost, input *cloudprovider.ServerVncInput) (*cloudprovider.ServerVncOutput, error) {
ihost, err := host.GetIHost(ctx)
if err != nil {
return nil, err
@@ -959,7 +959,7 @@ func (self *SManagedVirtualizedGuestDriver) GetGuestVncInfo(ctx context.Context,
return iVM.GetVNCInfo(input)
}
func (self *SManagedVirtualizedGuestDriver) RequestRebuildRootDisk(ctx context.Context, guest *models.SGuest, task taskman.ITask) error {
func (drv *SManagedVirtualizedGuestDriver) RequestRebuildRootDisk(ctx context.Context, guest *models.SGuest, task taskman.ITask) error {
subtask, err := taskman.TaskManager.NewTask(ctx, "ManagedGuestRebuildRootTask", guest, task.GetUserCred(), task.GetParams(), task.GetTaskId(), "", nil)
if err != nil {
return err
@@ -968,7 +968,7 @@ func (self *SManagedVirtualizedGuestDriver) RequestRebuildRootDisk(ctx context.C
return nil
}
func (self *SManagedVirtualizedGuestDriver) DoGuestCreateDisksTask(ctx context.Context, guest *models.SGuest, task taskman.ITask) error {
func (drv *SManagedVirtualizedGuestDriver) DoGuestCreateDisksTask(ctx context.Context, guest *models.SGuest, task taskman.ITask) error {
subtask, err := taskman.TaskManager.NewTask(ctx, "ManagedGuestCreateDiskTask", guest, task.GetUserCred(), task.GetParams(), task.GetTaskId(), "", nil)
if err != nil {
return err
@@ -977,7 +977,7 @@ func (self *SManagedVirtualizedGuestDriver) DoGuestCreateDisksTask(ctx context.C
return nil
}
func (self *SManagedVirtualizedGuestDriver) RequestChangeVmConfig(ctx context.Context, guest *models.SGuest, task taskman.ITask, instanceType string, vcpuCount, vmemSize int64) error {
func (drv *SManagedVirtualizedGuestDriver) RequestChangeVmConfig(ctx context.Context, guest *models.SGuest, task taskman.ITask, instanceType string, vcpuCount, vmemSize int64) error {
host, _ := guest.GetHost()
ihost, err := host.GetIHost(ctx)
if err != nil {
@@ -1054,7 +1054,7 @@ func (self *SManagedVirtualizedGuestDriver) RequestChangeVmConfig(ctx context.Co
return nil
}
func (self *SManagedVirtualizedGuestDriver) OnGuestDeployTaskDataReceived(ctx context.Context, guest *models.SGuest, task taskman.ITask, data jsonutils.JSONObject) error {
func (drv *SManagedVirtualizedGuestDriver) OnGuestDeployTaskDataReceived(ctx context.Context, guest *models.SGuest, task taskman.ITask, data jsonutils.JSONObject) error {
uuid, _ := data.GetString("uuid")
if len(uuid) > 0 {
@@ -1176,7 +1176,7 @@ func (self *SManagedVirtualizedGuestDriver) OnGuestDeployTaskDataReceived(ctx co
return nil
}
func (self *SManagedVirtualizedGuestDriver) RequestSyncSecgroupsOnHost(ctx context.Context, guest *models.SGuest, host *models.SHost, task taskman.ITask) error {
func (drv *SManagedVirtualizedGuestDriver) RequestSyncSecgroupsOnHost(ctx context.Context, guest *models.SGuest, host *models.SHost, task taskman.ITask) error {
iVM, err := guest.GetIVM(ctx)
if err != nil {
return err
@@ -1218,7 +1218,7 @@ func (self *SManagedVirtualizedGuestDriver) RequestSyncSecgroupsOnHost(ctx conte
return iVM.SetSecurityGroups(externalIds)
}
func (self *SManagedVirtualizedGuestDriver) RequestSyncConfigOnHost(ctx context.Context, guest *models.SGuest, host *models.SHost, task taskman.ITask) error {
func (drv *SManagedVirtualizedGuestDriver) RequestSyncConfigOnHost(ctx context.Context, guest *models.SGuest, host *models.SHost, task taskman.ITask) error {
taskman.LocalTaskRun(task, func() (jsonutils.JSONObject, error) {
if jsonutils.QueryBoolean(task.GetParams(), "fw_only", false) {
@@ -1233,7 +1233,7 @@ func (self *SManagedVirtualizedGuestDriver) RequestSyncConfigOnHost(ctx context.
return nil
}
func (self *SManagedVirtualizedGuestDriver) RequestRenewInstance(ctx context.Context, guest *models.SGuest, bc billing.SBillingCycle) (time.Time, error) {
func (drv *SManagedVirtualizedGuestDriver) RequestRenewInstance(ctx context.Context, guest *models.SGuest, bc billing.SBillingCycle) (time.Time, error) {
iVM, err := guest.GetIVM(ctx)
if err != nil {
return time.Time{}, err
@@ -1258,11 +1258,11 @@ func (self *SManagedVirtualizedGuestDriver) RequestRenewInstance(ctx context.Con
return iVM.GetExpiredAt(), nil
}
func (self *SManagedVirtualizedGuestDriver) IsSupportEip() bool {
func (drv *SManagedVirtualizedGuestDriver) IsSupportEip() bool {
return true
}
func (self *SManagedVirtualizedGuestDriver) chooseHostStorage(
func chooseHostStorage(
drv models.IGuestDriver,
host *models.SHost,
backend string,
@@ -1287,11 +1287,11 @@ func (self *SManagedVirtualizedGuestDriver) chooseHostStorage(
return nil
}
func (self *SManagedVirtualizedGuestDriver) IsSupportCdrom(guest *models.SGuest) (bool, error) {
func (drv *SManagedVirtualizedGuestDriver) IsSupportCdrom(guest *models.SGuest) (bool, error) {
return false, nil
}
func (self *SManagedVirtualizedGuestDriver) IsSupportFloppy(guest *models.SGuest) (bool, error) {
func (drv *SManagedVirtualizedGuestDriver) IsSupportFloppy(guest *models.SGuest) (bool, error) {
return false, nil
}
@@ -1319,7 +1319,7 @@ func GetCloudVMStatus(vm cloudprovider.ICloudVM) string {
return status
}
func (self *SManagedVirtualizedGuestDriver) RequestConvertPublicipToEip(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest, task taskman.ITask) error {
func (drv *SManagedVirtualizedGuestDriver) RequestConvertPublicipToEip(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest, task taskman.ITask) error {
taskman.LocalTaskRun(task, func() (jsonutils.JSONObject, error) {
iVM, err := guest.GetIVM(ctx)
if err != nil {
@@ -1370,7 +1370,7 @@ func (self *SManagedVirtualizedGuestDriver) RequestConvertPublicipToEip(ctx cont
return nil
}
func (self *SManagedVirtualizedGuestDriver) RequestSetAutoRenewInstance(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest, input api.GuestAutoRenewInput, task taskman.ITask) error {
func (drv *SManagedVirtualizedGuestDriver) RequestSetAutoRenewInstance(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest, input api.GuestAutoRenewInput, task taskman.ITask) error {
taskman.LocalTaskRun(task, func() (jsonutils.JSONObject, error) {
iVM, err := guest.GetIVM(ctx)
if err != nil {
@@ -1391,7 +1391,7 @@ func (self *SManagedVirtualizedGuestDriver) RequestSetAutoRenewInstance(ctx cont
return nil
}
func (self *SManagedVirtualizedGuestDriver) RequestRemoteUpdate(ctx context.Context, guest *models.SGuest, userCred mcclient.TokenCredential, replaceTags bool) error {
func (drv *SManagedVirtualizedGuestDriver) RequestRemoteUpdate(ctx context.Context, guest *models.SGuest, userCred mcclient.TokenCredential, replaceTags bool) error {
// nil ops
iVM, err := guest.GetIVM(ctx)
if err != nil {
@@ -1444,3 +1444,29 @@ func (self *SManagedVirtualizedGuestDriver) RequestRemoteUpdate(ctx context.Cont
return nil
}
func (drv *SManagedVirtualizedGuestDriver) SyncOsInfo(ctx context.Context, userCred mcclient.TokenCredential, g *models.SGuest, extVM cloudprovider.IOSInfo) error {
// save os info
osinfo := map[string]interface{}{}
for k, v := range map[string]string{
"os_full_name": extVM.GetFullOsName(),
"os_name": string(extVM.GetOsType()),
"os_arch": extVM.GetOsArch(),
"os_type": string(extVM.GetOsType()),
"os_distribution": extVM.GetOsDist(),
"os_version": extVM.GetOsVersion(),
"os_language": extVM.GetOsLang(),
} {
if len(v) == 0 {
continue
}
osinfo[k] = v
}
if len(osinfo) > 0 {
err := g.SetAllMetadata(ctx, osinfo, userCred)
if err != nil {
return errors.Wrap(err, "SetAllMetadata")
}
}
return nil
}
+1 -1
View File
@@ -98,7 +98,7 @@ func (self *SNutanixGuestDriver) IsNeedInjectPasswordByCloudInit() bool {
}
func (self *SNutanixGuestDriver) ChooseHostStorage(host *models.SHost, guest *models.SGuest, diskConfig *api.DiskConfig, storageIds []string) (*models.SStorage, error) {
return self.chooseHostStorage(self, host, diskConfig.Backend, storageIds), nil
return chooseHostStorage(self, host, diskConfig.Backend, storageIds), nil
}
func (self *SNutanixGuestDriver) GetMinimalSysDiskSizeGb() int {
+1 -1
View File
@@ -118,7 +118,7 @@ func (self *SOpenStackGuestDriver) GetStorageTypes() []string {
}
func (self *SOpenStackGuestDriver) ChooseHostStorage(host *models.SHost, guest *models.SGuest, diskConfig *api.DiskConfig, storageIds []string) (*models.SStorage, error) {
return self.chooseHostStorage(self, host, diskConfig.Backend, storageIds), nil
return chooseHostStorage(self, host, diskConfig.Backend, storageIds), nil
}
func (self *SOpenStackGuestDriver) GetDetachDiskStatus() ([]string, error) {
+1 -1
View File
@@ -79,7 +79,7 @@ func (self *SQcloudGuestDriver) GetStorageTypes() []string {
}
func (self *SQcloudGuestDriver) ChooseHostStorage(host *models.SHost, guest *models.SGuest, diskConfig *api.DiskConfig, storageIds []string) (*models.SStorage, error) {
return self.chooseHostStorage(self, host, diskConfig.Backend, storageIds), nil
return chooseHostStorage(self, host, diskConfig.Backend, storageIds), nil
}
func (self *SQcloudGuestDriver) GetDetachDiskStatus() ([]string, error) {
+1 -1
View File
@@ -85,7 +85,7 @@ func (self *SZStackGuestDriver) GetMaxSecurityGroupCount() int {
}
func (self *SZStackGuestDriver) ChooseHostStorage(host *models.SHost, guest *models.SGuest, diskConfig *api.DiskConfig, storageIds []string) (*models.SStorage, error) {
return self.chooseHostStorage(self, host, diskConfig.Backend, storageIds), nil
return chooseHostStorage(self, host, diskConfig.Backend, storageIds), nil
}
func (self *SZStackGuestDriver) GetDetachDiskStatus() ([]string, error) {
+2
View File
@@ -238,6 +238,8 @@ type IGuestDriver interface {
FetchMonitorUrl(ctx context.Context, guest *SGuest) string
RequestResetNicTrafficLimit(ctx context.Context, task taskman.ITask, host *SHost, guest *SGuest, input *api.ServerNicTrafficLimit) error
RequestSetNicTrafficLimit(ctx context.Context, task taskman.ITask, host *SHost, guest *SGuest, input *api.ServerNicTrafficLimit) error
SyncOsInfo(ctx context.Context, userCred mcclient.TokenCredential, g *SGuest, extVM cloudprovider.IOSInfo) error
}
var guestDrivers map[string]IGuestDriver
+43 -65
View File
@@ -2962,43 +2962,21 @@ func (guest *SGuest) SyncAllWithCloudVM(ctx context.Context, userCred mcclient.T
}
func (g *SGuest) SyncOsInfo(ctx context.Context, userCred mcclient.TokenCredential, extVM cloudprovider.IOSInfo) error {
// save os info
osinfo := map[string]interface{}{}
for k, v := range map[string]string{
"os_full_name": extVM.GetFullOsName(),
"os_name": string(extVM.GetOsType()),
"os_arch": extVM.GetOsArch(),
"os_type": string(extVM.GetOsType()),
"os_distribution": extVM.GetOsDist(),
"os_version": extVM.GetOsVersion(),
"os_language": extVM.GetOsLang(),
} {
if len(v) == 0 {
continue
}
osinfo[k] = v
}
if len(osinfo) > 0 {
err := g.SetAllMetadata(ctx, osinfo, userCred)
if err != nil {
return errors.Wrap(err, "SetAllMetadata")
}
}
return nil
return g.GetDriver().SyncOsInfo(ctx, userCred, g, extVM)
}
func (self *SGuest) syncWithCloudVM(ctx context.Context, userCred mcclient.TokenCredential, provider cloudprovider.ICloudProvider, host *SHost, extVM cloudprovider.ICloudVM, syncOwnerId mcclient.IIdentityProvider, syncStatus bool) error {
func (g *SGuest) syncWithCloudVM(ctx context.Context, userCred mcclient.TokenCredential, provider cloudprovider.ICloudProvider, host *SHost, extVM cloudprovider.ICloudVM, syncOwnerId mcclient.IIdentityProvider, syncStatus bool) error {
recycle := false
if provider.GetFactory().IsSupportPrepaidResources() && self.IsPrepaidRecycle() {
if provider.GetFactory().IsSupportPrepaidResources() && g.IsPrepaidRecycle() {
recycle = true
}
diff, err := db.UpdateWithLock(ctx, self, func() error {
diff, err := db.UpdateWithLock(ctx, g, func() error {
if options.Options.EnableSyncName && !recycle {
newName, _ := db.GenerateAlterName(self, extVM.GetName())
if len(newName) > 0 && newName != self.Name {
self.Name = newName
newName, _ := db.GenerateAlterName(g, extVM.GetName())
if len(newName) > 0 && newName != g.Name {
g.Name = newName
}
}
hostname := pinyinutils.Text2Pinyin(extVM.GetHostname())
@@ -3006,64 +2984,64 @@ func (self *SGuest) syncWithCloudVM(ctx context.Context, userCred mcclient.Token
hostname = hostname[:128]
}
if extVM.GetName() != hostname {
self.Hostname = hostname
g.Hostname = hostname
}
if !self.IsFailureStatus() && syncStatus {
self.Status = extVM.GetStatus()
self.PowerStates = extVM.GetPowerStates()
self.inferPowerStates()
if !g.IsFailureStatus() && syncStatus {
g.Status = extVM.GetStatus()
g.PowerStates = extVM.GetPowerStates()
g.inferPowerStates()
}
self.VcpuCount = extVM.GetVcpuCount()
self.BootOrder = extVM.GetBootOrder()
self.Vga = extVM.GetVga()
self.Vdi = extVM.GetVdi()
g.VcpuCount = extVM.GetVcpuCount()
g.BootOrder = extVM.GetBootOrder()
g.Vga = extVM.GetVga()
g.Vdi = extVM.GetVdi()
if len(extVM.GetOsArch()) > 0 {
self.OsArch = extVM.GetOsArch()
g.OsArch = extVM.GetOsArch()
}
if len(self.OsType) == 0 {
self.OsType = string(extVM.GetOsType())
if len(g.OsType) == 0 {
g.OsType = string(extVM.GetOsType())
}
if len(self.Bios) == 0 {
self.Bios = string(extVM.GetBios())
if len(g.Bios) == 0 {
g.Bios = string(extVM.GetBios())
}
self.Machine = extVM.GetMachine()
g.Machine = extVM.GetMachine()
if !recycle {
self.HostId = host.Id
g.HostId = host.Id
}
self.InternetMaxBandwidthOut = extVM.GetInternetMaxBandwidthOut()
self.Throughput = extVM.GetThroughput()
g.InternetMaxBandwidthOut = extVM.GetInternetMaxBandwidthOut()
g.Throughput = extVM.GetThroughput()
instanceType := extVM.GetInstanceType()
if len(instanceType) > 0 {
self.InstanceType = instanceType
g.InstanceType = instanceType
}
memSizeMb := extVM.GetVmemSizeMB()
if self.VmemSize == 0 || self.VmemSize != memSizeMb {
if g.VmemSize == 0 || g.VmemSize != memSizeMb {
if memSizeMb > 0 {
self.VmemSize = memSizeMb
g.VmemSize = memSizeMb
} else {
sku, _ := ServerSkuManager.FetchSkuByNameAndProvider(instanceType, provider.GetFactory().GetName(), false)
if sku != nil && sku.MemorySizeMB > 0 {
self.VmemSize = sku.MemorySizeMB
g.VmemSize = sku.MemorySizeMB
}
}
}
self.Hypervisor = extVM.GetHypervisor()
g.Hypervisor = extVM.GetHypervisor()
if len(self.Description) == 0 {
self.Description = extVM.GetDescription()
if len(g.Description) == 0 {
g.Description = extVM.GetDescription()
}
self.IsEmulated = extVM.IsEmulated()
g.IsEmulated = extVM.IsEmulated()
if provider.GetFactory().IsSupportPrepaidResources() && !recycle {
self.BillingType = extVM.GetBillingType()
self.ExpiredAt = extVM.GetExpiredAt()
if self.GetDriver().IsSupportSetAutoRenew() {
self.AutoRenew = extVM.IsAutoRenew()
g.BillingType = extVM.GetBillingType()
g.ExpiredAt = extVM.GetExpiredAt()
if g.GetDriver().IsSupportSetAutoRenew() {
g.AutoRenew = extVM.IsAutoRenew()
}
}
return nil
@@ -3073,22 +3051,22 @@ func (self *SGuest) syncWithCloudVM(ctx context.Context, userCred mcclient.Token
return err
}
db.OpsLog.LogSyncUpdate(self, diff, userCred)
db.OpsLog.LogSyncUpdate(g, diff, userCred)
if len(diff) > 0 {
notifyclient.EventNotify(ctx, userCred, notifyclient.SEventNotifyParam{
Obj: self,
Obj: g,
Action: notifyclient.ActionSyncUpdate,
})
}
self.SyncOsInfo(ctx, userCred, extVM)
g.SyncOsInfo(ctx, userCred, extVM)
syncVirtualResourceMetadata(ctx, userCred, self, extVM)
SyncCloudProject(ctx, userCred, self, syncOwnerId, extVM, host.ManagerId)
syncVirtualResourceMetadata(ctx, userCred, g, extVM)
SyncCloudProject(ctx, userCred, g, syncOwnerId, extVM, host.ManagerId)
if provider.GetFactory().IsSupportPrepaidResources() && recycle {
vhost, _ := self.GetHost()
vhost, _ := g.GetHost()
err = vhost.syncWithCloudPrepaidVM(extVM, host)
if err != nil {
return err
+1 -1
View File
@@ -1437,7 +1437,7 @@ sigs.k8s.io/structured-merge-diff/v4/value
# sigs.k8s.io/yaml v1.2.0
## explicit; go 1.12
sigs.k8s.io/yaml
# yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230904084148-c98f51a511c0
# yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230910053442-8d45e74f111b
## explicit; go 1.18
yunion.io/x/cloudmux/pkg/apis
yunion.io/x/cloudmux/pkg/apis/billing
+1 -4
View File
@@ -852,10 +852,7 @@ func (svm *SVirtualMachine) fetchHardwareInfo() error {
if reflectutils.StructContains(devType, etherType) {
vnic := NewVirtualNIC(svm, dev, len(svm.vnics))
if len(vnic.GetIP()) > 0 {
// only nics with ip is valid
svm.vnics = append(svm.vnics, vnic)
}
svm.vnics = append(svm.vnics, vnic)
} else if reflectutils.StructContains(devType, diskType) {
svm.vdisks = append(svm.vdisks, NewVirtualDisk(svm, dev, len(svm.vdisks)))
} else if reflectutils.StructContains(devType, vgaType) {