Compartir a través de


API de Python

La API de Python de CycleCloud permite interactuar con la API REST de CycleCloud sin tener que realizar manualmente las solicitudes HTTP. Para adquirir la distribución de origen de api, vaya a /about en la instalación de CycleCloud y haga clic en el vínculo Descargar API de Python . Una vez que tenga la distribución de origen, puede hacer pip install en el entorno de Python y empezar a trabajar.

Objetos de cliente

Un objeto Client se puede construir con o sin una configuración especificada. Si no especifica un diccionario de configuración, intenta extraer automáticamente la configuración del archivo ini predeterminado de la CLI de CycleCloud (~/.cycle/config.ini).

La configuración se puede proporcionar como un dict con los siguientes pares clave-valor:

  • url - requerido, la dirección URL de la interfaz web para la instalación de CycleCloud
  • username - Obligatorio
  • password - obligatorio, la contraseña de texto sin formato del usuario
  • timeout : el tiempo, en segundos, antes de que se produzca un error de tiempo de espera al intentar conectarse o comunicarse con el sistema (60 de forma predeterminada)
  • verify_certificates : un valor booleano que indica si la comprobación de certificados debe estar habilitada (True de forma predeterminada)

Como alternativa, estos valores se pueden proporcionar como argumentos de palabra clave al 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")

Propiedades del cliente

  • session- el objeto Session : solo se usa para realizar llamadas a Direct API.

  • clusters : un mapa de los objetos Cluster del sistema, con clave por nombre de clúster.

Objetos de clúster

Un objeto Cluster permite controlar un clúster específico en una instalación de 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)

Propiedades de clúster

  • name : el nombre del clúster al que hace referencia este objeto.

  • nodes : una lista iterable de los registros de nodo que componen este clúster.

Funciones de clúster

  • get_status(nodes=False) : obtiene un objeto Estado del clúster, que también rellena la lista de nodos opcionalmente.

  • scale_by_cores(node_array, total_core_count) : establece el sistema para escalar la matriz de nodos especificada al recuento total de núcleos deseado. Si la matriz de nodos ya contiene más de total_core_count núcleos, la llamada no tiene ningún efecto.

  • scale_by_nodes(node_array, total_node_count) : establece el sistema para escalar la matriz de nodos especificada al número de nodos total deseado. Si la matriz de nodos ya contiene más de total_node_count nodos, la llamada no tiene ningún efecto.

API Directa

Se puede acceder a la API de REST de forma más directa mediante la API en cyclecloud.api y cyclecloud.model que se genera directamente desde la API de REST. Para ello, cree un objeto Client y realice llamadas mediante la session propiedad proporcionada en él.

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)