From e02ac208fc99d1bf7deaee1d88f1e8f505de8fad Mon Sep 17 00:00:00 2001 From: ioito Date: Tue, 6 Aug 2019 15:11:39 +0800 Subject: [PATCH] fix: get keypair info fail after rebuild-root --- pkg/compute/guestdrivers/managedvirtual.go | 13 ++++++++++++- pkg/compute/guestdrivers/utils.go | 2 +- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/pkg/compute/guestdrivers/managedvirtual.go b/pkg/compute/guestdrivers/managedvirtual.go index 84b4472e0d..d00f6c3cc6 100644 --- a/pkg/compute/guestdrivers/managedvirtual.go +++ b/pkg/compute/guestdrivers/managedvirtual.go @@ -22,6 +22,7 @@ import ( "github.com/pkg/errors" "yunion.io/x/onecloud/pkg/util/cloudinit" + "yunion.io/x/onecloud/pkg/util/seclib2" "yunion.io/x/jsonutils" "yunion.io/x/log" @@ -450,7 +451,17 @@ func (self *SManagedVirtualizedGuestDriver) RemoteDeployGuestForDeploy(ctx conte desc.Password = "" } - return iVM.DeployVM(ctx, desc.Name, desc.Password, desc.PublicKey, deleteKeypair, desc.Description) + e := iVM.DeployVM(ctx, desc.Name, desc.Password, desc.PublicKey, deleteKeypair, desc.Description) + if e != nil { + return e + } + + //解绑秘钥后需要重置密码 + if deleteKeypair { + desc.Password = seclib2.RandomPassword2(12) + return iVM.DeployVM(ctx, desc.Name, desc.Password, desc.PublicKey, false, desc.Description) + } + return nil }() if err != nil { return nil, err diff --git a/pkg/compute/guestdrivers/utils.go b/pkg/compute/guestdrivers/utils.go index f11a38c1eb..5143bc3dfd 100644 --- a/pkg/compute/guestdrivers/utils.go +++ b/pkg/compute/guestdrivers/utils.go @@ -51,7 +51,7 @@ func fetchIVMinfo(desc cloudprovider.SManagedVMCreateConfig, iVM cloudprovider.I //避免在rebuild_root时绑定秘钥,没有account信息 data.Add(jsonutils.NewString(account), "account") - if len(passwd) > 0 { + if len(passwd) > 0 || len(publicKey) > 0 { var encpasswd string var err error if len(publicKey) > 0 {