Example #1
0
ace_session_redirect_form_refresh(_CONSOLE_URL_ . (isset($_SESSION['current_lab_id']) ? '?lab_id=' . $_SESSION['current_lab_id'] : ''));
$nonce = rand();
if (isset($_POST['lab_id']) && $_POST['lab_id'] != 'null') {
    $lab_id = $_POST['lab_id'];
    $_SESSION['current_lab_id'] = $lab_id;
} else {
    $lab_id = NULL;
    $_SESSION['current_lab_id'] = NULL;
    ace_out_redirect_page(_LAB_URL_);
}
# BEGIN COMMAND PROCESSING
switch ($_POST['action']) {
    case 'vm_power_on':
        if (isset($_POST['vm_id'])) {
            $vm_display_name = ace_vm_get_display_name_by_id($_POST['vm_id']);
            $success = ace_vm_activate($_POST['vm_id']);
            $message = create_message($success, "starting {$vm_display_name}");
        } else {
            $message = create_message(FALSE, "starting vm, no vm_id specified");
        }
        break;
    case 'vm_power_off':
        if (isset($_POST['vm_id'])) {
            $vm_display_name = ace_vm_get_display_name_by_id($_POST['vm_id']);
            $success = ace_vm_deactivate($_POST['vm_id']);
            $message = create_message($success, "stopping {$vm_display_name}");
        } else {
            $message = create_message(FALSE, "stopping vm, no vm_id specified");
        }
        break;
    case 'vm_shutdown':
Example #2
0
/**
 * activates a lab (deploys to a host)
 *
 * @api
 *
 * @param   int $lab_id lab id
 *
 * @return  bool                    on success TRUE/FALSE
 */
function ace_lab_activate($lab_id)
{
    # only if user has no active labs (i.e. must deactivate other labs first)
    $user_id = ace_lab_get_user_id($lab_id);
    $user_lab_table = ace_user_get_lab_table($user_id);
    $another_user_lab_is_active = FALSE;
    foreach ($user_lab_table as $lab) {
        if ($lab['state'] == 1) {
            $another_user_lab_is_active = TRUE;
        }
    }
    if (!$another_user_lab_is_active) {
        # determine best host, and update lab record
        $host_id = ace_db_get_best_host();
        if (is_numeric($host_id)) {
            # set lab as activated in db
            $db_success = ace_db_lab_set_state($lab_id, TRUE);
            # this lab was inactive, and was successfully activated
            $activated = $db_success;
            # update lab record with host_id
            ace_db_lab_set_host_id($lab_id, $host_id);
            # construct lab on host
            $net_table = ace_db_lab_get_network_table($lab_id);
            foreach ($net_table as $net) {
                # create (define) each network
                ace_virt_network_create($net['id']);
                # start each network if marked active in db
                if ($net['state'] == 1) {
                    ace_virt_network_activate($net['id']);
                }
            }
            $vol_table = ace_db_lab_get_volume_table($lab_id);
            foreach ($vol_table as $vol) {
                # create each volume
                ace_virt_volume_create($vol['id']);
            }
            $vm_table = ace_db_lab_get_vm_table($lab_id);
            foreach ($vm_table as $vm) {
                # create (define) each vm
                ace_virt_vm_create($vm['id']);
                $vm_cdrom_table = ace_db_vm_get_cdrom_table($vm['id']);
                foreach ($vm_cdrom_table as $vm_cdrom) {
                    ace_virt_vm_attach_cdrom($vm['id'], $vm_cdrom['instance']);
                    if ($vm_cdrom['volume_id'] != NULL) {
                        ace_virt_vm_cdrom_insert_media($vm['id'], $vm_cdrom['instance'], $vm_cdrom['volume_id']);
                    }
                }
                $vm_disk_table = ace_db_vm_get_disk_table($vm['id']);
                foreach ($vm_disk_table as $vm_disk) {
                    ace_virt_vm_attach_disk($vm['id'], $vm_disk['instance'], $vm_disk['volume_id']);
                }
                $vm_nic_table = ace_db_vm_get_nic_table($vm['id']);
                foreach ($vm_nic_table as $vm_nic) {
                    $vm_nic_mac_address = ace_gen_convert_int2mac($vm_nic['mac_index']);
                    ace_virt_vm_attach_nic($vm['id'], $vm_nic['instance'], $vm_nic_mac_address);
                    ace_virt_vm_nic_connect_network($vm['id'], $vm_nic['instance'], $vm_nic['network_id']);
                }
                # set each vm state
                if ($vm['state'] == 1) {
                    ace_vm_activate($vm['id']);
                }
            }
        } else {
            $activated = FALSE;
        }
    } else {
        $activated = FALSE;
    }
    return $activated;
}
Example #3
0
     <?php 
 $lab_state = ace_lab_is_active($lab_id);
 $lab_vm_table = ace_lab_get_vm_table($lab_id);
 foreach ($lab_vm_table as $vm) {
     if ($vm['user_visible'] == 1) {
         $vm_id = $vm['id'];
         $vm_active = $vm['state'] == 1 ? TRUE : FALSE;
         if ($lab_state) {
             $virt_vm_active = ace_vm_get_virt_state($vm_id);
             if (!$virt_vm_active && $vm_active) {
                 $db_success = ace_vm_deactivate($vm_id);
                 $vm['state'] = 0;
                 $vm_active = FALSE;
             }
             if ($virt_vm_active && !$vm_active) {
                 $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;