summaryrefslogtreecommitdiff
path: root/server/core/Automating.php
diff options
context:
space:
mode:
authorEole <EoleDev@outlook.fr>2016-04-27 16:42:28 +0200
committerEole <EoleDev@outlook.fr>2016-04-27 16:42:28 +0200
commit49f416dc5061032e0514ea0cfeceaca37d13e432 (patch)
tree1202ac2a6fa860b8929afdc886c94fc50bd0a1de /server/core/Automating.php
parentc7edd70b5e5b0f5159c78ce3d924d4e7f60db816 (diff)
parentc9202d9113210981ae47df40511645da2ee140df (diff)
Merge branch 'develop' into Eole_Graph
Conflicts: client/index.html client/js/controllers/home/home.js client/partials/home/home.html
Diffstat (limited to 'server/core/Automating.php')
-rwxr-xr-xserver/core/Automating.php133
1 files changed, 133 insertions, 0 deletions
diff --git a/server/core/Automating.php b/server/core/Automating.php
new file mode 100755
index 0000000..27dd018
--- /dev/null
+++ b/server/core/Automating.php
@@ -0,0 +1,133 @@
+<?php
+/**
+* File containing the Automating Class.
+*
+* @version 1.0 Initialisation of this file
+* @since 1.0 Core application's file
+*
+* @author Evan Pisani 'yogg at epsina . com', bhupi
+*
+*/
+
+include("Image.php");
+include("Network.php");
+include("Compute.php");
+include("NetworkLayer3.php");
+include("CoreInterface.php");
+
+/**
+* automating Class of the back-end application
+*
+* Contains the different function to automate some action
+*
+*/
+class automating implements Core{
+
+ /** @var App $compute protected, contains a Core compute object */
+ protected $compute;
+ /** @var App $image protected, contains a Core image object */
+ protected $image;
+ /** @var App $network protected, contains a Core network object */
+ protected $network;
+ /** @var App $networkLayer3 protected, contains a Core networkLayer3 object */
+ protected $networkLayer3;
+ /** @var App $app protected, contains the main app object */
+ protected $app;
+
+ /**
+ * automating class constructor
+ *
+ * @param App $app the main app object
+ *
+ * @return automating Object
+ */
+ public function __construct($app){
+ $this->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
+ */
+
+ }
+ }
+}
+
+?>