/// <summary> /// Get Devices from CSV /// </summary> private static void GetDevices() { // Load In CSV File CsvReader csv = new CsvReader(new StreamReader(m_deviceFileName), true); while (csv.ReadNextRecord()) { // Show Info log.Info("Discovering " + csv[CSV_ADDRESS] + "..."); // Connect to F5 Device via iControl m_interfaces.initialize(csv[CSV_ADDRESS], csv[CSV_F5USER], csv[CSV_F5PASSWORD]); if (m_interfaces.initialized) { // Set active partition to "Common" m_interfaces.ManagementPartition.set_active_partition("Common"); // Create New Device f5Device dev = new f5Device(SCOM_Functions.m_managementGroup, csv[CSV_ADDRESS], csv[CSV_COMMUNITY], Convert.ToInt32(csv[CSV_PORT]), csv[CSV_F5USER], csv[CSV_F5PASSWORD]); if (m_discoveryType == "snapshot") { AddDeviceToSnapshotDiscoveryData(dev); } { AddDeviceToIncrementalDiscoveryData(dev); } } else { log.Error("Couldn't connect iControl to " + csv[CSV_ADDRESS].ToString()); } } // Clear CSV File csv.Dispose(); }
/// <summary> /// Get Basic Device Info /// </summary> private static void GetDevices() { // Get All Devices from SCOM ManagementPackClass mpc_Devices = SCOM.GetManagementPackClass("AP.F5.Device"); IObjectReader <EnterpriseManagementObject> DeviceReader; //List<Guid> DevicesGuidList; DeviceReader = SCOM.m_managementGroup.EntityObjects.GetObjectReader <EnterpriseManagementObject>(mpc_Devices, ObjectQueryOptions.Default); // Load In CSV File CsvReader csv = new CsvReader(new StreamReader(m_deviceFileName), true); while (csv.ReadNextRecord()) { f5Device newDevice = new f5Device(csv[CSV_ADDRESS], csv[CSV_COMMUNITY], Convert.ToInt32(csv[CSV_PORT]), csv[CSV_F5USER], csv[CSV_F5PASSWORD]); // Loop Through SCOM Objects foreach (EnterpriseManagementObject scom_dev in DeviceReader) { if (scom_dev.DisplayName.ToLower() == newDevice.SystemNodeName.ToLower()) { newDevice.SCOM_DeviceObject = scom_dev; break; } } // Check and Make Sure there's a corresponding SCOM Object if (newDevice.SCOM_DeviceObject != null) { // Add Device to DeviceList DeviceList.Add(newDevice); } else { log.Warn("Could not Find " + newDevice.SystemNodeName + " in SCOM, skipping this device!"); } } // Dispose of CSV File csv.Dispose(); }
/// <summary> /// Add Device To Incremental Discovery Data /// </summary> /// <param name="dev"></param> private static void AddDeviceToIncrementalDiscoveryData(f5Device dev) { // Add Device to Discovery Data incrementalDiscoveryData.Add(dev.SCOM_Object_Device); // Add Failover State and Relationship to Discovery Data incrementalDiscoveryData.Add(dev.SCOM_Object_FailoverState); // Add Memory and Relationship to Discovery Data incrementalDiscoveryData.Add(dev.SCOM_Object_Memory); // Add Fans and Relationships to Discovery Data if (dev.Fans.Count > 0) { // Add FansGroup and Relationship incrementalDiscoveryData.Add(dev.SCOM_Object_FanGroup); foreach (Fan f in dev.Fans) { // Add Fan and Relationship incrementalDiscoveryData.Add(f.SCOM_Object_Fan); } } // Add PowerSupplies and Relationships to Discovery Data if (dev.PowerSupplies.Count > 0) { // Add PowerSuppliesGroup and Relationship incrementalDiscoveryData.Add(dev.SCOM_Object_PowerSupplyGroup); foreach (PowerSupply p in dev.PowerSupplies) { // Add PowerSupply and Relationship incrementalDiscoveryData.Add(p.SCOM_Object_PowerSupply); } } // Add Processors if (dev.Processors.Count > 0) { // Add ProcessorsGroup and Relationship incrementalDiscoveryData.Add(dev.SCOM_Object_ProcessorGroup); foreach (Processor p in dev.Processors) { // Add Processor and Relationship incrementalDiscoveryData.Add(p.SCOM_Object_Processor); } } // Add Temperature Sensors if (dev.TempSensors.Count > 0) { // Add Temp Sensors Group and Relationship incrementalDiscoveryData.Add(dev.SCOM_Object_TempSensorsGroup); // Add Temperature Sensors foreach (TempSensor t in dev.TempSensors) { incrementalDiscoveryData.Add(t.SCOM_Object_TempSensor); } } // Add Disk Partitions and Relationships to Discovery Data if (dev.DiskPartitions.Count > 0) { // Add Disk partitions Group to Discovery Data incrementalDiscoveryData.Add(dev.SCOM_Object_DiskPartitionGroup); // Add Disk Partitions foreach (DiskPartition disk in dev.DiskPartitions) { incrementalDiscoveryData.Add(disk.SCOM_Object_DiskPartition); } } }