Ejemplo n.º 1
0
function pool_update($pool)
{
    if (xvp_db_user_rights(null, $pool) == "none") {
        $pool->poolname = false;
        return;
    }
    if (($session = xenapi_login($pool, $master_ref)) === false) {
        return;
    }
    $pool->session = $session;
    if (xvp_db_user_host_rights($pool) == "none") {
        foreach ($pool->hosts as $host) {
            $host->hostname = false;
        }
    } else {
        foreach ($pool->hosts as $host) {
            host_update($pool, $host, $session, $master_ref);
        }
    }
    foreach ($pool->vms as $vm) {
        vm_update($pool, $vm, $session);
    }
}
Ejemplo n.º 2
0
Archivo: index.php Proyecto: suzizi/xvp
function pool_display($pool)
{
    if (xvp_db_user_rights(null, $pool) == "none") {
        return;
    }
    $hidehosts = xvp_db_user_host_rights($pool) == "none";
    $displayname = htmlspecialchars($pool->poolname, ENT_QUOTES);
    if ($pool->domainname) {
        $displayname .= " in domain " . htmlspecialchars(substr($pool->domainname, 1), ENT_QUOTES);
    }
    foreach ($pool->vms as $vm) {
        if (xvp_db_user_rights($vm, $pool) == "none") {
            continue;
        }
        echo <<<EOF
<iframe class="hidden" id="actions-{$vm->fullname}" name="actions-{$vm->fullname}" src="blank.html"></iframe>
<iframe class="hidden" id="console-{$vm->fullname}" name="console-{$vm->fullname}" src="blank.html"></iframe>

<ul id="vmmenu-{$vm->fullname}" class="contextMenu">
  <li class="console">
    <a href="#console">Console</a>
  </li>
  <li class="boot separator">
    <a href="#boot">Boot</a>
  </li>
  <li class="booton">
    <a href="#booton">Boot on ...</a>
  </li>
  <li class="bootrecovery">
    <a href="#bootrecovery">Boot Recovery</a>
  </li>
  <li class="shutdown separator">
    <a href="#shutdown">Shutdown</a>
  </li>
  <li class="poweroff">
    <a href="#poweroff">Force Shutdown</a>
  </li>
  <li class="reboot separator">
    <a href="#reboot">Reboot</a>
  </li>
  <li class="reset">
    <a href="#reset">Force Reboot</a>
  </li>
  <li class="suspend separator">
    <a href="#suspend">Suspend</a>
  </li>
  <li class="resume">
    <a href="#resume">Resume</a>
  </li>
  <li class="resumeon">
    <a href="#resumeon">Resume on ...</a>
  </li>
  <li class="migrate separator">
    <a href="#migrate">Migrate to ...</a>
  </li>
  <li class="snapshot separator">
    <a href="#snapshot">Snapshots</a>
  </li>
  <li class="properties separator">
    <a href="#properties">Properties</a>
  </li>
</ul>


EOF;
    }
    $poolid = xvp_make_fullname($pool->poolname, null);
    $jspoolid = addslashes($poolid);
    echo "\n<div class=\"pool\" id=\"pool-{$poolid}\">\n\n";
    if ($hidehosts) {
        echo <<<EOF
<h2 class="center"><img class="toggle" id="toggle-{$poolid}" alt="" title="" src="images/minus.png" onclick="poolToggle('{$jspoolid}');" />Pool {$displayname}</h2>

<div class="vmscenter">

EOF;
    } else {
        echo <<<EOF
<h2><img class="toggle" id="toggle-{$poolid}" alt="" title="" src="images/minus.png" onclick="poolToggle('{$jspoolid}');" />Pool {$displayname}</h2>

<div class="hosts">

<h3 class="hosts">Server Hosts</h3>

<table class="hosts">

  <tr>
    <td class="group">
      <img class="toggle" id="toggle-{$poolid}-hosts" alt="" title="" src="images/minus.png" onclick="hostsToggle('{$jspoolid}');" />&nbsp;
    </td>
  </tr>

EOF;
        foreach ($pool->hosts as $host) {
            host_display($host);
        }
        echo <<<EOF
</table>

</div>

<div class="vmsright">


EOF;
    }
    echo <<<EOF
<h3>Virtual Machines</h3>

<table class="vms">

EOF;
    $groupname = "--";
    foreach ($pool->vms as $vm) {
        if (!xvp_config_host_by_name($pool, $vm->vmname)) {
            vm_display($vm, $groupname);
        }
    }
    echo <<<EOF
</table>

</div>

</div>


EOF;
}
Ejemplo n.º 3
0
function pool_update($pool)
{
    if (xvp_db_user_rights(null, $pool) == "none") {
        $pool->poolname = false;
        return;
    }
    if (($session = xenapi_login($pool, $master_ref)) === false) {
        return;
    }
    $pool->session = $session;
    if (xvp_db_user_host_rights($pool) == "none") {
        foreach ($pool->hosts as $host) {
            $host->hostname = false;
        }
    } else {
        // We used to make lots of per-host Xen API calls, but grabbing
        // the details for all hosts in 2 calls should be much faster
        $allhosts = xenapi_host_get_all_records($session);
        $allhostmetrics = xenapi_host_metrics_get_all_records($session);
        $hostsbyuuid = array();
        foreach ($allhosts as $ref => $oid) {
            $hostobj_r = $oid->scalarval();
            $hostmref = $hostobj_r["metrics"]->scalarval();
            $hostuuid = $hostobj_r["uuid"]->scalarval();
            $hostname = $hostobj_r["hostname"]->scalarval();
            $hostaddr = $hostobj_r["address"]->scalarval();
            $hostenabled = $hostobj_r["enabled"]->scalarval();
            $swversion = $hostobj_r["software_version"]->scalarval();
            $hostversion = $swversion["product_version"]->scalarval();
            $hostbrand = $swversion["product_brand"]->scalarval();
            $hostbuild = $swversion["build_number"]->scalarval();
            $hostsbyuuid[$hostuuid]["hostname"] = $hostname;
            $hostsbyuuid[$hostuuid]["address"] = $hostaddr;
            $hostsbyuuid[$hostuuid]["enabled"] = $hostenabled;
            $hostsbyuuid[$hostuuid]["os_version"] = "{$hostbrand} {$hostversion} build {$hostbuild}";
            $hostsbyuuid[$hostuuid]["is_master"] = $ref == $master_ref;
            if ($hostenabled) {
                $hostm = $allhostmetrics[$hostmref]->scalarval();
                $hostmemtotal = $hostm["memory_total"]->scalarval();
                $hostmemfree = $hostm["memory_free"]->scalarval();
                $hostsbyuuid[$hostuuid]["memory_total"] = $hostmemtotal;
                $hostsbyuuid[$hostuuid]["memory_free"] = $hostmemfree;
            }
        }
        foreach ($pool->hosts as $host) {
            host_update($pool, $host, $session, $master_ref, $hostsbyuuid);
        }
    }
    // We used to make lots of per-VM Xen API calls, but grabbing
    // the details for all VMs in 3 calls should be much faster
    $allvms = xenapi_vm_get_all_records($session);
    $allvmmetrics = xenapi_vm_metrics_get_all_records($session);
    $allguestmetrics = xenapi_vm_guest_metrics_get_all_records($session);
    $vmsbyuuid = array();
    foreach ($allvms as $oid) {
        $vmobj_r = $oid->scalarval();
        if ($vmobj_r["is_a_template"]->scalarval() || $vmobj_r["is_control_domain"]->scalarval()) {
            continue;
        }
        $vmmref = $vmobj_r["metrics"]->scalarval();
        $vmm = $allvmmetrics[$vmmref]->scalarval();
        $vmgmref = $vmobj_r["guest_metrics"]->scalarval();
        if (array_key_exists($vmgmref, $allguestmetrics)) {
            $vmgm = $allguestmetrics[$vmgmref]->scalarval();
        } else {
            unset($vmgm);
        }
        $vmuuid = $vmobj_r["uuid"]->scalarval();
        $vmname = $vmobj_r["name_label"]->scalarval();
        $vmpower = $vmobj_r["power_state"]->scalarval();
        $vmmemory = $vmm["memory_actual"]->scalarval();
        $vmstarttime = $vmm["start_time"]->scalarval();
        if (isset($vmgm)) {
            $vmmetricsos = $vmgm["os_version"]->scalarval();
            $strarr = explode('|', $vmmetricsos["name"]->scalarval());
            $vmosversion = $strarr[0];
            // Regis's distro code doesn't work for me, Colin
            //$vmdistro = $vmmetricsos["distro"]->scalarval();
        } else {
            $vmosversion = "";
        }
        $vmsbyuuid[$vmuuid]["name"] = $vmname;
        $vmsbyuuid[$vmuuid]["power_state"] = $vmpower;
        $vmsbyuuid[$vmuuid]["memory_actual"] = $vmmemory;
        $vmsbyuuid[$vmuuid]["start_time"] = $vmstarttime;
        $vmsbyuuid[$vmuuid]["os_version"] = $vmosversion;
        //$vmsbyuuid[$vmuuid]["distro"]        = $vmdistro;
    }
    foreach ($pool->vms as $vm) {
        vm_update($pool, $vm, $session, $vmsbyuuid);
    }
}