Python-API

Met de Python-API van CycleCloud kunt u communiceren met de CycleCloud REST API zonder dat u de HTTP-aanvragen handmatig hoeft uit te voeren. Als u de API-brondistributie wilt verkrijgen, gaat u naar /about op uw CycleCloud-installatie en klikt u op de koppeling Python-API downloaden . Zodra u de brondistributie hebt, kunt pip install u deze in uw Python-omgeving vinden en aan de slag gaan.

Clientobjecten

Een clientobject kan worden samengesteld met of zonder een opgegeven configuratie. Als u geen configuratiewoordenlijst opgeeft, wordt automatisch geprobeerd de configuratie op te halen uit het standaard CycleCloud CLI-bestand (~/.cycle/config.ini).

De configuratie kan worden opgegeven als een dict met de volgende sleutel-/waardeparen:

  • url - vereist, de URL van de webinterface naar de CycleCloud-installatie
  • username - Vereist
  • password - vereist, het wachtwoord voor tekst zonder opmaak van de gebruiker
  • timeout - de tijd, in seconden, voordat er een time-outfout optreedt bij het verbinden/communiceren met het systeem (standaard 60)
  • verify_certificates - een Booleaanse waarde die aangeeft of certificaatcontrole moet worden ingeschakeld (standaard Waar)

U kunt deze waarden ook opgeven als trefwoordargumenten voor de constructor.

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

Clienteigenschappen

  • session - het sessieobject - alleen gebruikt bij het maken van aanroepen naar de Direct-API

  • clusters - een kaart van de clusterobjecten in het systeem, gesleuteld op clusternaam

Clusterobjecten

Een clusterobject biedt controle over een specifiek cluster in een CycleCloud-installatie.

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)

Clustereigenschappen

  • name - de naam van het cluster waarnaar dit object verwijst

  • nodes - een iterable lijst met de knooppuntrecords die deel uitmaken van dit cluster

Clusterfuncties

  • get_status(nodes=False) - Hiermee haalt u een clusterstatusobject van het cluster op, optioneel ook de lijst met knooppunten invullen.

  • scale_by_cores(node_array, total_core_count) - Hiermee stelt u het systeem in om de opgegeven knooppuntmatrix te schalen naar het gewenste totale aantal kernen. Als de knooppuntmatrix al meer dan total_core_count kernen bevat, heeft de aanroep geen effect.

  • scale_by_nodes(node_array, total_node_count) - Hiermee stelt u het systeem in om de opgegeven knooppuntmatrix te schalen naar het gewenste totale aantal knooppunten. Als de knooppuntmatrix al meer dan total_node_count knooppunten bevat, heeft de aanroep geen effect.

Directe API

De rest API kan op een meer directe manier worden geopend met behulp van de API op cyclecloud.api en cyclecloud.model die rechtstreeks wordt gegenereerd vanuit de REST API. Hiervoor maakt u gewoon een clientobject en maakt u aanroepen met behulp van de session eigenschap die erop is opgegeven.

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)