From 835018c9ac78702749830fd341ee73e56798e651 Mon Sep 17 00:00:00 2001 From: Travis Raines <571832+rainest@users.noreply.github.com> Date: Mon, 16 Jun 2025 15:40:52 -0700 Subject: [PATCH 1/2] chore: use interfaces without indirects Do not dereference interface fields and vars, and pass struct pointers to functions that accept interfaces. Pointers to structs with the appropriate methods satisfy interfaces and are the standard means of passing interface arguments. Using pointers to interfaces requires weird type contortions. Signed-off-by: Travis Raines <571832+rainest@users.noreply.github.com> --- cmd/power-control/service.go | 8 +- internal/api/health.go | 22 ++--- internal/api/health_test.go | 6 +- internal/domain/globals.go | 24 +++--- internal/domain/power-cap.go | 58 ++++++------- internal/domain/power-cap_test.go | 12 +-- internal/domain/power-status.go | 40 ++++----- internal/domain/power-status_test.go | 8 +- internal/domain/transitions.go | 122 +++++++++++++-------------- internal/domain/transitions_test.go | 68 +++++++-------- 10 files changed, 184 insertions(+), 184 deletions(-) diff --git a/cmd/power-control/service.go b/cmd/power-control/service.go index 433588db..5eea9a5b 100644 --- a/cmd/power-control/service.go +++ b/cmd/power-control/service.go @@ -298,9 +298,9 @@ func runPCS(pcs *pcsConfig, etcd *etcdConfig, postgres *storage.PostgresConfig) //DOMAIN CONFIGURATION var domainGlobals domain.DOMAIN_GLOBALS - domainGlobals.NewGlobals(&BaseTRSTask, &TLOC_rf, &TLOC_svc, rfClient, svcClient, - rfClientLock, &Running, &DSP, &HSM, pcs.vaultEnabled, - &CS, &DLOCK, pcs.maxNumCompleted, pcs.expireTimeMins, podName) + domainGlobals.NewGlobals(&BaseTRSTask, TLOC_rf, TLOC_svc, rfClient, svcClient, + rfClientLock, &Running, DSP, HSM, pcs.vaultEnabled, + CS, DLOCK, pcs.maxNumCompleted, pcs.expireTimeMins, podName) //Wait for vault PKI to respond for CA bundle. Once this happens, re-do //the globals. This goroutine will run forever checking if the CA trust @@ -362,7 +362,7 @@ func runPCS(pcs *pcsConfig, etcd *etcdConfig, postgres *storage.PostgresConfig) prevCaChain = caChain //update RF tloc and rfclient to the global areas! //TODO im not sure what part of this code is still needed; im guessing part of it at least! - domainGlobals.RFTloc = &TLOC_rf + domainGlobals.RFTloc = TLOC_rf domainGlobals.RFHttpClient = rfClient //hsmGlob.RFTloc = &TLOC_rf //hsmGlob.RFHttpClient = rfClient diff --git a/internal/api/health.go b/internal/api/health.go index d93a9347..01203a33 100644 --- a/internal/api/health.go +++ b/internal/api/health.go @@ -66,13 +66,13 @@ func GetReadiness(w http.ResponseWriter, req *http.Request) { //Check KVStore and dist locks - err = (*glb.DSP).Ping() + err = glb.DSP.Ping() if err != nil { logger.Log.Errorf("%s: Ping() failed to storage provider.", fname) ready = false } - err = (*glb.DistLock).Ping() + err = glb.DistLock.Ping() if err != nil { logger.Log.Errorf("%s: Ping() failed to dist lock provider.", fname) ready = false @@ -80,7 +80,7 @@ func GetReadiness(w http.ResponseWriter, req *http.Request) { //Check HSM - err = (*glb.HSM).Ping() + err = glb.HSM.Ping() if err != nil { logger.Log.Errorf("%s: Ping() failed to HSM.", fname) ready = false @@ -89,7 +89,7 @@ func GetReadiness(w http.ResponseWriter, req *http.Request) { //Check Vault if glb.VaultEnabled { - if !(*glb.CS).IsReady() { + if !glb.CS.IsReady() { logger.Log.Errorf("%s: Cred store is not ready.", fname) ready = false } @@ -97,7 +97,7 @@ func GetReadiness(w http.ResponseWriter, req *http.Request) { //Check TRS - alive, terr := (*glb.RFTloc).Alive() + alive, terr := glb.RFTloc.Alive() if !alive || (terr != nil) { logger.Log.Infof("%s: TRS not alive, err: %v", fname, err) ready = false @@ -132,7 +132,7 @@ func GetHealth(w http.ResponseWriter, req *http.Request) { if glb.DSP == nil { rspData.KvStore = unconnected } else { - err = (*glb.DSP).Ping() + err = glb.DSP.Ping() if err == nil { rspData.KvStore = connected + sep + responsive } else { @@ -143,7 +143,7 @@ func GetHealth(w http.ResponseWriter, req *http.Request) { if glb.DistLock == nil { rspData.DistLocking = unconnected } else { - err = (*glb.DistLock).Ping() + err = glb.DistLock.Ping() if err == nil { rspData.DistLocking = connected + sep + responsive } else { @@ -156,7 +156,7 @@ func GetHealth(w http.ResponseWriter, req *http.Request) { if glb.HSM == nil { rspData.StateManager = unconnected } else { - err = (*glb.HSM).Ping() + err = glb.HSM.Ping() if err == nil { rspData.StateManager = connected + sep + responsive } else { @@ -170,7 +170,7 @@ func GetHealth(w http.ResponseWriter, req *http.Request) { if glb.CS == nil { rspData.Vault = unconnected } else { - if (*glb.CS).IsReady() { + if glb.CS.IsReady() { rspData.Vault = connected + sep + responsive } else { rspData.Vault = connected + sep + unresponsive @@ -185,7 +185,7 @@ func GetHealth(w http.ResponseWriter, req *http.Request) { if glb.RFTloc == nil { rspData.TaskRunner = unconnected } else { - alive, terr := (*glb.RFTloc).Alive() + alive, terr := glb.RFTloc.Alive() if terr != nil { rspData.TaskRunner = unconnected + sep + unresponsive } else { @@ -196,7 +196,7 @@ func GetHealth(w http.ResponseWriter, req *http.Request) { } } - ktype := reflect.TypeOf((*glb.RFTloc)).String() + ktype := reflect.TypeOf(glb.RFTloc).String() ktypeTL := strings.ToLower(ktype) if strings.Contains(ktypeTL, "local") { rspData.TaskRunner = rspData.TaskRunner + sep + localmode diff --git a/internal/api/health_test.go b/internal/api/health_test.go index 23a88209..4dc46e24 100644 --- a/internal/api/health_test.go +++ b/internal/api/health_test.go @@ -112,9 +112,9 @@ func setupGlobals(suite *Models_TS) { } var domainGlobals domain.DOMAIN_GLOBALS - domainGlobals.NewGlobals(nil, &TLOC_rf, nil, nil, nil, - nil, &Running, &DSP, &HSM, (ve != ""), - &CS, &DLOCK, 20000, 1440, "health_test-pod") + domainGlobals.NewGlobals(nil, TLOC_rf, nil, nil, nil, + nil, &Running, DSP, HSM, (ve != ""), + CS, DLOCK, 20000, 1440, "health_test-pod") domain.Init(&domainGlobals) } diff --git a/internal/domain/globals.go b/internal/domain/globals.go index 0a275504..f43a01a2 100644 --- a/internal/domain/globals.go +++ b/internal/domain/globals.go @@ -46,33 +46,33 @@ func Init(glob *DOMAIN_GLOBALS) { type DOMAIN_GLOBALS struct { CAUri string BaseTRSTask *trs_http_api.HttpTask - RFTloc *trs_http_api.TrsAPI - HSMTloc *trs_http_api.TrsAPI + RFTloc trs_http_api.TrsAPI + HSMTloc trs_http_api.TrsAPI RFClientLock *sync.RWMutex Running *bool - DSP *storage.StorageProvider - HSM *hsm.HSMProvider + DSP storage.StorageProvider + HSM hsm.HSMProvider RFHttpClient *hms_certs.HTTPClientPair SVCHttpClient *hms_certs.HTTPClientPair RFTransportReady *bool VaultEnabled bool - CS *credstore.CredStoreProvider - DistLock *storage.DistributedLockProvider + CS credstore.CredStoreProvider + DistLock storage.DistributedLockProvider MaxNumCompleted int ExpireTimeMins int PodName string } func (g *DOMAIN_GLOBALS) NewGlobals(base *trs_http_api.HttpTask, - tlocRF *trs_http_api.TrsAPI, - tlocSVC *trs_http_api.TrsAPI, + tlocRF trs_http_api.TrsAPI, + tlocSVC trs_http_api.TrsAPI, clientRF *hms_certs.HTTPClientPair, clientSVC *hms_certs.HTTPClientPair, rfClientLock *sync.RWMutex, - running *bool, dsp *storage.StorageProvider, - hsm *hsm.HSMProvider, vaultEnabled bool, - credStore *credstore.CredStoreProvider, - distLock *storage.DistributedLockProvider, + running *bool, dsp storage.StorageProvider, + hsm hsm.HSMProvider, vaultEnabled bool, + credStore credstore.CredStoreProvider, + distLock storage.DistributedLockProvider, maxNumCompleted int, expireTimeMins int, podName string) { g.BaseTRSTask = base diff --git a/internal/domain/power-cap.go b/internal/domain/power-cap.go index f0aafed0..58121418 100644 --- a/internal/domain/power-cap.go +++ b/internal/domain/power-cap.go @@ -196,7 +196,7 @@ func SnapshotPowerCap(parameters model.PowerCapSnapshotParameter) (pb model.Pass task := model.NewPowerCapSnapshotTask(parameters, GLOB.ExpireTimeMins) // Store task - err := (*GLOB.DSP).StorePowerCapTask(task) + err := GLOB.DSP.StorePowerCapTask(task) if err != nil { pb = model.BuildErrorPassback(http.StatusInternalServerError, err) logger.Log.WithFields(logrus.Fields{"ERROR": err, "HttpStatusCode": pb.StatusCode}).Error("Error storing new power capping task") @@ -219,7 +219,7 @@ func PatchPowerCap(parameters model.PowerCapPatchParameter) (pb model.Passback) task := model.NewPowerCapPatchTask(parameters, GLOB.ExpireTimeMins) // Store task - err := (*GLOB.DSP).StorePowerCapTask(task) + err := GLOB.DSP.StorePowerCapTask(task) if err != nil { pb = model.BuildErrorPassback(http.StatusInternalServerError, err) logger.Log.WithFields(logrus.Fields{"ERROR": err, "HttpStatusCode": pb.StatusCode}).Error("Error storing new power capping task") @@ -239,7 +239,7 @@ func PatchPowerCap(parameters model.PowerCapPatchParameter) (pb model.Passback) // Get all of the existing power capping tasks func GetPowerCap() (pb model.Passback) { // Get all tasks - tasks, err := (*GLOB.DSP).GetAllPowerCapTasks() + tasks, err := GLOB.DSP.GetAllPowerCapTasks() if err != nil { pb = model.BuildErrorPassback(http.StatusInternalServerError, err) logger.Log.WithFields(logrus.Fields{"ERROR": err, "HttpStatusCode": pb.StatusCode}).Error("Error retrieving all power cap tasks") @@ -254,7 +254,7 @@ func GetPowerCap() (pb model.Passback) { var ops []model.PowerCapOperation // Compressed tasks don't have operations anymore. No need to look them up. if !task.IsCompressed { - ops, err = (*GLOB.DSP).GetAllPowerCapOperationsForTask(task.TaskID) + ops, err = GLOB.DSP.GetAllPowerCapOperationsForTask(task.TaskID) if err != nil { pb = model.BuildErrorPassback(http.StatusInternalServerError, err) logger.Log.WithFields(logrus.Fields{"ERROR": err, "HttpStatusCode": pb.StatusCode}).Error("Error retrieving power cap operations") @@ -274,7 +274,7 @@ func GetPowerCap() (pb model.Passback) { func GetPowerCapQuery(taskID uuid.UUID) (pb model.Passback) { var ops []model.PowerCapOperation // Get the task - task, err := (*GLOB.DSP).GetPowerCapTask(taskID) + task, err := GLOB.DSP.GetPowerCapTask(taskID) if err != nil { if strings.Contains(err.Error(), "does not exist") { pb = model.BuildErrorPassback(http.StatusNotFound, err) @@ -292,7 +292,7 @@ func GetPowerCapQuery(taskID uuid.UUID) (pb model.Passback) { // Compressed tasks don't have operations anymore. No need to look them up. if !task.IsCompressed { // Get the operations for the task - ops, err = (*GLOB.DSP).GetAllPowerCapOperationsForTask(taskID) + ops, err = GLOB.DSP.GetAllPowerCapOperationsForTask(taskID) if err != nil { pb = model.BuildErrorPassback(http.StatusInternalServerError, err) logger.Log.WithFields(logrus.Fields{"ERROR": err, "HttpStatusCode": pb.StatusCode}).Error("Error retrieving power cap operations") @@ -393,7 +393,7 @@ func doPowerCapTask(taskID uuid.UUID) { patchParametersMap := make(map[string]map[string]int) fname := "doPowerCapTask" - task, err := (*GLOB.DSP).GetPowerCapTask(taskID) + task, err := GLOB.DSP.GetPowerCapTask(taskID) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Error("Cannot retrieve power capping task, cannot generate operations") return @@ -439,7 +439,7 @@ func doPowerCapTask(taskID uuid.UUID) { op.Component.Xname = id op.Component.Error = "Invalid xname" task.OperationIDs = append(task.OperationIDs, op.OperationID) - err = (*GLOB.DSP).StorePowerCapOperation(op) + err = GLOB.DSP.StorePowerCapOperation(op) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Error("Error storing power capping operation") } @@ -456,7 +456,7 @@ func doPowerCapTask(taskID uuid.UUID) { betterXnames, _ := xnametypes.ValidateCompIDs(goodXnames, false) // Verify xnames exist in HSM - hsmData, err := (*GLOB.HSM).FillHSMData(betterXnames) + hsmData, err := GLOB.HSM.FillHSMData(betterXnames) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Error("Error retrieving HSM data") // Failed to get data from HSM. Fail everything. @@ -466,7 +466,7 @@ func doPowerCapTask(taskID uuid.UUID) { op.Component.Xname = id op.Component.Error = "Error retrieving HSM data" task.OperationIDs = append(task.OperationIDs, op.OperationID) - err = (*GLOB.DSP).StorePowerCapOperation(op) + err = GLOB.DSP.StorePowerCapOperation(op) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Error("Error storing power capping operation") } @@ -482,7 +482,7 @@ func doPowerCapTask(taskID uuid.UUID) { op.Component.Xname = id op.Component.Error = "Xname not found in HSM" task.OperationIDs = append(task.OperationIDs, op.OperationID) - err = (*GLOB.DSP).StorePowerCapOperation(op) + err = GLOB.DSP.StorePowerCapOperation(op) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Error("Error storing power capping operation") } @@ -508,7 +508,7 @@ func doPowerCapTask(taskID uuid.UUID) { op.Status = model.PowerCapOpStatusFailed op.Component.Error = "Skipping undefined control '" + name + "'" task.OperationIDs = append(task.OperationIDs, op.OperationID) - err = (*GLOB.DSP).StorePowerCapOperation(op) + err = GLOB.DSP.StorePowerCapOperation(op) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Error("Error storing power capping operation") } @@ -649,7 +649,7 @@ func doPowerCapTask(taskID uuid.UUID) { goodOps = append(goodOps, op) } task.OperationIDs = append(task.OperationIDs, op.OperationID) - err = (*GLOB.DSP).StorePowerCapOperation(op) + err = GLOB.DSP.StorePowerCapOperation(op) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Error("Error storing power capping operation") } @@ -662,7 +662,7 @@ func doPowerCapTask(taskID uuid.UUID) { return } task.TaskStatus = model.PowerCapTaskStatusInProgress - err = (*GLOB.DSP).StorePowerCapTask(task) + err = GLOB.DSP.StorePowerCapTask(task) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Error("Error storing power capping task") } @@ -679,7 +679,7 @@ func doPowerCapTask(taskID uuid.UUID) { // Create TRS task list trsTaskMap := make(map[uuid.UUID]model.PowerCapOperation) - trsTaskList := (*GLOB.RFTloc).CreateTaskList(GLOB.BaseTRSTask, len(goodOps)) + trsTaskList := GLOB.RFTloc.CreateTaskList(GLOB.BaseTRSTask, len(goodOps)) trsTaskIdx := 0 for _, op := range goodOps { trsTaskMap[trsTaskList[trsTaskIdx].GetID()] = op @@ -704,7 +704,7 @@ func doPowerCapTask(taskID uuid.UUID) { } // Vault enabled? if GLOB.VaultEnabled { - user, pw, err := (*GLOB.CS).GetControllerCredentials(op.Component.Xname) + user, pw, err := GLOB.CS.GetControllerCredentials(op.Component.Xname) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Error("Unable to get credentials for " + op.Component.Xname) } // Retry credentials? Fail operation here? For now, just let it fail with empty credentials @@ -720,7 +720,7 @@ func doPowerCapTask(taskID uuid.UUID) { "(timeout %v) (%s)", fname, trsTaskIdx, len(goodOps), GLOB.BaseTRSTask.Timeout, GLOB.PodName) - rchan, err := (*GLOB.RFTloc).Launch(&trsTaskList) + rchan, err := GLOB.RFTloc.Launch(&trsTaskList) if err != nil { logrus.Error(err) } @@ -801,12 +801,12 @@ func doPowerCapTask(taskID uuid.UUID) { op.Status = model.PowerCapOpStatusSucceeded } } - err = (*GLOB.DSP).StorePowerCapOperation(op) + err = GLOB.DSP.StorePowerCapOperation(op) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Error("Error storing power capping operation") } } - (*GLOB.RFTloc).Close(&trsTaskList) + GLOB.RFTloc.Close(&trsTaskList) close(rchan) logger.Log.Infof("%s: Done processing BMC responses (%s)", fname, GLOB.PodName) @@ -1008,7 +1008,7 @@ func isHpeApollo6500(powerURL string) bool { // records that have expired. func powerCapReaper() { // Get all power cap tasks - tasks, err := (*GLOB.DSP).GetAllPowerCapTasks() + tasks, err := GLOB.DSP.GetAllPowerCapTasks() if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Error("Error retreiving power cap tasks") return @@ -1023,18 +1023,18 @@ func powerCapReaper() { expired := task.AutomaticExpirationTime.Before(time.Now()) if expired { // Get the operations for the power cap task - ops, err := (*GLOB.DSP).GetAllPowerCapOperationsForTask(task.TaskID) + ops, err := GLOB.DSP.GetAllPowerCapOperationsForTask(task.TaskID) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Errorf("Error retreiving operations for power cap task, %s.", task.TaskID.String()) continue } for _, op := range ops { - err = (*GLOB.DSP).DeletePowerCapOperation(task.TaskID, op.OperationID) + err = GLOB.DSP.DeletePowerCapOperation(task.TaskID, op.OperationID) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Errorf("Error deleting operation, %s, for power cap task, %s.", op.OperationID.String(), task.TaskID.String()) } } - err = (*GLOB.DSP).DeletePowerCapTask(task.TaskID) + err = GLOB.DSP.DeletePowerCapTask(task.TaskID) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Errorf("Error deleting power cap task, %s.", task.TaskID.String()) } @@ -1086,18 +1086,18 @@ func powerCapReaper() { } for _, task := range tasksToDelete { // Get the operations for the power cap task - ops, err := (*GLOB.DSP).GetAllPowerCapOperationsForTask(task.TaskID) + ops, err := GLOB.DSP.GetAllPowerCapOperationsForTask(task.TaskID) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Errorf("Error retreiving operations for power cap task, %s.", task.TaskID.String()) continue } for _, op := range ops { - err = (*GLOB.DSP).DeletePowerCapOperation(task.TaskID, op.OperationID) + err = GLOB.DSP.DeletePowerCapOperation(task.TaskID, op.OperationID) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Errorf("Error deleting operation, %s, for power cap task, %s.", op.OperationID.String(), task.TaskID.String()) } } - err = (*GLOB.DSP).DeletePowerCapTask(task.TaskID) + err = GLOB.DSP.DeletePowerCapTask(task.TaskID) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Errorf("Error deleting power cap task, %s.", task.TaskID.String()) } @@ -1110,7 +1110,7 @@ func powerCapReaper() { // Keep only what is needed. func compressAndCompleteTask(task model.PowerCapTask) { // Get the operations for the power cap task - ops, err := (*GLOB.DSP).GetAllPowerCapOperationsForTask(task.TaskID) + ops, err := GLOB.DSP.GetAllPowerCapOperationsForTask(task.TaskID) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Errorf("Error retreiving operations for power cap task, %s.", task.TaskID.String()) return @@ -1121,14 +1121,14 @@ func compressAndCompleteTask(task model.PowerCapTask) { task.Components = rsp.Components task.TaskStatus = model.PowerCapTaskStatusCompleted task.IsCompressed = true - err = (*GLOB.DSP).StorePowerCapTask(task) + err = GLOB.DSP.StorePowerCapTask(task) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Error("Error storing power capping task") // Don't delete the operations if we were unsuccessful storing the task. return } for _, op := range ops { - err = (*GLOB.DSP).DeletePowerCapOperation(task.TaskID, op.OperationID) + err = GLOB.DSP.DeletePowerCapOperation(task.TaskID, op.OperationID) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Errorf("Error deleting operation, %s, for power cap task, %s.", op.OperationID.String(), task.TaskID.String()) } diff --git a/internal/domain/power-cap_test.go b/internal/domain/power-cap_test.go index 9f6aff35..8a0ad639 100644 --- a/internal/domain/power-cap_test.go +++ b/internal/domain/power-cap_test.go @@ -70,7 +70,7 @@ func TestDoPowerCapTask(t *testing.T) { task := model.NewPowerCapSnapshotTask(params, GLOB.ExpireTimeMins) - err = (*GLOB.DSP).StorePowerCapTask(task) + err = GLOB.DSP.StorePowerCapTask(task) if err != nil { t.Errorf("ERROR doPowerCapTask(1) failed - %s", err.Error()) return @@ -119,7 +119,7 @@ func TestDoPowerCapTask(t *testing.T) { task2 := model.NewPowerCapPatchTask(params2, GLOB.ExpireTimeMins) - err = (*GLOB.DSP).StorePowerCapTask(task2) + err = GLOB.DSP.StorePowerCapTask(task2) if err != nil { t.Errorf("ERROR doPowerCapTask(2) failed - %s", err.Error()) return @@ -185,13 +185,13 @@ func TestDoPowerCapTask(t *testing.T) { // for the convenience of having 2 tasks // already in storage. ///////// - expiredTask, err := (*GLOB.DSP).GetPowerCapTask(task2.TaskID) + expiredTask, err := GLOB.DSP.GetPowerCapTask(task2.TaskID) if err != nil { t.Errorf("ERROR powerCapReaper() failed - %s", err.Error()) return } expiredTask.AutomaticExpirationTime = time.Now().Add(-3 * time.Second) - err = (*GLOB.DSP).StorePowerCapTask(expiredTask) + err = GLOB.DSP.StorePowerCapTask(expiredTask) if err != nil { t.Errorf("ERROR powerCapReaper() failed - %s", err.Error()) return @@ -277,8 +277,8 @@ func doSetup() error { } HSM.Init(&hsmGlob) - domainGlobals.NewGlobals(&BaseTRSTask, &TLOC_rf, &TLOC_svc, nil, nil, - rfClientLock, &Running, &DSP, &HSM, VaultEnabled, nil, nil, + domainGlobals.NewGlobals(&BaseTRSTask, TLOC_rf, TLOC_svc, nil, nil, + rfClientLock, &Running, DSP, HSM, VaultEnabled, nil, nil, 20000, 1440, "power-cap_test-pod") Init(&domainGlobals) return nil diff --git a/internal/domain/power-status.go b/internal/domain/power-status.go index 4f79b43f..5244321b 100644 --- a/internal/domain/power-status.go +++ b/internal/domain/power-status.go @@ -78,11 +78,11 @@ const ( var hwStateMap = make(map[string]*componentPowerInfo) var glogger *logrus.Logger -var hsmHandle *pcshsm.HSMProvider -var kvStore *storage.StorageProvider -var ccStore *credstore.CredStoreProvider -var distLocker *storage.DistributedLockProvider -var tloc *trsapi.TrsAPI +var hsmHandle pcshsm.HSMProvider +var kvStore storage.StorageProvider +var ccStore credstore.CredStoreProvider +var distLocker storage.DistributedLockProvider +var tloc trsapi.TrsAPI var pmSampleInterval time.Duration var distLockMaxTime time.Duration var pstateMonitorRunning bool @@ -195,7 +195,7 @@ func GetPowerStatus(xnames []string, // TODO: We should consider the performance and scaling impact of // retrieving status for every single component in the system if the // caller only wants the status of a few components. - statusObj, err := (*kvStore).GetAllPowerStatus() + statusObj, err := kvStore.GetAllPowerStatus() if err != nil { //TODO: we don't have an HTTP status code from a failed //GetAllPowerStatus() call; might need to pass that back in a @@ -310,7 +310,7 @@ func updateComponentMap() error { //Get all components in HSM - compMap, err := (*hsmHandle).FillHSMData([]string{"all"}) + compMap, err := hsmHandle.FillHSMData([]string{"all"}) if err != nil { return fmt.Errorf("Error fetching HSM data: %v", err) } @@ -330,7 +330,7 @@ func updateComponentMap() error { if !ok { glogger.Infof("Removing '%s' from local map (no longer in HSM component list).", k) delete(hwStateMap, k) - (*kvStore).DeletePowerStatus(k) + kvStore.DeletePowerStatus(k) } } @@ -416,7 +416,7 @@ func getVaultCredsAll(compMap map[string]*componentPowerInfo) error { //The credstore layer caches creds, so this should be fast. for k, v := range compMap { - un, pw, err = (*ccStore).GetControllerCredentials(k) + un, pw, err = (ccStore).GetControllerCredentials(k) if err != nil { return fmt.Errorf("ERROR: Can't get BMC creds for '%s': %v", k, err) } @@ -504,7 +504,7 @@ func getHWStatesFromHW() error { //Use TRS to get all HW states. Create a map so the TRS task completion //notifications can map back to an XName. - taskList := (*tloc).CreateTaskList(&sourceTL, len(hwStateMap)) + taskList := tloc.CreateTaskList(&sourceTL, len(hwStateMap)) activeTasks := 0 taskIX := 0 @@ -564,7 +564,7 @@ func getHWStatesFromHW() error { if activeTasks == 0 { glogger.Warnf("%s: No TRS tasks to launch", fname) - (*tloc).Close(&taskList) + tloc.Close(&taskList) return nil } @@ -574,7 +574,7 @@ func getHWStatesFromHW() error { "(timeout %v) (%s)", fname, activeTasks, taskIX, statusTimeout, GLOB.PodName) - rchan, err := (*tloc).Launch(&taskList) + rchan, err := tloc.Launch(&taskList) if err != nil { return fmt.Errorf("%s: TRS Launch() error: %v.", fname, err) } @@ -648,7 +648,7 @@ func getHWStatesFromHW() error { break } } - (*tloc).Close(&taskList) + tloc.Close(&taskList) close(rchan) glogger.Infof("%s: Processing BMC status responses (%s)", fname, GLOB.PodName) @@ -931,7 +931,7 @@ func updateHWState(xname string, hwState pcsmodel.PowerStateFilter, psc.SupportedPowerTransitions = comp.PSComp.SupportedPowerTransitions psc.LastUpdated = comp.PSComp.LastUpdated - err := (*kvStore).StorePowerStatus(psc) + err := kvStore.StorePowerStatus(psc) if err != nil { glogger.Errorf("%s: ERROR storing component state for '%s': %v", funcname, xname, err) @@ -1004,27 +1004,27 @@ func toPCSPowerActions(rfPowerActions []string) []string { // If it has been awhile since the last update, attempt to // become the new master. func getPowerStatusMaster() bool { - lockErr := (*distLocker).DistributedTimedLock(distLockMaxTime) + lockErr := (distLocker).DistributedTimedLock(distLockMaxTime) if lockErr != nil { // Someone else is already doing this check which means we aren't going to be master. return false } defer func() { - unlockErr := (*distLocker).Unlock() + unlockErr := (distLocker).Unlock() if unlockErr != nil { glogger.Errorf("ERROR releasing distributed lock: %v", unlockErr) } }() now := time.Now() - lastUpdated, err := (*kvStore).GetPowerStatusMaster() + lastUpdated, err := kvStore.GetPowerStatusMaster() if err != nil { if !strings.Contains(err.Error(), "does not exist") { glogger.Errorf("ERROR getting power status master: %v", err) return false } // First master. Just set the value to take master. - err = (*kvStore).StorePowerStatusMaster(now) + err = kvStore.StorePowerStatusMaster(now) if err != nil { glogger.Errorf("ERROR while trying to become the power status master: %v", err) return false @@ -1035,7 +1035,7 @@ func getPowerStatusMaster() bool { // Someone else is master return false } - success, err := (*kvStore).TASPowerStatusMaster(now, lastUpdated) + success, err := kvStore.TASPowerStatusMaster(now, lastUpdated) if err != nil { // ETCD error we're not getting master this time glogger.Errorf("ERROR while trying to become the power status master: %v", err) @@ -1063,7 +1063,7 @@ func startPowerStatusMaster(lastUpdated time.Time) { return } now := time.Now() - success, err := (*kvStore).TASPowerStatusMaster(now, lastUpdated) + success, err := kvStore.TASPowerStatusMaster(now, lastUpdated) if err != nil { glogger.Errorf("ERROR while trying to refresh power status master: %v", err) continue diff --git a/internal/domain/power-status_test.go b/internal/domain/power-status_test.go index efcf4e4a..d12a9e18 100644 --- a/internal/domain/power-status_test.go +++ b/internal/domain/power-status_test.go @@ -110,8 +110,8 @@ func glbInit() { DLOCK = tdLock DLOCK.Init(tlogger) - domGlb.NewGlobals(nil, &TLOC_rf, nil, nil, svcClient, &sync.RWMutex{}, - &running, &DSP, &HSM, vaultEnabled, &CS, &DLOCK, 20000, 1440, + domGlb.NewGlobals(nil, TLOC_rf, nil, nil, svcClient, &sync.RWMutex{}, + &running, DSP, HSM, vaultEnabled, CS, DLOCK, 20000, 1440, "power-status_test-pod") tlogger.Errorf("DLOCK: '%v', Globals: '%v'", DLOCK, domGlb) @@ -227,7 +227,7 @@ func nodePower(node *hsm.HsmData, action string) error { return fmt.Errorf("Vault not enabled, can't get creds for BMC.") } - un, pw, cerr := (*domGlb.CS).GetControllerCredentials(node.BaseData.ID) + un, pw, cerr := domGlb.CS.GetControllerCredentials(node.BaseData.ID) if cerr != nil { return fmt.Errorf("Can't get creds for %s: %v", node.BaseData.ID, cerr) } @@ -289,7 +289,7 @@ func (suite *PwrStat_TS) Test_PowerStatusMonitor() { //Get a list of components from HSM - compMap, cerr := (*domGlb.HSM).FillHSMData([]string{"all"}) + compMap, cerr := domGlb.HSM.FillHSMData([]string{"all"}) suite.Assert().Equal(nil, cerr, "FillHSMData() failed: %v", cerr) var comps []string diff --git a/internal/domain/transitions.go b/internal/domain/transitions.go index 46ed795e..7c672ea9 100644 --- a/internal/domain/transitions.go +++ b/internal/domain/transitions.go @@ -116,7 +116,7 @@ var PowerSequenceFull = []PowerSeqElem{ func GetTransition(transitionID uuid.UUID) (pb model.Passback) { var tasks []model.TransitionTask // Get the transition - transition, _, err := (*GLOB.DSP).GetTransition(transitionID) + transition, _, err := GLOB.DSP.GetTransition(transitionID) if err != nil { if strings.Contains(err.Error(), "does not exist") { pb = model.BuildErrorPassback(http.StatusNotFound, err) @@ -135,7 +135,7 @@ func GetTransition(transitionID uuid.UUID) (pb model.Passback) { // Compressed transitions don't have tasks anymore. No need to look them up. if !transition.IsCompressed { // Get the tasks for the transition - tasks, err = (*GLOB.DSP).GetAllTasksForTransition(transitionID) + tasks, err = GLOB.DSP.GetAllTasksForTransition(transitionID) if err != nil { pb = model.BuildErrorPassback(http.StatusInternalServerError, err) logger.Log.WithFields(logrus.Fields{"ERROR": err, "HttpStatusCode": pb.StatusCode}).Error("Error retrieving transition tasks") @@ -152,7 +152,7 @@ func GetTransition(transitionID uuid.UUID) (pb model.Passback) { func GetTransitionStatuses() (pb model.Passback) { // Get all transitions - transitions, err := (*GLOB.DSP).GetAllTransitions() + transitions, err := GLOB.DSP.GetAllTransitions() if err != nil { pb = model.BuildErrorPassback(http.StatusInternalServerError, err) logger.Log.WithFields(logrus.Fields{"ERROR": err, "HttpStatusCode": pb.StatusCode}).Error("Error retrieving transitions") @@ -167,7 +167,7 @@ func GetTransitionStatuses() (pb model.Passback) { var tasks []model.TransitionTask // Compressed transitions don't have tasks anymore. No need to look them up. if !transition.IsCompressed { - tasks, err = (*GLOB.DSP).GetAllTasksForTransition(transition.TransitionID) + tasks, err = GLOB.DSP.GetAllTasksForTransition(transition.TransitionID) if err != nil { pb = model.BuildErrorPassback(http.StatusInternalServerError, err) logger.Log.WithFields(logrus.Fields{"ERROR": err, "HttpStatusCode": pb.StatusCode}).Error("Error retrieving transition tasks") @@ -188,7 +188,7 @@ func GetTransitionStatuses() (pb model.Passback) { func AbortTransitionID(transitionID uuid.UUID) (pb model.Passback) { for retry := 0; retry < 3; retry++ { // Get the transition - transition, transitionFirstPage, err := (*GLOB.DSP).GetTransition(transitionID) + transition, transitionFirstPage, err := GLOB.DSP.GetTransition(transitionID) if err != nil { if strings.Contains(err.Error(), "does not exist") { pb = model.BuildErrorPassback(http.StatusNotFound, err) @@ -215,7 +215,7 @@ func AbortTransitionID(transitionID uuid.UUID) (pb model.Passback) { } transition.Status = model.TransitionStatusAbortSignaled // Use test and set to prevent overwriting another thread's store operation. - ok, err := (*GLOB.DSP).TASTransition(transition, transitionFirstPage) + ok, err := GLOB.DSP.TASTransition(transition, transitionFirstPage) if err != nil { pb = model.BuildErrorPassback(http.StatusInternalServerError, err) logger.Log.WithFields(logrus.Fields{"ERROR": err, "HttpStatusCode": pb.StatusCode}).Error("Error storing new transition") @@ -237,7 +237,7 @@ func AbortTransitionID(transitionID uuid.UUID) (pb model.Passback) { func TriggerTransition(transition model.Transition) (pb model.Passback) { // Store transition - err := (*GLOB.DSP).StoreTransition(transition) + err := GLOB.DSP.StoreTransition(transition) if err != nil { pb = model.BuildErrorPassback(http.StatusInternalServerError, err) logger.Log.WithFields(logrus.Fields{"ERROR": err, "HttpStatusCode": pb.StatusCode}).Error("Error storing new transition") @@ -270,7 +270,7 @@ func doTransition(transitionID uuid.UUID) { fname := "doTransition" - tr, _, err := (*GLOB.DSP).GetTransition(transitionID) + tr, _, err := GLOB.DSP.GetTransition(transitionID) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Error("Cannot retrieve transition, cannot generate tasks") return @@ -378,7 +378,7 @@ func doTransition(transitionID uuid.UUID) { comp.Task.Error = "Missing xname" } comp.Task.StatusDesc = "Failed to achieve transition" - err = (*GLOB.DSP).StoreTransitionTask(*comp.Task) + err = GLOB.DSP.StoreTransitionTask(*comp.Task) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Error("Error storing transition task") } @@ -400,7 +400,7 @@ func doTransition(transitionID uuid.UUID) { // o Get the component state and ComponentEndpoint data from HSM. /////////////////////////////////////////////////////////////////////////// - hsmData, err := (*GLOB.HSM).FillHSMData(xnameHierarchy) + hsmData, err := GLOB.HSM.FillHSMData(xnameHierarchy) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Error("Error retrieving HSM data") // Failed to get data from HSM. Fail everything. @@ -418,7 +418,7 @@ func doTransition(transitionID uuid.UUID) { comp.Task.Status = model.TransitionTaskStatusFailed comp.Task.Error = "Error retrieving HSM data" comp.Task.StatusDesc = "Failed to achieve transition" - err = (*GLOB.DSP).StoreTransitionTask(*comp.Task) + err = GLOB.DSP.StoreTransitionTask(*comp.Task) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Error("Error storing transition task") } @@ -444,7 +444,7 @@ func doTransition(transitionID uuid.UUID) { comp.Task.Status = model.TransitionTaskStatusFailed comp.Task.Error = "Xname not found in HSM" comp.Task.StatusDesc = "Failed to achieve transition" - err = (*GLOB.DSP).StoreTransitionTask(*comp.Task) + err = GLOB.DSP.StoreTransitionTask(*comp.Task) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Error("Error storing transition task") } @@ -456,7 +456,7 @@ func doTransition(transitionID uuid.UUID) { /////////////////////////////////////////////////////////////////////////// // o Get the power maps data from HSM. /////////////////////////////////////////////////////////////////////////// - err = (*GLOB.HSM).FillPowerMapData(hsmData) + err = GLOB.HSM.FillPowerMapData(hsmData) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Error("Error retrieving HSM power maps data") // Failed to get data from HSM. Fail everything. @@ -474,7 +474,7 @@ func doTransition(transitionID uuid.UUID) { comp.Task.Status = model.TransitionTaskStatusFailed comp.Task.Error = "Error retrieving HSM data" comp.Task.StatusDesc = "Failed to achieve transition" - err = (*GLOB.DSP).StoreTransitionTask(*comp.Task) + err = GLOB.DSP.StoreTransitionTask(*comp.Task) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Error("Error storing transition task") } @@ -526,7 +526,7 @@ func doTransition(transitionID uuid.UUID) { task.Xname = switchXname task.StatusDesc = "Gathering data" tr.TaskIDs = append(tr.TaskIDs, task.TaskID) - err = (*GLOB.DSP).StoreTransitionTask(task) + err = GLOB.DSP.StoreTransitionTask(task) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Error("Error storing transition task") } @@ -569,7 +569,7 @@ func doTransition(transitionID uuid.UUID) { // ReserveComponents() will validate any deputy keys and reserve any // components with an invalid deputy key or without a deputy key. - resData, err := (*GLOB.HSM).ReserveComponents(reservationData) + resData, err := GLOB.HSM.ReserveComponents(reservationData) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Error("Error acquiring reservations") // An error occurred while reserving components. This does not include partial failure. Fail everything. @@ -581,7 +581,7 @@ func doTransition(transitionID uuid.UUID) { comp.Task.Status = model.TransitionTaskStatusFailed comp.Task.Error = err.Error() comp.Task.StatusDesc = "Error acquiring reservations" - err = (*GLOB.DSP).StoreTransitionTask(*comp.Task) + err = GLOB.DSP.StoreTransitionTask(*comp.Task) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Error("Error storing transition task") } @@ -642,7 +642,7 @@ func doTransition(transitionID uuid.UUID) { } } failDependentComps(xnameMap, powerAction, comp.Task.Xname, depErrMsg) - err = (*GLOB.DSP).StoreTransitionTask(*comp.Task) + err = GLOB.DSP.StoreTransitionTask(*comp.Task) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Error("Error storing transition task") } @@ -651,13 +651,13 @@ func doTransition(transitionID uuid.UUID) { comp := xnameMap[res.XName] comp.Task.ReservationKey = reservation.ReservationKey comp.Task.DeputyKey = reservation.DeputyKey - err = (*GLOB.DSP).StoreTransitionTask(*comp.Task) + err = GLOB.DSP.StoreTransitionTask(*comp.Task) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Error("Error storing transition task") } } } - defer (*GLOB.HSM).ReleaseComponents(reservationData) + defer GLOB.HSM.ReleaseComponents(reservationData) } /////////////////////////////////////////////////////////////////////////// @@ -715,7 +715,7 @@ func doTransition(transitionID uuid.UUID) { } // Check reservations are good - err := (*GLOB.HSM).CheckDeputyKeys(reservationData) + err := GLOB.HSM.CheckDeputyKeys(reservationData) if err != nil { // TODO: Couldn't reach HSM. Retry? logger.Log.WithFields(logrus.Fields{"ERROR": err}).Error("Couldn't check reservations") @@ -734,7 +734,7 @@ func doTransition(transitionID uuid.UUID) { comp.Task.StatusDesc = "Failed to achieve transition" depErrMsg := fmt.Sprintf("Reservation expired for dependency, %s.", comp.Task.Xname) failDependentComps(xnameMap, powerAction, comp.Task.Xname, depErrMsg) - err = (*GLOB.DSP).StoreTransitionTask(*comp.Task) + err = GLOB.DSP.StoreTransitionTask(*comp.Task) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Error("Error storing transition task") } @@ -751,7 +751,7 @@ func doTransition(transitionID uuid.UUID) { // Create TRS task list trsTaskMap := make(map[uuid.UUID]*TransitionComponent) - trsTaskList := (*GLOB.RFTloc).CreateTaskList(GLOB.BaseTRSTask, len(compList)) + trsTaskList := GLOB.RFTloc.CreateTaskList(GLOB.BaseTRSTask, len(compList)) trsTaskIdx := 0 for _, comp := range compList { if comp.Task.Status == model.TransitionTaskStatusFailed { @@ -772,7 +772,7 @@ func doTransition(transitionID uuid.UUID) { comp.Task.Error = err.Error() depErrMsg := fmt.Sprintf("Failed to apply transition, %s, to dependency, %s.", powerAction, comp.Task.Xname) failDependentComps(xnameMap, powerAction, comp.Task.Xname, depErrMsg) - err = (*GLOB.DSP).StoreTransitionTask(*comp.Task) + err = GLOB.DSP.StoreTransitionTask(*comp.Task) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Error("Error storing transition task") } @@ -789,7 +789,7 @@ func doTransition(transitionID uuid.UUID) { trsTaskList[trsTaskIdx].Request.Header.Add("HMS-Service", GLOB.BaseTRSTask.ServiceName) // Vault enabled? if GLOB.VaultEnabled { - user, pw, err := (*GLOB.CS).GetControllerCredentials(comp.PState.XName) + user, pw, err := GLOB.CS.GetControllerCredentials(comp.PState.XName) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Error("Unable to get credentials for " + comp.PState.XName) } // Retry credentials? Fail operation here? For now, just let it fail with empty credentials @@ -798,7 +798,7 @@ func doTransition(transitionID uuid.UUID) { } } trsTaskIdx++ - err = (*GLOB.DSP).StoreTransitionTask(*comp.Task) + err = GLOB.DSP.StoreTransitionTask(*comp.Task) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Error("Error storing transition task") } @@ -813,7 +813,7 @@ func doTransition(transitionID uuid.UUID) { len(compList), GLOB.BaseTRSTask.Timeout, GLOB.PodName) - rchan, err := (*GLOB.RFTloc).Launch(&trsTaskList) + rchan, err := GLOB.RFTloc.Launch(&trsTaskList) if err != nil { logrus.Error(err) } @@ -875,18 +875,18 @@ func doTransition(transitionID uuid.UUID) { comp.Task.StatusDesc = "Confirming successful transition, " + powerAction comp.Task.State = model.TaskState_Waiting } - err = (*GLOB.DSP).StoreTransitionTask(*comp.Task) + err = GLOB.DSP.StoreTransitionTask(*comp.Task) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Error("Error storing transition task") } } - (*GLOB.RFTloc).Close(&trsTaskList) + GLOB.RFTloc.Close(&trsTaskList) close(rchan) logger.Log.Infof("%s: Done processing BMC responses (%s)", fname, GLOB.PodName) } else { // Free up this memory - (*GLOB.RFTloc).Close(&trsTaskList) + GLOB.RFTloc.Close(&trsTaskList) } // TRS section for getting power state for confirmation. @@ -917,7 +917,7 @@ func doTransition(transitionID uuid.UUID) { time.Sleep(15 * time.Second) for trsTaskID, comp := range trsTaskMap { // Get the state from ETCD - pState, err := (*GLOB.DSP).GetPowerStatus(comp.Task.Xname) + pState, err := GLOB.DSP.GetPowerStatus(comp.Task.Xname) if err != nil { comp.Task.Status = model.TransitionTaskStatusFailed comp.Task.Error = err.Error() @@ -929,7 +929,7 @@ func doTransition(transitionID uuid.UUID) { delete(trsTaskMap, trsTaskID) depErrMsg := fmt.Sprintf("Failed to confirm transition, %s, to dependency, %s.", powerAction, comp.Task.Xname) failDependentComps(xnameMap, powerAction, comp.Task.Xname, depErrMsg) - err = (*GLOB.DSP).StoreTransitionTask(*comp.Task) + err = GLOB.DSP.StoreTransitionTask(*comp.Task) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Error("Error storing transition task") } @@ -943,7 +943,7 @@ func doTransition(transitionID uuid.UUID) { comp.Task.StatusDesc = "Transition confirmed, " + powerAction + ". Waiting for next transition" } delete(trsTaskMap, trsTaskID) - err = (*GLOB.DSP).StoreTransitionTask(*comp.Task) + err = GLOB.DSP.StoreTransitionTask(*comp.Task) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Error("Error storing transition task") } @@ -969,7 +969,7 @@ func doTransition(transitionID uuid.UUID) { comp.Task.StatusDesc = "Failed to achieve transition" depErrMsg := fmt.Sprintf("Timeout waiting for transition, %s, on dependency, %s.", powerAction, comp.Task.Xname) failDependentComps(xnameMap, powerAction, comp.Task.Xname, depErrMsg) - err = (*GLOB.DSP).StoreTransitionTask(*comp.Task) + err = GLOB.DSP.StoreTransitionTask(*comp.Task) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Error("Error storing transition task") } @@ -1003,7 +1003,7 @@ func doTransition(transitionID uuid.UUID) { // o When Launch() completes, release any reservations PCS obtained for targets. /////////////////////////////////////////////////////////////////////////// - // (*GLOB.HSM).ReleaseComponents(reservationData) <- defered above + // GLOB.HSM.ReleaseComponents(reservationData) <- defered above /////////////////////////////////////////////////////////////////////////// // o Once the service inst is done executing its task, "close out" the ETCD task @@ -1024,7 +1024,7 @@ func storeTransition(tr model.Transition) (bool, error) { abort := false for retry := 0; retry < 3; retry++ { // Get the transition - _, trOld, err := (*GLOB.DSP).GetTransition(tr.TransitionID) + _, trOld, err := GLOB.DSP.GetTransition(tr.TransitionID) if err != nil { if !strings.Contains(err.Error(), "does not exist") { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Error("Error getting transition") @@ -1034,7 +1034,7 @@ func storeTransition(tr model.Transition) (bool, error) { tr.LastActiveTime = time.Now() if trOld.TransitionID.String() != tr.TransitionID.String() { //Blank struct, do a normal store. - err = (*GLOB.DSP).StoreTransition(tr) + err = GLOB.DSP.StoreTransition(tr) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Error("Error storing transition") } @@ -1045,7 +1045,7 @@ func storeTransition(tr model.Transition) (bool, error) { abort = true } // Use test and set to prevent overwriting another thread's store operation. - ok, err := (*GLOB.DSP).TASTransition(tr, trOld) + ok, err := GLOB.DSP.TASTransition(tr, trOld) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Error("Error storing transition") } @@ -1061,7 +1061,7 @@ func storeTransition(tr model.Transition) (bool, error) { // Checks the channel for abort signals and returns true if atleast 1 was found. // Empties the channel if more than one was found. func checkAbort(tr model.Transition) (bool, error) { - transition, _, err := (*GLOB.DSP).GetTransition(tr.TransitionID) + transition, _, err := GLOB.DSP.GetTransition(tr.TransitionID) if err != nil { if !strings.Contains(err.Error(), "does not exist") { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Error("Error getting transition") @@ -1089,7 +1089,7 @@ func doAbort(tr model.Transition, xnameMap map[string]*TransitionComponent) { comp.Task.Status = model.TransitionTaskStatusFailed comp.Task.Error = "Transition aborted" comp.Task.StatusDesc = "Aborted. Last status - " + comp.Task.StatusDesc - err := (*GLOB.DSP).StoreTransitionTask(*comp.Task) + err := GLOB.DSP.StoreTransitionTask(*comp.Task) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Error("Error storing transition task") } @@ -1112,7 +1112,7 @@ func transitionKeepAlive(transitionID uuid.UUID, cancelChan chan bool) { case <-keepAlive.C: for { // Get the transition - transition, transitionOld, err := (*GLOB.DSP).GetTransition(transitionID) + transition, transitionOld, err := GLOB.DSP.GetTransition(transitionID) if err != nil { if strings.Contains(err.Error(), "does not exist") { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Errorf("Transition, %s, does not exist, stopping keep alive thread", transitionID.String()) @@ -1137,7 +1137,7 @@ func transitionKeepAlive(transitionID uuid.UUID, cancelChan chan bool) { // Only change the LastActiveTime transition.LastActiveTime = time.Now() // Use test and set to prevent overwriting another thread's store operation. - ok, err := (*GLOB.DSP).TASTransition(transition, transitionOld) + ok, err := GLOB.DSP.TASTransition(transition, transitionOld) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Errorf("Error storing Transition, %s, retrying...", transitionID.String()) continue @@ -1177,7 +1177,7 @@ func getPowerStateHierarchy(xnames []string) (map[string]model.PowerStatusCompon case xnametypes.CDUMgmtSwitch: fallthrough case xnametypes.CabinetPDUPowerConnector: - pState, err := (*GLOB.DSP).GetPowerStatus(xname) + pState, err := GLOB.DSP.GetPowerStatus(xname) if err != nil { if strings.Contains(err.Error(), "does not exist") { badList = append(badList, xname) @@ -1191,7 +1191,7 @@ func getPowerStateHierarchy(xnames []string) (map[string]model.PowerStatusCompon } case xnametypes.RouterModule: found := false - pStates, err := (*GLOB.DSP).GetPowerStatusHierarchy(xname) + pStates, err := GLOB.DSP.GetPowerStatusHierarchy(xname) if err != nil { // Database error. Bail return nil, nil, err @@ -1230,7 +1230,7 @@ func setupTransitionTasks(tr *model.Transition) (map[string]*TransitionComponent xnameMap := make(map[string]*TransitionComponent) // Get any tasks that may have previously been created for our operation. - tasks, err := (*GLOB.DSP).GetAllTasksForTransition(tr.TransitionID) + tasks, err := GLOB.DSP.GetAllTasksForTransition(tr.TransitionID) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Error("Error retrieving tasks for transition, " + tr.TransitionID.String()) } @@ -1304,7 +1304,7 @@ func setupTransitionTasks(tr *model.Transition) (map[string]*TransitionComponent task.StatusDesc = "Failed to achieve transition" } tr.TaskIDs = append(tr.TaskIDs, task.TaskID) - err = (*GLOB.DSP).StoreTransitionTask(task) + err = GLOB.DSP.StoreTransitionTask(task) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Error("Error storing transition task") } @@ -1356,7 +1356,7 @@ func sequenceComponents(operation model.Operation, xnameMap map[string]*Transiti comp.Task.Status = model.TransitionTaskStatusUnsupported comp.Task.StatusDesc = fmt.Sprintf("Component does not support the specified transition operation, %s", operation.String()) comp.Task.Error = "Unsupported for transition operation" - err := (*GLOB.DSP).StoreTransitionTask(*comp.Task) + err := GLOB.DSP.StoreTransitionTask(*comp.Task) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Error("Error storing transition task") } @@ -1560,7 +1560,7 @@ func sequenceComponents(operation model.Operation, xnameMap map[string]*Transiti } resData = append(resData, res) } - err := (*GLOB.DSP).StoreTransitionTask(*comp.Task) + err := GLOB.DSP.StoreTransitionTask(*comp.Task) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Error("Error storing transition task") } @@ -1676,7 +1676,7 @@ func failDependentComps(xnameMap map[string]*TransitionComponent, powerAction st pComp.Task.Status = model.TransitionTaskStatusFailed pComp.Task.Error = errMsg pComp.Task.StatusDesc = errMsg - err := (*GLOB.DSP).StoreTransitionTask(*pComp.Task) + err := GLOB.DSP.StoreTransitionTask(*pComp.Task) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Error("Error storing transition task") } @@ -1694,7 +1694,7 @@ func failDependentComps(xnameMap map[string]*TransitionComponent, powerAction st // - Aborts incomplete transitions (new/in-progress) that have expired (AutomaticExpirationTime). func transitionsReaper() { // Get all transitions - transitions, err := (*GLOB.DSP).GetAllTransitions() + transitions, err := GLOB.DSP.GetAllTransitions() if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Error("Error retreiving transitions") return @@ -1720,7 +1720,7 @@ func transitionsReaper() { } // No need to check if the TAS succeeded because, if it didn't, // it means someone else took care of it. - ok, err := (*GLOB.DSP).TASTransition(transition, transitionOld) + ok, err := GLOB.DSP.TASTransition(transition, transitionOld) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Errorf("Error aborting transition, %s.", transition.TransitionID.String()) continue @@ -1739,7 +1739,7 @@ func transitionsReaper() { // so other instances know we got it first. transitionOld := transition transition.LastActiveTime = time.Now() - ok, err := (*GLOB.DSP).TASTransition(transition, transitionOld) + ok, err := GLOB.DSP.TASTransition(transition, transitionOld) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Errorf("Error storing transition, %s.", transition.TransitionID.String()) continue @@ -1804,19 +1804,19 @@ func transitionsReaper() { // Deletes the transition and any associated tasks. func deleteTransition(transitionID uuid.UUID) error { // Get the tasks for the transition - tasks, err := (*GLOB.DSP).GetAllTasksForTransition(transitionID) + tasks, err := GLOB.DSP.GetAllTasksForTransition(transitionID) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Errorf("Error retreiving tasks for transition, %s.", transitionID.String()) return err } for _, task := range tasks { - err = (*GLOB.DSP).DeleteTransitionTask(transitionID, task.TaskID) + err = GLOB.DSP.DeleteTransitionTask(transitionID, task.TaskID) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Errorf("Error deleting transition task, %s.", task.TaskID.String()) return err } } - err = (*GLOB.DSP).DeleteTransition(transitionID) + err = GLOB.DSP.DeleteTransition(transitionID) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Errorf("Error deleting transition, %s.", transitionID.String()) return err @@ -1833,13 +1833,13 @@ func waitForBMC(compList []*TransitionComponent) { for _, comp := range compList { if retry == 0 { comp.Task.StatusDesc = "Waiting for controller to be ready" - err := (*GLOB.DSP).StoreTransitionTask(*comp.Task) + err := GLOB.DSP.StoreTransitionTask(*comp.Task) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Error("Error storing transition task") } } // Get the state from ETCD - pState, err := (*GLOB.DSP).GetPowerStatus(comp.Task.Xname) + pState, err := GLOB.DSP.GetPowerStatus(comp.Task.Xname) if err != nil { // If everything ends up being an error. We'll just stop waiting. logger.Log.WithFields(logrus.Fields{"ERROR": err}).Errorf("Error getting power status from database for %s", comp.Task.Xname) @@ -1857,7 +1857,7 @@ func waitForBMC(compList []*TransitionComponent) { func getPowerSupplies(hData *hsm.HsmData) (powerSupplies []PowerSupply) { for _, pConnector := range hData.PoweredBy { powerState := model.PowerStateFilter_Undefined - pState, err := (*GLOB.DSP).GetPowerStatus(pConnector) + pState, err := GLOB.DSP.GetPowerStatus(pConnector) if err == nil { powerState, _ = model.ToPowerStateFilter(pState.PowerState) } @@ -1872,7 +1872,7 @@ func getPowerSupplies(hData *hsm.HsmData) (powerSupplies []PowerSupply) { func compressAndCompleteTransition(transition model.Transition, status string) { // Get the tasks for the transition - tasks, err := (*GLOB.DSP).GetAllTasksForTransition(transition.TransitionID) + tasks, err := GLOB.DSP.GetAllTasksForTransition(transition.TransitionID) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Errorf("Error retreiving tasks for transition, %s.", transition.TransitionID.String()) return @@ -1883,14 +1883,14 @@ func compressAndCompleteTransition(transition model.Transition, status string) { transition.Tasks = rsp.Tasks transition.Status = status transition.IsCompressed = true - err = (*GLOB.DSP).StoreTransition(transition) + err = GLOB.DSP.StoreTransition(transition) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Error("Error storing transition") // Don't delete the tasks if we were unsuccessful storing the transition. return } for _, task := range tasks { - err = (*GLOB.DSP).DeleteTransitionTask(transition.TransitionID, task.TaskID) + err = GLOB.DSP.DeleteTransitionTask(transition.TransitionID, task.TaskID) if err != nil { logger.Log.WithFields(logrus.Fields{"ERROR": err}).Errorf("Error deleting transition task, %s.", task.TaskID.String()) } diff --git a/internal/domain/transitions_test.go b/internal/domain/transitions_test.go index e0aee994..2db3866f 100644 --- a/internal/domain/transitions_test.go +++ b/internal/domain/transitions_test.go @@ -132,9 +132,9 @@ func (ts *Transitions_TS) SetupSuite() { HSM.Init(&hsmGlob) ts.hsmURL = hsmGlob.SMUrl - domainGlobals.NewGlobals(&BaseTRSTask, &TLOC_rf, &TLOC_svc, nil, svcClient, - rfClientLock, &Running, &DSP, &HSM, enableVault, &CS, - &DLOCK, 20000, 1440, "transitions_test-pod") + domainGlobals.NewGlobals(&BaseTRSTask, TLOC_rf, TLOC_svc, nil, svcClient, + rfClientLock, &Running, DSP, HSM, enableVault, CS, + DLOCK, 20000, 1440, "transitions_test-pod") Init(&domainGlobals) // Calling PowerStatusMonitorInit() is required to initialize the @@ -184,7 +184,7 @@ func (ts *Transitions_TS) TestDoTransition() { }, } testTransition, _ = model.ToTransition(testParams, GLOB.ExpireTimeMins) - (*GLOB.DSP).StoreTransition(testTransition) + GLOB.DSP.StoreTransition(testTransition) doTransition(testTransition.TransitionID) resultsPb = GetTransition(testTransition.TransitionID) results = resultsPb.Obj.(model.TransitionResp) @@ -207,7 +207,7 @@ func (ts *Transitions_TS) TestDoTransition() { }, } testTransition, _ = model.ToTransition(testParams, GLOB.ExpireTimeMins) - (*GLOB.DSP).StoreTransition(testTransition) + GLOB.DSP.StoreTransition(testTransition) doTransition(testTransition.TransitionID) resultsPb = GetTransition(testTransition.TransitionID) results = resultsPb.Obj.(model.TransitionResp) @@ -237,7 +237,7 @@ func (ts *Transitions_TS) TestDoTransition() { }, } testTransition, _ = model.ToTransition(testParams, GLOB.ExpireTimeMins) - (*GLOB.DSP).StoreTransition(testTransition) + GLOB.DSP.StoreTransition(testTransition) doTransition(testTransition.TransitionID) resultsPb = GetTransition(testTransition.TransitionID) results = resultsPb.Obj.(model.TransitionResp) @@ -260,7 +260,7 @@ func (ts *Transitions_TS) TestDoTransition() { }, } testTransition, _ = model.ToTransition(testParams, GLOB.ExpireTimeMins) - (*GLOB.DSP).StoreTransition(testTransition) + GLOB.DSP.StoreTransition(testTransition) go doTransition(testTransition.TransitionID) // Wait for completion for i := 0; i < 60; i++ { @@ -310,26 +310,26 @@ func (ts *Transitions_TS) TestDoTransition() { task.Operation = model.Operation_Off task.State = model.TaskState_Waiting testTransition.TaskIDs = append(testTransition.TaskIDs, task.TaskID) - (*GLOB.DSP).StoreTransitionTask(task) + GLOB.DSP.StoreTransitionTask(task) task = model.NewTransitionTask(testTransition.TransitionID, testTransition.Operation) task.Xname = "x0c0s2b0n0" task.Operation = model.Operation_Off task.State = model.TaskState_Sending testTransition.TaskIDs = append(testTransition.TaskIDs, task.TaskID) - (*GLOB.DSP).StoreTransitionTask(task) + GLOB.DSP.StoreTransitionTask(task) task = model.NewTransitionTask(testTransition.TransitionID, testTransition.Operation) task.Xname = "x0c0s1" task.Operation = model.Operation_Init task.State = model.TaskState_GatherData testTransition.TaskIDs = append(testTransition.TaskIDs, task.TaskID) - (*GLOB.DSP).StoreTransitionTask(task) + GLOB.DSP.StoreTransitionTask(task) task = model.NewTransitionTask(testTransition.TransitionID, testTransition.Operation) task.Xname = "x0c0s2" task.Operation = model.Operation_Init task.State = model.TaskState_GatherData testTransition.TaskIDs = append(testTransition.TaskIDs, task.TaskID) - (*GLOB.DSP).StoreTransitionTask(task) - (*GLOB.DSP).StoreTransition(testTransition) + GLOB.DSP.StoreTransitionTask(task) + GLOB.DSP.StoreTransition(testTransition) go doTransition(testTransition.TransitionID) // Wait for completion for i := 0; i < 60; i++ { @@ -381,7 +381,7 @@ func (ts *Transitions_TS) TestAbortTransitionID() { } testTransition, _ = model.ToTransition(testParams, GLOB.ExpireTimeMins) testTransition.Status = model.TransitionStatusCompleted - (*GLOB.DSP).StoreTransition(testTransition) + GLOB.DSP.StoreTransition(testTransition) resultsPb = AbortTransitionID(testTransition.TransitionID) ts.Assert().Equal(http.StatusBadRequest, resultsPb.StatusCode, "Test 2 failed with status code, %d. Expected %d", @@ -398,7 +398,7 @@ func (ts *Transitions_TS) TestAbortTransitionID() { }, } testTransition, _ = model.ToTransition(testParams, GLOB.ExpireTimeMins) - (*GLOB.DSP).StoreTransition(testTransition) + GLOB.DSP.StoreTransition(testTransition) resultsPb = AbortTransitionID(testTransition.TransitionID) ts.Assert().Equal(http.StatusAccepted, resultsPb.StatusCode, "Test 3 failed with status code, %d. Expected %d", @@ -450,7 +450,7 @@ func (ts *Transitions_TS) TestCheckAbort() { }, } testTransition, _ = model.ToTransition(testParams, GLOB.ExpireTimeMins) - (*GLOB.DSP).StoreTransition(testTransition) + GLOB.DSP.StoreTransition(testTransition) resultsAbort, err = checkAbort(testTransition) ts.Assert().Empty(err, "Test 2 failed with error, %v. Expected %s", @@ -464,7 +464,7 @@ func (ts *Transitions_TS) TestCheckAbort() { ///////// t.Logf("Test 3 - checkAbort() Exists, w\\ abort.") testTransition.Status = model.TransitionStatusAbortSignaled - (*GLOB.DSP).StoreTransition(testTransition) + GLOB.DSP.StoreTransition(testTransition) resultsAbort, err = checkAbort(testTransition) ts.Assert().Empty(err, "Test 3 failed with error, %v. Expected %s", @@ -501,21 +501,21 @@ func (ts *Transitions_TS) TestDoAbort() { task1 := model.NewTransitionTask(testTransition.TransitionID, testTransition.Operation) task1.Xname = "x0c0s1b0n0" task1.Status = model.TransitionTaskStatusNew - (*GLOB.DSP).StoreTransitionTask(task1) + GLOB.DSP.StoreTransitionTask(task1) task2 := model.NewTransitionTask(testTransition.TransitionID, testTransition.Operation) task2.Xname = "x0c0s2b0n0" task2.Status = model.TransitionTaskStatusInProgress - (*GLOB.DSP).StoreTransitionTask(task2) + GLOB.DSP.StoreTransitionTask(task2) task3 := model.NewTransitionTask(testTransition.TransitionID, testTransition.Operation) task3.Xname = "x0c0s1" task3.Status = model.TransitionTaskStatusFailed task3.Error = "My Error" task3.StatusDesc = "My description" - (*GLOB.DSP).StoreTransitionTask(task3) + GLOB.DSP.StoreTransitionTask(task3) task4 := model.NewTransitionTask(testTransition.TransitionID, testTransition.Operation) task4.Xname = "x0c0s2" task4.Status = model.TransitionTaskStatusSucceeded - (*GLOB.DSP).StoreTransitionTask(task4) + GLOB.DSP.StoreTransitionTask(task4) testXnameMap := map[string]*TransitionComponent{ "x0c0s1b0n0": {Task: &task1}, "x0c0s2b0n0": {Task: &task2}, @@ -564,10 +564,10 @@ func (ts *Transitions_TS) TestSequenceComponents() { }, } testTransition, _ = model.ToTransition(testParams, GLOB.ExpireTimeMins) - (*GLOB.DSP).StoreTransition(testTransition) + GLOB.DSP.StoreTransition(testTransition) xnames := []string{"x0c0s1b0n0", "x0c0s2b0n0", "x0c0s1", "x0c0s2"} pStates, _, _ := getPowerStateHierarchy(xnames) - hsmData, _ := (*GLOB.HSM).FillHSMData(xnames) + hsmData, _ := GLOB.HSM.FillHSMData(xnames) task1 := model.NewTransitionTask(testTransition.TransitionID, testTransition.Operation) task1.Xname = "x0c0s1b0n0" pState1 := pStates["x0c0s1b0n0"] @@ -576,7 +576,7 @@ func (ts *Transitions_TS) TestSequenceComponents() { for _, action := range hsmData["x0c0s1b0n0"].AllowableActions { actions1[strings.ToLower(action)] = action } - (*GLOB.DSP).StoreTransitionTask(task1) + GLOB.DSP.StoreTransitionTask(task1) task2 := model.NewTransitionTask(testTransition.TransitionID, testTransition.Operation) task2.Xname = "x0c0s2b0n0" pState2 := pStates["x0c0s2b0n0"] @@ -585,7 +585,7 @@ func (ts *Transitions_TS) TestSequenceComponents() { for _, action := range hsmData["x0c0s2b0n0"].AllowableActions { actions2[strings.ToLower(action)] = action } - (*GLOB.DSP).StoreTransitionTask(task2) + GLOB.DSP.StoreTransitionTask(task2) task3 := model.NewTransitionTask(testTransition.TransitionID, testTransition.Operation) task3.Xname = "x0c0s1" pState3 := pStates["x0c0s1"] @@ -594,7 +594,7 @@ func (ts *Transitions_TS) TestSequenceComponents() { for _, action := range hsmData["x0c0s1"].AllowableActions { actions3[strings.ToLower(action)] = action } - (*GLOB.DSP).StoreTransitionTask(task3) + GLOB.DSP.StoreTransitionTask(task3) task4 := model.NewTransitionTask(testTransition.TransitionID, testTransition.Operation) task4.Xname = "x0c0s2" pState4 := pStates["x0c0s2"] @@ -603,7 +603,7 @@ func (ts *Transitions_TS) TestSequenceComponents() { for _, action := range hsmData["x0c0s2"].AllowableActions { actions4[strings.ToLower(action)] = action } - (*GLOB.DSP).StoreTransitionTask(task4) + GLOB.DSP.StoreTransitionTask(task4) testXnameMap = map[string]*TransitionComponent{ "x0c0s1b0n0": { @@ -672,10 +672,10 @@ func (ts *Transitions_TS) TestSequenceComponents() { } testTransition, _ = model.ToTransition(testParams, GLOB.ExpireTimeMins) testTransition.Status = model.TransitionStatusInProgress - (*GLOB.DSP).StoreTransition(testTransition) + GLOB.DSP.StoreTransition(testTransition) xnames = []string{"x0c0s1b0n0", "x0c0s2b0n0", "x0c0s1", "x0c0s2"} pStates, _, _ = getPowerStateHierarchy(xnames) - hsmData, _ = (*GLOB.HSM).FillHSMData(xnames) + hsmData, _ = GLOB.HSM.FillHSMData(xnames) task1 = model.NewTransitionTask(testTransition.TransitionID, testTransition.Operation) task1.Xname = "x0c0s1b0n0" task1.Status = model.TransitionTaskStatusInProgress @@ -687,7 +687,7 @@ func (ts *Transitions_TS) TestSequenceComponents() { for _, action := range hsmData["x0c0s1b0n0"].AllowableActions { actions1[strings.ToLower(action)] = action } - (*GLOB.DSP).StoreTransitionTask(task1) + GLOB.DSP.StoreTransitionTask(task1) task2 = model.NewTransitionTask(testTransition.TransitionID, testTransition.Operation) task2.Xname = "x0c0s2b0n0" task2.Operation = model.Operation_Off @@ -698,7 +698,7 @@ func (ts *Transitions_TS) TestSequenceComponents() { for _, action := range hsmData["x0c0s2b0n0"].AllowableActions { actions2[strings.ToLower(action)] = action } - (*GLOB.DSP).StoreTransitionTask(task2) + GLOB.DSP.StoreTransitionTask(task2) task3 = model.NewTransitionTask(testTransition.TransitionID, testTransition.Operation) task3.Xname = "x0c0s1" task3.Operation = model.Operation_Init @@ -709,7 +709,7 @@ func (ts *Transitions_TS) TestSequenceComponents() { for _, action := range hsmData["x0c0s1"].AllowableActions { actions3[strings.ToLower(action)] = action } - (*GLOB.DSP).StoreTransitionTask(task3) + GLOB.DSP.StoreTransitionTask(task3) task4 = model.NewTransitionTask(testTransition.TransitionID, testTransition.Operation) task4.Xname = "x0c0s2" task4.Operation = model.Operation_Init @@ -720,7 +720,7 @@ func (ts *Transitions_TS) TestSequenceComponents() { for _, action := range hsmData["x0c0s2"].AllowableActions { actions4[strings.ToLower(action)] = action } - (*GLOB.DSP).StoreTransitionTask(task4) + GLOB.DSP.StoreTransitionTask(task4) testXnameMap = map[string]*TransitionComponent{ "x0c0s1b0n0": { @@ -799,7 +799,7 @@ func (ts *Transitions_TS) TestGetPowerSupplies() { ManagementState: model.ManagementStateFilter_available.String(), LastUpdated: time.Now(), } - (*GLOB.DSP).StorePowerStatus(connectorPowerStatus) + GLOB.DSP.StorePowerStatus(connectorPowerStatus) results = getPowerSupplies(&testParams) @@ -834,7 +834,7 @@ func (ts *Transitions_TS) TestGetPowerSupplies() { ManagementState: model.ManagementStateFilter_available.String(), LastUpdated: time.Now(), } - (*GLOB.DSP).StorePowerStatus(connectorPowerStatus) + GLOB.DSP.StorePowerStatus(connectorPowerStatus) results = getPowerSupplies(&testParams) From 1185c5f3ec0aa1e86c9cf8a54f0f8ea13a67a54f Mon Sep 17 00:00:00 2001 From: Travis Raines <571832+rainest@users.noreply.github.com> Date: Tue, 17 Jun 2025 12:01:03 -0700 Subject: [PATCH 2/2] chore: remove unnecessary parens Signed-off-by: Travis Raines <571832+rainest@users.noreply.github.com> --- internal/domain/power-status.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/domain/power-status.go b/internal/domain/power-status.go index 5244321b..5cfe357d 100644 --- a/internal/domain/power-status.go +++ b/internal/domain/power-status.go @@ -416,7 +416,7 @@ func getVaultCredsAll(compMap map[string]*componentPowerInfo) error { //The credstore layer caches creds, so this should be fast. for k, v := range compMap { - un, pw, err = (ccStore).GetControllerCredentials(k) + un, pw, err = ccStore.GetControllerCredentials(k) if err != nil { return fmt.Errorf("ERROR: Can't get BMC creds for '%s': %v", k, err) } @@ -1004,13 +1004,13 @@ func toPCSPowerActions(rfPowerActions []string) []string { // If it has been awhile since the last update, attempt to // become the new master. func getPowerStatusMaster() bool { - lockErr := (distLocker).DistributedTimedLock(distLockMaxTime) + lockErr := distLocker.DistributedTimedLock(distLockMaxTime) if lockErr != nil { // Someone else is already doing this check which means we aren't going to be master. return false } defer func() { - unlockErr := (distLocker).Unlock() + unlockErr := distLocker.Unlock() if unlockErr != nil { glogger.Errorf("ERROR releasing distributed lock: %v", unlockErr) }