internal override void commandImplementation()
        {
            uint sledId = 1;
            BladePowerReadingResponse myResponse = new BladePowerReadingResponse();
            GetAllBladesPowerReadingResponse myResponses = new GetAllBladesPowerReadingResponse();
            try
            {
                if (this.argVal.ContainsKey('a'))
                {
                    myResponses = WcsCli2CmConnectionManager.channel.GetAllBladesPowerReading();
                }
                else if (this.argVal.ContainsKey('i'))
                {
                    dynamic mySledId = null;
                    this.argVal.TryGetValue('i', out mySledId);
                    sledId = (uint)mySledId;
                    myResponse = WcsCli2CmConnectionManager.channel.GetBladePowerReading((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.bladePowerReadingCollection.Count(); index++)
                {
                    if (ResponseValidation.ValidateBladeResponse(myResponses.bladePowerReadingCollection[index].bladeNumber, null, myResponses.bladePowerReadingCollection[index], false))
                    {
                        Console.WriteLine(WcsCliConstants.commandSuccess + "Blade " + myResponses.bladePowerReadingCollection[index].bladeNumber + ": Power Reading: " + myResponses.bladePowerReadingCollection[index].powerReading + " Watts");
                    }
                }
            }
            else
            {
                if (ResponseValidation.ValidateBladeResponse(myResponse.bladeNumber, null, myResponse, false))
                {
                    Console.WriteLine(WcsCliConstants.commandSuccess + "Blade " + myResponse.bladeNumber + ": Power Reading: " + myResponse.powerReading + " Watts");
                }
            }
        }
        public TestsResultResponse GetBladePowerReadingTest()
        {
            int randomBlade = 0;
            bool isServer = false;
            int bladeIndex = 1;
            string failureMessage = string.Empty;

            Console.WriteLine("\n!!!!!!!!! Starting execution of GetBladePowerReadingTest");
            //make sure you pick a server and not a JBOD
            while (!isServer && bladeIndex <= (byte)this.ChassisPopulation)
            {
                randomBlade = new Random().Next(1, (byte)this.ChassisPopulation);
                if (!this.JbodLocations.Contains(bladeIndex) && !this.EmptySlots.Contains(bladeIndex))
                {
                    isServer = true;
                }
                else
                {
                    bladeIndex++;
                }
            }

            if (bladeIndex > (byte)this.ChassisPopulation)
            {
                failureMessage = "\n!!!Failed to find a server blade to run the test.";
                Console.WriteLine(failureMessage);
                return new TestsResultResponse(ExecutionResult.Failed, failureMessage);
            }

            BladePowerReadingResponse powerReadingresponse = new BladePowerReadingResponse();

            //make sure blade is reacheable
            this.Channel.SetPowerOn(randomBlade);
            powerReadingresponse = this.Channel.GetBladePowerReading(randomBlade);
            if (powerReadingresponse.completionCode != CompletionCode.Success)
            {
                failureMessage = string.Format("\n!!!Request to read blade power failed for blade# {0}", randomBlade);
                Console.WriteLine(failureMessage);
                return new TestsResultResponse(ExecutionResult.Failed, failureMessage);
            }
            Console.WriteLine("\n++++++++++++++++++++++++++++++++");
            failureMessage = "\n!!!!!!!!! Successfully finished execution of GetBladePowerReadingTests.";
            Console.WriteLine(failureMessage);
            return new TestsResultResponse(ExecutionResult.Passed, failureMessage);
        }
        /// <summary>
        /// Get blade power reading for specified blade
        /// </summary>
        /// <param name="bladeId">Blade ID(1-48)</param>
        /// <returns>Blade response containing the power reading</returns>
        public BladePowerReadingResponse GetBladePowerReading(int bladeId)
        {
            Tracer.WriteInfo("Invoked GetBladePowerReading(bladeId: {0})", bladeId);
            Tracer.WriteUserLog("Invoked GetBladePowerReading(bladeId: {0})", bladeId);

            BladePowerReadingResponse response = new BladePowerReadingResponse();
            response.bladeNumber = bladeId;
            response.powerReading = -1;
            response.completionCode = Contracts.CompletionCode.Unknown;
            response.statusDescription = String.Empty;

            Contracts.ChassisResponse varResponse = ValidateRequest("GetBladePowerReading", bladeId);
            if (varResponse.completionCode != Contracts.CompletionCode.Success)
            {
                response.completionCode = varResponse.completionCode;
                response.statusDescription = varResponse.statusDescription;
                return response;
            }

            List<Ipmi.PowerReading> myPowerReading = new List<Ipmi.PowerReading>();
            myPowerReading = WcsBladeFacade.GetPowerReading((byte)bladeId);

            if (myPowerReading == null || myPowerReading.Count == 0 || myPowerReading[0].CompletionCode != 0 || myPowerReading[0].PowerSupport == false)
            {
                Tracer.WriteError("GetPowerReading:(" + bladeId + ") Error reading power ");
                response.completionCode = Contracts.CompletionCode.Failure;
                response.statusDescription = response.completionCode.ToString();
                return response;
            }
            response.powerReading = myPowerReading[0].Present;
            response.completionCode = Contracts.CompletionCode.Success;
            Tracer.WriteInfo("GetPowerReading:(" + bladeId + ") Avg " + myPowerReading[0].Average + " Curr " + myPowerReading[0].Present + " Support " + myPowerReading[0].PowerSupport);

            return response;
        }
        internal override void commandImplementation()
        {
            uint sledId = 1;
            BladePowerReadingResponse myResponse = new BladePowerReadingResponse();
            GetAllBladesPowerReadingResponse myResponses = new GetAllBladesPowerReadingResponse();
            try
            {
                if (this.argVal.ContainsKey('a'))
                {
                    myResponses = WcsCli2CmConnectionManager.channel.GetAllBladesPowerReading();
                }
                else if (this.argVal.ContainsKey('i'))
                {
                    dynamic mySledId = null;
                    this.argVal.TryGetValue('i', out mySledId);
                    sledId = (uint)mySledId;
                    myResponse = WcsCli2CmConnectionManager.channel.GetBladePowerReading((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.bladePowerReadingCollection.Count(); index++)
                {
                    if (myResponses.bladePowerReadingCollection[index].completionCode == Contracts.CompletionCode.Success)
                    {
                        Console.WriteLine("Blade Power Reading" + myResponses.bladePowerReadingCollection[index].bladeNumber + ": " + myResponses.bladePowerReadingCollection[index].powerReading + " Watts");
                    }
                    else if (myResponses.bladePowerReadingCollection[index].completionCode == Contracts.CompletionCode.Unknown)
                    {
                        Console.WriteLine("Blade " + myResponses.bladePowerReadingCollection[index].bladeNumber + ": " + WcsCliConstants.bladeStateUnknown);
                    }
                    else
                    {
                        // Display error if other than success/unknown
                        Console.WriteLine("Blade Power Reading for blade " + myResponses.bladePowerReadingCollection[index].bladeNumber + " failed with completion code: " + myResponses.bladePowerReadingCollection[index].completionCode.ToString());
                    }
                }
            }
            else
            {
                if (myResponse.completionCode == Contracts.CompletionCode.Success)
                {
                    Console.WriteLine("Blade Power Reading" + myResponse.bladeNumber + ": " + myResponse.powerReading + " Watts");
                }
                else if (myResponse.completionCode == Contracts.CompletionCode.Unknown)
                {
                    Console.WriteLine("Blade " + myResponse.bladeNumber + ": " + WcsCliConstants.bladeStateUnknown);
                }
                else
                {
                    // Display error if other than success/unknown
                    Console.WriteLine("Blade Power Reading " + myResponse.bladeNumber + ": " + myResponse.completionCode.ToString());
                }
            }
        }