示例#1
1
文件: xencrawl.php 项目: xtha/salt
 /** Crawl a Xen pool master and return an array of servers and their specs
 		@param	host		The hostname of the Xen pool master to crawl
 		@param	login		The username to connect to XAPI with
 		@param	password	The password to connect with. Not sent via HTTPS, so use caution.
 		@returns	Array of servers with named values of key metrics, see src for more.
 	*/
 function crawl($host, $login, $password)
 {
     // Connect to Xen
     $xenserver = new XenApi("http://" . $host, $login, $password);
     // Get a reference to each VM
     $vmRefList = $xenserver->VM_get_all();
     // Create our final array
     $vmArray = array();
     // Get the pool name
     $poolRef = $xenserver->pool_get_all();
     $vmArray['name'] = $xenserver->pool_get_name_label($poolRef[0]);
     // Query server about each VM reference
     foreach ($vmRefList as $vm) {
         $record = $xenserver->VM_get_record($vm);
         // Server is powered on, and is NOT a control domain
         if ($record['power_state'] == 'Running' && $record['is_control_domain'] == '') {
             // Create the info array
             $vmInfo = array("name" => $record['name_label'], "description" => $record['name_description'], "vmuuid" => $record['uuid']);
             // Does the record have a metrics reference?
             if (!strstr($record['guest_metrics'], "NULL")) {
                 // Get the OS version
                 $os = $xenserver->VM_guest_metrics_get_os_version($record['guest_metrics']);
                 $vmInfo['ostype'] = $os['name'];
                 // Get the IP address
                 $network = $xenserver->VM_guest_metrics_get_networks($record['guest_metrics']);
                 $vmInfo['ip'] = $network['0/ip'];
             }
             // Add it to the array
             $vmArray['virtuals'][] = $vmInfo;
         }
     }
     return $vmArray;
 }
示例#2
0
 public function unpauseDomU($id)
 {
     $bd = new db();
     $bd->connect();
     $domUInfo = $this->returnDomUInfo($id);
     $url = "http://" . $domUInfo["ip"] . ":" . $domUInfo["port"] . "";
     $xenapi = new XenApi($url, $domUInfo["login"], $domUInfo["password"]);
     $domUuuid = $xenapi->VM_get_by_name_label($domUInfo["name"]);
     if ($domUInfo != "") {
         $xenapi->VM_unpause($domUuuid[0]);
         $this->query = mysql_query("UPDATE domu_hosts set state = 'Running' WHERE id = " . $domUInfo["id"]);
         header("Location: index.php");
     } else {
         echo "Doen't exist domU!";
     }
 }
示例#3
0
<?php

include 'xenapi.php';
$url = "https://10.0.0.1";
/* URL of the Citrix XenSerer Xapi */
$login = "******";
/* login/user for the citrix box */
$password = "******";
/* password for the user */
/* Establish session with Xenserver */
$xenserver = new XenApi($url, $login, $password);
/* Once sucessfully logged in - any method (valid or not) is passed to the XenServer.

Replace the first period (.) of the method with a underscore (_) - because PHP doesnt like 
periods in the function names.

All the methods (other then logging in) require passing the session_id as the first parameter,
however this is done automatically - so you do not need to pass it.

For example, to do VM.get_all(session_id) and get all the vms as an array, then get/print the details of each
using VM.get_record(session_id, self) (self = VM object):
 */
$vms_array = $xenserver->VM_get_all();
foreach ($vms_array as $vm) {
    $record = $xenserver->VM_get_record($vm);
    print_r($record);
}
/*
For parameters/usage, check out:
    http://docs.vmd.citrix.com/XenServer/5.5.0/1.0/en_gb/api/docs/html/browser.html
To see how parametes are returned, print_r() is your friend :)