/// <summary> /// SetNextBoot - sets the next boot device /// </summary> /// <returns></returns> public Contracts.BootResponse SetNextBoot(int bladeId, Contracts.BladeBootType bootType, bool uefi, bool persistent, int bootInstance = 0) { BootResponse response = new BootResponse(); Tracer.WriteUserLog("Invoked SetNextBoot({0})", bladeId); Tracer.WriteInfo("Received SetNextBoot({0})", bladeId); response.bladeNumber = bladeId; response.completionCode = Contracts.CompletionCode.Unknown; response.statusDescription = String.Empty; Contracts.ChassisResponse varResponse = ValidateRequest("SetNextBoot", bladeId); if (varResponse.completionCode != Contracts.CompletionCode.Success) { response.completionCode = varResponse.completionCode; response.statusDescription = varResponse.statusDescription; return response; } // SetNextBoot should not be set to unknown. The unknown value is used only by getnextboot API if (bootType == Contracts.BladeBootType.Unknown) { response.completionCode = Contracts.CompletionCode.ParameterOutOfRange; response.statusDescription = Contracts.CompletionCode.ParameterOutOfRange.ToString() + " Cannot be set to Unknown."; return response; } // Issue IPMI Command after checking if (Enum.IsDefined(typeof(Ipmi.BootType), ChassisManagerUtil.GetIpmiBootType(bootType))) { Ipmi.NextBoot nextBoot = WcsBladeFacade.SetNextBoot((byte)bladeId, ChassisManagerUtil.GetIpmiBootType(bootType), uefi, persistent, (byte)bootInstance); if (nextBoot.CompletionCode == (byte)Contracts.CompletionCode.Success) { response.completionCode = Contracts.CompletionCode.Success; response.nextBoot = bootType; } else { Tracer.WriteError("SetNextBoot failed with Completion Code {0:X}", nextBoot.CompletionCode); } response.completionCode = ChassisManagerUtil.GetContractsCompletionCodeMapping((byte)nextBoot.CompletionCode); } else { response.completionCode = Contracts.CompletionCode.Failure; Tracer.WriteError("Boot Type {0} not defined in Boot Order Type", bootType); } response.statusDescription = response.completionCode.ToString(); return response; }
/// <summary> /// GetNextBoot - gets the next boot device /// </summary> /// <returns></returns> public Contracts.BootResponse GetNextBoot(int bladeId) { BootResponse response = new BootResponse(); Tracer.WriteUserLog("Invoked GetNextBoot({0})", bladeId); Tracer.WriteInfo("Received GetNextBoot({0})", bladeId); response.bladeNumber = bladeId; response.completionCode = Contracts.CompletionCode.Unknown; response.statusDescription = String.Empty; Contracts.ChassisResponse varResponse = ValidateRequest("GetNextBoot", bladeId); if (varResponse.completionCode != Contracts.CompletionCode.Success) { response.completionCode = varResponse.completionCode; response.statusDescription = varResponse.statusDescription; return response; } // Issue IPMI command Ipmi.NextBoot nextBoot = WcsBladeFacade.GetNextBoot((byte)bladeId); if (nextBoot.CompletionCode != (byte)Contracts.CompletionCode.Success) { response.completionCode = Contracts.CompletionCode.Failure; Tracer.WriteError("GetNextBoot failed with completion code: {0:X}", nextBoot.CompletionCode); } else { response.completionCode = Contracts.CompletionCode.Success; response.nextBoot = ChassisManagerUtil.GetContractsBootType(nextBoot.BootDevice); } response.completionCode = ChassisManagerUtil.GetContractsCompletionCodeMapping((byte)nextBoot.CompletionCode); response.statusDescription = response.completionCode.ToString(); return response; }