SDK Python OUTSCALE
Le SDK Python OUTSCALE permet d’interagir avec l’API OUTSCALE dans les environnements de développement Python. Il rend notamment possible :
-
La configuration de plusieurs profils à l’aide des variables d’environnement ou du fichier de configuration.
-
La personnalisation des comportements de nouvelle tentative (retry) et de limitation des requêtes (throttling). Pour en savoir plus, voir Limitation des API OUTSCALE.
-
L’activation de logs détaillés pour les requêtes et les réponses.
|
Pour utiliser le SDK Python OUTSCALE, assurez-vous d’avoir les éléments suivants :
|
Installation
Avant de commencer : Assurez-vous que Python 3.10 ou ultérieur et pip sont installés sur votre machine. |
Installez le SDK Python OUTSCALE à partir du paquet PyPI en lançant la commande suivante dans votre terminal :
$ pip install osc-sdk-python
Configuration de l’accès à l’API
Pour utiliser le SDK Python OUTSCALE, vous pouvez configurer l’accès à l’API OUTSCALE à l’aide de vos access keys, ou vous authentifier lors de l’initialisation avec l’adresse e-mail liée à votre compte OUTSCALE et votre mot de passe.
|
Lorsque vous accédez à l’API OUTSCALE avec votre adresse e-mail et votre mot de passe, certaines requêtes API peuvent être bloquées. Pour en savoir plus, voir la section Authentication Schemes de la documentation de l’API OUTSCALE. |
Pour configurer l’accès à l’API OUTSCALE, vous devez configurer un profil dans un fichier de configuration ou définir vos access keys directement dans les variables d’environnement.
|
Les variables d’environnement sont prioritaires sur le fichier de configuration. Si des access keys sont définies dans les variables d’environnement, les valeurs définies dans le fichier de configuration seront écrasées. |
Configurer l’accès à l’API à l’aide du fichier de configuration
Vous pouvez définir autant de profils que nécessaire dans le fichier ~/.osc/config.json en utilisant la syntaxe suivante :
{
"default": {
"access_key": "<ACCESS_KEY>",
"secret_key": "<SECRET_KEY>",
"region": "<REGION>"
},
"profile_1": {
"access_key": "<ACCESS_KEY>",
"secret_key": "<SECRET_KEY>",
"region": "<REGION>"
},
"profile_2": {
"access_key": "<ACCESS_KEY>",
"secret_key": "<SECRET_KEY>",
"region": "<REGION>"
}
}
|
Vous pouvez choisir lequel de ces profils sert de profil par défaut en définissant son nom dans les variables d’environnement à l’aide de la commande suivante :
$ export OSC_PROFILE=<PROFILE> # par défaut : "default"
Configurer l’accès à l’API à l’aide des variables d’environnement
Vous pouvez définir vos access keys et votre Région directement dans les variables d’environnement à l’aide des commandes suivantes :
$ export OSC_ACCESS_KEY=<ACCESS_KEY>
$ export OSC_SECRET_KEY=<SECRET_KEY>
$ export OSC_REGION=<REGION> # par défaut : eu-west-2
Initialisation
Initialisation avec un profil
Vous pouvez mettre en place l’accès à l’API OUTSCALE avec un profil lors de l’initialisation de la gateway en utilisant la syntaxe suivante :
from osc_sdk_python import Gateway
with Gateway(profile="profile_1") as gw:
# Exemple : lister les VM
vms = gw.ReadVms()
print(vms)
Si vous ne précisez pas de profil, le profil utilisé sera le profil par défaut.
from osc_sdk_python import Gateway
with Gateway() as gw:
# Exemple : lister les VM
vms = gw.ReadVms()
print(vms)
Initialisation avec l’authentification de base
Vous pouvez mettre en place l’accès à l’API OUTSCALE avec l’authentification de base lors de l’initialisation de la gateway en utilisant la syntaxe suivante :
from osc_sdk_python import Gateway
with Gateway(email="votre@email.com", password="votreMotDePasse") as gw:
# Exemple : lister les VM
vms = gw.ReadVms()
print(vms)
Exemples
Le SDK Python OUTSCALE prend en charge deux types de requêtes :
-
Les méthodes typées comme
gw.ReadVms()etgw.CreateVms(…) -
Les appels bas niveau comme
gw.raw("ReadVms")etgw.raw("CreateVms",…)
Personnaliser les options de nouvelle tentative (retry)
Vous pouvez configurer le comportement de retry du SDK Python OUTSCALE lors de l’initialisation de la gateway en utilisant la syntaxe suivante :
from osc_sdk_python import Gateway
gw = Gateway(
max_retries=5,
retry_backoff_factor=0.5,
retry_backoff_jitter=1.0,
retry_backoff_max=120,
)
Cet exemple contient les paramètres suivants que vous pouvez spécifier :
-
max_retries: Le nombre maximal de nouvelles tentatives avant l’échec de la requête (integer, par défaut 3). -
retry_backoff_factor: Le multiplicateur pour le délai d’exponential backoff (float, par défaut 1.0). -
retry_backoff_jitter: Une valeur ajoutée au délai afin d’éviter que les nouvelles tentatives se produisent en même temps dans les scénarios multithreads (float, par défaut 3.0). -
retry_backoff_max: Le délai maximal en secondes entre deux nouvelles tentatives (float, par défaut 30).
Vous pouvez également définir ces paramètres dans les variables d’environnement à l’aide des commandes suivantes :
$ export OSC_MAX_RETRIES=<INT> # par défaut : 3
$ export OSC_RETRY_BACKOFF_FACTOR=<FLOAT> # par défaut : 1.0
$ export OSC_RETRY_BACKOFF_JITTER=<FLOAT> # par défaut : 3.0
$ export OSC_RETRY_BACKOFF_MAX=<FLOAT> # par défaut : 30
Personnaliser les options de limitation des requêtes (throttling)
Vous pouvez configurer la limitation des requêtes lors de l’initialisation de la gateway en utilisant la syntaxe suivante :
from osc_sdk_python import Gateway
gw = Gateway(
limiter_max_requests=20,
limiter_window=5,
)
Cet exemple contient les paramètres suivants que vous pouvez spécifier :
-
limiter_max_requests: Le nombre maximal de requêtes API autorisées pendant la fenêtre de temps donnée (integer, par défaut 5). -
limiter_window: La fenêtre de temps, en secondes (integer, par défaut 1).
Lister les ID de tous les volumes et VM
L’exemple suivant récupère les ID de tous vos volumes et VM.
from osc_sdk_python import Gateway
if __name__ == "__main__":
with Gateway() as gw:
print("Your virtual machines:")
for vm in gw.ReadVms()["Vms"]:
print(vm["VmId"])
print("\nYour volumes:")
for volume in gw.ReadVolumes()["Volumes"]:
print(volume["VolumeId"])
Activer les logs
L’exemple suivant renvoie les logs de la dernière requête faite à l’API (ici, ReadVms).
from osc_sdk_python import *
if __name__ == "__main__":
with Gateway(profile="profile_1") as gw:
# Imprime les logs dans la mémoire, le flux de sortie standard et le flux d'erreur standard
# Les valeurs possibles de 'what' sont LOG_KEEP_ONLY_LAST_REQ et LOG_ALL
gw.log.config(type=LOG_MEMORY | LOG_STDIO | LOG_STDERR, what=LOG_KEEP_ONLY_LAST_REQ)
result = gw.raw("ReadVms")
last_request = gw.log.str()
print(last_request)
Pages connexes