From 76ac71003764e09ddb5402079da890647f64d47b Mon Sep 17 00:00:00 2001 From: Zexi Li Date: Thu, 28 Apr 2022 09:42:44 +0800 Subject: [PATCH] fix(baremetal): disable use perccli temporarily (#14146) --- pkg/baremetal/options/options.go | 5 ++-- pkg/baremetal/utils/raid/megactl/driver.go | 27 +++++++++++++--------- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/pkg/baremetal/options/options.go b/pkg/baremetal/options/options.go index c5f2afec58..bfe478cc1a 100644 --- a/pkg/baremetal/options/options.go +++ b/pkg/baremetal/options/options.go @@ -52,8 +52,9 @@ type BaremetalOptions struct { LogFetchIntervalSeconds int `help:"interval to fetch baremetal log, default is 900 seconds" default:"900"` SendMetricsIntervalSeconds int `help:"interval to send baremetal metrics, default is 300 seconds" default:"300"` - TftpFileMap map[string]string `help:"map of filename to real file path for tftp"` - BootLoader string `help:"PXE boot loader" default:"grub"` + TftpFileMap map[string]string `help:"map of filename to real file path for tftp"` + BootLoader string `help:"PXE boot loader" default:"grub"` + UseMegaRaidPerccli bool `help:"Use MegaRAID perccli" default:"false"` } const ( diff --git a/pkg/baremetal/utils/raid/megactl/driver.go b/pkg/baremetal/utils/raid/megactl/driver.go index 8df315550b..87926696f5 100644 --- a/pkg/baremetal/utils/raid/megactl/driver.go +++ b/pkg/baremetal/utils/raid/megactl/driver.go @@ -19,6 +19,7 @@ import ( "yunion.io/x/pkg/errors" "yunion.io/x/onecloud/pkg/apis/compute" + "yunion.io/x/onecloud/pkg/baremetal/options" "yunion.io/x/onecloud/pkg/baremetal/utils/raid" "yunion.io/x/onecloud/pkg/compute/baremetal" ) @@ -59,18 +60,22 @@ type sRaid struct { } func newRaid(term raid.IExecTerm) raid.IRaidDriver { - perccliDrv := &sRaid{ - driver: newPerccliDriver(), - term: term, - adaptors: make([]*sRaidAdaptor, 0), - } - if err := perccliDrv.ParsePhyDevs(); err == nil && perccliDrv.phyDevsCnt > 0 { - log.Infof("Use perccli driver, found %d pds", perccliDrv.phyDevsCnt) - return perccliDrv - } else { - log.Warningf("perccli driver parse physical devices error: %v, %d pds, fallback to old megactl and storcli driver", err, perccliDrv.phyDevsCnt) - return NewMegaRaid(term) + if options.Options.UseMegaRaidPerccli { + perccliDrv := &sRaid{ + driver: newPerccliDriver(), + term: term, + adaptors: make([]*sRaidAdaptor, 0), + } + if err := perccliDrv.ParsePhyDevs(); err == nil && perccliDrv.phyDevsCnt > 0 { + log.Infof("Use perccli driver, found %d pds", perccliDrv.phyDevsCnt) + return perccliDrv + } else { + log.Warningf("perccli driver parse physical devices error: %v, %d pds, fallback to old megactl and storcli driver", err, perccliDrv.phyDevsCnt) + return NewMegaRaid(term) + } } + log.Infof("Not use perccli, use legacy megaraid driver") + return NewMegaRaid(term) } func (r *sRaid) GetName() string {