diff --git a/server/Test/automatingTests.php b/server/Test/automatingTests.php index e8e8475..8088102 100755 --- a/server/Test/automatingTests.php +++ b/server/Test/automatingTests.php @@ -1,48 +1,20 @@ "; -$compute->action("listServers"); -$servers = json_decode($App->show(), true)["Servers"]; -$id = null; -foreach($servers as $server){ - echo $server['name']." ".$server['id']." ".$server['ipv4']."
"; - if(strcmp($server['name'], "bob")){ - $id = $server['id']; - } -} -echo "
"; - - -//Liste des networks -echo "Liste des network :
"; -$network->action("list_network_ids"); -$servers = json_decode($App->show(), true)["ListNetworkIds"]; -$id = null; -foreach($servers as $server){ - echo $server."
"; -} -echo "
"; - - -// liste des floatingip -echo "Liste des floatingip :
"; -$networkLayer3->action("listFloatingIp"); -$listFloatingIp = json_decode($App->show(), true)["NetworkLayer3"]; -foreach ($listFloatingIp as $floatIp){ - echo $floatIp['floatingIpAddress']." ".$floatIp['id']." ".$floatIp["status"]."
"; -} +//$id = // id du réseau +/* +// Création serveur avec ip publique +echo "Test création serveur avec ip publique :
"; +$App->setPostParam('networkId', $id); +$App->setPostParam('imageName', "ImageTest"); +$App->setPostParam('serverName', "ServerTest"); +$App->setPostParam('flavor', 1); +$compute->action("createPublicServer"); +$servers = json_decode($App->show(), true)["Automating"]; +*/ ?> \ No newline at end of file diff --git a/server/core/Automating.php b/server/core/Automating.php index 4e212e7..fb42702 100755 --- a/server/core/Automating.php +++ b/server/core/Automating.php @@ -10,20 +10,18 @@ * @todo Complete the functions with errors detection and finish the descriptions */ -include("CoreInterface.php"); include("Image.php"); include("Network.php"); include("Compute.php"); -include("NetworkLayer3"); +include("NetworkLayer3.php"); -class automating implements Core{ +class automating{ /** @var App $app protected, contains the main app object */ - protected $appCompute; - protected $appImage; - protected $appNetwork; - protected $appIdentity; - protected $appNetworkLayer3; + protected $compute; + protected $image; + protected $network; + protected $networkLayer3; protected $app; /** @@ -34,15 +32,11 @@ class automating implements Core{ * @return */ public function __construct($app){ - if(!isset($app)){ - $this->app->setOutput("Error", "Parameter app missing."); - } - $this->appCompute = $appCompute; - $this->appImage = $appImage; - $this->appNetwork = $appNetwork; - $this->appIdentity = $appIdentity; - $this->appNetworkLayer3 = $appNetworkLayer3; $this->app = $app; + $compute = new Compute($app); + $image = new Image($app); + $network = new Network($app); + $networkLayer3 = new NetworkLayer3($app); } /** @@ -59,14 +53,16 @@ class automating implements Core{ /** * 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 createServer() + private function createPublicServer() { + $networkId = $this->app->getPostParam('networkId'); $imageName = $this->app->getPostParam('imageName'); $serverName = $this->app->getPostParam('serverName'); $flavor = $this->app->getPostParam('flavor'); @@ -84,27 +80,44 @@ class automating implements Core{ // Création image $opt = array(); $opt['name'] = $imageName; - $this->appImage->setPostParam('opt' $opt); - $this->appImage->createImage(); + $image->setPostParam('opt', $opt); + $image->action("createImage"); $image = json_decode($this->app->show(), true)["Images"]; // Création server - $this->appCompute->setPostParam('name', $serverName); - $this->appCompute->setPostParam('imageId', $image['id']); - $this->appCompute->setPostParam('flavorId', $flavor); - $this->appCompute->createServer(); + $compute->setPostParam('name', $serverName); + $compute->setPostParam('imageId', $image['id']); + $compute->setPostParam('flavorId', $flavor); + $compute->action("createServer"); $server = json_decode($this->app->show(), true)["Compute"]; - // Ajout adresse IP public - $optIp = array(); - $opt['floatingip'] = null; //new floatingip(); ??? - $opt['floating_network_id'] = $server['id']; - $this->appFloatingIp->setPostParam('opt', $optIp); - $this->appFloatingIp->create(); + // 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 + */ } } - } ?>