From 6be9f25d9159edabbff900c60313f8aa0a23d976 Mon Sep 17 00:00:00 2001 From: Zexi Li Date: Thu, 21 Oct 2021 01:00:19 +0800 Subject: [PATCH] fix(baremetal): rebuild root calculate root disk partitions incorrect --- pkg/baremetal/manager.go | 7 +++++++ pkg/baremetal/tasks/worker.go | 3 +-- pkg/compute/models/hosts.go | 8 ++++++-- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/pkg/baremetal/manager.go b/pkg/baremetal/manager.go index 6a7a48a691..adc4298426 100644 --- a/pkg/baremetal/manager.go +++ b/pkg/baremetal/manager.go @@ -185,6 +185,7 @@ func (m *SBaremetalManager) CleanBaremetal(bmId string) { func (m *SBaremetalManager) updateBaremetal(session *mcclient.ClientSession, bmId string) (jsonutils.JSONObject, error) { params := jsonutils.NewDict() params.Add(jsonutils.JSONTrue, "is_baremetal") + params.Add(jsonutils.JSONTrue, "not_sync_config") obj, err := modules.Hosts.Put(session, bmId, params) if err != nil { return nil, err @@ -2658,7 +2659,13 @@ func (s *SBaremetalServer) DoRebuildRootDisk(term *ssh.Client) ([]*disktool.Part func (s *SBaremetalServer) SyncPartitionSize(term *ssh.Client, parts []*disktool.Partition) ([]jsonutils.JSONObject, error) { disks, _ := s.desc.GetArray("disks") + + // calculate root partitions count rootPartsCnt := len(parts) - len(disks) + 1 + if len(parts) < len(disks) { + // HACK: rebuild root disk + rootPartsCnt = len(parts) + } rootParts := parts[0:rootPartsCnt] dataParts := parts[rootPartsCnt:] idx := 0 diff --git a/pkg/baremetal/tasks/worker.go b/pkg/baremetal/tasks/worker.go index d908add330..63b8a08ea5 100644 --- a/pkg/baremetal/tasks/worker.go +++ b/pkg/baremetal/tasks/worker.go @@ -24,14 +24,13 @@ import ( "yunion.io/x/log" "yunion.io/x/onecloud/pkg/appsrv" - "yunion.io/x/onecloud/pkg/baremetal/options" "yunion.io/x/onecloud/pkg/mcclient/modules" ) var baremetalTaskWorkerMan *appsrv.SWorkerManager func init() { - baremetalTaskWorkerMan = appsrv.NewWorkerManager("BaremetalTaskWorkerManager", options.Options.TaskWorkerCount, 1024, false) + baremetalTaskWorkerMan = appsrv.NewWorkerManager("BaremetalTaskWorkerManager", 4, 1024, false) } func GetWorkManager() *appsrv.SWorkerManager { diff --git a/pkg/compute/models/hosts.go b/pkg/compute/models/hosts.go index cee5ea04da..e6dd3f923d 100644 --- a/pkg/compute/models/hosts.go +++ b/pkg/compute/models/hosts.go @@ -3532,8 +3532,12 @@ func (self *SHost) PostUpdate(ctx context.Context, userCred mcclient.TokenCreden } } - if err := self.startSyncConfig(ctx, userCred, "", true); err != nil { - log.Errorf("start sync host %q config after updated", self.GetName()) + notSyncConf, _ := data.Bool("not_sync_config") + + if !notSyncConf { + if err := self.startSyncConfig(ctx, userCred, "", true); err != nil { + log.Errorf("start sync host %q config after updated", self.GetName()) + } } }