/// <summary>
        /// Datasafe Set blade soft power ON for all blades
        /// </summary>
        /// <returns>Array of blade responses indicating blade operation was success/failure</returns>
        public DatasafeAllBladesResponse SetAllBladesDatasafeOn()
        {
            byte MaxbladeCount = (byte)ConfigLoaded.Population;

            DatasafeAllBladesResponse responses = new DatasafeAllBladesResponse();
            responses.completionCode = Contracts.CompletionCode.Unknown;
            responses.statusDescription = string.Empty;
            responses.datasafeBladeResponseCollection = new List<DatasafeBladeResponse>();
            Contracts.CompletionCode[] bladeInternalResponseCollection = new Contracts.CompletionCode[MaxbladeCount];

            Tracer.WriteInfo("Received SetAllBladesDatasafeOn()");
            Tracer.WriteUserLog("Invoked SetAllBladesDatasafeOn()");

            try
            {
                for (int index = 0; index < ConfigLoaded.Population; index++)
                {
                    int bladeId = index + 1;
                    responses.datasafeBladeResponseCollection.Add(SetBladeDatasafeOn(bladeId));

                    // Set the internal blade response to the blade completion code.
                    bladeInternalResponseCollection[index] = responses.datasafeBladeResponseCollection[index].completionCode;
                }
            }
            catch (Exception ex)
            {
                responses.completionCode = Contracts.CompletionCode.Failure;
                responses.statusDescription = responses.completionCode.ToString() + ": " + ex.Message;
                Tracer.WriteError("SetAllBladesDatasafeOn failed with exception" + ex);
                return responses;
            }

            Contracts.ChassisResponse varResponse = new Contracts.ChassisResponse();
            varResponse = ChassisManagerUtil.ValidateAllBladeResponse(bladeInternalResponseCollection);
            responses.completionCode = varResponse.completionCode;
            responses.statusDescription = varResponse.statusDescription;
            return responses;
        }
        /// <summary>
        /// Datasafe Power On all blades
        /// </summary>
        /// <returns>Array of blade responses, one for each blade. Indicates success/failure.</returns>
        public DatasafeAllBladesResponse SetAllBladesDatasafePowerOn()
        {
            byte maxBladeCount = (byte)ConfigLoaded.Population;

            DatasafeAllBladesResponse responses = new DatasafeAllBladesResponse();
            responses.completionCode = Contracts.CompletionCode.Unknown;
            responses.statusDescription = string.Empty;
            responses.datasafeBladeResponseCollection = new List<DatasafeBladeResponse>();
            Contracts.CompletionCode[] bladeInternalResponseCollection = new Contracts.CompletionCode[maxBladeCount];

            Tracer.WriteInfo("Invoked SetAllBladesDatasafePowerOn()");
            Tracer.WriteUserLog("Invoked SetAllBladesDatasafePowerOn()");

            for (int loop = 0; loop < maxBladeCount; loop++)
            {
                int bladeId = loop + 1;
                responses.datasafeBladeResponseCollection.Add(SetBladeDatasafePowerOn(bladeId));

                // Set the internal blade response to the blade completion code.
                bladeInternalResponseCollection[loop] = responses.datasafeBladeResponseCollection[loop].completionCode;
            }

            Contracts.ChassisResponse varResponse = new Contracts.ChassisResponse();
            varResponse = ChassisManagerUtil.ValidateAllBladeResponse(bladeInternalResponseCollection);
            responses.completionCode = varResponse.completionCode;
            responses.statusDescription = varResponse.statusDescription;
            return responses;
        }
        /// <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()
        {
            DatasafeBladeResponse myResponse = new DatasafeBladeResponse();
            DatasafeAllBladesResponse myResponses = new DatasafeAllBladesResponse();
            try
            {
                if (this.argVal.ContainsKey('a'))
                {
                    myResponses = WcsCli2CmConnectionManager.channel.SetAllBladesDatasafePowerOn();
                }
                else if (this.argVal.ContainsKey('i'))
                {
                    dynamic bladeId = null;
                    if (this.argVal.TryGetValue('i', out bladeId))
                    {
                        myResponse = WcsCli2CmConnectionManager.channel.SetBladeDatasafePowerOn((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.datasafeBladeResponseCollection == null) || myResponse == null)
            {
                Console.WriteLine(WcsCliConstants.serviceResponseEmpty);
                return;
            }

            if (this.argVal.ContainsKey('a'))
            {
                foreach (var response in myResponses.datasafeBladeResponseCollection)
                {
                    ResponseValidation.ValidateBladeResponse(response.bladeNumber, "DataSafe power ON", response, true);
                }
            }
            else
            {
                ResponseValidation.ValidateBladeResponse(myResponse.bladeNumber, "DataSafe power ON", myResponse, true);
            }
        }