/// <summary>
        /// Get PSU ALERT Default Power Cap
        /// </summary>
        public BladePsuAlertDpcResponse GetBladePsuAlertDefaultPowerCap(int bladeId)
        {
            BladePsuAlertDpcResponse response = new BladePsuAlertDpcResponse();
            response.bladeNumber = bladeId;
            response.completionCode = Contracts.CompletionCode.Unknown;
            response.statusDescription = String.Empty;
            Tracer.WriteUserLog("Invoked GetBladePsuAlertDefaultPowerCap({0})", bladeId);
            Tracer.WriteInfo("Received GetBladePsuAlertDefaultPowerCap({0})", bladeId);

            if (!ConfigLoaded.PowerAlertDrivenPowerCapAPIsEnabled)
            {
                Tracer.WriteInfo("GetBladePsuAlertDefaultPowerCap: User requested API not enabled in app.config");
                response.completionCode = Contracts.CompletionCode.CommandNotValidAtThisTime;
                response.statusDescription = "PSU alert driven power cap commands are not enabled for this blade";
                return response;
            }

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

            BladePsuAlertDpcResponse dpcResponse = GetPsuAlertDefaultPowerCap(bladeId);

            // Assign response and map completion code
            response = dpcResponse;
            response.completionCode =
                ChassisManagerUtil.GetContractsCompletionCodeMapping((byte)dpcResponse.completionCode);
            response.statusDescription = response.completionCode.ToString();

            return response;
        }
        /// <summary>
        /// Get PSU ALERT Default Power Cap
        /// </summary>
        private BladePsuAlertDpcResponse GetPsuAlertDefaultPowerCap(int bladeId)
        {
            BladePsuAlertDpcResponse response = new BladePsuAlertDpcResponse();
            response.bladeNumber = bladeId;
            response.completionCode = Contracts.CompletionCode.Unknown;
            response.statusDescription = String.Empty;
            Tracer.WriteUserLog("Invoked GetBladePsuAlertDefaultPowerCap({0})", bladeId);
            Tracer.WriteInfo("Received GetBladePsuAlertDefaultPowerCap({0})", bladeId);

            // Issue IPMI command
            Ipmi.DefaultPowerLimit dpc = WcsBladeFacade.GetDefaultPowerCap((byte)bladeId);

            if (dpc.CompletionCode != (byte)Contracts.CompletionCode.Success)
            {
                response.completionCode = Contracts.CompletionCode.Failure;
                Tracer.WriteError("GetBladePsuAlertDefaultPowerCap failed with completion code: {0:X}", dpc.CompletionCode);
            }
            else
            {
                response.completionCode = Contracts.CompletionCode.Success;
                response.DefaultCapEnabled = dpc.DefaultCapEnabled;
                response.WaitTime = dpc.WaitTime;
                response.DefaultPowerCap = dpc.DefaultPowerCap;
            }

            response.completionCode =
                            ChassisManagerUtil.GetContractsCompletionCodeMapping((byte)dpc.CompletionCode);
            response.statusDescription = response.completionCode.ToString();
            return response;
        }
        /// <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()
        {
            BladePsuAlertDpcResponse myResponse = new BladePsuAlertDpcResponse();
            AllBladesPsuAlertDpcResponse myResponses = new AllBladesPsuAlertDpcResponse();
            try
            {
                if (this.argVal.ContainsKey('a'))
                {
                    myResponses = WcsCli2CmConnectionManager.channel.GetAllBladesPsuAlertDefaultPowerCap();
                }
                else if (this.argVal.ContainsKey('i'))
                {
                    dynamic bladeId = null;
                    if (this.argVal.TryGetValue('i', out bladeId))
                    {
                        myResponse = WcsCli2CmConnectionManager.channel.GetBladePsuAlertDefaultPowerCap((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 ((this.argVal.ContainsKey('a') && myResponses == null) || (this.argVal.ContainsKey('a') &&
                myResponses.bladeDpcResponseCollection == null) || myResponse == null)
            {
                Console.WriteLine(WcsCliConstants.serviceResponseEmpty);
                return;
            }

            if (this.argVal.ContainsKey('a'))
            {
                foreach (var response in myResponses.bladeDpcResponseCollection)
                {
                    if (ResponseValidation.ValidateBladeResponse(response.bladeNumber, null, response, false))
                    {
                        Console.WriteLine(WcsCliConstants.commandSuccess + string.Format(" Default Power Cap in Watts for blade: {0} = {1}",
                               response.bladeNumber, response.DefaultPowerCap));
                        Console.WriteLine("Time in milliseconds to wait before de-asserting the PROCHOT for blade: {0} = {1}",
                            response.bladeNumber, response.WaitTime);
                        Console.WriteLine("Default Power Cap Enabled/Disabled for blade: {0} = {1}",
                            response.bladeNumber, response.DefaultCapEnabled);
                    }
                }
            }
            else
            {
                if (ResponseValidation.ValidateBladeResponse(myResponse.bladeNumber, null, myResponse, false))
                {
                    Console.WriteLine(WcsCliConstants.commandSuccess + string.Format(" Default Power Cap in Watts for blade: {0} = {1}",
                       myResponse.bladeNumber, myResponse.DefaultPowerCap));
                    Console.WriteLine("Time in milliseconds to wait before de-asserting the PROCHOT for blade: {0} = {1}",
                        myResponse.bladeNumber, myResponse.WaitTime);
                    Console.WriteLine("Default Power Cap Enabled/Disabled for blade: {0} = {1}",
                        myResponse.bladeNumber, myResponse.DefaultCapEnabled);
                }
            }
        }