API Python
L’API Python CycleCloud vous permet d’interagir avec l’API REST CycleCloud sans avoir à effectuer manuellement les requêtes HTTP. Pour acquérir la distribution source de l’API, accédez à /about sur votre installation CycleCloud, puis cliquez sur le lien Télécharger l’API Python . Une fois que vous avez la distribution source, vous pouvez pip install
le faire dans votre environnement Python et commencer.
Objets clients
Un objet client peut être construit avec ou sans configuration spécifiée. Si vous ne spécifiez pas de dictionnaire de configuration, il tente automatiquement d’extraire la configuration à partir du fichier ini CLI CycleCloud par défaut (~/.cycle/config.ini).
La configuration peut être fournie en tant que dictée avec les paires clé/valeur suivantes :
-
url
- obligatoire, l’URL de l’interface web à l’installation de CycleCloud -
username
- Obligatoire -
password
- obligatoire, mot de passe de texte brut de l’utilisateur -
timeout
- temps, en secondes, avant qu’une erreur de délai d’expiration se produise lors de la tentative de connexion/communication avec le système (60 par défaut) -
verify_certificates
- valeur booléenne indiquant si la vérification du certificat doit être activée (True par défaut)
Vous pouvez également donner ces valeurs en tant qu’arguments de mot clé au constructeur.
from cyclecloud.client import Client
# configuration read from ~/.cycle/config.ini
cl1 = Client()
# config provided as dictionary
config = {"url": "http://127.0.0.1:8443",
"username": "admin",
"password": "password",
"timeout": 60,
"verify_certificates": False}
cl2 = Client(config)
# config provided as keyword arguments
cl3 = Client(url="http://127.0.0.1:8443", username="admin", password="password")
Propriétés du client
session
- l’objet Session - utilisé uniquement pour effectuer des appels à l’API Directclusters
- carte des objets cluster dans le système, clé par nom de cluster
Objets de cluster
Un objet Cluster permet de contrôler un cluster spécifique dans une installation CycleCloud.
from cyclecloud.client import Client
cl1 = Client()
# gets a Cluster object for a cluster named "test-cluster-1" from the client cl1
cluster_obj = cl1.clusters["test-cluster-1"]
# prints the current state of the cluster
print(cluster_obj.get_status().state)
# start up to 5 new cores
cluster_obj.scale_by_cores("execute", 5)
Propriétés du cluster
name
- le nom du cluster auquel cet objet fait référencenodes
- liste itérable des enregistrements de nœud qui composent ce cluster
Fonctions de cluster
get_status(nodes=False)
- Obtient également un objet État du cluster, qui remplit éventuellement la liste des nœuds.scale_by_cores(node_array, total_core_count)
- Définit le système pour mettre à l’échelle le tableau de nœuds spécifié sur le nombre total total souhaité. Si le tableau de nœuds contient déjà plus detotal_core_count
cœurs, l’appel n’aura aucun effet.scale_by_nodes(node_array, total_node_count)
- Définit le système pour mettre à l’échelle le tableau de nœuds spécifié au nombre total de nœuds souhaité. Si le tableau de nœuds contient déjà plus detotal_node_count
nœuds, l’appel n’aura aucun effet.
API directe
L’API rest est accessible de manière plus directe à l’aide de l’API et cyclecloud.api
cyclecloud.model
qui est générée directement à partir de l’API REST. Pour ce faire, vous créez simplement un objet client et effectuez des appels à l’aide de la session
propriété fournie sur celle-ci.
from cyclecloud.client import Client
from cyclecloud.api import clusters
cl1 = Client()
# prints the current state of the cluster
response_status, cluster_status = clusters.get_cluster_status(cl1.session, "test-cluster-1", nodes=False)
print(cluster_status.state)