From 24773559e2d6e6c418baf97a6e9d41917d4cb244 Mon Sep 17 00:00:00 2001 From: manzerbredes Date: Mon, 29 Feb 2016 09:32:12 +0100 Subject: [PATCH 01/17] Test --- client/js/services/Compute.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/js/services/Compute.js b/client/js/services/Compute.js index 8148948..e0c28ae 100644 --- a/client/js/services/Compute.js +++ b/client/js/services/Compute.js @@ -21,7 +21,7 @@ mainApp.factory('Compute',[ '$http', 'Identity', function($http, Identity){ "token" : Identity.getToken(), "task" : "compute", "action":"getServer", - "serverId":"69d5bcc4-2fab-4634-b0d2-f455fee5b7bd" + "serverId":"a2926ce3-501b-4285-82ce-c6e451295599" }; var result=$http.post('../server/index.php', @@ -29,7 +29,7 @@ mainApp.factory('Compute',[ '$http', 'Identity', function($http, Identity){ // Wait and handle the response result.then(function (response){ - console.log(response.data.Servers); + console.log(response.data.MyServer.image); callback(parseGetMachinesAnswer(response, false)); },function(response){ alert(response.status); From 1af80a481fa49d4d48f5f0d711e60359bcc93614 Mon Sep 17 00:00:00 2001 From: Yoggzo Date: Mon, 29 Feb 2016 15:30:42 +0100 Subject: [PATCH 02/17] Add error management --- server/core/Image.php | 575 +++++++++++++++++++++++++++++++----------- 1 file changed, 433 insertions(+), 142 deletions(-) diff --git a/server/core/Image.php b/server/core/Image.php index 3001eea..4025595 100644 --- a/server/core/Image.php +++ b/server/core/Image.php @@ -1,7 +1,4 @@ app = $app; - $this->libClass = $app->getLibClass("Image"); + if(!isset($app)){ + $this->app->setOutput("Error", "Incorrect parameter"); + } + try{ + $this->app = $app; + $this->libClass = $app->getLibClass("Image"); + }catch(BadResponseError $e){ + $this->app->getErrorInstance()->BadResponseHandler($e); + }catch(UserInputError $e){ + $this->app->getErrorInstance->UserInputHandler($e); + }catch(BaseError $e){ + $this->app->getErrorInstance->BaseErrorHandler($e); + }catch(NotImplementedError $e){ + $this->app->getErrorInstance->NotImplementedHandler($e); + } } - + /** + * Execute an action + * + * @param String $action name of another function of this class + * + * @return void + */ + public function action($action){ + + $this->{$action.""}(); + + } /** * Details about an image @@ -57,55 +76,96 @@ class image{ * 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']; - } + private function createImage(array $opt){ - $image = $this->oidentity->createImage($options); + if(!isset($opt)){ + $this->app->setOutput("Error", "Incorrect parameter"); + } + + try{ + // VOIR SI MAUVAIS TYPE + $options = Array(); + if(isset($opt['name'])){ // if the image name already exists -> error + $imagesList = listImage(); + if(isset($images)){ + foreach($imagesList as $image){ + if(strcmp($image->name, $opt['name']) == 0){ + + } + } + } + + } + else{ + $this->app->setOutput("Error", "Image name already exists"); + } + if(isset($opt['id'])){ // UUID : nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn + if($this->libClass->getImage($opt['id']) != null){ // if the id already exists -> error + + } + $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->libClass->createImage($options); + }catch(BadResponseError $e){ + $this->app->getErrorInstance()->BadResponseHandler($e); + }catch(UserInputError $e){ + $this->app->getErrorInstance->UserInputHandler($e); + }catch(BaseError $e){ + $this->app->getErrorInstance->BaseErrorHandler($e); + }catch(NotImplementedError $e){ + $this->app->getErrorInstance->NotImplementedHandler($e); + } return $image; } - /* - * List images + /** + * List the images of the server + * + * @return the list with all images on the server */ - public function list_images(){ - // vérifier si au moins une image - $service = $this->oidentity; - $images = $service->listImages(); - return $images; + private function listImage(){ + try{ + $l = $this->libClass->listImages(); + if(!isset($l)){ // if the list is empty there is no images + $this->app->setOutput("Error", "No image"); + } + }catch(BadResponseError $e){ + $this->app->getErrorInstance()->BadResponseHandler($e); + }catch(UserInputError $e){ + $this->app->getErrorInstance->UserInputHandler($e); + }catch(BaseError $e){ + $this->app->getErrorInstance->BaseErrorHandler($e); + }catch(NotImplementedError $e){ + $this->app->getErrorInstance->NotImplementedHandler($e); + } + return $l; + } /** @@ -115,11 +175,27 @@ class image{ * identifier of the image * **/ - public function image_details($id){ - //vérifier existence image - $service = $this->oidentity; - $image = $service->getImage($id); - return $image; + private function detailsImage($id){ + if(!isset($id)){ + // Renvoyer erreur + } + try{ + $service = $this->libClass; + $image = $service->getImage($id); + if($image == null){ // if the image don't exists -> error + $this->app->setOutput("Error", "Image doesn't exist"); + } + + return $image; + }catch(BadResponseError $e){ + $this->app->getErrorInstance()->BadResponseHandler($e); + }catch(UserInputError $e){ + $this->app->getErrorInstance->UserInputHandler($e); + }catch(BaseError $e){ + $this->app->getErrorInstance->BaseErrorHandler($e); + }catch(NotImplementedError $e){ + $this->app->getErrorInstance->NotImplementedHandler($e); + } } /** @@ -131,33 +207,53 @@ class 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(); + private function updateImage($id, array $opt){ + if(!isset($id)){ + $this->app->setOutput("Error", "Incorrect id parameter"); + } + if(!isset($opt)){ + $this->app->setOutput("Error", "Incorrect opt parameter"); + } - // 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); + try{ + //vérifier existence image + $service = $this->libClass; + $image = $service->getImage($id); + if($image == null){ // if the image don't exists -> error + $this->app->setOutput("Error", "Image doesn't exist"); + } + $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); + }catch(BadResponseError $e){ + $this->app->getErrorInstance()->BadResponseHandler($e); + }catch(UserInputError $e){ + $this->app->getErrorInstance->UserInputHandler($e); + }catch(BaseError $e){ + $this->app->getErrorInstance->BaseErrorHandler($e); + }catch(NotImplementedError $e){ + $this->app->getErrorInstance->NotImplementedHandler($e); + } return $image; } @@ -167,11 +263,30 @@ class image{ * @param string $id * identifier of the image **/ - public function delete_image($id){ + private function deleteImage($id){ // si protected = true, demander de le mettre a false // vérifier existence image - $service = $this->oidentity; - $service->getImage($id)->delete(); + if(!isset($id)){ + $this->app->setOutput("Error", "Image doesn't exist"); + } + + try{ + $service = $this->libClass; + $image = $this->libClass->getImage($id); + if($image == null){ // if the image don't exists -> error + $this->app->setOutput("Error", "Image doesn't exist"); + } + $image->delete(); + }catch(BadResponseError $e){ + $this->app->getErrorInstance()->BadResponseHandler($e); + }catch(UserInputError $e){ + $this->app->getErrorInstance->UserInputHandler($e); + }catch(BaseError $e){ + $this->app->getErrorInstance->BaseErrorHandler($e); + }catch(NotImplementedError $e){ + $this->app->getErrorInstance->NotImplementedHandler($e); + } + } /** @@ -180,11 +295,27 @@ class 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(); + private function reactivateImage($id){ + if(!isset($id)){ + $this->app->setOutput("Error", "Incorrect parameter"); + } + try{ + // vérifier existence image + $service = $this->libClass; + $image = $service->getImage($id); + if($image == null){ // if the image don't exists -> error + $this->app->setOutput("Error", "Image doesn't exist"); + } + $image->reactivate(); + }catch(BadResponseError $e){ + $this->app->getErrorInstance()->BadResponseHandler($e); + }catch(UserInputError $e){ + $this->app->getErrorInstance->UserInputHandler($e); + }catch(BaseError $e){ + $this->app->getErrorInstance->BaseErrorHandler($e); + }catch(NotImplementedError $e){ + $this->app->getErrorInstance->NotImplementedHandler($e); + } } /** @@ -193,11 +324,27 @@ class 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(); + private function desactivateImage($id){ + if(!isset($id)){ + $this->app->setOutput("Error", "Incorrect parameter"); + } + try{ + // vérifier existence image + $service = $this->libClass; + $image = $service->getImage($id); + if($image == null){ // if the image don't exists -> error + $this->app->setOutput("Error", "Image doesn't exist"); + } + $image->deactivate(); + }catch(BadResponseError $e){ + $this->app->getErrorInstance()->BadResponseHandler($e); + }catch(UserInputError $e){ + $this->app->getErrorInstance->UserInputHandler($e); + }catch(BaseError $e){ + $this->app->getErrorInstance->BaseErrorHandler($e); + }catch(NotImplementedError $e){ + $this->app->getErrorInstance->NotImplementedHandler($e); + } } /** @@ -209,12 +356,31 @@ class 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); + private function uploadImage($id, $file_name){ + if(!isset($id)){ + $this->app->setOutput("Error", "Incorrect id parameter"); + } + if(!isset($file_name)){ + $this->app->setOutput("Error", "Incorrect file_name parameter"); + } + try{ + // vérifier existence image + $service = $this->libClass; + $image = $service->getImage($id); + if($image == null){ // if the image don't exists -> error + $this->app->setOutput("Error", "Image doesn't exist"); + } + $stream = \GuzzleHttp\Psr7\stream_for(fopen($file_name, 'r')); + $image->uploadData($stream); + }catch(BadResponseError $e){ + $this->app->getErrorInstance()->BadResponseHandler($e); + }catch(UserInputError $e){ + $this->app->getErrorInstance->UserInputHandler($e); + }catch(BaseError $e){ + $this->app->getErrorInstance->BaseErrorHandler($e); + }catch(NotImplementedError $e){ + $this->app->getErrorInstance->NotImplementedHandler($e); + } } /** @@ -223,12 +389,28 @@ class 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; + private function downloadImage($id){ + if(!isset($id)){ + $this->app->setOutput("Error", "Incorrect parameter"); + } + try{ + // vérifier existence image + $service = $this->libClass; + $image = $service->getImage($id); + if($image == null){ // if the image don't exists -> error + $this->app->setOutput("Error", "Image doesn't exist"); + } + $stream = $image->downloadData(); + }catch(BadResponseError $e){ + $this->app->getErrorInstance()->BadResponseHandler($e); + }catch(UserInputError $e){ + $this->app->getErrorInstance->UserInputHandler($e); + }catch(BaseError $e){ + $this->app->getErrorInstance->BaseErrorHandler($e); + }catch(NotImplementedError $e){ + $this->app->getErrorInstance->NotImplementedHandler($e); + } + return $stream; } /** @@ -240,12 +422,30 @@ class 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); + private function addMemberImage($image_id, $member_id){ + if(!isset($image_id)){ + $this->app->setOutput("Error", "Incorrect parameter image_id"); + } + if(!isset($member_id)){ + $this->app->setOutput("Error", "Incorrect parameter member_id"); + } + try{ + $service = $this->libClass; + + $image = $service->getImage($id); + if($image == null){ // if the image don't exists -> error + $this->app->setOutput("Error", "Image doesn't exist"); + } + $member_id = $image->addMember($member_id); + }catch(BadResponseError $e){ + $this->app->getErrorInstance()->BadResponseHandler($e); + }catch(UserInputError $e){ + $this->app->getErrorInstance->UserInputHandler($e); + }catch(BaseError $e){ + $this->app->getErrorInstance->BaseErrorHandler($e); + }catch(NotImplementedError $e){ + $this->app->getErrorInstance->NotImplementedHandler($e); + } } @@ -255,11 +455,33 @@ class 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(); + private function listMemberImage($image_id, $member_id){ + if(!isset($image_id)){ + $this->app->setOutput("Error", "Incorrect parameter image_id"); + } + if(!isset($member_id)){ + $this->app->setOutput("Error", "Incorrect parameter member_id"); + } + try{ + // vérifier existence image + $service = $this->libClass; + $image = $service->getImage($image_id); + if($image == null){ // if the image don't exists -> error + $this->app->setOutput("Error", "Image doesn't exist"); + } + $members = $image->listMembers(); + if($member == null){ // if the image don't exists -> error + $this->app->setOutput("Error", "No member"); + } + }catch(BadResponseError $e){ + $this->app->getErrorInstance()->BadResponseHandler($e); + }catch(UserInputError $e){ + $this->app->getErrorInstance->UserInputHandler($e); + }catch(BaseError $e){ + $this->app->getErrorInstance->BaseErrorHandler($e); + }catch(NotImplementedError $e){ + $this->app->getErrorInstance->NotImplementedHandler($e); + } return $members; } @@ -272,12 +494,37 @@ class 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); + private function detailMemberImage($image_id, $member_id){ + if(!isset($image_id)){ + $this->app->setOutput("Error", "Incorrect parameter image_id"); + } + if(!isset($member_id)){ + $this->app->setOutput("Error", "Incorrect parameter member_id"); + } + try{ + // vérifier existence image + // on doit être le proprio de l'image + // vérifier membre existe + $service = $this->libClass; + + $image = $service->getImage($id); + if($image == null){ // if the image don't exists -> error + $this->app->setOutput("Error", "Image doesn't exist"); + } + + $member = $image->getMember($member_id); + if($member == null){ // if the member don't exists -> error + $this->app->setOutput("Error", "Member doesn't exist"); + } + }catch(BadResponseError $e){ + $this->app->getErrorInstance()->BadResponseHandler($e); + }catch(UserInputError $e){ + $this->app->getErrorInstance->UserInputHandler($e); + }catch(BaseError $e){ + $this->app->getErrorInstance->BaseErrorHandler($e); + }catch(NotImplementedError $e){ + $this->app->getErrorInstance->NotImplementedHandler($e); + } return $member; } @@ -290,12 +537,34 @@ class 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(); + private function removeMemberImage($image_id, $member_id){ + if(!isset($image_id)){ + $this->app->setOutput("Error", "Incorrect parameter image_id"); + } + if(!isset($member_id)){ + $this->app->setOutput("Error", "Incorrect parameter member_id"); + } + try{ + $service = $this->libClass; + + $image = $service->getImage($id); + if($image == null){ // if the image don't exists -> error + $this->app->setOutput("Error", "Image doesn't exist"); + } + $member = $image->getMember($member_id); + if($member == null){ // if the image don't exists -> error + $this->app->setOutput("Error", "Member doesn't exist"); + } + $member->delete(); + }catch(BadResponseError $e){ + $this->app->getErrorInstance()->BadResponseHandler($e); + }catch(UserInputError $e){ + $this->app->getErrorInstance->UserInputHandler($e); + }catch(BaseError $e){ + $this->app->getErrorInstance->BaseErrorHandler($e); + }catch(NotImplementedError $e){ + $this->app->getErrorInstance->NotImplementedHandler($e); + } } /** @@ -310,13 +579,35 @@ class image{ * @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); + private function updateMemberImage($image_id, $member_id, $status){ + if(!isset($image_id)){ + $this->app->setOutput("Error", "Incorrect parameter image_id"); + } + if(!isset($member_id)){ + $this->app->setOutput("Error", "Incorrect parameter member_id"); + } + try{ + $service = $this->libClass; + + $image = $service->getImage($id); + if($image == null){ // if the image don't exists -> error + $this->app->setOutput("Error", "Image doesn't exist"); + } + $member = $image->getMember($member_id); + if($member == null){ // if the member don't exists -> error + $this->app->setOutput("Error", "Member doesn't exist"); + } + $member->updateStatus($status); + }catch(BadResponseError $e){ + $this->app->getErrorInstance()->BadResponseHandler($e); + }catch(UserInputError $e){ + $this->app->getErrorInstance->UserInputHandler($e); + }catch(BaseError $e){ + $this->app->getErrorInstance->BaseErrorHandler($e); + }catch(NotImplementedError $e){ + $this->app->getErrorInstance->NotImplementedHandler($e); + } } } -?> +?> \ No newline at end of file From 2d0a01358def95161d45d41f728b9bec93d652dc Mon Sep 17 00:00:00 2001 From: stupidon Date: Mon, 29 Feb 2016 16:59:27 +0100 Subject: [PATCH 03/17] fixed list function output format --- server/core/Compute.php | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/server/core/Compute.php b/server/core/Compute.php index 94e219c..6bdb46a 100644 --- a/server/core/Compute.php +++ b/server/core/Compute.php @@ -35,7 +35,15 @@ class compute */ public function listServers() { - $servers = $this->libClass->listServers(); + $serverList = $this->libClass->listServers(); + $servers = Array(); + foreach($serverList as $server){ + $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"; + } $this->app->setOutput("Servers", $servers); return; } @@ -45,7 +53,12 @@ class compute */ public function listFlavors() { - $flavors = $this->libClass->listFlavors(); + $flavorList = $this->libClass->listFlavors(); + $flavors = Array(); + foreach($flavorList as $flavor){ + $flavors["$flavor->id"]["id"] = "$flavor->id; + $flavors["$flavor->id"]["name"] = "$flavor->name"; + } $this->app->setOutput("Flavors", $flavors); return; } @@ -55,7 +68,12 @@ class compute */ public function listImages() { - $images = $this->libClass->listImages(); + $imageList = $this->libClass->listImages(); + $images = Array(); + foreach($imageList as $image){ + $images["$image->id"]["id"] = "$image->id; + $images["$image->id"]["name"] = "$image->name"; + } $this->app->setOutput("Images", $images); return; } From 3bf50ae06f84d60a5890454ef216c9251d3670d2 Mon Sep 17 00:00:00 2001 From: stupidon Date: Tue, 1 Mar 2016 13:19:39 +0100 Subject: [PATCH 04/17] fixed syntax error --- server/core/Compute.php | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/server/core/Compute.php b/server/core/Compute.php index 6bdb46a..17cd2ea 100644 --- a/server/core/Compute.php +++ b/server/core/Compute.php @@ -38,11 +38,11 @@ class compute $serverList = $this->libClass->listServers(); $servers = Array(); foreach($serverList as $server){ - $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"]["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; } $this->app->setOutput("Servers", $servers); return; @@ -56,8 +56,8 @@ class compute $flavorList = $this->libClass->listFlavors(); $flavors = Array(); foreach($flavorList as $flavor){ - $flavors["$flavor->id"]["id"] = "$flavor->id; - $flavors["$flavor->id"]["name"] = "$flavor->name"; + $flavors["$flavor->id"]["id"] = $flavor->id; + $flavors["$flavor->id"]["name"] = $flavor->name; } $this->app->setOutput("Flavors", $flavors); return; @@ -71,8 +71,8 @@ class compute $imageList = $this->libClass->listImages(); $images = Array(); foreach($imageList as $image){ - $images["$image->id"]["id"] = "$image->id; - $images["$image->id"]["name"] = "$image->name"; + $images["$image->id"]["id"] = $image->id; + $images["$image->id"]["name"] = $image->name; } $this->app->setOutput("Images", $images); return; From 575b8ea4b611a5bd06c92471ecb8fb31d45c1c45 Mon Sep 17 00:00:00 2001 From: manzerbredes Date: Tue, 1 Mar 2016 15:50:57 +0100 Subject: [PATCH 05/17] Test --- client/js/controllers/home/main.js | 14 +++++++----- client/js/services/Compute.js | 36 ++++++++++++++++++++++++------ 2 files changed, 38 insertions(+), 12 deletions(-) diff --git a/client/js/controllers/home/main.js b/client/js/controllers/home/main.js index 4e3bcda..805bc63 100644 --- a/client/js/controllers/home/main.js +++ b/client/js/controllers/home/main.js @@ -10,14 +10,18 @@ mainApp.controller('homeCtrl', [ '$scope', 'Compute', '$rootScope', function ($s // TODO Update graph etc... } - // Retrieve all Data - Compute.pullData(updatePage); - Compute.getMachines(function(adzda){}); + + $scope.raiseShowMachineDetailsEvent=function(){ - var machine={name: "Machine 1", online:true}; - $rootScope.$broadcast("showMachineDetailsEvent", machine); + var callback=function(){ + var data=Compute.getData(); + console.log(data.machines[Object.keys(data.machines)[0]]); + $rootScope.$broadcast("showMachineDetailsEvent", data.machines[Object.keys(data.machines)[0]]); + + } + Compute.pullMachines(callback); } diff --git a/client/js/services/Compute.js b/client/js/services/Compute.js index e0c28ae..7c9df26 100644 --- a/client/js/services/Compute.js +++ b/client/js/services/Compute.js @@ -10,18 +10,36 @@ mainApp.factory('Compute',[ '$http', 'Identity', function($http, Identity){ // Parser var parseGetMachinesAnswer=function(response, failedToSendRequest){ + // Defined return object + var requestParserResult={}; + requestParserResult.status=1; + requestParserResult.failReason=null; + + if (typeof response.data.Servers !== 'undefined') { + // Set status code + requestParserResult.status=0; + data.machines=response.data.Servers; + } + else if(failedToSendRequest){ + requestParserResult.failReason="Failed to send request"; + } + else{ + requestParserResult.failReason="Error"; + } + + return requestParserResult; + }; // Get Machine - var getMachines=function(callback){ + var pullMachines=function(callback){ var params={ "token" : Identity.getToken(), "task" : "compute", - "action":"getServer", - "serverId":"a2926ce3-501b-4285-82ce-c6e451295599" + "action":"listServers" }; var result=$http.post('../server/index.php', @@ -29,7 +47,7 @@ mainApp.factory('Compute',[ '$http', 'Identity', function($http, Identity){ // Wait and handle the response result.then(function (response){ - console.log(response.data.MyServer.image); + callback(parseGetMachinesAnswer(response, false)); },function(response){ alert(response.status); @@ -45,12 +63,16 @@ mainApp.factory('Compute',[ '$http', 'Identity', function($http, Identity){ // TODO call getMachines etc... } - + + var getData=function(){ + return data; + } + // Return services objects return { - getMachines: getMachines, + pullMachines: pullMachines, pullData: pullData, - data:data + getData: getData }; From dfd0566a9dfb8c012db832b4aea119858056a7d2 Mon Sep 17 00:00:00 2001 From: stupidon Date: Tue, 1 Mar 2016 16:12:19 +0100 Subject: [PATCH 06/17] minor correction in list output format --- server/core/Compute.php | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/server/core/Compute.php b/server/core/Compute.php index 17cd2ea..bdc9753 100644 --- a/server/core/Compute.php +++ b/server/core/Compute.php @@ -38,11 +38,11 @@ class compute $serverList = $this->libClass->listServers(); $servers = Array(); foreach($serverList as $server){ - $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]["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; } $this->app->setOutput("Servers", $servers); return; @@ -56,8 +56,8 @@ class compute $flavorList = $this->libClass->listFlavors(); $flavors = Array(); foreach($flavorList as $flavor){ - $flavors["$flavor->id"]["id"] = $flavor->id; - $flavors["$flavor->id"]["name"] = $flavor->name; + $flavors[$flavor->id]["id"] = $flavor->id; + $flavors[$flavor->id]["name"] = $flavor->name; } $this->app->setOutput("Flavors", $flavors); return; @@ -71,8 +71,8 @@ class compute $imageList = $this->libClass->listImages(); $images = Array(); foreach($imageList as $image){ - $images["$image->id"]["id"] = $image->id; - $images["$image->id"]["name"] = $image->name; + $images[$image->id]["id"] = $image->id; + $images[$image->id]["name"] = $image->name; } $this->app->setOutput("Images", $images); return; From 53c507194d2304254f0ce7541568be29377f65c8 Mon Sep 17 00:00:00 2001 From: stupidon Date: Tue, 1 Mar 2016 16:29:49 +0100 Subject: [PATCH 07/17] further fix for 2-dimensional array output --- server/core/Compute.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/server/core/Compute.php b/server/core/Compute.php index bdc9753..1aad8a9 100644 --- a/server/core/Compute.php +++ b/server/core/Compute.php @@ -38,6 +38,7 @@ class compute $serverList = $this->libClass->listServers(); $servers = Array(); foreach($serverList as $server){ + $servers[$server->id] = Array(); $servers[$server->id]["id"] = $server->id; $servers[$server->id]["name"] = $server->name; $servers[$server->id]["imageId"] = $server->image->id; @@ -56,6 +57,7 @@ class compute $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; } @@ -71,6 +73,7 @@ class compute $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; } From f551dffd8a960d4a322ba2b99fd98a02dd98b402 Mon Sep 17 00:00:00 2001 From: stupidon Date: Tue, 1 Mar 2016 16:53:23 +0100 Subject: [PATCH 08/17] compute listServers fix --- server/core/Compute.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/core/Compute.php b/server/core/Compute.php index 1aad8a9..131d02c 100644 --- a/server/core/Compute.php +++ b/server/core/Compute.php @@ -35,7 +35,7 @@ class compute */ public function listServers() { - $serverList = $this->libClass->listServers(); + $serverList = $this->libClass->listServers(true); $servers = Array(); foreach($serverList as $server){ $servers[$server->id] = Array(); From bb8b3dd14060bbad8d4c1295c8395b5cb1108e59 Mon Sep 17 00:00:00 2001 From: manzerbredes Date: Tue, 1 Mar 2016 16:55:36 +0100 Subject: [PATCH 09/17] test --- client/js/controllers/home/main.js | 1 - client/js/services/Compute.js | 5 +++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/client/js/controllers/home/main.js b/client/js/controllers/home/main.js index 805bc63..ee564b2 100644 --- a/client/js/controllers/home/main.js +++ b/client/js/controllers/home/main.js @@ -17,7 +17,6 @@ mainApp.controller('homeCtrl', [ '$scope', 'Compute', '$rootScope', function ($s $scope.raiseShowMachineDetailsEvent=function(){ var callback=function(){ var data=Compute.getData(); - console.log(data.machines[Object.keys(data.machines)[0]]); $rootScope.$broadcast("showMachineDetailsEvent", data.machines[Object.keys(data.machines)[0]]); } diff --git a/client/js/services/Compute.js b/client/js/services/Compute.js index 7c9df26..28f8a69 100644 --- a/client/js/services/Compute.js +++ b/client/js/services/Compute.js @@ -14,11 +14,12 @@ mainApp.factory('Compute',[ '$http', 'Identity', function($http, Identity){ var requestParserResult={}; requestParserResult.status=1; requestParserResult.failReason=null; - + console.log(response.data.Images[Object.keys(response.data.Images)[0]]) if (typeof response.data.Servers !== 'undefined') { // Set status code requestParserResult.status=0; data.machines=response.data.Servers; + } else if(failedToSendRequest){ requestParserResult.failReason="Failed to send request"; @@ -39,7 +40,7 @@ mainApp.factory('Compute',[ '$http', 'Identity', function($http, Identity){ var params={ "token" : Identity.getToken(), "task" : "compute", - "action":"listServers" + "action":"listImages" }; var result=$http.post('../server/index.php', From 3c1fe7e6dcd80b19ed01ecf15fd0a69812a1bffa Mon Sep 17 00:00:00 2001 From: stupidon Date: Tue, 1 Mar 2016 18:52:29 +0100 Subject: [PATCH 10/17] added disksize and ram to listServers --- server/core/Compute.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/server/core/Compute.php b/server/core/Compute.php index 131d02c..720ab0c 100644 --- a/server/core/Compute.php +++ b/server/core/Compute.php @@ -44,6 +44,8 @@ class compute $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; From cdc3c2cdcb4fc863701afba9b48916857414208f Mon Sep 17 00:00:00 2001 From: manzerbredes Date: Tue, 1 Mar 2016 19:08:30 +0100 Subject: [PATCH 11/17] test --- client/js/services/Compute.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/js/services/Compute.js b/client/js/services/Compute.js index 28f8a69..f4e8fa8 100644 --- a/client/js/services/Compute.js +++ b/client/js/services/Compute.js @@ -14,7 +14,7 @@ mainApp.factory('Compute',[ '$http', 'Identity', function($http, Identity){ var requestParserResult={}; requestParserResult.status=1; requestParserResult.failReason=null; - console.log(response.data.Images[Object.keys(response.data.Images)[0]]) + console.log(response.data.Servers[Object.keys(response.data.Servers)[0]]) if (typeof response.data.Servers !== 'undefined') { // Set status code requestParserResult.status=0; @@ -40,7 +40,7 @@ mainApp.factory('Compute',[ '$http', 'Identity', function($http, Identity){ var params={ "token" : Identity.getToken(), "task" : "compute", - "action":"listImages" + "action":"listServers" }; var result=$http.post('../server/index.php', From 603645dbeb9e4a20f0b086c15fbc418bdee58d2b Mon Sep 17 00:00:00 2001 From: stupidon Date: Tue, 1 Mar 2016 20:02:27 +0100 Subject: [PATCH 12/17] fetch ram and disk for server's flavor in listServers --- server/core/Compute.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/server/core/Compute.php b/server/core/Compute.php index 720ab0c..a5b8375 100644 --- a/server/core/Compute.php +++ b/server/core/Compute.php @@ -39,6 +39,8 @@ class compute $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; From f1628e280abaf47bfdcabc7d463ce6ad5d0f0752 Mon Sep 17 00:00:00 2001 From: manzerbredes Date: Tue, 1 Mar 2016 20:20:05 +0100 Subject: [PATCH 13/17] Clean Identity service --- client/js/services/Identity.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/client/js/services/Identity.js b/client/js/services/Identity.js index b1d2a48..da85ecd 100644 --- a/client/js/services/Identity.js +++ b/client/js/services/Identity.js @@ -48,6 +48,9 @@ mainApp.factory('Identity',[ '$http', '$cookies', function($http, $cookies){ $cookies.remove('profile'); $cookies.remove('token.part_0'); $cookies.remove('token.part_1'); + token=null; + profile.username=null; + profile.projectname=null; } @@ -81,6 +84,10 @@ mainApp.factory('Identity',[ '$http', '$cookies', function($http, $cookies){ $cookies.putObject('token.part_0', response.data.token.substring(0, middle), {'expires': expireDate}); // Save second part of token $cookies.putObject('token.part_1', response.data.token.substring(middle, response.data.token.length), {'expires': expireDate}); + + // Put token in var + token=response.data.token; + } else if(failedToSendRequest){ requestParserResult.failReason="Failed to send request"; @@ -102,7 +109,7 @@ mainApp.factory('Identity',[ '$http', '$cookies', function($http, $cookies){ * @param {string} projectname The user project name * @param {function} function to call when data is avalaible */ - var login=function(username, password,projectname, callback){ + var login=function(username, password,projectname,callback){ // Set profile information (early) profile.username=username; @@ -120,6 +127,9 @@ mainApp.factory('Identity',[ '$http', '$cookies', function($http, $cookies){ }; + + + /* * Get the profile */ @@ -133,6 +143,7 @@ mainApp.factory('Identity',[ '$http', '$cookies', function($http, $cookies){ var getToken=function(){ return token; } + // Return services objects From 5ef1c9b8b1ab47b659f512db86e51dacf1bec860 Mon Sep 17 00:00:00 2001 From: manzerbredes Date: Tue, 1 Mar 2016 20:51:08 +0100 Subject: [PATCH 14/17] Edit machineDetails --- client/js/controllers/home/machineDetails.js | 1 + client/js/controllers/home/main.js | 9 ++-- client/js/services/Compute.js | 55 +++++++++++--------- client/partials/home/machineDetails.html | 14 ++--- client/partials/home/main.html | 9 ++-- 5 files changed, 48 insertions(+), 40 deletions(-) diff --git a/client/js/controllers/home/machineDetails.js b/client/js/controllers/home/machineDetails.js index f84a073..7476c69 100644 --- a/client/js/controllers/home/machineDetails.js +++ b/client/js/controllers/home/machineDetails.js @@ -11,6 +11,7 @@ mainApp.controller('machineDetailsCtrl', [ '$scope', 'Compute', '$rootScope', '$ $scope.$on('showMachineDetailsEvent', function(eventName ,machine){ $scope.machine=machine; + console.log(machine); $('#machineDetailsModal').modal({backdrop: false, keyboard: true}); }); diff --git a/client/js/controllers/home/main.js b/client/js/controllers/home/main.js index ee564b2..b44836b 100644 --- a/client/js/controllers/home/main.js +++ b/client/js/controllers/home/main.js @@ -6,18 +6,19 @@ mainApp.controller('homeCtrl', [ '$scope', 'Compute', '$rootScope', function ($scope, Compute, $rootScope) { - var updatePage=function(){ - // TODO Update graph etc... + var callMeAfterGetMachines=function(data){ + $scope.machines=Compute.getData().machines; } + Compute.pullMachines(callMeAfterGetMachines); - $scope.raiseShowMachineDetailsEvent=function(){ + $scope.raiseShowMachineDetailsEvent=function(id){ var callback=function(){ var data=Compute.getData(); - $rootScope.$broadcast("showMachineDetailsEvent", data.machines[Object.keys(data.machines)[0]]); + $rootScope.$broadcast("showMachineDetailsEvent", data.machines[id]); } Compute.pullMachines(callback); diff --git a/client/js/services/Compute.js b/client/js/services/Compute.js index f4e8fa8..e2fb3df 100644 --- a/client/js/services/Compute.js +++ b/client/js/services/Compute.js @@ -2,19 +2,27 @@ mainApp.factory('Compute',[ '$http', 'Identity', function($http, Identity){ - // Create data + // Init data var data={}; - data.machines={}; + data.machines=null; - // Parser - var parseGetMachinesAnswer=function(response, failedToSendRequest){ + + /** + * Retrieve machine list + * @param {response} the server response + * @param {boolean} false if the request as been send true else + * @return {requestParserResult} the result of parsing + */ + var parsePullMachinesAnswer=function(response, failedToSendRequest){ + // Defined return object var requestParserResult={}; requestParserResult.status=1; requestParserResult.failReason=null; - console.log(response.data.Servers[Object.keys(response.data.Servers)[0]]) + + if (typeof response.data.Servers !== 'undefined') { // Set status code requestParserResult.status=0; @@ -27,44 +35,41 @@ mainApp.factory('Compute',[ '$http', 'Identity', function($http, Identity){ else{ requestParserResult.failReason="Error"; } - return requestParserResult; - - }; - // Get Machine + /** + * Retrieve machine list + * @param {callback} function to call after request complete + */ var pullMachines=function(callback){ - - var params={ - "token" : Identity.getToken(), - "task" : "compute", - "action":"listServers" - }; - + // Send listServers request var result=$http.post('../server/index.php', - $.param(params)); + $.param({"token" : Identity.getToken(), "task" : "compute", "action":"listServers"})); // Wait and handle the response result.then(function (response){ - - callback(parseGetMachinesAnswer(response, false)); + callback(parsePullMachinesAnswer(response, false)); },function(response){ - alert(response.status); - callback(parseGetMachinesAnswer(response, true)); - }); - - + callback(parsePullMachinesAnswer(response, true)); + }); }; - + /** + * Retrieve all data + * @param {callback} function to call after request complete + */ var pullData=function(callback){ // TODO call getMachines etc... } + /** + * Get Data + * @return {data} return the data object + */ var getData=function(){ return data; } diff --git a/client/partials/home/machineDetails.html b/client/partials/home/machineDetails.html index 606edcf..28c9165 100644 --- a/client/partials/home/machineDetails.html +++ b/client/partials/home/machineDetails.html @@ -21,11 +21,11 @@
- Online - Offline + Online + Offline   - - + +   @@ -34,7 +34,7 @@
- + @@ -60,7 +60,7 @@
- - - - - + + MB
From 2d99f1ecf2164431b03eff5bcbaa7abe67287602 Mon Sep 17 00:00:00 2001 From: manzerbredes Date: Wed, 2 Mar 2016 07:14:05 +0100 Subject: [PATCH 16/17] Create loading service --- client/index.html | 4 +++- client/js/controllers/home/main.js | 8 ++++++-- client/js/services/Loading.js | 22 ++++++++++++++++++++++ client/partials/loading.html | 18 ++++++++++++++++++ 4 files changed, 49 insertions(+), 3 deletions(-) create mode 100644 client/js/services/Loading.js create mode 100644 client/partials/loading.html diff --git a/client/index.html b/client/index.html index 8d81ac3..8ca2b9f 100644 --- a/client/index.html +++ b/client/index.html @@ -28,8 +28,9 @@
+
- +
@@ -79,6 +80,7 @@ + diff --git a/client/js/controllers/home/main.js b/client/js/controllers/home/main.js index 9d7ddfc..2e9c00b 100644 --- a/client/js/controllers/home/main.js +++ b/client/js/controllers/home/main.js @@ -3,24 +3,28 @@ * * @param {$scope} $scope The $scope service from angular */ -mainApp.controller('homeCtrl', [ '$scope', 'Compute', '$rootScope', function ($scope, Compute, $rootScope) +mainApp.controller('homeCtrl', [ '$scope', 'Compute', '$rootScope', 'Loading', function ($scope, Compute, $rootScope, Loading) { var callMeAfterPullData=function(data){ $scope.machines=Compute.getData().machines; + Loading.stop(); } - + Loading.start(); Compute.pullData(callMeAfterPullData); $scope.raiseShowMachineDetailsEvent=function(id){ + var callback=function(){ + Loading.stop(); var data=Compute.getData(); $rootScope.$broadcast("showMachineDetailsEvent", data.machines[id], data.axioms); } + Loading.start(); Compute.pullMachines(callback); } diff --git a/client/js/services/Loading.js b/client/js/services/Loading.js new file mode 100644 index 0000000..b12aaa0 --- /dev/null +++ b/client/js/services/Loading.js @@ -0,0 +1,22 @@ + +mainApp.factory('Loading',[ '$http', 'Identity', function($http, Identity){ + + + + + var start=function(){ + $('#loadingModal').modal({backdrop: 'static', keyboard: false}); + }; + + var stop=function(){ + $('#loadingModal').modal('hide'); + } + + + return { + start:start, + stop:stop + }; + + +}]); diff --git a/client/partials/loading.html b/client/partials/loading.html new file mode 100644 index 0000000..c978190 --- /dev/null +++ b/client/partials/loading.html @@ -0,0 +1,18 @@ + From b6d7d2c30efe5e9758072bb82ea3a947bda7fd1d Mon Sep 17 00:00:00 2001 From: manzerbredes Date: Wed, 2 Mar 2016 07:25:28 +0100 Subject: [PATCH 17/17] Correct bug --- client/js/controllers/home/main.js | 10 +++++++--- client/partials/home/main.html | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/client/js/controllers/home/main.js b/client/js/controllers/home/main.js index 2e9c00b..f84f625 100644 --- a/client/js/controllers/home/main.js +++ b/client/js/controllers/home/main.js @@ -3,7 +3,7 @@ * * @param {$scope} $scope The $scope service from angular */ -mainApp.controller('homeCtrl', [ '$scope', 'Compute', '$rootScope', 'Loading', function ($scope, Compute, $rootScope, Loading) +mainApp.controller('homeCtrl', [ '$scope', 'Compute', '$rootScope', 'Loading','Identity', function ($scope, Compute, $rootScope, Loading, Identity) { var callMeAfterPullData=function(data){ @@ -11,8 +11,12 @@ mainApp.controller('homeCtrl', [ '$scope', 'Compute', '$rootScope', 'Loading', f Loading.stop(); } - Loading.start(); - Compute.pullData(callMeAfterPullData); + ; + if(Compute.getData().machines == null && Identity.isAlreadyLogin()){ + Loading.start(); + Compute.pullData(callMeAfterPullData); + } + diff --git a/client/partials/home/main.html b/client/partials/home/main.html index 77a9bc4..f9f8878 100644 --- a/client/partials/home/main.html +++ b/client/partials/home/main.html @@ -4,7 +4,7 @@
- + Pour charger les machines, recharger la page (temporaire)
Selectionner une machine: