istic-openstack/server/core/Compute.php

201 lines
5 KiB
PHP

<?php
//namespace istic-openstack\Server\core;
// TODO introduce error-handling based on errors specific to the compute module
use OpenStack\Common\Error;
class compute
{
/** @var App $app protected, contains the main app object */
protected $app;
/** @var OpenStack\Identity $libClass protected, contains the library Compute object */
protected $libClass;
public function __construct($app)
{
$this->app = $app;
$this->libClass = $app->getLibClass("Compute");
}
/**
* Execute an action
*
* @param String $action name of another function of this class
*
* @return void
*/
public function action($action){
$this->{$action.""}();
}
/**
* List servers.
* @return array
*/
public function listServers()
{
$serverList = $this->libClass->listServers(true);
$servers = Array();
foreach($serverList as $server){
$servers[$server->id] = Array();
$server->flavor->retrieve();
$server->image->retrieve();
$servers[$server->id]["id"] = $server->id;
$servers[$server->id]["name"] = $server->name;
$servers[$server->id]["imageId"] = $server->image->id;
$servers[$server->id]["flavorId"] = $server->flavor->id;
$servers[$server->id]["status"] = $server->status;
$servers[$server->id]["ram"] = $server->flavor->ram;
$servers[$server->id]["disk"] = $server->flavor->disk;
}
$this->app->setOutput("Servers", $servers);
return;
}
/**
* List flavors.
* @return array
*/
public function listFlavors()
{
$flavorList = $this->libClass->listFlavors();
$flavors = Array();
foreach($flavorList as $flavor){
$flavors[$flavor->id] = Array();
$flavors[$flavor->id]["id"] = $flavor->id;
$flavors[$flavor->id]["name"] = $flavor->name;
}
$this->app->setOutput("Flavors", $flavors);
return;
}
/**
* List images.
* @return array
*/
public function listImages()
{
$imageList = $this->libClass->listImages();
$images = Array();
foreach($imageList as $image){
$images[$image->id] = Array();
$images[$image->id]["id"] = $image->id;
$images[$image->id]["name"] = $image->name;
}
$this->app->setOutput("Images", $images);
return;
}
/**
* Create server.
* @return array
*
public function createServer()
{
$server = $this->libClass->createServer();
}
*/
/**
* Get server details.
* @return array
*/
public function getServer()
{
$serverId = $this->app->getPostParam("serverId");
$opt = array('id' => $serverId);
$server = $this->libClass->getServer($opt);
$server->retrieve();
$this->app->setOutput("MyServer", $server);
return;
}
/**
* Get flavor details.
* @return array
*/
public function getFlavor()
{
$flavorId = $this->app->getPostParam("flavorId");
$opt = array('id' => $flavorId);
$flavor = $this->libClass->getFlavor($opt);
$flavor->retrieve();
$this->app->setOutput("MyFlavor", $flavor);
return;
}
/**
* Get image details.
* @return array
*/
public function getImage()
{
$imageId = $this->app->getPostParam("imageId");
$opt = array('id' => $imageId);
$image = $this->libClass->getImage($opt);
$image->retrieve();
$this->app->setOutput("MyImage", $image);
return;
}
/* working on tests
public function update()
{
$image = $this->app->getServer(array $options = []);
}
public function delete()
{
//TODO
}
public function changePassword($newPassword)
{
//TODO
}
public function reboot($type = Enum::REBOOT_SOFT)
{
//TODO
}
public function rebuild(array $options)
{
//TODO
}
public function resize($flavorId)
{
//TODO
}
public function confirmResize()
{
//TODO
}
public function revertResize()
{
//TODO
}
public function createImage(array $options)
{
//TODO
}
public function listAddresses(array $options = [])
{
//TODO
}
public function getMetadata()
{
//TODO
}
public function resetMetadata(array $metadata)
{
//TODO
}
public function mergeMetadata(array $metadata)
{
//TODO
}
public function getMetadataItem($key)
{
//TODO
}
public function deleteMetadataItem($key)
{
//TODO
}
*/
}