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 pip install inserirla 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, tenterà automaticamente di eseguire il pull della configurazione dal file predefinito dell'interfaccia della riga di comando di 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 in testo normale dell'utente
  • timeout - il tempo, espresso 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 cluster

Un oggetto Cluster consente il controllo su un cluster specifico in un'installazione di 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 : elenco iterabile dei record del nodo che comprendono questo cluster

Funzioni del cluster

  • get_status(nodes=False) - Ottiene un oggetto Stato cluster del cluster, facoltativamente popolando anche l'elenco di 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ù total_core_count di core, la chiamata non avrà 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 avrà alcun effetto.

API diretta

È possibile accedere all'API REST in modo più diretto usando l'API in cyclecloud.api e cyclecloud.model che viene generata direttamente dall'API REST. A tale scopo, è sufficiente costruire 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)