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 Direct

  • clusters - 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érence

  • nodes - 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 de total_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 de total_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.apicyclecloud.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)