Python API
Med CycleCloud Python-API:et kan du interagera med CycleCloud REST API utan att behöva utföra HTTP-begäranden manuellt. Om du vill hämta API-källdistributionen navigerar du till /about i cyclecloud-installationen och klickar på länken Ladda ned Python API . När du har källdistributionen kan pip install
du använda den i python-miljön och komma igång.
Klientobjekt
Ett klientobjekt kan konstrueras med eller utan en angiven konfiguration. Om du inte anger en konfigurationsordlista försöker den automatiskt hämta konfigurationen från standardfilen CycleCloud CLI ini (~/.cycle/config.ini).
Konfigurationen kan anges som en dikta med följande nyckel/värde-par:
url
- krävs url:en för webbgränssnittet till CycleCloud-installationenusername
- Krävspassword
- krävs lösenordet för oformaterad text för användarentimeout
– tiden, i sekunder, innan ett timeout-fel inträffar när du försöker ansluta/kommunicera med systemet (60 som standard)verify_certificates
– ett booleskt värde som anger om certifikatkontroll ska aktiveras (sant som standard)
Alternativt kan dessa värden anges som nyckelordsargument till konstruktorn.
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")
Klientegenskaper
session
– Sessionsobjektet – används endast för att göra anrop till direct-API:etclusters
– en karta över klusterobjekten i systemet, med namnet på klustret
Klusterobjekt
Ett klusterobjekt tillåter kontroll över ett visst kluster i en CycleCloud-installation.
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)
Klusteregenskaper
name
– namnet på klustret som det här objektet refererar tillnodes
– en itererbar lista över nodposterna som utgör det här klustret
Klusterfunktioner
get_status(nodes=False)
– Hämtar ett klusterstatusobjekt för klustret, som även fyller i nodlistan.scale_by_cores(node_array, total_core_count)
– Anger att systemet skalar den angivna nodmatrisen till önskat totalt antal kärnor. Om nodmatrisen redan innehåller fler äntotal_core_count
kärnor har anropet ingen effekt.scale_by_nodes(node_array, total_node_count)
– Anger att systemet skalar den angivna nodmatrisen till önskat totalt antal noder. Om nodmatrisen redan innehåller fler äntotal_node_count
noder har anropet ingen effekt.
Direkt-API
Rest-API:et kan nås på ett mer direkt sätt med hjälp av API:et vid cyclecloud.api
och cyclecloud.model
som genereras direkt från REST-API:et. För att göra det skapar du bara ett klientobjekt och gör anrop med hjälp av egenskapen session
som tillhandahålls på det.
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)