示例#1
0
/**
 * fetch next available (within quota) network instance number for a given lab id
 *
 * @param   int $lab_id lab id
 *
 * @return  int|bool                network instance number | FALSE on error
 */
function ace_db_lab_get_available_network_instance($lab_id)
{
    $quota_array = ace_db_lab_get_quota_array($lab_id);
    $network_quota = $quota_array['networks'];
    $instance_list = array();
    $lab_network_table = ace_db_lab_get_network_table($lab_id);
    if (is_array($lab_network_table)) {
        for ($row = 0; $row < count($lab_network_table); $row++) {
            $instance_list[$row] = $lab_network_table[$row]['instance'];
        }
        $valid_instances = range(0, $network_quota);
        $available_instances = array_diff($valid_instances, $instance_list);
        if (count($available_instances) > 0) {
            $available_instance = reset($available_instances);
            $return = $available_instance;
        } else {
            $return = FALSE;
        }
    } else {
        $return = 0;
    }
    return $return;
}
示例#2
0
/**
 * 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);
}