Condividi tramite


API Python

L'API Python CycleCloud consente di interagire con l'API REST CycleCloud senza dover eseguire manualmente le richieste HTTP. Per acquisire la distribuzione dell'origine API, passare a /about nell'installazione di CycleCloud e fare clic sul collegamento Scarica API Python . Dopo aver ottenuto la distribuzione di origine, è possibile eseguire pip install questa operazione nell'ambiente Python e iniziare.

Oggetti client

Un oggetto Client può essere costruito con o senza una configurazione specificata. Se non si specifica un dizionario di configurazione, tenta automaticamente di eseguire il pull della configurazione dal file predefinito dell'interfaccia della riga di comando cyclecloud (~/.cycle/config.ini).

La configurazione può essere fornita come dict con le coppie chiave/valore seguenti:

  • url - obbligatorio, l'URL dell'interfaccia Web per l'installazione di CycleCloud
  • username - Obbligatorio
  • password - obbligatorio, password di testo normale dell'utente
  • timeout - tempo, in secondi, prima che si verifichi un errore di timeout quando si tenta di connettersi/comunicare con il sistema (60 per impostazione predefinita)
  • verify_certificates - Valore booleano che indica se il controllo dei certificati deve essere abilitato (True per impostazione predefinita)

In alternativa, questi valori possono essere assegnati come argomenti di parola chiave al costruttore.

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")

Proprietà client

  • session - L'oggetto Session , usato solo per effettuare chiamate all'API diretta

  • clusters : mappa degli oggetti Cluster nel sistema, con chiave in base al nome del cluster

Oggetti del cluster

Un oggetto Cluster consente il controllo su un cluster specifico in un'installazione 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)

Proprietà del cluster

  • name : il nome del cluster a cui fa riferimento questo oggetto

  • nodes : un elenco iterabile dei record di nodo che comprendono questo cluster

Funzioni del cluster

  • get_status(nodes=False) - Ottiene un oggetto Stato del Cluster, popolando facoltativamente anche l'elenco dei nodi.

  • scale_by_cores(node_array, total_core_count) - Imposta il sistema per ridimensionare la matrice di nodi specificata sul numero totale di core desiderato. Se la matrice di nodi contiene già più di total_core_count core, la chiamata non ha alcun effetto.

  • scale_by_nodes(node_array, total_node_count) : imposta il sistema per ridimensionare la matrice di nodi specificata sul numero totale di nodi desiderato. Se la matrice di nodi contiene già più nodi total_node_count , la chiamata non ha alcun effetto.

API diretta

È possibile accedere all'API rest in modo più diretto usando l'API in cyclecloud.api e cyclecloud.model generata direttamente dall'API REST. A tale scopo, creare un oggetto Client ed effettuare chiamate usando la session proprietà specificata.

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)