SDQuoi ? Nan SDK…
Mais non, restez, c’est plus fort que moi, s’il y a un jeu de mots tout pourri à faire alors il est pour moi… Aller, restez
D’après Wikipédia, un SDK c’est :
Un kit de développement ou trousse de développement logiciel est un ensemble d’outils permettant aux développeurs de créer des applications de type défini. Les kits de développement logiciels sont souvent désignés par le sigle anglais SDK (Software Development Kit) ou devkit.
Concrètement, c’est un ensemble de librairies pouvant être utilisées dans une application.
Dans le cas présent, php-opencloud permet de gérer une plate-forme OpenStack via les API de ce dernier. Ce SDK est maintenu par la société Rackspace, il est compatible avec OpenStack et donc avec la quasi totalité de ses composants (excepté Ceilometer).
Pour résumer, ce SDK vous permettra d’intégrer la gestion de votre plate-forme OpenStack à votre site internet développé en PHP, au lieu de passer par l’interface Horizon. \o/
Parce que la vie n’est pas que paquet !
php-opencloud aurait pu être fourni sous la forme de paquet, peut-être qu’un jour ce sera la cas mais pour le moment git sera notre ami. php-opencloud utilise curl pour communiquer avec les API OpenStack, il faut s’assurer que l’extension curl pour PHP soit installée ou compilée.
L’installation est assez simple, elle se déroule en quatre étapes :
- Installation des paquets nécessaires PHP, Curl et Git
- Récupération des sources de php-opencloud
- Installation de Composer
- Installation des dépendances de php-opencloud via Composer
Informations supplémentaires au sujet de Composer :
Composer est un outil pour gérer les dépendances en PHP. Les dépendances, dans un projet, ce sont toutes les bibliothèques dont votre projet dépend pour fonctionner. Par exemple, votre projet utilise la bibliothèque SwiftMailer pour envoyer des e-mails, il « dépend » donc de SwiftMailer. Autrement dit, SwiftMailer est une dépendance dans votre projet. Source : http://tinyurl.com/prkzc5h
Voici à quoi ressemble l’installation, c’est plutôt simple et rapide.
# aptitude install php5-curl php5-cli curl git # git clone https://github.com/rackspace/php-opencloud.git # cd php-opencloud # curl -sS https://getcomposer.org/installer | php # php composer.phar install # mv docs/generate.sh . # chmod +x generate.sh # ./generate.sh
Au total, l’installation du SDK et de ses dépendances feront environ 65Mo.
Avec un exemple c’est encore plus sympa !
Dans l’exemple ci-dessous, je veux récupérer les informations suivantes :
- La liste des conteneurs d’un tenant (projet)
- Le nombre de fichiers par conteneur
- Le nom des fichiers présents dans un conteneur
Vous l’avez compris, cet exemple se base sur le composant Object Storage (Swift) d’OpenStack
<?php require 'php-opencloud/lib/php-opencloud.php'; use OpenCloud\OpenStack; // Authentification informations $authUrl = 'http://os.enocloud.com:5000/v2.0/'; $username = 'goldyfruit'; $password = 'monSup3Rm0td3pA223'; $tenant = 'goldyfruit'; // Swift informations $swiftUrl = 'http://os.enocloud.com:8080'; $serviceName = 'swift'; $region = 'RegionOne'; // Constructor initialization $client = new OpenStack($authUrl, array( 'username' => $username, 'password' => $password, 'tenantName' => $tenant ) ); // Call the authenticate method $client->authenticate(); // Send a request to the Object Store service (Swift) $service = $client->objectStoreService($serviceName, $region, $swiftUrl); // Get the containers list $containerList = $service->listContainers(); // Display containers name and count the objects in each one while ($container = $containerList->next()) { printf("Container name: %s\n", $container->name); printf("Number of objects within container: %d\n", $container->getObjectCount()); } // Get all objects in the "test" container $containerObjects = $service->getContainer('container001')->objectList(); // Display the name of all objects in the container while ($containerObject = $containerObjects->next()) { printf("Object name: %s\n", $containerObject->getName()); } ?>
Résultat :
Container name: container001
Container name: container002
Number of objects within container: 4
Object name: hello.txt
Object name: pouetpouet.pdf
Object name: debian.iso
Object name: jesuistoutnu.png
Liens
- Sources du SDK sur Github : https://github.com/rackspace/php-opencloud
- Doc du SDK pour OpenStack : https://github.com/rackspace/php-opencloud/blob/master/docs/getting-started-openstack.md
Gaëtan Trellu (goldyfruit)
Derniers articles parGaëtan Trellu (goldyfruit) (voir tous)
- Qinling, let’s the journey begin! - 23 mai 2019
- systemd-networkd, l’âge de la maturité ? - 13 mars 2018
- Hyper-V, Nova, VxLAN et Open vSwitch, enfin une belle histoire ! - 31 décembre 2017
Utilisation du SDK php-opencloud avec OpenStack par Gaëtan Trellu (goldyfruit) est sous Licence Creative Commons Internationale Attribution 4.0.