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..5cfe357d 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)