2011-03-26 17:16:09 +00:00
< ? php
2011-04-06 15:25:35 +00:00
# FIXME should do the deletion etc in a common file perhaps? like for the sensors
2011-03-26 17:16:09 +00:00
/*
* Try to discover any Virtual Machines .
*/
2012-04-07 22:27:39 +00:00
if (( $device [ 'os' ] == " vmware " ) || ( $device [ 'os' ] == " linux " ))
2011-03-26 19:12:24 +00:00
{
/*
* Variable to hold the discovered Virtual Machines .
*/
$vmw_vmlist = array ();
/*
* CONSOLE : Start the VMware discovery process .
*/
echo ( " VMware VM: " );
/*
* Fetch the list is Virtual Machines .
*
* VMWARE - VMINFO - MIB :: vmwVmVMID . 224 = INTEGER : 224
* VMWARE - VMINFO - MIB :: vmwVmVMID . 416 = INTEGER : 416
* ...
*/
$oids = snmp_walk ( $device , " VMWARE-VMINFO-MIB::vmwVmVMID " , " -Osqnv " , " +VMWARE-ROOT-MIB:VMWARE-VMINFO-MIB " , " + " . $config [ " install_dir " ] . " /mibs/vmware " );
$oids = explode ( " \n " , $oids );
foreach ( $oids as $oid )
{
2011-03-26 17:16:09 +00:00
/*
2011-03-26 19:12:24 +00:00
* Fetch the Virtual Machine information .
*
* VMWARE - VMINFO - MIB :: vmwVmDisplayName . 224 = STRING : My First VM
* VMWARE - VMINFO - MIB :: vmwVmDisplayName . 416 = STRING : My Second VM
* VMWARE - VMINFO - MIB :: vmwVmGuestOS . 224 = STRING : windows7Server64Guest
* VMWARE - VMINFO - MIB :: vmwVmGuestOS . 416 = STRING : winLonghornGuest
* VMWARE - VMINFO - MIB :: vmwVmMemSize . 224 = INTEGER : 8192 megabytes
* VMWARE - VMINFO - MIB :: vmwVmMemSize . 416 = INTEGER : 8192 megabytes
* VMWARE - VMINFO - MIB :: vmwVmState . 224 = STRING : poweredOn
* VMWARE - VMINFO - MIB :: vmwVmState . 416 = STRING : poweredOn
* VMWARE - VMINFO - MIB :: vmwVmVMID . 224 = INTEGER : 224
* VMWARE - VMINFO - MIB :: vmwVmVMID . 416 = INTEGER : 416
* VMWARE - VMINFO - MIB :: vmwVmCpus . 224 = INTEGER : 2
* VMWARE - VMINFO - MIB :: vmwVmCpus . 416 = INTEGER : 2
2011-03-26 17:16:09 +00:00
*/
2011-03-26 19:12:24 +00:00
$vmwVmDisplayName = snmp_get ( $device , " VMWARE-VMINFO-MIB::vmwVmDisplayName. " . $oid , " -Osqnv " , " +VMWARE-ROOT-MIB:VMWARE-VMINFO-MIB " , " + " . $config [ " install_dir " ] . " /mibs/vmware " );
$vmwVmGuestOS = snmp_get ( $device , " VMWARE-VMINFO-MIB::vmwVmGuestOS. " . $oid , " -Osqnv " , " +VMWARE-ROOT-MIB:VMWARE-VMINFO-MIB " , " + " . $config [ " install_dir " ] . " /mibs/vmware " );
$vmwVmMemSize = snmp_get ( $device , " VMWARE-VMINFO-MIB::vmwVmMemSize. " . $oid , " -Osqnv " , " +VMWARE-ROOT-MIB:VMWARE-VMINFO-MIB " , " + " . $config [ " install_dir " ] . " /mibs/vmware " );
$vmwVmState = snmp_get ( $device , " VMWARE-VMINFO-MIB::vmwVmState. " . $oid , " -Osqnv " , " +VMWARE-ROOT-MIB:VMWARE-VMINFO-MIB " , " + " . $config [ " install_dir " ] . " /mibs/vmware " );
$vmwVmCpus = snmp_get ( $device , " VMWARE-VMINFO-MIB::vmwVmCpus. " . $oid , " -Osqnv " , " +VMWARE-ROOT-MIB:VMWARE-VMINFO-MIB " , " + " . $config [ " install_dir " ] . " /mibs/vmware " );
2011-03-26 17:16:09 +00:00
/*
2011-03-26 19:12:24 +00:00
* VMware does not return an INTEGER but a STRING of the vmwVmMemSize . This bug
2011-04-06 15:25:35 +00:00
* might be resolved by VMware in the future making this code obsolete .
2011-03-26 17:16:09 +00:00
*/
2011-03-26 19:12:24 +00:00
if ( preg_match ( " /^([0-9]+) .* $ / " , $vmwVmMemSize , $matches ))
{
$vmwVmMemSize = $matches [ 1 ];
}
2011-03-26 17:16:09 +00:00
/*
2011-03-26 19:12:24 +00:00
* Check whether the Virtual Machine is already known for this host .
2011-03-26 17:16:09 +00:00
*/
2011-03-26 19:12:24 +00:00
2011-04-06 15:25:35 +00:00
if ( mysql_result ( mysql_query ( " SELECT COUNT(id) FROM vminfo WHERE device_id = ' " . $device [ " device_id " ] . " ' AND vmwVmVMID = ' " . $oid . " ' AND vm_type='vmware' " ), 0 ) == 0 )
2011-03-26 19:12:24 +00:00
{
2011-04-06 15:25:35 +00:00
mysql_query ( " INSERT INTO vminfo (device_id, vm_type, vmwVmVMID, vmwVmDisplayName, vmwVmGuestOS, vmwVmMemSize, vmwVmCpus, vmwVmState) VALUES ( " . $device [ " device_id " ] . " ,'vmware', " . $oid . " , ' " . mres ( $vmwVmDisplayName ) . " ', ' " . mres ( $vmwVmGuestOS ) . " ', " . $vmwVmMemSize . " , " . $vmwVmCpus . " , ' " . mres ( $vmwVmState ) . " ') " );
2011-03-26 19:12:24 +00:00
echo ( " + " );
2011-04-06 15:25:35 +00:00
# FIXME eventlog
2011-03-26 19:12:24 +00:00
} else {
2011-03-31 10:51:02 +00:00
echo ( " . " );
2011-03-26 17:16:09 +00:00
}
2011-04-06 15:25:35 +00:00
# FIXME update code!
2011-03-26 19:12:24 +00:00
2011-03-26 17:16:09 +00:00
/*
2011-03-26 19:12:24 +00:00
* Save the discovered Virtual Machine .
2011-03-26 17:16:09 +00:00
*/
2011-03-26 19:12:24 +00:00
$vmw_vmlist [] = $oid ;
}
/*
* Get a list of all the known Virtual Machines for this host .
*/
2011-04-06 15:25:35 +00:00
$db_vm_list = mysql_query ( " SELECT id, vmwVmVMID FROM vminfo WHERE device_id = ' " . $device [ " device_id " ] . " ' AND vm_type='vmware' " );
2011-03-26 19:12:24 +00:00
2011-04-06 13:54:50 +00:00
while ( $db_vm = mysql_fetch_assoc ( $db_vm_list ))
2011-03-26 19:12:24 +00:00
{
2011-03-26 17:16:09 +00:00
/*
2011-03-26 19:12:24 +00:00
* Delete the Virtual Machines that are removed from the host .
2011-03-26 17:16:09 +00:00
*/
2011-03-26 19:12:24 +00:00
2011-04-06 15:25:35 +00:00
if ( ! in_array ( $db_vm [ " vmwVmVMID " ], $vmw_vmlist ))
{
mysql_query ( " DELETE FROM vminfo WHERE id = ' " . $db_vm [ " id " ] . " ' " );
2011-03-26 19:12:24 +00:00
echo ( " - " );
2011-04-06 15:25:35 +00:00
# FIXME eventlog
2011-03-26 19:12:24 +00:00
}
}
/*
* Finished discovering VMware information .
*/
echo ( " \n " );
2011-03-26 17:16:09 +00:00
}
2011-03-26 19:12:24 +00:00
2011-03-26 17:16:09 +00:00
?>