Instantly share code, notes, and snippets.

Embed
What would you like to do?
OVH Public Cloud Object Storage et API OpenStack Swift

OVH Public Cloud Object Storage et API OpenStack Swift

Lien vers l'offre OVH Public Cloud Object Storage : https://www.ovh.com/fr/cloud/storage/object-storage.xml

I - Données d'identification

Pour utiliser l'API OpenStack Swift il faut récupérer des identifiants uniquement disponible dans l'interface Horizon

###1 - Créer un accès à Horizon

Dans l'espace client OVH : https://www.ovh.com/manager/cloud/login/

Se connecter à l'espace client

Cliquer sur OpenStack puis Ajouter un utilisateur.

Saisir une "Description de l'utilisateur"

Remarque: Cette description servira à reconnaître facilement l'utilisateur dans la liste créée mais ne servira pas d'identifiant de connexion. Cliquer sur "Ajouter un nouvel utilisateur"

L'utilisateur a bien été créé, conservez le mot de passe généré automatiquement précieusement, car comme indiqué il ne sera plus possible de récupérer ce mot de passe ultérieurement.

Plusieurs actions sont alors possibles:

  • Ajouter un nouvel utilisateur pour créer un utilisateur supplémentaire.
  • Retour à la liste des utilisateurs propose la liste des utilisateurs déjà créés.
  • Accéder à Horizon avec l'utilisateur créé à l'instant.

La liste des utilisateurs se présente ainsi:

Y apparaissent les noms, descriptions et une série de trois boutons pour chaque utilisateur, permettant respectivement de:

  • Accéder à horizon
  • Réinitialiser le mot de passe
  • Supprimer l'utilisateur

2- Accéder aux identifiants

On peut maintenant s'authentifier avec le couple identifiant/mot de passe créé précédemment. On se retrouve dans l'interface Horizon :

Vous pourrez ensuite vous rendre dans la partie "Accès et sécurité" puis dans l'onglet "Accès API". Vous trouverez les différents points d’accès pour la configuration des APIs.

Service => Point d'accès au service:

Vous pouvez ensuite trouver vos identifiants en téléchargeant le fichier RC d'Openstack.

##Utiliser l'API OpenStack Swift (Exemple PHP)

Liens utiles:

1 - Installing the SDK

Installer le SDK avec Composer , car cette bibliothèque a quelques dépendances :

composer require rackspace/php-opencloud

Une fois que vous avez installé la bibliothèque , vous devrez charger Composer's autoloader (qui enregistre tous les namespaces):

require 'vendor/autoload.php';

2 - Example d'utilisation

<?php

require 'vendor/autoload.php';
 
use OpenCloud\OpenStack;
 
// Authentification informations
$authUrl = 'https://auth.cloud.ovh.net/v2.0';  //Point d'accès au service Identity définit dans la partie la partie "Accès et sécurité" puis dans l'onglet "Accès API".
$username = 'xxx'; // utilisateur Horizon
$password = 'xxx'; // mot de passe Horizon 
$tenant = 'xxx'; //OS_TENANT_NAME du fichier RC OpenStack qu'on a téléchargé 
 
// Swift informations
$swiftUrl = 'xxx'; //Point d'accès au service Object Store définit dans la partie la partie "Accès et sécurité" puis dans l'onglet "Accès API".
$serviceName = 'swift';
$region = 'SBG1';
 
// 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);

// Create container
$container = $service->createContainer('my_container');

$container = $service->getContainer('my_container');

//Create an object 
$fileData = fopen('example.txt', 'r+'); // fopen('/path/to/file.txt', 'r+');
$container->uploadObject('example.txt', $fileData); 

sleep(5);//Latency

// 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 "my_container" container
$containerObjects = $service->getContainer('my_container')->objectList();
 
// Display the name of all objects in the container
while ($containerObject = $containerObjects->next()) {
   printf("Object name: %s\n", $containerObject->getName());
}
 
?>
@EpocDotFr

This comment has been minimized.

EpocDotFr commented Sep 11, 2016

Merci !

@optyfr

This comment has been minimized.

optyfr commented Oct 10, 2016

La variable $swiftUrl est inutile...

@claflamme2

This comment has been minimized.

claflamme2 commented Feb 27, 2017

Comment créer un conteneur 'Publique'? L'utilisation des métadonnées ['read'=>'.r:*'] ne semble avoir aucun effet.

@enzio53

This comment has been minimized.

enzio53 commented Sep 3, 2017

Non la variable $swiftUrl est pas inutile, très importante pour manage votre service !

@Canadadry

This comment has been minimized.

Canadadry commented Sep 7, 2017

La variable est inutilisée dans l'exemple. Un exemple d'utilisation avec cette variable serai le bienvenu.

@Mecanik

This comment has been minimized.

Mecanik commented May 25, 2018

Possible get progress ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment