function main() { global $poolname, $vmname, $jsvmname, $shutdown; xvp_global_init(); xvp_config_init(); xvp_db_init(); if (!($pool = xvp_config_pool_by_name($poolname)) || !($vm = xvp_config_vm_by_name($pool, $vmname))) { return; } if (($session = xenapi_login($pool, $master_ref)) === false) { return; } if (xvp_is_uuid($vmname)) { if (($ref = xenapi_vm_by_uuid($session, $vmname)) === false || ($vmname = xenapi_vm_get_name_label($session, $ref)) === false) { return; } $vm->uuid = $vm->vmname; $vm->vmname = $vmname; $jsvmname = addslashes($vmname); } else { if (($ref = xenapi_vm_by_name($session, $vmname)) === false) { return; } } if (!xvp_db_user_may_perform($vm, null, "shutdown")) { return; } $always = xenapi_vm_get_ha_always_run($session, $ref); if ($always === true) { // disable HA prior to shutdown xenapi_vm_set_ha_always_run($session, $ref, false); } if (xenapi_vm_shutdown($session, $ref)) { $shutdown = "true"; } else { if ($always === true) { xenapi_vm_set_ha_always_run($session, $ref, true); } } }
function main() { global $poolname, $vmname, $jsvmname, $resumed; xvp_global_init(); xvp_config_init(); xvp_db_init(); if (!($pool = xvp_config_pool_by_name($poolname)) || !($vm = xvp_config_vm_by_name($pool, $vmname))) { return; } if (($session = xenapi_login($pool, $master_ref)) === false) { return; } if (xvp_is_uuid($vmname)) { if (($ref = xenapi_vm_by_uuid($session, $vmname)) === false || ($vmname = xenapi_vm_get_name_label($session, $ref)) === false) { return; } $vm->uuid = $vm->vmname; $vm->vmname = $vmname; $jsvmname = addslashes($vmname); } else { if (($ref = xenapi_vm_by_name($session, $vmname)) === false) { return; } } if (!xvp_db_user_may_perform($vm, null, "resume")) { return; } $prio = xenapi_vm_get_restart_priority($session, $ref); $always = xenapi_vm_get_ha_always_run($session, $ref); if (xenapi_vm_resume($session, $ref)) { $resumed = "true"; if (strlen($prio) > 0 && $always === false) { // looks like HA disabled for VM on suspend, so re-enable xenapi_vm_set_ha_always_run($session, $ref, true); } } }
function boot_vm() { global $session, $ref, $href, $booted, $bootrecovery, $recovery; if ($ref === false || $href == false) { return; } if ($recovery) { /* * A recovery boot means using HVM, even if guest is PV, and * setting boot device order to CD/DVD drive and then network. * However, we must restore original settings immediately * after boot completes or fails. */ if (!$bootrecovery) { return; } // insufficient rights $policy = xenapi_vm_get_hvm_boot_policy($session, $ref); $params = xenapi_vm_get_hvm_boot_params($session, $ref); if ($policy === false || $params === false) { return; } if (isset($params["order"])) { $order = $params["order"]; } else { $order = ""; } $params["order"] = "dn"; if (!xenapi_vm_set_hvm_boot_params($session, $ref, $params)) { return; } if (!xenapi_vm_set_hvm_boot_policy($session, $ref, "BIOS order")) { $params["order"] = $order; xenapi_vm_set_hvm_boot_params($session, $ref, $params); return; } } $prio = xenapi_vm_get_restart_priority($session, $ref); $always = xenapi_vm_get_ha_always_run($session, $ref); if (xenapi_vm_start_on($session, $ref, $href)) { $booted = "true"; if (strlen($prio) > 0 && $always === false) { // looks like HA disabled for VM on shutdown, so re-enable xenapi_vm_set_ha_always_run($session, $ref, true); } } if ($recovery) { /* * Restore original HVM/PV and boot order settings. */ xenapi_vm_set_hvm_boot_policy($session, $ref, $policy); $params["order"] = $order; xenapi_vm_set_hvm_boot_params($session, $ref, $params); } }
function resume_vm() { global $session, $ref, $href, $resumed; if ($ref === false || $href == false) { return; } $prio = xenapi_vm_get_restart_priority($session, $ref); $always = xenapi_vm_get_ha_always_run($session, $ref); if (xenapi_vm_resume_on($session, $ref, $href)) { $resumed = "true"; if (strlen($prio) > 0 && $always === false) { // looks like HA disabled for VM on shutdown, so re-enable xenapi_vm_set_ha_always_run($session, $ref, true); } } }
function main() { global $poolname, $vmname, $jsvmname, $booted, $recovery; xvp_global_init(); xvp_config_init(); xvp_db_init(); if (!($pool = xvp_config_pool_by_name($poolname)) || !($vm = xvp_config_vm_by_name($pool, $vmname))) { return; } if (($session = xenapi_login($pool, $master_ref)) === false) { return; } if (xvp_is_uuid($vmname)) { if (($ref = xenapi_vm_by_uuid($session, $vmname)) === false || ($vmname = xenapi_vm_get_name_label($session, $ref)) === false) { return; } $vm->uuid = $vm->vmname; $vm->vmname = $vmname; $jsvmname = addslashes($vmname); } else { if (($ref = xenapi_vm_by_name($session, $vmname)) === false) { return; } } if (!xvp_db_user_may_perform($vm, null, "boot")) { return; } if ($recovery && !xvp_db_user_may_perform($vm, null, "bootrecovery")) { return; } if ($recovery) { /* * A recovery boot means using HVM, even if guest is PV, and * setting boot device order to CD/DVD drive and then network. * However, we must restore original settings immediately * after boot completes or fails. */ $policy = xenapi_vm_get_hvm_boot_policy($session, $ref); $params = xenapi_vm_get_hvm_boot_params($session, $ref); if ($policy === false || $params === false) { return; } if (isset($params["order"])) { $order = $params["order"]; } else { $order = ""; } $params["order"] = "dn"; if (!xenapi_vm_set_hvm_boot_params($session, $ref, $params)) { return; } if (!xenapi_vm_set_hvm_boot_policy($session, $ref, "BIOS order")) { $params["order"] = $order; xenapi_vm_set_hvm_boot_params($session, $ref, $params); return; } } $prio = xenapi_vm_get_restart_priority($session, $ref); $always = xenapi_vm_get_ha_always_run($session, $ref); if (xenapi_vm_start($session, $ref)) { $booted = "true"; if (strlen($prio) > 0 && $always === false) { // looks like HA disabled for VM on shutdown, so re-enable xenapi_vm_set_ha_always_run($session, $ref, true); } } if ($recovery) { /* * Restore original HVM/PV and boot order settings. */ xenapi_vm_set_hvm_boot_policy($session, $ref, $policy); $params["order"] = $order; xenapi_vm_set_hvm_boot_params($session, $ref, $params); } }