mirror of
https://github.com/mclueppers/xo-server.git
synced 2025-07-28 16:34:40 +02:00
Various updates.
This commit is contained in:
parent
2c0913637b
commit
5f26cd7342
@ -444,8 +444,69 @@ final class Application extends Base
|
|||||||
function api_vm_getAll($id, array $params, Client $c)
|
function api_vm_getAll($id, array $params, Client $c)
|
||||||
{
|
{
|
||||||
// @todo Handles parameter.
|
// @todo Handles parameter.
|
||||||
|
$di = $this->_di;
|
||||||
|
|
||||||
$c->respond($id, $this->_di->get('vms')->getArray());
|
$mgr_guest_metrics = $di->get('vms_guest_metrics');
|
||||||
|
$mgr_hosts = $di->get('hosts');
|
||||||
|
$mgr_metrics = $di->get('vms_metrics');
|
||||||
|
$mgr_vms = $di->get('vms');
|
||||||
|
|
||||||
|
$vms = $mgr_vms->get(array(
|
||||||
|
'is_a_snapshot' => false,
|
||||||
|
'is_a_template' => false,
|
||||||
|
'is_control_domain' => false,
|
||||||
|
));
|
||||||
|
|
||||||
|
$entries = array();
|
||||||
|
foreach ($vms as $vm)
|
||||||
|
{
|
||||||
|
$guest_metrics = $mgr_guest_metrics->first($vm->guest_metrics, false);
|
||||||
|
$host = $mgr_hosts->first($vm->resident_on, false);
|
||||||
|
$metrics = $mgr_metrics->first($vm->metrics);
|
||||||
|
|
||||||
|
if ($guest_metrics && ($_ = $guest_metrics->memory))
|
||||||
|
{
|
||||||
|
$used_memory = $_['used'];
|
||||||
|
$total_memory = $_['total'];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$used_memory = null;
|
||||||
|
$total_memory = $metrics->memory_actual;
|
||||||
|
}
|
||||||
|
|
||||||
|
$networks = $guest_metrics
|
||||||
|
? $guest_metrics->networks
|
||||||
|
: null;
|
||||||
|
|
||||||
|
$start_time = (0 === $metrics->start_time['timestamp'])
|
||||||
|
? null
|
||||||
|
: $metrics->start_time['timestamp'];
|
||||||
|
|
||||||
|
$entries[] = array(
|
||||||
|
'host_name' => $host ? $host->name_label : null,
|
||||||
|
'host_uuid' => $host ? $host->uuid : null,
|
||||||
|
'name_description' => $vm->name_description,
|
||||||
|
'name_label' => $vm->name_label,
|
||||||
|
'networks' => $networks,
|
||||||
|
'power_state' => $vm->power_state,
|
||||||
|
'start_time' => $start_time,
|
||||||
|
'total_memory' => $total_memory,
|
||||||
|
'used_memory' => $used_memory,
|
||||||
|
'uuid' => $vm->uuid,
|
||||||
|
'VBDs' => count($vm->VBDs),
|
||||||
|
'VCPUs_utilisation' => $metrics->VCPUs_utilisation,
|
||||||
|
'VIFs' => count($vm->VIFs),
|
||||||
|
);
|
||||||
|
|
||||||
|
// var_export(array(
|
||||||
|
// 'vm' => $vm->getProperties(),
|
||||||
|
// 'metrics' => $metrics->getProperties(),
|
||||||
|
// 'guest_metrics' => $guest_metrics->getProperties(),
|
||||||
|
// ));
|
||||||
|
}
|
||||||
|
|
||||||
|
$c->respond($id, $entries);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -486,13 +547,6 @@ final class Application extends Base
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* - Nombre de serveurs connectés.
|
|
||||||
* - Nombre de running VMs.
|
|
||||||
* - Total RAM/CPUs allouées aux running VMS.
|
|
||||||
* - Nombre de SR.
|
|
||||||
* - Nombre de VMs (ni templates ni snapshots).
|
|
||||||
*/
|
|
||||||
$stats = array(
|
$stats = array(
|
||||||
'hosts' => $mgr_vms->count(array(
|
'hosts' => $mgr_vms->count(array(
|
||||||
'is_control_domain' => true,
|
'is_control_domain' => true,
|
||||||
@ -620,6 +674,7 @@ final class Application extends Base
|
|||||||
|
|
||||||
// map(XCP class: manager)
|
// map(XCP class: manager)
|
||||||
$classes = array(
|
$classes = array(
|
||||||
|
'host' => 'hosts',
|
||||||
'message' => 'messages',
|
'message' => 'messages',
|
||||||
'pool' => 'pools',
|
'pool' => 'pools',
|
||||||
'SR' => 'srs',
|
'SR' => 'srs',
|
||||||
|
84
lib/Bean/Host.php
Normal file
84
lib/Bean/Host.php
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* This file is a part of Xen Orchestra Server.
|
||||||
|
*
|
||||||
|
* Xen Orchestra Server is free software: you can redistribute it
|
||||||
|
* and/or modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation, either version 3 of
|
||||||
|
* the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Xen Orchestra Server is distributed in the hope that it will be
|
||||||
|
* useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||||
|
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with Xen Orchestra Server. If not, see
|
||||||
|
* <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* @author Julien Fontanet <julien.fontanet@vates.fr>
|
||||||
|
* @license http://www.gnu.org/licenses/gpl-3.0-standalone.html GPLv3
|
||||||
|
*
|
||||||
|
* @package Xen Orchestra Server
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Bean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
final class Host extends BeanAbstract
|
||||||
|
{
|
||||||
|
protected static $_fields;
|
||||||
|
}
|
||||||
|
Host::init(array(
|
||||||
|
'id',
|
||||||
|
'uuid',
|
||||||
|
|
||||||
|
'API_version_major',
|
||||||
|
'API_version_minor',
|
||||||
|
'API_version_vendor',
|
||||||
|
'API_version_vendor_implementation' => true,
|
||||||
|
'PBDs' => true,
|
||||||
|
'PCIs' => true,
|
||||||
|
'PGPUs' => true,
|
||||||
|
'PIFs' => true,
|
||||||
|
'address',
|
||||||
|
'allowed_operations' => true,
|
||||||
|
'bios_strings' => true,
|
||||||
|
'blobs' => true,
|
||||||
|
'capabilities' => true,
|
||||||
|
'chipset_info' => true,
|
||||||
|
'cpu_configuration' => true,
|
||||||
|
'cpu_info' => true,
|
||||||
|
'crash_dump_sr',
|
||||||
|
'crashdumps' => true,
|
||||||
|
'current_operations' => true,
|
||||||
|
'edition',
|
||||||
|
'enabled',
|
||||||
|
'external_auth_configuration' => true,
|
||||||
|
'external_auth_service_name',
|
||||||
|
'external_auth_type',
|
||||||
|
'ha_network_peers' => true,
|
||||||
|
'ha_statefiles' => true,
|
||||||
|
'host_CPUs' => true,
|
||||||
|
'hostname',
|
||||||
|
'license_params' => true,
|
||||||
|
'license_server' => true,
|
||||||
|
'local_cache_sr',
|
||||||
|
'logging' => true,
|
||||||
|
'memory_overhead',
|
||||||
|
'metrics',
|
||||||
|
'name_description',
|
||||||
|
'name_label',
|
||||||
|
'other_config' => true,
|
||||||
|
'patches' => true,
|
||||||
|
'power_on_config' => true,
|
||||||
|
'power_on_mode',
|
||||||
|
'resident_VMs' => true,
|
||||||
|
'sched_policy',
|
||||||
|
'software_version' => true,
|
||||||
|
'supported_bootloaders' => true,
|
||||||
|
'suspend_image_sr',
|
||||||
|
'tags' => true,
|
||||||
|
));
|
@ -37,7 +37,7 @@ Message::init(array(
|
|||||||
|
|
||||||
'timestamp',
|
'timestamp',
|
||||||
'name',
|
'name',
|
||||||
'message',
|
'body',
|
||||||
'priority',
|
'priority',
|
||||||
|
|
||||||
'cls', // Not class like in Event !!!
|
'cls', // Not class like in Event !!!
|
||||||
|
@ -56,7 +56,6 @@ Pool::init(array(
|
|||||||
'restrictions' => true,
|
'restrictions' => true,
|
||||||
'suspend_image_SR',
|
'suspend_image_SR',
|
||||||
'tags' => true,
|
'tags' => true,
|
||||||
'uuid',
|
|
||||||
'vswitch_controller',
|
'vswitch_controller',
|
||||||
'wlb_enabled',
|
'wlb_enabled',
|
||||||
'wlb_url',
|
'wlb_url',
|
||||||
|
@ -35,5 +35,22 @@ SR::init(array(
|
|||||||
'id',
|
'id',
|
||||||
'uuid',
|
'uuid',
|
||||||
|
|
||||||
|
'PBDs' => true,
|
||||||
|
'VDIs' => true,
|
||||||
|
'allowed_operations' => true,
|
||||||
|
'blobs' => true,
|
||||||
|
'content_type',
|
||||||
|
'current_operations' => true,
|
||||||
|
'introduced_by',
|
||||||
|
'local_cache_enabled',
|
||||||
|
'name_description',
|
||||||
|
'name_label',
|
||||||
|
'other_config' => true,
|
||||||
'physical_size',
|
'physical_size',
|
||||||
|
'physical_utilisation',
|
||||||
|
'shared',
|
||||||
|
'sm_config' => true,
|
||||||
|
'tags' => true,
|
||||||
|
'type',
|
||||||
|
'virtual_allocation',
|
||||||
));
|
));
|
||||||
|
@ -34,4 +34,26 @@ final class VIF extends BeanAbstract
|
|||||||
VIF::init(array(
|
VIF::init(array(
|
||||||
'id',
|
'id',
|
||||||
'uuid',
|
'uuid',
|
||||||
|
|
||||||
|
'MAC',
|
||||||
|
'MAC_autogenerated',
|
||||||
|
'MTU',
|
||||||
|
'VM',
|
||||||
|
'allowed_operations' => true,
|
||||||
|
'current_operations' => true,
|
||||||
|
'currently_attached',
|
||||||
|
'device',
|
||||||
|
'ipv4_allowed' => true,
|
||||||
|
'ipv6_allowed' => true,
|
||||||
|
'locking_mode',
|
||||||
|
'metrics',
|
||||||
|
'network',
|
||||||
|
'other_config' => true,
|
||||||
|
'qos_algorithm_params' => true,
|
||||||
|
'qos_algorithm_type',
|
||||||
|
'qos_supported_algorithms' => true,
|
||||||
|
'runtime_properties' => true,
|
||||||
|
'status_code',
|
||||||
|
'status_detail',
|
||||||
|
|
||||||
));
|
));
|
||||||
|
@ -35,6 +35,14 @@ VMGuestMetrics::init(array(
|
|||||||
'id',
|
'id',
|
||||||
'uuid',
|
'uuid',
|
||||||
|
|
||||||
|
'PV_drivers_up_to_date',
|
||||||
|
'PV_drivers_version' => true,
|
||||||
|
'disks' => true,
|
||||||
|
'last_updated' => true,
|
||||||
|
'live',
|
||||||
'memory' => true,
|
'memory' => true,
|
||||||
'networks' => true,
|
'networks' => true,
|
||||||
|
'os_version' => true,
|
||||||
|
'other' => true,
|
||||||
|
'other_config' => true,
|
||||||
));
|
));
|
||||||
|
@ -35,7 +35,15 @@ VMMetrics::init(array(
|
|||||||
'id',
|
'id',
|
||||||
'uuid',
|
'uuid',
|
||||||
|
|
||||||
'memory_actual',
|
'VCPUs_CPU' => true,
|
||||||
|
'VCPUs_flags' => true,
|
||||||
'VCPUs_number',
|
'VCPUs_number',
|
||||||
'start_time',
|
'VCPUs_params' => true,
|
||||||
|
'VCPUs_utilisation' => true,
|
||||||
|
'install_time' => true,
|
||||||
|
'last_updated' => true,
|
||||||
|
'memory_actual',
|
||||||
|
'other_config' => true,
|
||||||
|
'start_time' => true,
|
||||||
|
'state' => true,
|
||||||
));
|
));
|
||||||
|
11
lib/DI.php
11
lib/DI.php
@ -91,6 +91,11 @@ final class DI extends Base
|
|||||||
{
|
{
|
||||||
$database = new \Rekodi\Manager\Memory;
|
$database = new \Rekodi\Manager\Memory;
|
||||||
|
|
||||||
|
$database->createTable('hosts', function ($table) {
|
||||||
|
$table
|
||||||
|
->string('id')->unique()
|
||||||
|
;
|
||||||
|
});
|
||||||
$database->createTable('messages', function ($table) {
|
$database->createTable('messages', function ($table) {
|
||||||
$table
|
$table
|
||||||
->string('id')->unique()
|
->string('id')->unique()
|
||||||
@ -175,10 +180,16 @@ final class DI extends Base
|
|||||||
//--------------------------------------
|
//--------------------------------------
|
||||||
// Managers
|
// Managers
|
||||||
|
|
||||||
|
private function _init_hosts()
|
||||||
|
{
|
||||||
|
return new \Manager\Hosts($this->get('database.cache'));
|
||||||
|
}
|
||||||
|
|
||||||
private function _init_messages()
|
private function _init_messages()
|
||||||
{
|
{
|
||||||
return new \Manager\Messages($this->get('database.cache'));
|
return new \Manager\Messages($this->get('database.cache'));
|
||||||
}
|
}
|
||||||
|
|
||||||
private function _init_pools()
|
private function _init_pools()
|
||||||
{
|
{
|
||||||
return new \Manager\Pools($this->get('database.cache'));
|
return new \Manager\Pools($this->get('database.cache'));
|
||||||
|
39
lib/Manager/Hosts.php
Normal file
39
lib/Manager/Hosts.php
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* This file is a part of Xen Orchestra Server.
|
||||||
|
*
|
||||||
|
* Xen Orchestra Server is free software: you can redistribute it
|
||||||
|
* and/or modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation, either version 3 of
|
||||||
|
* the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Xen Orchestra Server is distributed in the hope that it will be
|
||||||
|
* useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||||
|
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with Xen Orchestra Server. If not, see
|
||||||
|
* <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* @author Julien Fontanet <julien.fontanet@vates.fr>
|
||||||
|
* @license http://www.gnu.org/licenses/gpl-3.0-standalone.html GPLv3
|
||||||
|
*
|
||||||
|
* @package Xen Orchestra Server
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Manager;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
final class Hosts extends XCPAbstract
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
function __construct(\Rekodi\Manager $manager)
|
||||||
|
{
|
||||||
|
parent::__construct($manager, 'hosts', '\Bean\Host');
|
||||||
|
}
|
||||||
|
}
|
@ -34,6 +34,19 @@ abstract class XCPAbstract extends ManagerAbstract
|
|||||||
*/
|
*/
|
||||||
function batchImport(array $objects)
|
function batchImport(array $objects)
|
||||||
{
|
{
|
||||||
|
// Used for development to print bean's attributes.
|
||||||
|
// $object = reset($objects);
|
||||||
|
// ksort($object);
|
||||||
|
// foreach ($object as $field => $value)
|
||||||
|
// {
|
||||||
|
// var_export($field);
|
||||||
|
// if (is_array($value) || is_object($value))
|
||||||
|
// {
|
||||||
|
// echo ' => true';
|
||||||
|
// }
|
||||||
|
// echo ",\n";
|
||||||
|
// }
|
||||||
|
|
||||||
foreach ($objects as $ref => $properties)
|
foreach ($objects as $ref => $properties)
|
||||||
{
|
{
|
||||||
$properties['id'] = $ref;
|
$properties['id'] = $ref;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user