API de Python

La API de Python de CycleCloud le permite interactuar con la API REST de CycleCloud sin tener que realizar manualmente las solicitudes HTTP. Para adquirir la distribución de origen de la 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 pip install hacerlo 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, intentará 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 - obligatorio, la dirección URL de la interfaz web a 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 se debe habilitar la comprobación de certificados (True de forma predeterminada)

Como alternativa, estos valores se pueden asignar 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 de 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 de clúster del clúster, rellenando opcionalmente también la lista de nodos.

  • 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 tendrá 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 tendrá ningún efecto.

Direct API

Se puede acceder a la API rest de una manera más directa mediante la API en cyclecloud.api y cyclecloud.model que se genera directamente desde la API REST. Para ello, simplemente construya 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)