From ad56d568fb4ecf1f3e58fa36be8be19c2b9c781e Mon Sep 17 00:00:00 2001 From: wanyaoqi Date: Mon, 13 Feb 2023 12:11:39 +0800 Subject: [PATCH] fix(host,baremetal): deploy content action not marshaled Signed-off-by: wanyaoqi --- pkg/baremetal/manager.go | 10 ++++++++-- pkg/hostman/guestman/guestman.go | 10 ++++++++-- pkg/hostman/hostdeployer/apis/utils.go | 17 ----------------- 3 files changed, 16 insertions(+), 21 deletions(-) diff --git a/pkg/baremetal/manager.go b/pkg/baremetal/manager.go index 79d323efd3..48d0f33d6e 100644 --- a/pkg/baremetal/manager.go +++ b/pkg/baremetal/manager.go @@ -2872,13 +2872,19 @@ func (s *SBaremetalServer) SyncPartitionSize(term *ssh.Client, parts []*disktool func (s *SBaremetalServer) DoDeploy(tool *disktool.SSHPartitionTool, term *ssh.Client, data jsonutils.JSONObject, isInit bool) (jsonutils.JSONObject, error) { publicKey := deployapi.GetKeys(data) - deploys, _ := data.GetArray("deploys") password, _ := data.GetString("password") resetPassword := jsonutils.QueryBoolean(data, "reset_password", false) if resetPassword && len(password) == 0 { password = seclib.RandomPassword(12) } - deployInfo := deployapi.NewDeployInfo(publicKey, deployapi.JsonDeploysToStructs(deploys), + deployArray := make([]*deployapi.DeployContent, 0) + if data.Contains("deploys") { + err := data.Unmarshal(&deployArray, "deploys") + if err != nil { + return nil, errors.Wrapf(err, "unmarshal to array of deployapi.DeployContent") + } + } + deployInfo := deployapi.NewDeployInfo(publicKey, deployArray, password, isInit, true, o.Options.LinuxDefaultRootUser, o.Options.WindowsDefaultAdminUser, false, "", false, "", ) diff --git a/pkg/hostman/guestman/guestman.go b/pkg/hostman/guestman/guestman.go index 443800280a..d769ba19c0 100644 --- a/pkg/hostman/guestman/guestman.go +++ b/pkg/hostman/guestman/guestman.go @@ -696,7 +696,13 @@ func (m *SGuestManager) startDeploy( return nil, nil } publicKey := deployapi.GetKeys(deployParams.Body) - deploys, _ := deployParams.Body.GetArray("deploys") + deployArray := make([]*deployapi.DeployContent, 0) + if deployParams.Body.Contains("deploys") { + err := deployParams.Body.Unmarshal(&deployArray, "deploys") + if err != nil { + return nil, errors.Wrapf(err, "unmarshal to array of deployapi.DeployContent") + } + } password, _ := deployParams.Body.GetString("password") resetPassword := jsonutils.QueryBoolean(deployParams.Body, "reset_password", false) if resetPassword && len(password) == 0 { @@ -712,7 +718,7 @@ func (m *SGuestManager) startDeploy( guestInfo, err := guest.DeployFs(ctx, deployParams.UserCred, deployapi.NewDeployInfo( - publicKey, deployapi.JsonDeploysToStructs(deploys), + publicKey, deployArray, password, deployParams.IsInit, false, options.HostOptions.LinuxDefaultRootUser, options.HostOptions.WindowsDefaultAdminUser, enableCloudInit, loginAccount, deployTelegraf, telegrafConfig, diff --git a/pkg/hostman/hostdeployer/apis/utils.go b/pkg/hostman/hostdeployer/apis/utils.go index 16c459eb89..54037d7e33 100644 --- a/pkg/hostman/hostdeployer/apis/utils.go +++ b/pkg/hostman/hostdeployer/apis/utils.go @@ -57,23 +57,6 @@ func NewDeployInfo( return depInfo } -func JsonDeploysToStructs(jdeploys []jsonutils.JSONObject) []*DeployContent { - ret := []*DeployContent{} - for i := 0; i < len(jdeploys); i++ { - d := new(DeployContent) - path, err := jdeploys[i].GetString("path") - if err == nil { - d.Path = path - } - content, err := jdeploys[i].GetString("content") - if err == nil { - d.Content = content - } - ret = append(ret, d) - } - return ret -} - func GetKeys(data jsonutils.JSONObject) *SSHKeys { var ret = new(SSHKeys) ret.PublicKey, _ = data.GetString("public_key")