/// <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 + ": --");
                    }
                }
            }
        }
Example #3
0
        /// <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;
        }