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-installationen
  • username - Krävs
  • password - krävs lösenordet för oformaterad text för användaren
  • timeout – 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:et

  • clusters – 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 till

  • nodes – 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 än total_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 än total_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)