istic-openstack/server/core/Image.php
2016-02-07 10:29:12 +01:00

293 lines
6.4 KiB
PHP

<?php
ini_set('display_errors', 1);
date_default_timezone_set("Europe/Paris");
class Image {
protected $oidentity;
//protected $plugins;
/**
* Constructor
*
* @param $openstack
*
* @param $options
*
**/
public function __construct($ostack, $options){ //, $apiP
$this->oidentity = $ostack->imagesV2($options);
//$this->plugins = $apiP;
}
/**
* Details about an image
*
* @param array $opt
* options for the image creation
*
**/
public function create_image(array $opt){
// VOIR SI MAUVAIS TYPE
$options = Array();
if(isset($opt['name'])){ // string, rendre le nom obligatoire, vérifier nom pas déjà pris
}
else{
//ERROR
}
if(isset($opt['id'])){ // UUID : nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn
$options['id'] = $opt['id'];
}
if(isset($opt['visibility'])){ // public, private
$options['visibility'] = $opt['visibility'];
}
if(isset($opt['tags'])){ // list
$options['tags'] = $opt['tags'];
}
if(isset($opt['containerFormat'])){ // string : ami, ari, aki, bare, ovf, ova, docker
$options['containerFormat'] = $opt['containerFormat'];
}
if(isset($opt['diskFormat'])){ // string : ami, ari, aki, vhd, vmdk, raw, qcow2, vdi, iso
$options['diskFormat'] = $opt['diskFormat'];
}
if(isset($opt['minDisk'])){ //int
$options['minDisk'] = $opt['minDisk'];
}
if(isset($opt['minRam'])){ // int
$options['minRam'] = $opt['minRam'];
}
if(isset($opt['protected'])){ // boolean
$options['protected'] = $opt['protected'];
}
if(isset($opt['properties'])){ // type dict ?
$options['properties'] = $opt['properties'];
}
$image = $this->oidentity->createImage($options);
return $image;
}
/*
* List images
*/
public function list_images(){
// vérifier si au moins une image
$service = $this->oidentity;
$images = $service->listImages();
return $images;
}
/**
* Details about an image
*
* @param string $id
* identifier of the image
*
**/
public function image_details($id){
//vérifier existence image
$service = $this->oidentity;
$image = $service->getImage($id);
return $image;
}
/**
* Details about an image
*
* @param string $id
* id of the image
*
* @param array $opt
* options for the image creation
**/
public function update_image($id, array $opt){
//vérifier existence image
$service = $this->oidentity;
$image = $service->getImage($id);
$options = Array();
// Voir vérification des types
if(isset($opt['name'])){ //string
$options['name'] = $opt['name'];
}
if(isset($opt['minDisk'])){ //int
$options['minDisk'] = $opt['minDisk'];
}
if(isset($opt['minRam'])){ // int
$options['minRam'] = $opt['minRam'];
}
if(isset($opt['protected'])){ // boolean
$options['protected'] = $opt['protected'];
}
if(isset($opt['visibility'])){ // public, private
$options['visibility'] = $opt['visibility'];
}
if(isset($opt['tags'])){ // list
$options['tags'] = $opt['tags'];
}
$image->update($options);
return $image;
}
/**
* Delete an image
*
* @param string $id
* identifier of the image
**/
public function delete_image($id){
// si protected = true, demander de le mettre a false
// vérifier existence image
$service = $this->oidentity;
$service->getImage($id)->delete();
}
/**
* Resactive an image
*
* @param string $id
* identifier of the image
**/
public function reactivate_image($id){
// vérifier existence image
$service = $this->oidentity;
$image = $service->getImage($id);
$image->reactivate();
}
/**
* Desactive an image
*
* @param string $id
* identifier of the image
**/
public function desactivate_image($id){
// vérifier existence image
$service = $this->oidentity;
$image = $service->getImage($id);
$image->deactivate();
}
/**
* Upload an image
*
* @param string $id
* identifier of the image
*
* @param string $file_name
* path of the image
**/
public function upload_image($id, $file_name){
// vérifier existence image
$service = $this->oidentity;
$image = $service->getImage($id);
$stream = \GuzzleHttp\Psr7\stream_for(fopen($file_name, 'r')); // A VOIR
$image->uploadData($stream);
}
/**
* Download an image
*
* @param string $id
* identifier of the image
**/
public function download_image($id){
// vérifier existence image
$service = $this->oidentity;
$image = $service->getImage($id);
$stream = $image->downloadData();
return $stream;
}
/**
* Add a member to image
*
* @param string $image_id
* identifier of the image
*
* @param string $member_id
* identifier of the member
**/
public function add_member($image_id, $member_id){
// vérifier existence image
// on doit être le proprio de l'image
// vérifier membre existe
$service = $this->oidentity;
$member_id = $service>getImage($image_id)->addMember($member_id);
}
/**
* List members of an image
*
* @param string $image_id
* identifier of the image
**/
public function list_member($image_id, $member_id){
// vérifier existence image
$service = $this->oidentity;
$image = $service->getImage($image_id);
$members = $image->listMembers();
return $members;
}
/**
* Show details of a member of an image
*
* @param string $image_id
* identifier of the image
*
* @param string $member_id
* identifier of the member
**/
public function detail_member($image_id, $member_id){
// vérifier existence image
// on doit être le proprio de l'image
// vérifier membre existe
$service = $this->oidentity;
$member = $service>getImage($image_id)->getMember($member_id);
return $member;
}
/**
* Remove a member of an image
*
* @param string $image_id
* identifier of the image
*
* @param string $member_id
* identifier of the member
**/
public function remove_member($image_id, $member_id){
// vérifier existence image
// on doit être le proprio de l'image
// vérifier membre existe
$service = $this->oidentity;
$service>getImage($image_id)->getMember($member_id)->delete();
}
/**
* Update a member of an image
*
* @param string $image_id
* identifier of the image
*
* @param string $member_id
* identifier of the member
*
* @param string $status
* new status for the member
**/
public function update_member($image_id, $member_id, $status){
// vérifier existence image
// on doit être le proprio de l'image
// vérifier membre existe
$service = $this->oidentity;
$member = $service>getImage($image_id)->getMember($member_id)->updateStatus($status);
}
}
?>