get_domains() ?: []; if (file_exists($txt)) { $prefs = parse_ini_file($txt); $sort = []; foreach ($vms as $vm) $sort[] = $prefs[$vm] ?? 999; array_multisort($sort,SORT_NUMERIC,$vms); } else { natsort($vms); } if ($act=='stop') $vms = array_reverse($vms); foreach ($vms as $vm) { $res = $lv->get_domain_by_name($vm); $uuid = $lv->domain_get_uuid($res); $domName = $lv->domain_get_name_by_uuid($uuid); $dom = $lv->domain_get_info($res); $state = $lv->domain_state_translate($dom['state']); switch ($act) { case 'stop': if ($state!='running') continue; $result = $lv->domain_shutdown($domName) ? ['success'=>true, 'state'=>$lv->domain_get_state($domName)] : ['error'=>$lv->get_last_error()]; $n = 20; // wait for VM to die while ($result['success'] && $lv->domain_get_state($domName)=='running') {sleep(1); if(!--$n) break;} break; case 'start': if ($state=='running') continue; $result = $lv->domain_start($domName) ? ['success'=>true, 'state'=>$lv->domain_get_state($domName)] : ['error'=>$lv->get_last_error()]; break; } } ?>