Beispiel #1
0
        internal static void Initialize()
        {
            // For each blade
            for (int i = 0; i < ConfigLoaded.Population; i++)
            {
                // Initialize lock object for performing atomic blade power operations
                locker[i] = new object();

                // Initialize Hard Power On/Off Switches (Blade Enable)
                BladePower[i] = new BladePowerSwitch(Convert.ToByte(i + 1));
                // Get Actual Power State
                BladePower[i].GetBladePowerState();

                // Create Blade Serial Console Metadata objects and initialize token, timestamp and associated member objects using class constructor
                BladeSerialMetadata.Add(i + 1, new BladeSerialSessionMetadata(i + 1));
            }

            // For each PSU
            for (int i = 0; i < ConfigLoaded.NumPsus; i++)
            {
                psuLock[i] = new object();
            }
            PsuInitialize();

            // For each serial port
            // Create Serial Console Port Metadata objects and initialize the sessiontoken and timestamp using the class constructor
            SerialConsolePortsMetadata = new SerialConsoleMetadata[(uint)ConfigLoaded.MaxSerialConsolePorts];
            for (int numPorts = 0; numPorts < (int)ConfigLoaded.MaxSerialConsolePorts; numPorts++)
            {
                SerialConsolePortsMetadata[numPorts] = new SerialConsoleMetadata(ChassisManagerUtil.GetSerialConsolePortIdFromIndex(numPorts), DateTime.Now);
            }

            // Create AC Power Socket objects
            AcPowerSockets = new AcSocket[(uint)ConfigLoaded.NumPowerSwitches];
            for (int numSockets = 0; numSockets < (int)ConfigLoaded.NumPowerSwitches; numSockets++)
            {
                AcPowerSockets[numSockets] = new AcSocket((byte)(numSockets + 1));
            }

            WatchDogTimerInitialize();

            // Create fan objects
            for (int fanId = 0; fanId < (int)ConfigLoaded.NumFans; fanId++)
            {
                Fans[fanId] = new Fan((byte)(fanId + 1));
            }
        }
        internal static void Initialize()
        {
            for (int i = 0; i < ConfigLoaded.Population; i++)
            {
                _lock[i] = new object();
            }

            // Create Serial Console Port Metadata objects and initialize the sessiontoken and timestamp using the class constructor
            SerialConsolePortsMetadata = new SerialConsoleMetadata[(uint)ConfigLoaded.MaxSerialConsolePorts];
            for (int numPorts = 0; numPorts < (int)ConfigLoaded.MaxSerialConsolePorts; numPorts++)
            {
                SerialConsolePortsMetadata[numPorts] = new SerialConsoleMetadata(ChassisManagerUtil.GetSerialConsolePortIdFromIndex(numPorts), ConfigLoaded.InactiveSerialPortSessionToken, DateTime.Now);
            }

            // Create AC Power Socket objects
            AcPowerSockets = new AcSocket[(uint)ConfigLoaded.NumPowerSwitches];
            for (int numSockets = 0; numSockets < (int)ConfigLoaded.NumPowerSwitches; numSockets++)
            {
                AcPowerSockets[numSockets] = new AcSocket((byte)(numSockets + 1));
            }

            // Create PSU objects
            for (int psuIndex = 0; psuIndex < (int)ConfigLoaded.NumPsus; psuIndex++)
            {
                // Initially create instance of the base class
                // Later.. based on the psu model number, we create the appropriate psu class object
                Psu[psuIndex] = new PsuBase((byte)(psuIndex + 1));
            }

            // Create fan objects
            for (int fanId = 0; fanId < (int)ConfigLoaded.NumPsus; fanId++)
            {
                Fans[fanId] = new Fan((byte)(fanId + 1));
            }

            // Initialize Hard Power On/Off Switches (Blade Enable)
            for (int bladeId = 0; bladeId < BladePower.Length; bladeId++)
            {
                BladePower[bladeId] = new BladePowerSwitch(Convert.ToByte(bladeId + 1));
            }
        }
        private static void ExecuteAllBladeCommands()
        {
            Tracer.Write("");
            Tracer.Write("*********************************************************");
            Tracer.Write(string.Format("***** BMC Command Execution: {0} ******", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")));
            Tracer.Write("*********************************************************");
            Tracer.Write("");

            ResponseBase response = new CustomResponse(failure);

            BladePowerSwitch powerPacket = new BladePowerSwitch(bladeId);
            BladePowerStatePacket powerOff = powerPacket.SetBladePowerState(0x00);

            if (powerOff.CompletionCode == CompletionCode.Success)
            {
                Console.WriteLine("Power Blade Off");
            }
            else
            {
                Console.WriteLine("ERROR: Could not power Blade Off");
            }

            BladePowerStatePacket powerOn = powerPacket.SetBladePowerState(0x01);
            Console.WriteLine("Power Blade On");
            if(powerOn.CompletionCode == CompletionCode.Success)
            {
                Console.WriteLine("Waiting for Decompression Time: {0}", powerOn.DecompressionTime);
                Tracer.Write("Waiting for Decompression Time: {0}", powerOn.DecompressionTime);
                Thread.Sleep(TimeSpan.FromSeconds(powerOn.DecompressionTime));
            }

            // Get the Power Status of a given device
            response = WcsBladeFacade.GetPowerStatus(bladeId);
            ValidateResponse(response, "Get Power Status");

            // Get Sensor Reading
            response = WcsBladeFacade.GetSensorReading(bladeId, 0x01);
            ValidateResponse(response, "Get Sensor Reading");

            // Get Blade Information
            BladeStatusInfo bladeInfo = WcsBladeFacade.GetBladeInfo(bladeId);
            ValidateResponse(response, "Get Blade Info");

            // Get Fru Device info for Given Device Id
            FruDevice fru = WcsBladeFacade.GetFruDeviceInfo(bladeId);
            ValidateResponse(response, "Get Fru Device");

            // Queries BMC for the currently set boot device.
            response = WcsBladeFacade.GetNextBoot(bladeId);
            ValidateResponse(response, "Get Next Boot");

            // Set next boot device
            response = WcsBladeFacade.SetNextBoot(bladeId, BootType.ForceDefaultHdd, true, false);
            ValidateResponse(response, "Set Next Boot");

            // Physically identify the computer by using a light or sound.
            if (WcsBladeFacade.Identify(bladeId, 255))
            {
                ValidateResponse(new CustomResponse(success), "Set Identify: On");
            }
            else
            {
                ValidateResponse(new CustomResponse(failure), "Set Identify: On");
            }

            // Physically identify the computer by using a light or sound.
            if (WcsBladeFacade.Identify(bladeId, 0))
            {
                ValidateResponse(new CustomResponse(success), "Set Identify: Off");
            }
            else
            {
                ValidateResponse(new CustomResponse(failure), "Set Identify: Off");
            }

            // Set the Power Cycle interval.
            if (WcsBladeFacade.SetPowerCycleInterval(bladeId, 0x08))
            {
                ValidateResponse(new CustomResponse(success), "Set Power Cycle Interval: 8");
            }
            else
            {
                ValidateResponse(new CustomResponse(failure), "Set Power Cycle Interval: 8");
            }

            // Set the computer power state Off
            if (WcsBladeFacade.SetPowerState(bladeId, IpmiPowerState.Off) == 0x00)
            {
                ValidateResponse(new CustomResponse(success), "SetPowerState: Off");
            }
            else
            {
                ValidateResponse(new CustomResponse(failure), "SetPowerState: Off");
            }

            // Set the computer power state On
            if (WcsBladeFacade.SetPowerState(bladeId, IpmiPowerState.On) == 0x00)
            {
                ValidateResponse(new CustomResponse(success), "SetPowerState: On");
            }
            else
            {
                ValidateResponse(new CustomResponse(failure), "SetPowerState: On");
            }

            // Gets BMC firmware revision.  Returns HEX string.
            response = WcsBladeFacade.GetFirmware(bladeId);
            ValidateResponse(response, "Get Firmware");

            // Queries BMC for the GUID of the system.
            response = WcsBladeFacade.GetSystemGuid(bladeId);
            ValidateResponse(response, "Get System Guid");

            // Reset SEL Log
            WcsBladeFacade.ClearSel(bladeId);
            ValidateResponse(response, "Clear Sel");

            // Recursively retrieves System Event Log entries.
            response = WcsBladeFacade.GetSel(bladeId);
            ValidateResponse(response, "Get Sel");

            //  Get System Event Log Information. Returns SEL Info.
            response = WcsBladeFacade.GetSelInfo(bladeId);
            ValidateResponse(response, "Get Sel Info");

            // Get Device Id Command
            response = WcsBladeFacade.GetDeviceId(bladeId);
            ValidateResponse(response, "Get DeviceId");

            // Get/Set Power Policy
            response = WcsBladeFacade.SetPowerRestorePolicy(bladeId, PowerRestoreOption.StayOff);
            ValidateResponse(response, "Set Power Restore Policy: Off");

            response = WcsBladeFacade.SetPowerRestorePolicy(bladeId, PowerRestoreOption.AlwaysPowerUp);
            ValidateResponse(response, "Set Power Restore Policy: Always On");

            // Switches Serial Port Access from BMC to System for Console Redirection
            response = WcsBladeFacade.SetSerialMuxSwitch(bladeId);
            ValidateResponse(response, "Set Serial MuxSwitch");

            // Disable Safe Mode.
            CommunicationDevice.DisableSafeMode();

            // Switches Serial port sharing from System to Bmc
            response = WcsBladeFacade.ResetSerialMux(bladeId);
            ValidateResponse(response, "Reset Serial Mux");

            // Get the current advanced state of the host computer.
            response = WcsBladeFacade.GetChassisState(bladeId);
            ValidateResponse(response, "Get Chassis State");

            // Get Processor Information
            response = WcsBladeFacade.GetProcessorInfo(bladeId, 0x01);
            ValidateResponse(response, "Get Processor Info");

            // Get Memory Information
            response = WcsBladeFacade.GetMemoryInfo(bladeId, 0x01);
            ValidateResponse(response, "Get Memory Info");

            // Get PCIe Info
            response = WcsBladeFacade.GetPCIeInfo(bladeId, 0x01);
            ValidateResponse(response, "Get PCIe Info");

            // Get Nic Info
            response = WcsBladeFacade.GetNicInfo(bladeId, 0x01);
            ValidateResponse(response, "Get Nic Info");

            // Get Hardware Info
            HardwareStatus hwStatus = WcsBladeFacade.GetHardwareInfo(bladeId, true, true,
                        true, true, true, true, true, true, true);

            if (hwStatus.CompletionCode == 0x00)
            { ValidateResponse(new CustomResponse(success), "Hardware Status"); }
            else
            { ValidateResponse(new CustomResponse(failure), "Hardware Status"); }

            // DCMI Get Power Limit Command
            response = WcsBladeFacade.GetPowerLimit(bladeId);
            ValidateResponse(response, "Get Power Limit");

            // DCMI Set Power Limit Command
            response = WcsBladeFacade.SetPowerLimit(bladeId, 220, 6000, 0x00, 0x00);
            ValidateResponse(response, "Set Power Limit");

            // DCMI Get Power Reading Command
            List<PowerReading> pwReadings = WcsBladeFacade.GetPowerReading(bladeId);
            if(pwReadings.Count > 0)
            {
                ValidateResponse(pwReadings[0], "Get Power Reading");
            }
            else
            {
                ValidateResponse(new CustomResponse(failure), "Get Power Reading");
            }

            // Activate/Deactivate DCMI power limit
            if (WcsBladeFacade.ActivatePowerLimit(bladeId, true))
            {
                ValidateResponse(new CustomResponse(success), "Activate Power Limit");
            }
            else
            {
                ValidateResponse(new CustomResponse(failure), "Activate Power Limit");
            }

            if (WcsBladeFacade.ActivatePowerLimit(bladeId, false))
            {
                ValidateResponse(new CustomResponse(success), "Activate Power Limit");
            }
            else
            {
                ValidateResponse(new CustomResponse(failure), "Activate Power Limit");
            }

            StressSession();
        }
        internal static void Initialize()
        {
            for (int i = 0; i < ConfigLoaded.Population; i++)
            {
                _lock[i] = new object();
            }

            // Create Serial Console Port Metadata objects and initialize the sessiontoken and timestamp using the class constructor
            SerialConsolePortsMetadata = new SerialConsoleMetadata[(uint)ConfigLoaded.MaxSerialConsolePorts];
            for (int numPorts = 0; numPorts < (int)ConfigLoaded.MaxSerialConsolePorts; numPorts++)
            {
                SerialConsolePortsMetadata[numPorts] = new SerialConsoleMetadata(ChassisManagerUtil.GetSerialConsolePortIdFromIndex(numPorts), ConfigLoaded.InactiveSerialPortSessionToken, DateTime.Now);
            }

            // Create AC Power Socket objects 
            AcPowerSockets = new AcSocket[(uint)ConfigLoaded.NumPowerSwitches];
            for (int numSockets = 0; numSockets < (int)ConfigLoaded.NumPowerSwitches; numSockets++)
            {
                AcPowerSockets[numSockets] = new AcSocket((byte)(numSockets + 1));
            }

            // Create PSU objects
            for (int psuIndex = 0; psuIndex < (int)ConfigLoaded.NumPsus; psuIndex++)
            {
                // Initially create instance of the base class
                // Later.. based on the psu model number, we create the appropriate psu class object
                Psu[psuIndex] = new PsuBase((byte)(psuIndex + 1));
            }

            // Create fan objects
            for (int fanId = 0; fanId < (int)ConfigLoaded.NumPsus; fanId++)
            {
                Fans[fanId] = new Fan((byte)(fanId + 1));
            }

            // Initialize Hard Power On/Off Switches (Blade Enable)
            for (int bladeId = 0; bladeId < BladePower.Length; bladeId++)
            {
                BladePower[bladeId] = new BladePowerSwitch(Convert.ToByte(bladeId + 1));
            }

        }
        internal static void Initialize()
        {
            for (int i = 0; i < ConfigLoaded.Population; i++)
            {
                locker[i] = new object();
            }

            for (int i = 0; i < ConfigLoaded.NumPsus; i++)
            {
                psuLock[i] = new object();
            }

            // Create Serial Console Port Metadata objects and initialize the sessiontoken and timestamp using the class constructor
            SerialConsolePortsMetadata = new SerialConsoleMetadata[(uint)ConfigLoaded.MaxSerialConsolePorts];
            for (int numPorts = 0; numPorts < (int)ConfigLoaded.MaxSerialConsolePorts; numPorts++)
            {
                SerialConsolePortsMetadata[numPorts] = new SerialConsoleMetadata(ChassisManagerUtil.GetSerialConsolePortIdFromIndex(numPorts), ConfigLoaded.InactiveSerialPortSessionToken, DateTime.Now);
            }

            // Create AC Power Socket objects
            AcPowerSockets = new AcSocket[(uint)ConfigLoaded.NumPowerSwitches];
            for (int numSockets = 0; numSockets < (int)ConfigLoaded.NumPowerSwitches; numSockets++)
            {
                AcPowerSockets[numSockets] = new AcSocket((byte)(numSockets + 1));
            }

            PsuInitialize();
            WatchDogTimerInitialize();

            // Create fan objects
            for (int fanId = 0; fanId < (int)ConfigLoaded.NumFans; fanId++)
            {
                Fans[fanId] = new Fan((byte)(fanId + 1));
            }

            // Initialize Hard Power On/Off Switches (Blade Enable)
            for (int bladeId = 0; bladeId < BladePower.Length; bladeId++)
            {
                BladePower[bladeId] = new BladePowerSwitch(Convert.ToByte(bladeId + 1));
                // Get Actual Power State
                BladePower[bladeId].GetBladePowerState();
            }
        }