diff --git a/pkg/compute/guestdrivers/azure.go b/pkg/compute/guestdrivers/azure.go index 938121b1c6..d3e274cc0d 100644 --- a/pkg/compute/guestdrivers/azure.go +++ b/pkg/compute/guestdrivers/azure.go @@ -71,6 +71,10 @@ func (self *SAzureGuestDriver) GetDeployStatus() ([]string, error) { return []string{models.VM_RUNNING}, nil } +func (self *SAzureGuestDriver) IsNeedRestartForResetLoginInfo() bool { + return false +} + func (self *SAzureGuestDriver) ValidateResizeDisk(guest *models.SGuest, disk *models.SDisk, storage *models.SStorage) error { //https://docs.microsoft.com/en-us/rest/api/compute/disks/update //Resizes are only allowed if the disk is not attached to a running VM, and can only increase the disk's size diff --git a/pkg/compute/guestdrivers/base.go b/pkg/compute/guestdrivers/base.go index 1ee71b0adc..190ef50e72 100644 --- a/pkg/compute/guestdrivers/base.go +++ b/pkg/compute/guestdrivers/base.go @@ -120,6 +120,10 @@ func (self *SBaseGuestDriver) GetDeployStatus() ([]string, error) { return []string{}, fmt.Errorf("This Guest driver dose not implement GetDeployStatus") } +func (self *SBaseGuestDriver) IsNeedRestartForResetLoginInfo() bool { + return true +} + func (self *SBaseGuestDriver) RequestDeleteDetachedDisk(ctx context.Context, disk *models.SDisk, task taskman.ITask, isPurge bool) error { return fmt.Errorf("Not Implement") } diff --git a/pkg/compute/models/guestdrivers.go b/pkg/compute/models/guestdrivers.go index 643d597751..14bf4f54fe 100644 --- a/pkg/compute/models/guestdrivers.go +++ b/pkg/compute/models/guestdrivers.go @@ -88,6 +88,7 @@ type IGuestDriver interface { GetDeployStatus() ([]string, error) ValidateResizeDisk(guest *SGuest, disk *SDisk, storage *SStorage) error CanKeepDetachDisk() bool + IsNeedRestartForResetLoginInfo() bool RequestDeleteDetachedDisk(ctx context.Context, disk *SDisk, task taskman.ITask, isPurge bool) error StartGuestDetachdiskTask(ctx context.Context, userCred mcclient.TokenCredential, guest *SGuest, params *jsonutils.JSONDict, parentTaskId string) error diff --git a/pkg/compute/models/guests.go b/pkg/compute/models/guests.go index 8dd6f87b85..45d0f1ad2b 100644 --- a/pkg/compute/models/guests.go +++ b/pkg/compute/models/guests.go @@ -1975,10 +1975,10 @@ func (self *SGuest) PerformDeploy(ctx context.Context, userCred mcclient.TokenCr return nil, fmt.Errorf("Parse query body error") } - // 变更密码/密钥时需要Restart才能生效。更新普通字段不需要Restart + // 变更密码/密钥时需要Restart才能生效。更新普通字段不需要Restart, Azure需要在运行状态下操作 doRestart := false if kwargs.Contains("__delete_keypair__") || kwargs.Contains("keypair") { - doRestart = true + doRestart = self.GetDriver().IsNeedRestartForResetLoginInfo() var kpId string if kwargs.Contains("keypair") { diff --git a/pkg/util/azure/instance.go b/pkg/util/azure/instance.go index b922b6f5a2..c9aaf332d7 100644 --- a/pkg/util/azure/instance.go +++ b/pkg/util/azure/instance.go @@ -668,7 +668,7 @@ func (region *SRegion) DeployVM(instanceId, name, password, publicKey string, de return nil } if len(publicKey) > 0 { - err = region.resetPublicKey(instanceId, instance.Properties.OsProfile.AdminUsername, publicKey) + return region.resetPublicKey(instanceId, instance.Properties.OsProfile.AdminUsername, publicKey) } return region.resetPassword(instanceId, instance.Properties.OsProfile.AdminUsername, password) }