From 721620a549f38ca13f82351ae12d777f929b7372 Mon Sep 17 00:00:00 2001 From: "yogg@epsina.com" Date: Wed, 27 Jan 2016 19:19:42 +0100 Subject: [PATCH 01/11] =?UTF-8?q?=20Modifications=20qui=20seront=20valid?= =?UTF-8?q?=C3=A9es=20:=20=09modifi=C3=A9=C2=A0:=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20server/core/Image.php?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/core/Image.php | 97 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 96 insertions(+), 1 deletion(-) diff --git a/server/core/Image.php b/server/core/Image.php index 8d1c8b6..984f03a 100644 --- a/server/core/Image.php +++ b/server/core/Image.php @@ -1 +1,96 @@ - +"admin", "password"=>"ae5or6cn", "domain"=>["id"=>"Default"]); +$options["scope"] = Array("project"=>Array("name"=>"admin", "domain"=>["id"=>"Default"])); +$options["authUrl"] = "http://148.60.11.31:5000/v3"; + +$openstack = OpenStack\OpenStack($options); + + +public function create_image(array $opt){ + $service = $openstack->imagesV2(); + + // OPTIONS A VOIR + $image = $service->createImage([ + 'name' => $opt[name], + 'tags' => ['{tag1}', '{tag2}'], // A VOIR + 'containerFormat' => $opt[containerFormat], + 'diskFormat' => $opt[diskFormat], + 'visibility' => $opt[visibility], + 'minDisk' => 10, + 'protected' => true, + 'minRam' => 10, + ]); + + return $image; +} + +public function list_image(){ + $images = $openstack->imagesV2()->listImages(); + return $images; +} + + +public function image_details($id){ + $service = $openstack->imagesV2(); + $image = $service->getImage($id); + return $image; +} + + +public function update_image($id, array $opt){ + $service = $openstack->imagesV2(); + + //OPTIONS A VOIR + $image = $service->getImage($id); + $image->update([ + 'minDisk' => 1, + 'minRam' => 1, + 'name' => $opt[name], + 'protected' => false, + 'visibility' => $opt[visibility], + ]); + + return $image; +} + +// RETOUR A VOIR +public function delete_image($name){ + $openstack->imagesV2()->getImage($name)->delete(); +} + +// RETOUR A VOIR +public function reactivate_image($id){ + $service = $openstack->imagesV2(); + $image = $service->getImage($id); + $image->reactivate(); +} + +// RETOUR A VOIR +public function desactivate_function($id){ + $service = $openstack->imagesV2(); + $image = $service->getImage($id); + $image->deactivate(); +} + +// RETOUR A VOIR +public function upload_image($id, $file_name){ + $service = $openstack->imagesV2(); + $image = $service->getImage($id); + $stream = \GuzzleHttp\Psr7\stream_for(fopen($file_name, 'r')); // A VOIR + $image->uploadData($stream); +} + +// RETOUR A VOIR +public function download_image($id){ + $service = $openstack->imagesV2(); + $image = $service->getImage($id); + $stream = $image->downloadData(); +} + + +?> From 83fd3eb19dc9943d3ad53154f330ed4782ccff81 Mon Sep 17 00:00:00 2001 From: "yogg@epsina.com" Date: Sun, 31 Jan 2016 10:56:52 +0100 Subject: [PATCH 02/11] =?UTF-8?q?=20Modifications=20qui=20seront=20valid?= =?UTF-8?q?=C3=A9es=20:=20=09modifi=C3=A9=C2=A0:=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20server/core/Image.php=20=09modifi=C3=A9=C2=A0:=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20server/test.php?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/core/Image.php | 184 ++++++++++++++++++++++-------------------- server/test.php | 21 +++-- 2 files changed, 114 insertions(+), 91 deletions(-) diff --git a/server/core/Image.php b/server/core/Image.php index 984f03a..242bb5f 100644 --- a/server/core/Image.php +++ b/server/core/Image.php @@ -1,96 +1,108 @@ "admin", "password"=>"ae5or6cn", "domain"=>["id"=>"Default"]); -$options["scope"] = Array("project"=>Array("name"=>"admin", "domain"=>["id"=>"Default"])); -$options["authUrl"] = "http://148.60.11.31:5000/v3"; - -$openstack = OpenStack\OpenStack($options); +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; + } + + public function create_image(array $opt){ + $service = $openstack->imagesV2(); + + // OPTIONS A VOIR + $image = $service->createImage([ + 'name' => $opt[name], + 'tags' => ['{tag1}', '{tag2}'], // A VOIR + 'containerFormat' => $opt[containerFormat], + 'diskFormat' => $opt[diskFormat], + 'visibility' => $opt[visibility], + 'minDisk' => 10, + 'protected' => true, + 'minRam' => 10, + ]); + + return $image; + } + + /* + * List images + */ + public function list_images(){ + $images = $this->oidentity->listImages(); + return $images; + } -public function create_image(array $opt){ - $service = $openstack->imagesV2(); + public function image_details($id){ + $service = $openstack->imagesV2(); + $image = $service->getImage($id); + return $image; + } - // OPTIONS A VOIR - $image = $service->createImage([ - 'name' => $opt[name], - 'tags' => ['{tag1}', '{tag2}'], // A VOIR - 'containerFormat' => $opt[containerFormat], - 'diskFormat' => $opt[diskFormat], - 'visibility' => $opt[visibility], - 'minDisk' => 10, - 'protected' => true, - 'minRam' => 10, - ]); - return $image; + public function update_image($id, array $opt){ + $service = $openstack->imagesV2(); + + //OPTIONS A VOIR + $image = $service->getImage($id); + $image->update([ + 'minDisk' => 1, + 'minRam' => 1, + 'name' => $opt[name], + 'protected' => false, + 'visibility' => $opt[visibility], + ]); + + return $image; + } + + // RETOUR A VOIR + public function delete_image($name){ + $openstack->imagesV2()->getImage($name)->delete(); + } + + // RETOUR A VOIR + public function reactivate_image($id){ + $service = $openstack->imagesV2(); + $image = $service->getImage($id); + $image->reactivate(); + } + + // RETOUR A VOIR + public function desactivate_function($id){ + $service = $openstack->imagesV2(); + $image = $service->getImage($id); + $image->deactivate(); + } + + // RETOUR A VOIR + public function upload_image($id, $file_name){ + $service = $openstack->imagesV2(); + $image = $service->getImage($id); + $stream = \GuzzleHttp\Psr7\stream_for(fopen($file_name, 'r')); // A VOIR + $image->uploadData($stream); + } + + // RETOUR A VOIR + public function download_image($id){ + $service = $openstack->imagesV2(); + $image = $service->getImage($id); + $stream = $image->downloadData(); + } } - -public function list_image(){ - $images = $openstack->imagesV2()->listImages(); - return $images; -} - - -public function image_details($id){ - $service = $openstack->imagesV2(); - $image = $service->getImage($id); - return $image; -} - - -public function update_image($id, array $opt){ - $service = $openstack->imagesV2(); - - //OPTIONS A VOIR - $image = $service->getImage($id); - $image->update([ - 'minDisk' => 1, - 'minRam' => 1, - 'name' => $opt[name], - 'protected' => false, - 'visibility' => $opt[visibility], - ]); - - return $image; -} - -// RETOUR A VOIR -public function delete_image($name){ - $openstack->imagesV2()->getImage($name)->delete(); -} - -// RETOUR A VOIR -public function reactivate_image($id){ - $service = $openstack->imagesV2(); - $image = $service->getImage($id); - $image->reactivate(); -} - -// RETOUR A VOIR -public function desactivate_function($id){ - $service = $openstack->imagesV2(); - $image = $service->getImage($id); - $image->deactivate(); -} - -// RETOUR A VOIR -public function upload_image($id, $file_name){ - $service = $openstack->imagesV2(); - $image = $service->getImage($id); - $stream = \GuzzleHttp\Psr7\stream_for(fopen($file_name, 'r')); // A VOIR - $image->uploadData($stream); -} - -// RETOUR A VOIR -public function download_image($id){ - $service = $openstack->imagesV2(); - $image = $service->getImage($id); - $stream = $image->downloadData(); -} - - ?> diff --git a/server/test.php b/server/test.php index 16555e4..4e6743f 100644 --- a/server/test.php +++ b/server/test.php @@ -2,6 +2,7 @@ ini_set('display_errors', 1); date_default_timezone_set("Europe/Paris"); require 'vendor/autoload.php'; +include("core/Image.php"); $options = Array(); $options["user"] = Array("name"=>"admin", "password"=>"ae5or6cn", "domain"=>["id"=>"Default"]); @@ -26,11 +27,21 @@ $openstack = new OpenStack\OpenStack($options); ] ]); */ -$compute = $openstack->computeV2(["region" => "RegionOne"]); +//$compute = $openstack->computeV2(["region" => "RegionOne"]); + +//$image= $openstack->imagesV2(["region" => "RegionOne"]); +$optImage = Array(); +$optImage["region"] = "RegionOne"; +$image = new Image($openstack, $optImage); + + +$images = $image->list_images(); + //var_dump($compute->client); //$servers = $compute->listServers(true); -//foreach($servers as $server){ -// echo $server->id." !!! "; -// echo $server->name." !!! "; -//} +foreach($images as $i){ + //echo $server->id." !!! "; + echo $i->name; + echo "
"; +} From 325362a386687dd77c6c42dc5ab266d646bd9842 Mon Sep 17 00:00:00 2001 From: "yogg@epsina.com" Date: Sun, 31 Jan 2016 11:36:58 +0100 Subject: [PATCH 03/11] list_images and images_details --- server/core/Image.php | 30 ++++++++++++++++++------------ server/test.php | 22 +++++++++++++++++----- 2 files changed, 35 insertions(+), 17 deletions(-) diff --git a/server/core/Image.php b/server/core/Image.php index 242bb5f..498ebe8 100644 --- a/server/core/Image.php +++ b/server/core/Image.php @@ -22,10 +22,8 @@ class Image { } public function create_image(array $opt){ - $service = $openstack->imagesV2(); - // OPTIONS A VOIR - $image = $service->createImage([ + $image = $this->oidentity->createImage([ 'name' => $opt[name], 'tags' => ['{tag1}', '{tag2}'], // A VOIR 'containerFormat' => $opt[containerFormat], @@ -43,20 +41,27 @@ class Image { * List images */ public function list_images(){ - $images = $this->oidentity->listImages(); + $service = $this->oidentity; + $images = $service->listImages(); return $images; } - + /* + * Details about an image + * + * @param string $id + * identifier of the image + * + */ public function image_details($id){ - $service = $openstack->imagesV2(); + $service = $this->oidentity; $image = $service->getImage($id); return $image; } public function update_image($id, array $opt){ - $service = $openstack->imagesV2(); + $service = $this->oidentity; //OPTIONS A VOIR $image = $service->getImage($id); @@ -73,26 +78,27 @@ class Image { // RETOUR A VOIR public function delete_image($name){ - $openstack->imagesV2()->getImage($name)->delete(); + $service = $this->oidentity; + $service->getImage($name)->delete(); } // RETOUR A VOIR public function reactivate_image($id){ - $service = $openstack->imagesV2(); + $service = $this->oidentity; $image = $service->getImage($id); $image->reactivate(); } // RETOUR A VOIR public function desactivate_function($id){ - $service = $openstack->imagesV2(); + $service = $this->oidentity; $image = $service->getImage($id); $image->deactivate(); } // RETOUR A VOIR public function upload_image($id, $file_name){ - $service = $openstack->imagesV2(); + $service = $this->oidentity; $image = $service->getImage($id); $stream = \GuzzleHttp\Psr7\stream_for(fopen($file_name, 'r')); // A VOIR $image->uploadData($stream); @@ -100,7 +106,7 @@ class Image { // RETOUR A VOIR public function download_image($id){ - $service = $openstack->imagesV2(); + $service = $this->oidentity; $image = $service->getImage($id); $stream = $image->downloadData(); } diff --git a/server/test.php b/server/test.php index 4e6743f..6881923 100644 --- a/server/test.php +++ b/server/test.php @@ -16,7 +16,6 @@ $openstack = new OpenStack\OpenStack($options); // Since usernames will not be unique across an entire OpenStack installation, // when authenticating with them you must also provide your domain ID. You do // not have to do this if you authenticate with a user ID. - /*$token = $identity->generateToken([ 'user' => [ 'name' => 'admin', @@ -28,20 +27,33 @@ $openstack = new OpenStack\OpenStack($options); ]); */ //$compute = $openstack->computeV2(["region" => "RegionOne"]); - //$image= $openstack->imagesV2(["region" => "RegionOne"]); +//var_dump($compute->client); +//$servers = $compute->listServers(true); + +// Initialisation Image() $optImage = Array(); $optImage["region"] = "RegionOne"; $image = new Image($openstack, $optImage); +//Liste des images $images = $image->list_images(); -//var_dump($compute->client); -//$servers = $compute->listServers(true); +echo "Images présentes :"; +echo "
"; foreach($images as $i){ - //echo $server->id." !!! "; echo $i->name; + if($i->name == "TinyCore"){ + $id_image = $i->id; + } echo "
"; } +echo "
"; + + +// Détails Image +$details = $image->image_details($id_image); + +?> \ No newline at end of file From 10a6cd146db2bc509059d07ff8b7887445524cab Mon Sep 17 00:00:00 2001 From: "yogg@epsina.com" Date: Sun, 31 Jan 2016 13:00:04 +0100 Subject: [PATCH 04/11] Add create_image and delete_image --- server/core/Image.php | 26 +++++++++++++++++--------- server/test.php | 18 ++++++++++++++++-- 2 files changed, 33 insertions(+), 11 deletions(-) diff --git a/server/core/Image.php b/server/core/Image.php index 498ebe8..bf67e75 100644 --- a/server/core/Image.php +++ b/server/core/Image.php @@ -21,17 +21,25 @@ class Image { //$this->plugins = $apiP; } + + /* + * Details about an image + * + * @param array $opt + * options for the image creation + * + */ public function create_image(array $opt){ - // OPTIONS A VOIR + // VOIR COMMENT RENDRE LES CHAMPS OPTIONNELS (SAUF NAME) $image = $this->oidentity->createImage([ - 'name' => $opt[name], - 'tags' => ['{tag1}', '{tag2}'], // A VOIR - 'containerFormat' => $opt[containerFormat], - 'diskFormat' => $opt[diskFormat], - 'visibility' => $opt[visibility], - 'minDisk' => 10, - 'protected' => true, - 'minRam' => 10, + 'name' => $opt['name'], + //'tags' => $opt['tag'], // A VOIR COMMENT CA MARCHE + 'containerFormat' => $opt['containerFormat'], + 'diskFormat' => $opt['diskFormat'], + 'visibility' => $opt['visibility'], + 'minDisk' => $opt['minDisk'], + 'protected' => $opt['protected'], + 'minRam' => $opt['minRam'], ]); return $image; diff --git a/server/test.php b/server/test.php index 6881923..ce262fa 100644 --- a/server/test.php +++ b/server/test.php @@ -36,6 +36,17 @@ $optImage = Array(); $optImage["region"] = "RegionOne"; $image = new Image($openstack, $optImage); +$opt = Array(); +$opt['name'] = "Test"; +//$opt['tags'] = 'test'; +$opt['containerFormat'] = 'ami'; +$opt['diskFormat'] = 'iso'; +$opt['visibility'] = 'public'; +$opt['minDisk'] = 1; +$opt['protected'] = true; +$opt['minRam'] = 10; + +//$new_image = $image->create_image($opt); //Liste des images $images = $image->list_images(); @@ -45,7 +56,7 @@ echo "
"; foreach($images as $i){ echo $i->name; - if($i->name == "TinyCore"){ + if($i->name == "Test"){ $id_image = $i->id; } echo "
"; @@ -54,6 +65,9 @@ echo "
"; // Détails Image -$details = $image->image_details($id_image); +//$details = $image->image_details($id_image); + +//$image->delete_image($id_image); + ?> \ No newline at end of file From 0db8d0ebbe36528346987cb21db67f31bfbe6017 Mon Sep 17 00:00:00 2001 From: "yogg@epsina.com" Date: Sun, 31 Jan 2016 17:47:06 +0100 Subject: [PATCH 05/11] Add activate_image, desactivate_image, uplaod_image --- server/core/Image.php | 49 +++++++++++++++++++++++++++++++------------ server/test.php | 8 ++++++- 2 files changed, 43 insertions(+), 14 deletions(-) diff --git a/server/core/Image.php b/server/core/Image.php index bf67e75..c9d9845 100644 --- a/server/core/Image.php +++ b/server/core/Image.php @@ -8,27 +8,27 @@ 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 COMMENT RENDRE LES CHAMPS OPTIONNELS (SAUF NAME) $image = $this->oidentity->createImage([ @@ -54,13 +54,13 @@ class Image { return $images; } - /* + /** * Details about an image * * @param string $id * identifier of the image * - */ + **/ public function image_details($id){ $service = $this->oidentity; $image = $service->getImage($id); @@ -84,27 +84,50 @@ class Image { return $image; } - // RETOUR A VOIR - public function delete_image($name){ + /** + * Delete an image + * + * @param string $id + * identifier of the image + **/ + public function delete_image($id){ $service = $this->oidentity; - $service->getImage($name)->delete(); + $service->getImage($id)->delete(); } - // RETOUR A VOIR + /** + * Resactive an image + * + * @param string $id + * identifier of the image + **/ public function reactivate_image($id){ $service = $this->oidentity; $image = $service->getImage($id); $image->reactivate(); } - // RETOUR A VOIR - public function desactivate_function($id){ + /** + * Desactive an image + * + * @param string $id + * identifier of the image + **/ + public function desactivate_image($id){ $service = $this->oidentity; $image = $service->getImage($id); $image->deactivate(); } - // RETOUR A VOIR + /** + * 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){ $service = $this->oidentity; $image = $service->getImage($id); diff --git a/server/test.php b/server/test.php index ce262fa..322dee4 100644 --- a/server/test.php +++ b/server/test.php @@ -43,7 +43,7 @@ $opt['containerFormat'] = 'ami'; $opt['diskFormat'] = 'iso'; $opt['visibility'] = 'public'; $opt['minDisk'] = 1; -$opt['protected'] = true; +$opt['protected'] = false; $opt['minRam'] = 10; //$new_image = $image->create_image($opt); @@ -58,6 +58,7 @@ foreach($images as $i){ echo $i->name; if($i->name == "Test"){ $id_image = $i->id; + echo $i->status; } echo "
"; } @@ -69,5 +70,10 @@ echo "
"; //$image->delete_image($id_image); +//$image->desactivate_image($id_image); +//$image->reactivate_image($id_image); + +//$file_name = "/home/yogg/Downloads/TinyCore-6.4.1.iso"; +//$image->upload_image($id_image, $file_name); ?> \ No newline at end of file From 6e7c71db77fc68b7c3d1149b830a838b81cdb718 Mon Sep 17 00:00:00 2001 From: "yogg@epsina.com" Date: Sun, 31 Jan 2016 18:28:09 +0100 Subject: [PATCH 06/11] Add update_image and download_image --- server/core/Image.php | 32 ++++++++++++++++++++++---------- server/test.php | 13 +++++++++++++ 2 files changed, 35 insertions(+), 10 deletions(-) diff --git a/server/core/Image.php b/server/core/Image.php index c9d9845..a986a40 100644 --- a/server/core/Image.php +++ b/server/core/Image.php @@ -67,18 +67,24 @@ class Image { 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){ $service = $this->oidentity; - - //OPTIONS A VOIR $image = $service->getImage($id); $image->update([ - 'minDisk' => 1, - 'minRam' => 1, - 'name' => $opt[name], - 'protected' => false, - 'visibility' => $opt[visibility], + 'minDisk' => $opt['minDisk'], + 'minRam' => $opt['minRam'], + 'name' => $opt['name'], + 'protected' => $opt['protected'], + 'visibility' => $opt['visibility'], ]); return $image; @@ -135,11 +141,17 @@ class Image { $image->uploadData($stream); } - // RETOUR A VOIR - public function download_image($id){ + /** + * Download an image + * + * @param string $id + * identifier of the image + */ + public function download_image($id){ $service = $this->oidentity; $image = $service->getImage($id); $stream = $image->downloadData(); + return $stream; } } ?> diff --git a/server/test.php b/server/test.php index 322dee4..71039e8 100644 --- a/server/test.php +++ b/server/test.php @@ -76,4 +76,17 @@ echo "
"; //$file_name = "/home/yogg/Downloads/TinyCore-6.4.1.iso"; //$image->upload_image($id_image, $file_name); +//$image->download_image($id_image); + +/* +$opt_update = Array(); +$opt_update['name'] = "TestUpdate"; +$opt_update['visibility'] = 'public'; +$opt_update['minDisk'] = 1; +$opt_update['protected'] = false; +$opt_update['minRam'] = 15; + +$update = $image->update_image($id_image, $opt_update); +echo $update->name; +*/ ?> \ No newline at end of file From 8ad2a0aacd280ec29a6b53e7663b968068f89ab9 Mon Sep 17 00:00:00 2001 From: "yogg@epsina.com" Date: Sun, 31 Jan 2016 19:48:30 +0100 Subject: [PATCH 07/11] Modification of options for create_image --- server/core/Image.php | 46 ++++++++++++++++++++++++++++++++----------- server/test.php | 11 ++++++++--- 2 files changed, 42 insertions(+), 15 deletions(-) diff --git a/server/core/Image.php b/server/core/Image.php index a986a40..37efa9d 100644 --- a/server/core/Image.php +++ b/server/core/Image.php @@ -1,7 +1,6 @@ oidentity->createImage([ - 'name' => $opt['name'], - //'tags' => $opt['tag'], // A VOIR COMMENT CA MARCHE - 'containerFormat' => $opt['containerFormat'], - 'diskFormat' => $opt['diskFormat'], - 'visibility' => $opt['visibility'], - 'minDisk' => $opt['minDisk'], - 'protected' => $opt['protected'], - 'minRam' => $opt['minRam'], - ]); + // VOIR SI MAUVAIS TYPE + $options = Array(); + if(array_key_exists('name', $opt)){ // string, rendre le nom obligatoire + $options['name'] = $opt['name']; + } + if(array_key_exists('id', $opt)){ // UUID : nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn + $options['id'] = $opt['id']; + } + if(array_key_exists('visibility', $opt)){ // public, private + $options['visibility'] = $opt['visibility']; + } + if(array_key_exists('tags', $opt)){ // list + $options['tags'] = $opt['tags']; + } + if(array_key_exists('containerFormat', $opt)){ // string : ami, ari, aki, bare, ovf, ova, docker + $options['containerFormat'] = $opt['containerFormat']; + } + if(array_key_exists('diskFormat', $opt)){ // string : ami, ari, aki, vhd, vmdk, raw, qcow2, vdi, iso + $options['diskFormat'] = $opt['diskFormat']; + } + if(array_key_exists('minDisk', $opt)){ //int + $options['minDisk'] = $opt['minDisk']; + } + if(array_key_exists('minRam', $opt)){ // int + $options['minRam'] = $opt['minRam']; + } + if(array_key_exists('protected', $opt)){ // boolean + $options['protected'] = $opt['protected']; + } + if(array_key_exists('properties', $opt)){ // type dict ? + $options['properties'] = $opt['properties']; + } + + $image = $this->oidentity->createImage($options); return $image; } diff --git a/server/test.php b/server/test.php index 71039e8..47d780b 100644 --- a/server/test.php +++ b/server/test.php @@ -38,9 +38,9 @@ $image = new Image($openstack, $optImage); $opt = Array(); $opt['name'] = "Test"; -//$opt['tags'] = 'test'; -$opt['containerFormat'] = 'ami'; -$opt['diskFormat'] = 'iso'; +$opt['tags'] = ['test', 'openstack']; +//$opt['containerFormat'] = 'ami'; +//$opt['diskFormat'] = 'iso'; $opt['visibility'] = 'public'; $opt['minDisk'] = 1; $opt['protected'] = false; @@ -58,12 +58,17 @@ foreach($images as $i){ echo $i->name; if($i->name == "Test"){ $id_image = $i->id; + $list = $i->tags; echo $i->status; } echo "
"; } echo "
"; +foreach ($list as $l) { + echo $l; + echo "
"; +} // Détails Image //$details = $image->image_details($id_image); From e2dacb129e75111559a6f16252009b031c2baeb4 Mon Sep 17 00:00:00 2001 From: "yogg@epsina.com" Date: Sun, 31 Jan 2016 19:57:05 +0100 Subject: [PATCH 08/11] Modification of options for update_image --- server/core/Image.php | 26 +++++++++++++++++++------- server/test.php | 6 +----- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/server/core/Image.php b/server/core/Image.php index 37efa9d..cfd190d 100644 --- a/server/core/Image.php +++ b/server/core/Image.php @@ -101,13 +101,25 @@ class Image { public function update_image($id, array $opt){ $service = $this->oidentity; $image = $service->getImage($id); - $image->update([ - 'minDisk' => $opt['minDisk'], - 'minRam' => $opt['minRam'], - 'name' => $opt['name'], - 'protected' => $opt['protected'], - 'visibility' => $opt['visibility'], - ]); + $options = Array(); + + // Voir vérification des types + if(array_key_exists('name', $opt)){ //string + $options['name'] = $opt['name']; + } + if(array_key_exists('minDisk', $opt)){ //int + $options['minDisk'] = $opt['minDisk']; + } + if(array_key_exists('minRam', $opt)){ // int + $options['minRam'] = $opt['minRam']; + } + if(array_key_exists('protected', $opt)){ // boolean + $options['protected'] = $opt['protected']; + } + if(array_key_exists('visibility', $opt)){ // public, private + $options['visibility'] = $opt['visibility']; + } + $image->update($options); return $image; } diff --git a/server/test.php b/server/test.php index 47d780b..d7ee6f6 100644 --- a/server/test.php +++ b/server/test.php @@ -85,11 +85,7 @@ foreach ($list as $l) { /* $opt_update = Array(); -$opt_update['name'] = "TestUpdate"; -$opt_update['visibility'] = 'public'; -$opt_update['minDisk'] = 1; -$opt_update['protected'] = false; -$opt_update['minRam'] = 15; +$opt_update['name'] = "Test"; $update = $image->update_image($id_image, $opt_update); echo $update->name; From ab6e45d5e152518fd07c7bbce6f5eb2f42b30e07 Mon Sep 17 00:00:00 2001 From: Yoggzo Date: Tue, 2 Feb 2016 11:15:51 +0100 Subject: [PATCH 09/11] Modifications of create_image and update_image --- server/core/Image.php | 33 ++++++++++++++++++--------------- server/test.php | 10 +++++++--- 2 files changed, 25 insertions(+), 18 deletions(-) diff --git a/server/core/Image.php b/server/core/Image.php index cfd190d..d345034 100644 --- a/server/core/Image.php +++ b/server/core/Image.php @@ -31,34 +31,34 @@ class Image { public function create_image(array $opt){ // VOIR SI MAUVAIS TYPE $options = Array(); - if(array_key_exists('name', $opt)){ // string, rendre le nom obligatoire + if(isset($opt['name'])){ // string, rendre le nom obligatoire $options['name'] = $opt['name']; } - if(array_key_exists('id', $opt)){ // UUID : nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn + if(isset($opt['id'])){ // UUID : nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn $options['id'] = $opt['id']; } - if(array_key_exists('visibility', $opt)){ // public, private + if(isset($opt['visibility'])){ // public, private $options['visibility'] = $opt['visibility']; } - if(array_key_exists('tags', $opt)){ // list + if(isset($opt['tags'])){ // list $options['tags'] = $opt['tags']; } - if(array_key_exists('containerFormat', $opt)){ // string : ami, ari, aki, bare, ovf, ova, docker + if(isset($opt['containerFormat'])){ // string : ami, ari, aki, bare, ovf, ova, docker $options['containerFormat'] = $opt['containerFormat']; } - if(array_key_exists('diskFormat', $opt)){ // string : ami, ari, aki, vhd, vmdk, raw, qcow2, vdi, iso + if(isset($opt['diskFormat'])){ // string : ami, ari, aki, vhd, vmdk, raw, qcow2, vdi, iso $options['diskFormat'] = $opt['diskFormat']; } - if(array_key_exists('minDisk', $opt)){ //int + if(isset($opt['minDisk'])){ //int $options['minDisk'] = $opt['minDisk']; } - if(array_key_exists('minRam', $opt)){ // int + if(isset($opt['minRam'])){ // int $options['minRam'] = $opt['minRam']; } - if(array_key_exists('protected', $opt)){ // boolean + if(isset($opt['protected'])){ // boolean $options['protected'] = $opt['protected']; } - if(array_key_exists('properties', $opt)){ // type dict ? + if(isset($opt['properties'])){ // type dict ? $options['properties'] = $opt['properties']; } @@ -104,21 +104,24 @@ class Image { $options = Array(); // Voir vérification des types - if(array_key_exists('name', $opt)){ //string + if(isset($opt['name'])){ //string $options['name'] = $opt['name']; } - if(array_key_exists('minDisk', $opt)){ //int + if(isset($opt['minDisk'])){ //int $options['minDisk'] = $opt['minDisk']; } - if(array_key_exists('minRam', $opt)){ // int + if(isset($opt['minRam'])){ // int $options['minRam'] = $opt['minRam']; } - if(array_key_exists('protected', $opt)){ // boolean + if(isset($opt['protected'])){ // boolean $options['protected'] = $opt['protected']; } - if(array_key_exists('visibility', $opt)){ // public, private + if(isset($opt['visibility'])){ // public, private $options['visibility'] = $opt['visibility']; } + if(isset($opt['tags'])){ // list + $options['tags'] = $opt['tags']; + } $image->update($options); return $image; diff --git a/server/test.php b/server/test.php index d7ee6f6..196be0d 100644 --- a/server/test.php +++ b/server/test.php @@ -65,9 +65,11 @@ foreach($images as $i){ } echo "
"; -foreach ($list as $l) { - echo $l; - echo "
"; +if(isset($list)){ + foreach ($list as $l) { + echo $l; + echo "
"; + } } // Détails Image @@ -86,8 +88,10 @@ foreach ($list as $l) { /* $opt_update = Array(); $opt_update['name'] = "Test"; +$opt_update['tags'] = null; $update = $image->update_image($id_image, $opt_update); echo $update->name; */ + ?> \ No newline at end of file From f58a83ffdad5b70026b05cb94874fa8824e6d93a Mon Sep 17 00:00:00 2001 From: Yoggzo Date: Sat, 6 Feb 2016 13:18:55 +0100 Subject: [PATCH 10/11] Add features for image members --- server/core/Image.php | 80 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 79 insertions(+), 1 deletion(-) diff --git a/server/core/Image.php b/server/core/Image.php index d345034..75c1305 100644 --- a/server/core/Image.php +++ b/server/core/Image.php @@ -34,6 +34,9 @@ class Image { if(isset($opt['name'])){ // string, rendre le nom obligatoire $options['name'] = $opt['name']; } + else{ + //ERROR + } if(isset($opt['id'])){ // UUID : nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn $options['id'] = $opt['id']; } @@ -183,12 +186,87 @@ class Image { * * @param string $id * identifier of the image - */ + **/ public function download_image($id){ $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){ + $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){ + $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){ + $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){ + $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){ + $service = $this->oidentity; + $member = $service>getImage($image_id)->getMember($member_id)->updateStatus($status); + } + } ?> From 43b65e1dbb53300d076f5885b5393ff68e248dd1 Mon Sep 17 00:00:00 2001 From: Yoggzo Date: Sun, 7 Feb 2016 10:24:59 +0100 Subject: [PATCH 11/11] Ajout de commentaires pour la gestion d'erreurs --- server/core/Image.php | 27 ++++++++++++++++++++++++--- server/test.php | 2 +- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/server/core/Image.php b/server/core/Image.php index 75c1305..b83d155 100644 --- a/server/core/Image.php +++ b/server/core/Image.php @@ -31,8 +31,7 @@ class Image { public function create_image(array $opt){ // VOIR SI MAUVAIS TYPE $options = Array(); - if(isset($opt['name'])){ // string, rendre le nom obligatoire - $options['name'] = $opt['name']; + if(isset($opt['name'])){ // string, rendre le nom obligatoire, vérifier nom pas déjà pris } else{ //ERROR @@ -74,6 +73,7 @@ class Image { * List images */ public function list_images(){ + // vérifier si au moins une image $service = $this->oidentity; $images = $service->listImages(); return $images; @@ -87,6 +87,7 @@ class Image { * **/ public function image_details($id){ + //vérifier existence image $service = $this->oidentity; $image = $service->getImage($id); return $image; @@ -102,6 +103,7 @@ class Image { * 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(); @@ -137,6 +139,8 @@ class Image { * 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(); } @@ -148,6 +152,7 @@ class Image { * identifier of the image **/ public function reactivate_image($id){ + // vérifier existence image $service = $this->oidentity; $image = $service->getImage($id); $image->reactivate(); @@ -160,6 +165,7 @@ class Image { * identifier of the image **/ public function desactivate_image($id){ + // vérifier existence image $service = $this->oidentity; $image = $service->getImage($id); $image->deactivate(); @@ -175,6 +181,7 @@ class Image { * 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 @@ -187,7 +194,8 @@ class Image { * @param string $id * identifier of the image **/ - public function download_image($id){ + public function download_image($id){ + // vérifier existence image $service = $this->oidentity; $image = $service->getImage($id); $stream = $image->downloadData(); @@ -204,6 +212,9 @@ class Image { * 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); } @@ -216,6 +227,7 @@ class Image { * 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(); @@ -232,6 +244,9 @@ class Image { * 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; @@ -247,6 +262,9 @@ class Image { * 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(); } @@ -264,6 +282,9 @@ class Image { * 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); } diff --git a/server/test.php b/server/test.php index 196be0d..f0e68c4 100644 --- a/server/test.php +++ b/server/test.php @@ -75,7 +75,7 @@ if(isset($list)){ // Détails Image //$details = $image->image_details($id_image); -//$image->delete_image($id_image); +//$image->delete_image('123456'); //$image->desactivate_image($id_image); //$image->reactivate_image($id_image);