/// <summary> /// This checks for valid completion code for all functions /// </summary> /// <param name="responseCompletionCode"></param> /// <returns></returns> public static bool CheckCompletionCode(Contracts.CompletionCode responseCompletionCode) { if (responseCompletionCode == Contracts.CompletionCode.Success) { return(true); } return(false); }
/// <summary> /// Get power state of all blades /// </summary> /// <returns>Collection of Blade State response packets</returns> public GetAllPowerStateResponse GetAllPowerState() { byte MaxbladeCount = (byte)ConfigLoaded.Population; GetAllPowerStateResponse responses = new GetAllPowerStateResponse(); responses.completionCode = Contracts.CompletionCode.Unknown; responses.statusDescription = string.Empty; responses.powerStateResponseCollection = new List<PowerStateResponse>(); Contracts.CompletionCode[] bladeInternalResponseCollection = new Contracts.CompletionCode[MaxbladeCount]; uint bladeCount = MaxbladeCount; Tracer.WriteUserLog("Invoked GetAllPowerState()"); Tracer.WriteInfo("Invoked GetAllPowerState()"); for (int loop = 0; loop < bladeCount; loop++) { responses.powerStateResponseCollection.Add(GetPowerState(loop + 1)); Tracer.WriteInfo("Blade power state: ", responses.powerStateResponseCollection[loop].powerState); // Set the internal blade response to the blade completion code. bladeInternalResponseCollection[loop] = responses.powerStateResponseCollection[loop].completionCode; } Contracts.ChassisResponse varResponse = new Contracts.ChassisResponse(); varResponse = ChassisManagerUtil.ValidateAllBladeResponse(bladeInternalResponseCollection); responses.completionCode = varResponse.completionCode; responses.statusDescription = varResponse.statusDescription; return responses; }
/// <summary> /// Get All Blades PSU ALERT Default Power Cap /// </summary> public AllBladesPsuAlertDpcResponse GetAllBladesPsuAlertDefaultPowerCap() { AllBladesPsuAlertDpcResponse responses = new AllBladesPsuAlertDpcResponse(); responses.completionCode = Contracts.CompletionCode.Unknown; responses.statusDescription = String.Empty; responses.bladeDpcResponseCollection = new List<BladePsuAlertDpcResponse>(); Contracts.CompletionCode[] bladeInternalResponseCollection = new Contracts.CompletionCode[ConfigLoaded.Population]; Tracer.WriteUserLog("Invoked GetAllBladesPsuAlertDefaultPowerCap"); Tracer.WriteInfo("Received GetAllBladsePsuAlertDefaultPowerCap for all blades"); for (int loop = 0; loop < ConfigLoaded.Population; loop++) { responses.bladeDpcResponseCollection.Add(GetBladePsuAlertDefaultPowerCap(loop + 1)); // Set the internal blade response to the blade completion code. bladeInternalResponseCollection[loop] = responses.bladeDpcResponseCollection[loop].completionCode; } Contracts.ChassisResponse varResponse = new Contracts.ChassisResponse(); varResponse = ChassisManagerUtil.ValidateAllBladeResponse(bladeInternalResponseCollection); responses.completionCode = varResponse.completionCode; responses.statusDescription = varResponse.statusDescription; return responses; }
/// <summary> /// Get power reading for all blades /// </summary> /// <returns>Array of blade responses containing the power reading</returns> public GetAllBladesPowerReadingResponse GetAllBladesPowerReading() { byte MaxbladeCount = (byte)ConfigLoaded.Population; GetAllBladesPowerReadingResponse responses = new GetAllBladesPowerReadingResponse(); responses.completionCode = Contracts.CompletionCode.Unknown; responses.statusDescription = string.Empty; responses.bladePowerReadingCollection = new List<BladePowerReadingResponse>(); Contracts.CompletionCode[] bladeInternalResponseCollection = new Contracts.CompletionCode[MaxbladeCount]; Tracer.WriteUserLog("Invoked GetAllBladesPowerReading()"); try { for (int index = 0; index < ConfigLoaded.Population; index++) { int bladeId = index + 1; responses.bladePowerReadingCollection.Add(GetBladePowerReading((int)bladeId)); // Set the internal blade response to the blade completion code. bladeInternalResponseCollection[index] = responses.bladePowerReadingCollection[index].completionCode; } } catch (Exception ex) { responses.completionCode = Contracts.CompletionCode.Failure; responses.statusDescription = responses.completionCode.ToString() + ": " + ex.Message; Tracer.WriteError("GetAllBladesPowerReading Exception" + ex); return responses; } Contracts.ChassisResponse varResponse = new Contracts.ChassisResponse(); varResponse = ChassisManagerUtil.ValidateAllBladeResponse(bladeInternalResponseCollection); responses.completionCode = varResponse.completionCode; responses.statusDescription = varResponse.statusDescription; return responses; }
/// <summary> /// Get information for all blades /// </summary> /// <returns>Array of blade info response</returns> public GetAllBladesInfoResponse GetAllBladesInfo() { byte maxbladeCount = (byte)ConfigLoaded.Population; Tracer.WriteInfo("Received GetAllBladesInfo()"); Tracer.WriteUserLog("Invoked GetAllBladesInfo()"); // Server side class structure to populate blade information GetAllBladesInfoResponse responses = new GetAllBladesInfoResponse(); responses.completionCode = Contracts.CompletionCode.Unknown; responses.statusDescription = string.Empty; responses.bladeInfoResponseCollection = new List<BladeInfoResponse>(); Contracts.CompletionCode[] bladeInternalResponseCollection = new Contracts.CompletionCode[maxbladeCount]; Tracer.WriteInfo("GetAllBladesInfo: Processing Blades "); // Loop to populate blade information for requested number of blades for (int loop = 0; loop < maxbladeCount; loop++) { int bladeId = loop + 1; // we need to get for all blades //Call getBladeInfo for the Blade ID responses.bladeInfoResponseCollection.Add(this.GetBladeInfo(bladeId)); // Set the internal blade response to the blade completion code. bladeInternalResponseCollection[loop] = responses.bladeInfoResponseCollection[loop].completionCode; } Tracer.WriteInfo("GetAllBladesInfo: Completed populating for Blades"); Contracts.ChassisResponse varResponse = new Contracts.ChassisResponse(); varResponse = ChassisManagerUtil.ValidateAllBladeResponse(bladeInternalResponseCollection); responses.completionCode = varResponse.completionCode; responses.statusDescription = varResponse.statusDescription; return responses; }
/// <summary> /// Power On all blades /// </summary> /// <returns>Array of blade responses, one for each blade. Indicates success/failure.</returns> public AllBladesResponse SetAllPowerOn() { byte maxBladeCount = (byte)ConfigLoaded.Population; AllBladesResponse responses = new AllBladesResponse(); responses.completionCode = Contracts.CompletionCode.Unknown; responses.statusDescription = string.Empty; responses.bladeResponseCollection = new List<BladeResponse>(); Contracts.CompletionCode[] bladeInternalResponseCollection = new Contracts.CompletionCode[maxBladeCount]; Tracer.WriteInfo("Invoked SetAllPowerOn()"); Tracer.WriteUserLog("Invoked SetAllPowerOn()"); for (int loop = 0; loop < maxBladeCount; loop++) { int bladeId = loop + 1; responses.bladeResponseCollection.Add(SetPowerOn(bladeId)); // Set the internal blade response to the blade completion code. bladeInternalResponseCollection[loop] = responses.bladeResponseCollection[loop].completionCode; } Contracts.ChassisResponse varResponse = new Contracts.ChassisResponse(); varResponse = ChassisManagerUtil.ValidateAllBladeResponse(bladeInternalResponseCollection); responses.completionCode = varResponse.completionCode; responses.statusDescription = varResponse.statusDescription; return responses; }
/// <summary> /// Activate Deactivate PSU ALERT Action against all blades. /// </summary> public Contracts.AllBladesResponse SetAllBladesPsuAlert(bool enableProchot, int action, bool removeCap) { Contracts.AllBladesResponse responses = new Contracts.AllBladesResponse(); responses.completionCode = Contracts.CompletionCode.Unknown; responses.statusDescription = String.Empty; responses.bladeResponseCollection = new List<BladeResponse>(); Contracts.CompletionCode[] bladeInternalResponseCollection = new Contracts.CompletionCode[ConfigLoaded.Population]; Tracer.WriteUserLog("Invoked SetAllBladesPsuAlert"); Tracer.WriteInfo("Received SetAllBladesPsuAlert"); for (int loop = 0; loop < ConfigLoaded.Population; loop++) { responses.bladeResponseCollection.Add(SetBladePsuAlert(loop + 1, enableProchot, action, removeCap)); // Set the internal blade response to the blade completion code. bladeInternalResponseCollection[loop] = responses.bladeResponseCollection[loop].completionCode; } Contracts.ChassisResponse varResponse = new Contracts.ChassisResponse(); varResponse = ChassisManagerUtil.ValidateAllBladeResponse(bladeInternalResponseCollection); responses.completionCode = varResponse.completionCode; responses.statusDescription = varResponse.statusDescription; return responses; }
/// <summary> /// Set all blades power limit to the given value /// </summary> /// <param name="powerLimitInWatts">Power limit to set</param> /// <returns>Array of blade responses indicating blade operation was success/failure</returns> public AllBladesResponse SetAllBladesPowerLimit(double powerLimitInWatts) { byte MaxbladeCount = (byte)ConfigLoaded.Population; AllBladesResponse responses = new AllBladesResponse(); responses.completionCode = Contracts.CompletionCode.Unknown; responses.statusDescription = string.Empty; responses.bladeResponseCollection = new List<BladeResponse>(); Contracts.CompletionCode[] bladeInternalResponseCollection = new Contracts.CompletionCode[MaxbladeCount]; Tracer.WriteUserLog("Invoked SetAllBladesPowerLimit(powerLimitInWatts: {0})", powerLimitInWatts); try { for (int index = 0; index < ConfigLoaded.Population; index++) { responses.bladeResponseCollection.Add(SetBladePowerLimit((int)(index + 1), powerLimitInWatts)); // Set the internal blade response to the blade completion code. bladeInternalResponseCollection[index] = responses.bladeResponseCollection[index].completionCode; } } catch (Exception ex) { responses.completionCode = Contracts.CompletionCode.Failure; responses.statusDescription = responses.completionCode.ToString() + ": " + ex.Message; Tracer.WriteError("SetAllBladesPowerLimit Exception" + ex.Message); return responses; } Contracts.ChassisResponse varResponse = new Contracts.ChassisResponse(); varResponse = ChassisManagerUtil.ValidateAllBladeResponse(bladeInternalResponseCollection); responses.completionCode = varResponse.completionCode; responses.statusDescription = varResponse.statusDescription; return responses; }
/// <summary> /// Set soft blade power limit ON for all blades /// </summary> /// <returns>Array of blade responses indicating blade operation was success/failure</returns> public AllBladesResponse SetAllBladesOn() { byte MaxbladeCount = (byte)ConfigLoaded.Population; AllBladesResponse responses = new AllBladesResponse(); responses.completionCode = Contracts.CompletionCode.Unknown; responses.statusDescription = string.Empty; responses.bladeResponseCollection = new List<BladeResponse>(); Contracts.CompletionCode[] bladeInternalResponseCollection = new Contracts.CompletionCode[MaxbladeCount]; Tracer.WriteInfo("Received SetAllBladesOn()"); Tracer.WriteUserLog("Invoked SetAllBladesOn()"); try { for (int index = 0; index < ConfigLoaded.Population; index++) { int bladeId = index + 1; responses.bladeResponseCollection.Add(SetBladeOn(bladeId)); // Set the internal blade response to the blade completion code. bladeInternalResponseCollection[index] = responses.bladeResponseCollection[index].completionCode; } } catch (Exception ex) { Tracer.WriteError("SetAllBladesOn failed with exception" + ex); responses.completionCode = Contracts.CompletionCode.Failure; responses.statusDescription = Contracts.CompletionCode.Failure + ": " + ex.Message; return responses; } Contracts.ChassisResponse varResponse = new Contracts.ChassisResponse(); varResponse = ChassisManagerUtil.ValidateAllBladeResponse(bladeInternalResponseCollection); responses.completionCode = varResponse.completionCode; responses.statusDescription = varResponse.statusDescription; return responses; }
/// <summary> /// Power cycle all blades /// </summary> /// <param name="offTime">time for which the blades will be powered off in seconds</param> /// <returns>Collection of Blade responses indicating if blade operation was success/failure</returns> public AllBladesResponse SetAllBladesActivePowerCycle(uint offTime) { byte maxbladeCount = (byte)ConfigLoaded.Population; AllBladesResponse responses = new AllBladesResponse(); responses.completionCode = Contracts.CompletionCode.Unknown; responses.statusDescription = string.Empty; responses.bladeResponseCollection = new List<BladeResponse>(); Contracts.CompletionCode[] bladeInternalResponseCollection = new Contracts.CompletionCode[maxbladeCount]; Tracer.WriteUserLog(" Invoked SetAllBladesActivePowerCycle(offTime: {0})", offTime); // Check that the power off time is valid for a byte value since the IPMI command takes a byte value if (offTime > Byte.MaxValue) { Tracer.WriteWarning("SetAllBladesActivePowerCycle failed, Invalid power off time: {0}", offTime); responses.completionCode = Contracts.CompletionCode.ParameterOutOfRange; responses.statusDescription = Contracts.CompletionCode.ParameterOutOfRange.ToString(); return responses; } for (int loop = 0; loop < maxbladeCount; loop++) { int bladeId = loop + 1; responses.bladeResponseCollection.Add(SetBladeActivePowerCycle(bladeId, offTime)); // Set the internal blade response to the blade completion code. bladeInternalResponseCollection[loop] = responses.bladeResponseCollection[loop].completionCode; } Contracts.ChassisResponse varResponse = new Contracts.ChassisResponse(); varResponse = ChassisManagerUtil.ValidateAllBladeResponse(bladeInternalResponseCollection); responses.completionCode = varResponse.completionCode; responses.statusDescription = varResponse.statusDescription; return responses; }