/// <summary> /// Get power state for specified blade /// </summary> /// <param name="bladeId">Blade ID(1-48)</param> /// <returns>Blade active power state response</returns> public PowerStateResponse GetPowerState(int bladeId) { Tracer.WriteInfo("Received GetPowerState({0})", bladeId); Tracer.WriteUserLog("Invoked GetPowerState(bladeid: {0})", bladeId); PowerStateResponse responsePowerState = new PowerStateResponse(); responsePowerState.completionCode = Contracts.CompletionCode.Unknown; responsePowerState.statusDescription = String.Empty; responsePowerState.bladeNumber = bladeId; responsePowerState.powerState = Contracts.PowerState.NA; // Check for blade id if (ChassisManagerUtil.CheckBladeId(bladeId) == CompletionCode.InvalidBladeId) { Tracer.WriteWarning("Invalid blade Id {0}", bladeId); responsePowerState.completionCode = Contracts.CompletionCode.ParameterOutOfRange; responsePowerState.statusDescription = Contracts.CompletionCode.ParameterOutOfRange.ToString(); return responsePowerState; } // Get Power State BladePowerStatePacket response = ChassisState.BladePower[bladeId - 1].GetBladePowerState(); if (response.CompletionCode != CompletionCode.Success) { Tracer.WriteError("GetPowerState: Blade {0} Power Enable state read failed (Completion Code: {1:X})", bladeId, response.CompletionCode); responsePowerState.powerState = Contracts.PowerState.NA; responsePowerState.completionCode = ChassisManagerUtil.GetContractsCompletionCodeMapping((byte)response.CompletionCode); responsePowerState.statusDescription = responsePowerState.completionCode.ToString(); } else { responsePowerState.completionCode = Contracts.CompletionCode.Success; if (response.BladePowerState == (byte)Contracts.PowerState.ON) { responsePowerState.powerState = Contracts.PowerState.ON; responsePowerState.Decompression = response.DecompressionTime; responsePowerState.statusDescription = string.Format("Blade Power is On, firmware decompressed"); if (response.DecompressionTime > 0) { responsePowerState.powerState = Contracts.PowerState.OnFwDecompress; responsePowerState.Decompression = response.DecompressionTime; responsePowerState.statusDescription = string.Format("Blade On. Firmware Decompression Time Remaining: {0}", response.DecompressionTime); } Tracer.WriteInfo("GetPowerState: Blade is receiving AC Outlet power"); } else if (response.BladePowerState == (byte)Contracts.PowerState.OFF) { responsePowerState.powerState = Contracts.PowerState.OFF; responsePowerState.Decompression = response.DecompressionTime; responsePowerState.statusDescription = string.Format("Blade power is Off"); Tracer.WriteInfo("GetPowerState: Blade is NOT receiving AC Outlet power"); } else { responsePowerState.powerState = Contracts.PowerState.NA; responsePowerState.statusDescription = string.Format("Blade Power is Unknown"); Tracer.WriteWarning("GetPowerState: Unknown power state"); } } return responsePowerState; }
/// <summary> /// command specific implementation /// argVal command class member has all user-entered command argument indicators and parameter values /// Currently just prints all argument indicators and argument values /// </summary> internal override void commandImplementation() { uint sledId = 1; PowerStateResponse myResponse = new PowerStateResponse(); GetAllPowerStateResponse myResponses = new GetAllPowerStateResponse(); try { if (this.argVal.ContainsKey('a')) { myResponses = WcsCli2CmConnectionManager.channel.GetAllPowerState(); } else if (this.argVal.ContainsKey('i')) { dynamic mySledId = null; this.argVal.TryGetValue('i', out mySledId); sledId = (uint)mySledId; myResponse = WcsCli2CmConnectionManager.channel.GetPowerState((int)mySledId); } } catch (Exception ex) { SharedFunc.ExceptionOutput(ex); return; } if ((this.argVal.ContainsKey('a') && myResponses == null) || myResponse == null) { Console.WriteLine(WcsCliConstants.serviceResponseEmpty); return; } if (this.argVal.ContainsKey('a')) { for (int index = 0; index < myResponses.powerStateResponseCollection.Count(); index++) { if (ResponseValidation.ValidateBladeResponse(myResponses.powerStateResponseCollection[index].bladeNumber, null, myResponses.powerStateResponseCollection[index], false)) { if (myResponses.powerStateResponseCollection[index].completionCode == Contracts.CompletionCode.Success) { if (myResponses.powerStateResponseCollection[index].powerState == Contracts.PowerState.ON) { Console.WriteLine(WcsCliConstants.commandSuccess + " Blade Active Power State " + myResponses.powerStateResponseCollection[index].bladeNumber + ": ON"); } else if (myResponses.powerStateResponseCollection[index].powerState == Contracts.PowerState.OFF) { Console.WriteLine(WcsCliConstants.commandSuccess + " Blade Active Power State " + myResponses.powerStateResponseCollection[index].bladeNumber + ": OFF"); } else if (myResponses.powerStateResponseCollection[index].powerState == Contracts.PowerState.OnFwDecompress) { Console.WriteLine(WcsCliConstants.commandSuccess + " Blade Active Power State " + myResponses.powerStateResponseCollection[index].bladeNumber + ": ON - Firmware Decompressing"); } else { Console.WriteLine(WcsCliConstants.commandSuccess + " Blade Active Power State " + myResponses.powerStateResponseCollection[index].bladeNumber + ": --"); } } } } } else { if (ResponseValidation.ValidateBladeResponse(myResponse.bladeNumber, null, myResponse, false)) { if (myResponse.powerState == Contracts.PowerState.ON) { Console.WriteLine(WcsCliConstants.commandSuccess + " Blade Active Power State " + myResponse.bladeNumber + ": ON"); } else if (myResponse.powerState == Contracts.PowerState.OFF) { Console.WriteLine(WcsCliConstants.commandSuccess + " Blade Active Power State " + myResponse.bladeNumber + ": OFF"); } else if (myResponse.powerState == Contracts.PowerState.OnFwDecompress) { Console.WriteLine(WcsCliConstants.commandSuccess + " Blade Active Power State " + myResponse.bladeNumber + ": ON - Firmware Decompressing"); } else { Console.WriteLine(WcsCliConstants.commandSuccess + " Blade Active Power State " + myResponse.bladeNumber + ": --"); } } } }
/// <summary> /// command specific implementation /// argVal command class member has all user-entered command argument indicators and parameter values /// Currently just prints all argument indicators and argument values /// </summary> internal override void commandImplementation() { uint sledId = 1; PowerStateResponse myResponse = new PowerStateResponse(); GetAllPowerStateResponse myResponses = new GetAllPowerStateResponse(); try { if (this.argVal.ContainsKey('a')) { myResponses = WcsCli2CmConnectionManager.channel.GetAllPowerState(); } else if (this.argVal.ContainsKey('i')) { dynamic mySledId = null; this.argVal.TryGetValue('i', out mySledId); sledId = (uint)mySledId; myResponse = WcsCli2CmConnectionManager.channel.GetPowerState((int)mySledId); } } catch (Exception ex) { SharedFunc.ExceptionOutput(ex); return; } if ((this.argVal.ContainsKey('a') && myResponses == null) || myResponse == null) { Console.WriteLine(WcsCliConstants.serviceResponseEmpty); return; } if (this.argVal.ContainsKey('a')) { for (int index = 0; index < myResponses.powerStateResponseCollection.Count(); index++) { if (myResponses.powerStateResponseCollection[index].completionCode == Contracts.CompletionCode.Success) { if (myResponses.powerStateResponseCollection[index].powerState == Contracts.PowerState.ON) { Console.WriteLine("Blade Active Power State " + myResponses.powerStateResponseCollection[index].bladeNumber + ": ON"); } else if (myResponses.powerStateResponseCollection[index].powerState == Contracts.PowerState.OFF) { Console.WriteLine("Blade Active Power State " + myResponses.powerStateResponseCollection[index].bladeNumber + ": OFF"); } else { Console.WriteLine("Blade Active Power State " + myResponses.powerStateResponseCollection[index].bladeNumber + ": --"); } } else if (myResponses.powerStateResponseCollection[index].completionCode == Contracts.CompletionCode.Unknown) { Console.WriteLine("Blade Active Power State " + myResponses.powerStateResponseCollection[index].bladeNumber + ": " + WcsCliConstants.bladeStateUnknown); } else { // diaplay the error message if not success/unknown Console.WriteLine("Blade Active Power State " + myResponses.powerStateResponseCollection[index].bladeNumber + ": " + myResponses.powerStateResponseCollection[index].completionCode.ToString()); } } } else { if (myResponse.completionCode == Contracts.CompletionCode.Success) { if (myResponse.powerState == Contracts.PowerState.ON) { Console.WriteLine("Blade Active Power State " + myResponse.bladeNumber + ": ON"); } else if (myResponse.powerState == Contracts.PowerState.OFF) { Console.WriteLine("Blade Active Power State " + myResponse.bladeNumber + ": OFF"); } else { Console.WriteLine("Blade Active Power State " + myResponse.bladeNumber + ": --"); } } else if (myResponse.completionCode == Contracts.CompletionCode.Unknown) { Console.WriteLine("Blade Active Power State " + myResponse.bladeNumber + ": " + WcsCliConstants.bladeStateUnknown); } else { // diaplay the error message if not success/unknown Console.WriteLine("Blade Active Power State " + sledId + ": " + myResponse.completionCode.ToString()); } } }
/// <summary> /// Get power state for specified blade /// </summary> /// <param name="bladeId">Blade ID(1-48)</param> /// <returns>Blade active power state response</returns> public PowerStateResponse GetPowerState(int bladeId) { Tracer.WriteInfo("Received GetPowerState({0})", bladeId); Tracer.WriteUserLog("Invoked GetPowerState(bladeid: {0})", bladeId); PowerStateResponse responsePowerState = new PowerStateResponse(); responsePowerState.completionCode = Contracts.CompletionCode.Unknown; responsePowerState.statusDescription = String.Empty; responsePowerState.bladeNumber = bladeId; responsePowerState.powerState = Contracts.PowerState.NA; // Check for blade id if (ChassisManagerUtil.CheckBladeId((byte)bladeId) == (byte)CompletionCode.InvalidBladeId) { Tracer.WriteWarning("Invalid blade Id {0}", bladeId); responsePowerState.completionCode = Contracts.CompletionCode.ParameterOutOfRange; responsePowerState.statusDescription = Contracts.CompletionCode.ParameterOutOfRange.ToString(); return responsePowerState; } if (BladeSerialSessionMetadata.ApiGreenSignalling() != CompletionCode.Success) { Tracer.WriteError("GetPowerState({0}) API: Failed to get green signal", bladeId); responsePowerState.completionCode = Contracts.CompletionCode.SerialSessionActive; responsePowerState.statusDescription = "Device busy"; return responsePowerState; } // Get Power State BladePowerStatePacket response = ChassisState.BladePower[bladeId - 1].GetBladePowerState(); if (response.CompletionCode != CompletionCode.Success) { Tracer.WriteError("Sled Power Enable state read failed (Completion Code: {0:X})", response.CompletionCode); responsePowerState.powerState = Contracts.PowerState.NA; responsePowerState.completionCode = ChassisManagerUtil.GetContractsCompletionCodeMapping((byte)response.CompletionCode); responsePowerState.statusDescription = responsePowerState.completionCode.ToString(); } else { responsePowerState.completionCode = Contracts.CompletionCode.Success; if (response.BladePowerState == (byte)Contracts.PowerState.ON) { responsePowerState.powerState = Contracts.PowerState.ON; Tracer.WriteInfo("GetPowerState: Blade is receiving AC Outlet power"); } else if (response.BladePowerState == (byte)Contracts.PowerState.OFF) { responsePowerState.powerState = Contracts.PowerState.OFF; Tracer.WriteInfo("GetPowerState: Blade is NOT receiving AC Outlet power"); } else { responsePowerState.powerState = Contracts.PowerState.NA; Tracer.WriteWarning("GetPowerState: Unknown power state"); } } return responsePowerState; }