/// <summary> /// Method removes DPC from powered on servers /// </summary> private static void RemoveAllBladeDpc() { for (int bladeIndex = 0; bladeIndex < ConfigLoaded.Population; bladeIndex++) { byte bladeId = (byte)(bladeIndex + 1); if (ChassisState.BladePower[bladeIndex].GetCachedBladePowerState().BladePowerState == 0x01) // PowerState.On { // Spec 1.86 adds optimization there by current state of PsuAlert // does not need to be queried to disable PsuAlert psuAlert = WcsBladeFacade.GetPsuAlert(bladeId); if (psuAlert.CompletionCode == 0x00) { BmcPsuAlertAction bmcAction = BmcPsuAlertAction.DpcOnly; if (psuAlert.BmcProchotEnabled) { bmcAction = BmcPsuAlertAction.ProcHotAndDpc; } // disable DPC. WcsBladeFacade.ActivatePsuAlert(bladeId, psuAlert.AutoProchotEnabled, bmcAction, true); } } } }
private static void EnableDisableDefaultBladeOperations(int bladeId) { // TODO: Check blade type etc and Kill any serial session // TODO: Add trace log messages // Check to see if the blade is hard powered off BladePowerStatePacket response = ChassisState.BladePower[bladeId - 1].GetBladePowerState(); if (response.CompletionCode != CompletionCode.Success) { // Log error here, and proceed to check blade state since we still want to check BMC soft power status // even if blade enable read failed for whatever reason Tracer.WriteError("EnableDisableDefaultBladeOperations: Blade {0} Power Enable state read failed (Completion Code: {1:X})", bladeId, response.CompletionCode); } else if (response.BladePowerState == (byte)Contracts.PowerState.OFF) { // If blade is hard powered off, no further processing is necessary return; } // If the blade is a Jbod, return since the operations done in this method do not apply for Jbods if (ChassisState.GetBladeType((byte)bladeId) == (byte)BladeType.Jbod) { Tracer.WriteInfo("EnableDisableDefaultBladeOperations (Blade#{0}): Ignoring since it is a Jbod", bladeId); return; } DatasafeOperationSupport.ProcessDatasafeAction(bladeId, ConfigLoaded.DatasafeOperationsEnabled ? DatasafeActions.EnableDatasafe : DatasafeActions.DisableDatasafe); if (ConfigLoaded.PsuAlertMonitorEnabled) { WcsBladeFacade.ActivatePsuAlert((byte)bladeId, true, BmcPsuAlertAction.ProcHotAndDpc, true); } else { WcsBladeFacade.ActivatePsuAlert((byte)bladeId, false, BmcPsuAlertAction.NoAction, true); } }