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 Direttaclusters
: 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 oggettonodes
: 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ù noditotal_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)