/// <summary> /// Get the Post Code for the Blade /// </summary> public BiosPostCode GetPostCode(int bladeId) { Tracer.WriteInfo("Received GetPostCode({0})", bladeId); Tracer.WriteUserLog("Invoked GetPostCode(bladeid: {0})", bladeId); BiosPostCode postCodeResponse = new BiosPostCode(); postCodeResponse.bladeNumber = bladeId; postCodeResponse.completionCode = Contracts.CompletionCode.Unknown; postCodeResponse.statusDescription = String.Empty; Contracts.ChassisResponse varResponse = ValidateRequest("GetPostCode", bladeId); if (varResponse.completionCode != Contracts.CompletionCode.Success) { postCodeResponse.completionCode = varResponse.completionCode; postCodeResponse.statusDescription = varResponse.statusDescription; return postCodeResponse; } // Get the current BIOS POST code Ipmi.BiosCode response = WcsBladeFacade.GetBiosCode((byte)bladeId, 0x00); if (response.CompletionCode != (byte)CompletionCode.Success) { Tracer.WriteWarning("GetPostCode for blade: {0} failed failed (Completion Code: {1:X})", bladeId, response.CompletionCode); postCodeResponse.completionCode = ChassisManagerUtil.GetContractsCompletionCodeMapping((byte)response.CompletionCode); postCodeResponse.statusDescription = postCodeResponse.completionCode.ToString(); } else { // Set response postCodeResponse.PostCode = response.PostCode; postCodeResponse.completionCode = Contracts.CompletionCode.Success; // Get the previous BIOS POST code response = WcsBladeFacade.GetBiosCode((byte)bladeId, 0x01); // Provide previous POST code if available. Note: After Blade_EN is deasserted it is not // expected for this POST code to be available. Therefore it is not considered // an error condition to not return a previous POST code. if (response.CompletionCode == (byte)CompletionCode.Success) { // Set response postCodeResponse.PreviousPostCode = response.PostCode; } else { postCodeResponse.PreviousPostCode = string.Format("Previous Code not available. Response Code: {0:X}", response.CompletionCode); } } return postCodeResponse; }
/// <summary> /// command specific implementation /// </summary> internal override void commandImplementation() { BiosPostCode myResponse = new BiosPostCode(); try { dynamic bladeId = null; if (this.argVal.TryGetValue('i', out bladeId)) { myResponse = WcsCli2CmConnectionManager.channel.GetPostCode((int)bladeId); } else { Console.WriteLine(WcsCliConstants.commandFailure + " No blade ID specified, please look at command help."); return; } } catch (Exception ex) { SharedFunc.ExceptionOutput(ex); return; } if (ResponseValidation.ValidateBladeResponse(myResponse.bladeNumber, "BIOS POST Code", myResponse, false)) { Console.WriteLine(WcsCliConstants.commandSuccess + " BIOS POST code for the previous boot (hex):\n" + myResponse.PreviousPostCode); Console.WriteLine(); Console.WriteLine(WcsCliConstants.commandSuccess + " BIOS POST code for the current boot (hex):\n" + myResponse.PostCode); } }