} break; case 'lab_delete': $lab_id = $_POST['lab_id']; $lab_user_id = ace_lab_get_user_id($lab_id); $lab_owner_name = ace_user_get_name_by_id($lab_user_id); $lab_display_name = ace_lab_get_display_name_by_id($lab_id); $success = ace_lab_delete($lab_id); $messages[] = create_message($success, 'deleting lab (' . $lab_owner_name . ' - ' . $lab_display_name . ')'); break; case 'labs_purge_aged': $aged_active_lab_table = ace_get_aged_active_labs(); if (is_array($aged_active_lab_table)) { $aged_active_lab_count = count($aged_active_lab_table); foreach ($aged_active_lab_table as $lab) { $success = ace_lab_deactivate($lab['id']); $messages[] = create_message($success, 'deactivating aged lab'); } $messages[] = create_message(TRUE, $aged_active_lab_count . ' lab(s) deactivated'); } else { $messages[] = create_message(FALSE, 'No aged labs were found'); } break; } switch ($_POST['display']) { case 'hosts': $host_table = ace_get_hosts(); $html = ' <div class="element_table"> <div class="element_column"> <div class="element">
/** * deletes a lab * * @api * * @param int $lab_id lab id * * @return bool on success TRUE/FALSE */ function ace_lab_delete($lab_id) { if (ace_lab_is_active($lab_id)) { ace_lab_deactivate($lab_id); } $lab_group_ids = ace_lab_get_group_ids($lab_id); if (is_array($lab_group_ids)) { foreach ($lab_group_ids as $group_id) { ace_group_remove_lab($group_id, $lab_id); } } $vm_table = ace_db_lab_get_vm_table($lab_id); foreach ($vm_table as $vm) { $cdrom_table = ace_db_vm_get_cdrom_table($vm['id']); foreach ($cdrom_table as $cdrom) { ace_db_vm_detach_cdrom($cdrom['vm_id'], $cdrom['instance']); } $disk_table = ace_db_vm_get_disk_table($vm['id']); foreach ($disk_table as $disk) { ace_db_vm_detach_disk($disk['vm_id'], $disk['instance']); } $nic_table = ace_db_vm_get_nic_table($vm['id']); foreach ($nic_table as $nic) { ace_db_vm_detach_nic($nic['vm_id'], $nic['instance']); } ace_db_vm_delete($vm['id']); } $volume_table = ace_db_lab_get_volume_table($lab_id); foreach ($volume_table as $volume) { ace_db_volume_delete($volume['id']); } $network_table = ace_db_lab_get_network_table($lab_id); foreach ($network_table as $network) { ace_db_network_delete($network['id']); } return ace_db_lab_delete($lab_id); }
break; case 'lab_activate': // activate an existing lab if (isset($lab_id)) { $lab_display_name = ace_lab_get_display_name_by_id($lab_id); $success = ace_lab_activate($lab_id); $message = create_message($success, "activating {$lab_display_name}"); } else { $message = create_message(FALSE, "activating lab, no lab_id_specified"); } break; case 'lab_deactivate': // deactivate an existing lab if (isset($lab_id)) { $lab_display_name = ace_lab_get_display_name_by_id($lab_id); $success = ace_lab_deactivate($lab_id); $message = create_message($success, "deactivating {$lab_display_name}"); } else { $message = create_message(FALSE, "deactivating lab, no lab_id specified"); } break; case 'lab_create_volume': if (isset($lab_id, $_POST['size'], $_POST['unit'])) { $quota_array = ace_lab_get_quota_array($lab_id); $total_lab_volumes_reservations_quota = $quota_array['storage']; $total_lab_volumes_reservations_GiB = ace_lab_get_volumes_reservation_size($lab_id); $available_storage_reservation_GiB = $total_lab_volumes_reservations_quota - $total_lab_volumes_reservations_GiB; $requested_reservation_GiB = $_POST['unit'] == 'M' ? round($_POST['size'] / 1024, 2) : $_POST['size']; if ($requested_reservation_GiB <= $available_storage_reservation_GiB) { $volume_id = ace_volume_create($lab_id, $_POST['size'], $_POST['unit'], NULL); $success = $volume_id !== FALSE ? TRUE : FALSE;