From f4d12bf72a943d6a8965f21a11eefbb05d2a5483 Mon Sep 17 00:00:00 2001 From: Eole Date: Wed, 27 Apr 2016 22:52:25 +0200 Subject: Add Documentation --- server/doc/files/core/Automating.php.txt | 134 +++++++++++++++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 server/doc/files/core/Automating.php.txt (limited to 'server/doc/files/core/Automating.php.txt') diff --git a/server/doc/files/core/Automating.php.txt b/server/doc/files/core/Automating.php.txt new file mode 100644 index 0000000..c675cad --- /dev/null +++ b/server/doc/files/core/Automating.php.txt @@ -0,0 +1,134 @@ +app = $app; + $compute = new Compute($app); + $image = new Image($app); + $network = new Network($app); + $networkLayer3 = new NetworkLayer3($app); + } + + /** + * Execute an action + * + * @param String $action name of another function of this class + * + * @return void + */ + public function action($action){ + $this->{$action.""}(); + } + + /** + * create a new server and associate a public ip + * + * @param String $networkId the id of the network where the server will be created + * @param String $imageName name of the new image + * @param String $serverName name ofthe new server + * @param String $flavor kind of server + * + * @return void + */ + private function createPublicServer() + { + $networkId = $this->app->getPostParam('networkId'); + $imageName = $this->app->getPostParam('imageName'); + $serverName = $this->app->getPostParam('serverName'); + $flavor = $this->app->getPostParam('flavor'); + + if(!isset($imageName)){ + $this->app->setOutput("Error", "Incorrect imageName parameter"); + } + else if(!isset($serverName)){ + $this->app->setOutput("Error", "Incorrect serverName parameter"); + } + else if(!isset($flavor)){ + $this->app->setOutput("Error", "Incorrect flavor parameter"); + } + else{ + // Création image + $opt = array(); + $opt['name'] = $imageName; + $image->setPostParam('opt', $opt); + $image->action("createImage"); + $image = json_decode($this->app->show(), true)["Images"]; + + // Création server + $compute->setPostParam('name', $serverName); + $compute->setPostParam('imageId', $image['id']); + $compute->setPostParam('flavorId', $flavor); + $compute->action("createServer"); + $server = json_decode($this->app->show(), true)["Compute"]; + + // liste des adresses ip publiques diponibles + $networkLayer3->action("listFloatingIp"); + $listFloatingIp = json_decode($App->show(), true)["NetworkLayer3"]; + $ip = null; + foreach ($listFloatingIp as $f) { + if(strcmp($f['status'], "DOWN")){ + $ip = $f; + } + } + + // Si pas d'ip publique disponible on en créé une + if(!isset($ip)){ + // Ajout adresse IP public + $optIp = array(); + $opt['floatingNetworkId'] = $networkId; + $floatingIp->setPostParam('opt', $optIp); + $networkLayer3->action("createFloatingIp"); + $ip = json_decode($App->show(), true)["NetworkLayer3"]; + } + + // Association de l'ip publique au serveur + /* + * API non diponible pour le moment + */ + + } + } +} + +?> + -- cgit v1.2.3