How Discovery captures Model ID and Manufacturer for servers and devicesDescriptionThis article describes how Discovery probes and patterns update the model_id and manufacturer for network devices, Linux and Windows servers. The model_id and manufacturer are reference fields. In general, a probe will gather both the model_id and manufacturer from a device and pass the string values to the MakeAndModelJS.fromNames() function along with a model_type. The model_type determines the table that is used to get the model_id. The table cmdb_model is used if model_type is empty. Some of the tables that are used to find the model_id: Hardware cmdb_hardware_product_model Consumable cmdb_consumable_product_model Software cmdb_software_product_model Application cmdb_application_product_model NOTE: In some cases, the CI may seem to have an empty model and manufacturer when in fact the field is populated. These fields are reference fields and should be populated with sys_ids, not with the values directly. To resolve this issue, the sensor/pattern will need to call MakeAndModelJS to get the reference value instead. This can be confirmed by viewing the xml for the record. Network Devices (SNMP Discovery) For network devices, the model_id and manufacturer are collected on the classification phase of discovery by the SNMP - Classify probe. The following important OIDs determine which model and manufacturer are used: mgmt.mib-2.entityMIB.entityMIBObjects.entityPhysical.entPhysicalTable entPhysicalModelNamemgmt.mib-2.entityMIB.entityMIBObjects.entityPhysical.entPhysicalTable entPhysicalMfgNamemgmt.mib-2.system.sysObjectID The model and manufacturer from Discovery Definition > Classification > SNMP System OIDs is used when sysObjectID is returned. The values returned by entPhysicalModelName and entPhysicalMfgNam are used if the sysObjectID value is not returned, or if there is no matching record for the sysObjectID under SNMP System OIDs. Note – The model_id and manufacturer may alternate if the values for entPhysicalModelName and entPhysicalMfgName do not match the SNMP System OID values respectively and the sysObjectID is not returned consistently. Therefore, if possible, the values in the SNMP System OIDs should be updated to match what is returned by the device. Having two options to get model_id and manufacturer provides redundancy. UNIX/Linux Different distributions of UNIX/Linux use their own probe/sensors to collect the model_id and manufacturer. The out-of-box probes/sensors that collect the model and manufacturer are: Probe Command / Script Linux - Hardware Information dmidecode; echo dummy > /dev/null HP-UX - Hardware Model model AIX - Hardware Model lsattr -El sys0 -a modelname -F value Solaris - Hardware Model suntype.sh Windows The Windows device's model_id and manufacturer information are collected by the Windows - OS Information probe. The WMI fields used for model and manufacturer are: Win32_ComputerSystem.ManufacturerWin32_ComputerSystem.Model Windows OS Servers pattern retrieval steps: Step 1: Get Data Set By Windows - Classify Step 1.35: Get data from Win32_ComputerSystem --> This is where the WMI Query is performed: "SELECT Name,Domain,Manufacturer,Model,UserName FROM Win32_ComputerSystem" --> To test it you may login to your the host server, and try to execute in PowerShell the following command: Get-WmiObject -query "SELECT Name,Domain,Manufacturer,Model,UserName FROM Win32_ComputerSystem" This will return the results containing the "model_id". Once the data is retrieved from above step, it will be part of Step 9 - Insert System, OS and CPU data to [cmdb_ci_win_server] table where model_id = $computerInfo{1].Model Therefore, what is retrieved from the host server, is the one that is being set to the CMDB. The following example shows the result of running a PowerShell command to collect the model and manufacturer: Other There are many other device classes that can be discovered, and custom ones can be created. They will each need to query the target device/application for such fields and use the MakeAndModelJS script to get the proper reference values to update the record. Patterns Patterns call the MakeAndModelJS via the "Pattern Designer > Pre Post Processing" script, in special the "OSs - Pre Sensor" script. The column "Pattern/s" determines what patterns will use this pre post script to alter the payload.