/** * fetch next available (within quota) vm instance number for a given lab id * * @param int $lab_id lab id * * @return int|bool vm instance number | FALSE on error */ function ace_db_lab_get_available_vm_instance($lab_id) { $quota_array = ace_db_lab_get_quota_array($lab_id); $vm_quota = $quota_array['vms']; $instance_list = array(); $table = ace_db_lab_get_vm_table($lab_id); if (is_array($table)) { for ($row = 0; $row < count($table); $row++) { $instance_list[$row] = $table[$row]['instance']; } $valid_instances = range(0, $vm_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; }
/** * returns quota array for a lab * * @api * * @param int $lab_id lab id * * @return array|bool array of quotas | FALSE on error */ function ace_lab_get_quota_array($lab_id) { return ace_db_lab_get_quota_array($lab_id); }