$value)
{
switch ($var)
{
case "group":
case "group_id":
$values = get_group_entities($value);
$sql .= generate_query_values_and($values, 'vm_id');
break;
case 'device_group_id':
case 'device_group':
$values = get_group_entities($value, 'device');
$sql .= generate_query_values_and($values, 'device_id');
break;
case "device":
case "device_id":
$sql .= generate_query_values_and($value, 'device_id');
break;
case "os":
$sql .= generate_query_values_and($value, 'vm_guestos');
break;
case "state":
$sql .= generate_query_values_and($value, 'vm_state');
break;
case "memory":
$sql .= generate_query_values_and($value, 'vm_memory');
break;
case "cpu":
$sql .= generate_query_values_and($value, 'vm_cpucount');
break;
}
}
$sql .= $GLOBALS['cache']['where']['devices_permitted'];
return $sql;
}
function print_vm_table_header($vars)
{
$stripe_class = "table-striped";
echo('
' . PHP_EOL);
$cols = array(
// array(NULL, 'class="state-marker"'), // FIXME useful when we start polling VM status
'device' => array('Device', 'style="width: 250px;"'),
'name' => array('Name'),
'state' => array('State'),
'os' => array('Operating System'),
'memory' => array('Memory'),
'cpu' => array('CPU'),
);
if ($vars['page'] == "device" || $vars['popup'] == TRUE )
{
unset($cols['device']);
}
echo(get_table_header($cols, $vars));
echo('' . PHP_EOL);
}
function print_vm_table($vars)
{
$sql = generate_vm_query($vars);
$vms = array();
foreach(dbFetchRows($sql) as $vm)
{
if (isset($GLOBALS['cache']['devices']['id'][$vm['device_id']]))
{
$vm['hostname'] = $GLOBALS['cache']['devices']['id'][$vm['device_id']]['hostname'];
$vms[] = $vm;
}
}
// Sorting
// FIXME. Sorting can be as function, but in must before print_table_header and after get table from db
switch ($vars['sort_order'])
{
case 'desc':
$sort_order = SORT_DESC;
$sort_neg = SORT_ASC;
break;
case 'reset':
unset($vars['sort'], $vars['sort_order']);
// no break here
default:
$sort_order = SORT_ASC;
$sort_neg = SORT_DESC;
}
switch ($vars['sort'])
{
case 'name':
$vms = array_sort_by($vms, 'vm_name', $sort_order, SORT_STRING);
break;
case 'os':
$vms = array_sort_by($vms, 'vm_os', $sort_order, SORT_STRING);
break;
case 'state':
$vms = array_sort_by($vms, 'vm_state', $sort_order, SORT_STRING);
break;
case 'memory':
$vms = array_sort_by($vms, 'vm_memory', $sort_order, SORT_NUMERIC);
break;
case 'cpu':
$vms = array_sort_by($vms, 'vm_cpucount', $sort_order, SORT_NUMERIC);
break;
default:
// Not sorted
}
$vms_count = count($vms);
// Pagination
$pagination_html = pagination($vars, $vms_count);
echo $pagination_html;
if ($vars['pageno'])
{
$vms = array_chunk($vms, $vars['pagesize']);
$vms = $vms[$vars['pageno'] - 1];
}
// End Pagination
echo generate_box_open();
print_vm_table_header($vars);
foreach($vms as $vm)
{
print_vm_row($vm, $vars);
}
echo '
';
echo generate_box_close();
echo $pagination_html;
}
function print_vm_row($vm, $vars)
{
echo generate_vm_row($vm, $vars);
}
function generate_vm_row($vm, $vars)
{
global $config;
$table_cols = "8";
$out = ''; // | '; // FIXME useful when we start polling VM state
if ($vars['page'] != "device" && $vars['popup'] != TRUE )
{
$out .= '' . generate_device_link($vm) . ' | ';
$table_cols++;
}
$out .= ''. generate_entity_link('virtualmachine', $vm) .' | ';
$out .= ''. nicecase($vm['vm_state']) .' | ';
switch ($vm['vm_guestos'])
{
case 'E: tools not installed':
$out .= ' Unknown (VMware Tools not installed) | ';
break;
case 'E: tools not running':
$out .= ' Unknown (VMware Tools not running) | ';
break;
case '':
$out .= ' (Unknown) | ';
break;
default:
if (isset($config['vmware_guestid'][$vm['vm_guestos']]))
{
$out .= ' ' . $config['vmware_guestid'][$vm['vm_guestos']] . ' | ';
} else {
$out .= ' ' . $vm['vm_guestos'] . ' | ';
}
break;
}
$out .= ''. format_bi($vm['vm_memory'] * 1024 * 1024, 3, 3) .'B | ';
$out .= ''. $vm['vm_cpucount'] .' | ';
$out .= '
';
return $out;
}
// EOF