/** * start a vm * * @api * * @param int $vm_id vm id * * @return bool on success TRUE/FALSE */ function ace_vm_activate($vm_id) { $lab_id = ace_db_vm_get_lab_id($vm_id); $lab_active = ace_db_lab_get_state($lab_id); if ($lab_active) { $network_ids_to_toggle = array(); $vm_nics = ace_vm_get_nic_table($vm_id); if (is_array($vm_nics)) { foreach ($vm_nics as $vm_nic) { if (!ace_network_is_active($vm_nic['network_id'])) { $network_ids_to_toggle[] = $vm_nic['network_id']; } } } if (is_array($network_ids_to_toggle)) { # start all associated inactive networks foreach ($network_ids_to_toggle as $network_id) { ace_network_activate($network_id); } } # start the vm if (ace_virt_vm_activate($vm_id)) { $db_success = ace_db_vm_activate($vm_id); $return = $db_success; } else { $return = FALSE; } if (is_array($network_ids_to_toggle)) { # stop all associated inactive networks foreach ($network_ids_to_toggle as $network_id) { ace_network_deactivate($network_id); } } } else { $db_success = ace_db_vm_activate($vm_id); $return = $db_success; } return $return; }
$db_success = ace_vm_activate($vm_id); $vm['state'] = 1; $vm_active = TRUE; } } $vm_change_state_disabled = $lab_state ? '' : 'disabled'; $vm_shutdown_button_disabled = $vm_active ? '' : 'disabled'; $vm_console_disabled = $lab_state ? '' : 'disabled'; $num_vm_cdroms = ($vm_cdroms = ace_vm_get_cdrom_table($vm_id)) ? count($vm_cdroms) : 0; $vm_cdrom_attach_disabled = $vm_active ? 'disabled' : ''; $vm_cdrom_detach_disabled = $num_vm_cdroms == 0 || $vm_active ? 'disabled' : ''; $vm_cdrom_eject_disabled = $num_vm_cdroms == 0 ? 'disabled' : ''; $num_vm_disks = ($vm_disks = ace_vm_get_disk_table($vm_id)) ? count($vm_disks) : 0; $vm_disk_attach_disabled = $vm_active ? 'disabled' : ''; $vm_disk_detach_disabled = $num_vm_disks == 0 || $vm_active ? 'disabled' : ''; $num_vm_nics = ($vm_nics = ace_vm_get_nic_table($vm_id)) ? count($vm_nics) : 0; $vm_nic_attach_disabled = $vm_active ? 'disabled' : ''; $vm_nic_detach_disabled = $num_vm_nics == 0 || $vm_active ? 'disabled' : ''; $vm_nic_disconnect_disabled = $num_vm_nics == 0 ? 'disabled' : ''; $vm_state = $vm['state'] == 1 ? TRUE : FALSE; $vm_snapshots = ace_vm_get_snapshot_list($vm_id); $num_vm_snapshots = $vm_snapshots ? count($vm_snapshots) : 0; $vm_snapshot_button_disabled = !$lab_state || $virt_vm_active ? 'disabled' : ''; $vm_snapshot_revert_button_disabled = $num_vm_snapshots == 0 || $virt_vm_active || !$lab_state ? 'disabled' : ''; $vm_snapshot_delete_button_disabled = $num_vm_snapshots == 0 || $virt_vm_active || !$lab_state ? 'disabled' : ''; $html_vm_cdrom_radios = NULL; foreach ($vm_cdroms as $vm_cdrom) { $html_vm_cdrom_radios .= '<input name="vm_cdrom_instance" value="' . $vm_cdrom['instance'] . '" type="radio" />'; $html_vm_cdrom_radios .= 'cd' . $vm_cdrom['instance']; $volume_display_name = ace_volume_get_display_name_by_id($vm_cdrom['volume_id']); $html_vm_cdrom_radios .= ' : ' . $volume_display_name . '<br/>';