API Python

A API CycleCloud Python permite-lhe interagir com a API CycleCloud REST sem ter de realizar manualmente os pedidos HTTP. Para adquirir a distribuição de fonte API, navegue para /sobre a sua instalação CycleCloud e clique no link API download Python . Uma vez que tenha a distribuição de fonte, pode-se pip install entrar no seu ambiente de pitão e começar.

Objetos de cliente

Um objeto cliente pode ser construído com ou sem uma configuração especificada. Se não especificar um dicionário config, tentará automaticamente retirar a configuração do ficheiro padrão CycleCloud CLI ini (~/.cycle/config.ini).

A configuração pode ser fornecida como um dict com os seguintes pares de tecla/valor:

  • url - necessário, o url da interface web para a instalação CycleCloud
  • username - Necessário
  • password - necessário, a senha de texto simples do utilizador
  • timeout - o tempo, em segundos, antes de ocorrer um erro de tempo limite ao tentar ligar/comunicar com o sistema (60 por defeito)
  • verify_certificates - um booleano que indique se deve ser ativado o controlo do certificado (Verdade por defeito)

Em alternativa, estes valores podem ser dados como argumentos de palavra-chave para o construtor.

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

Propriedades do cliente

  • session - o objeto Session - utilizado apenas na realização de chamadas para a API Direta

  • clusters - um mapa dos objetos cluster no sistema, com o nome do cluster

Objetos de cluster

Um objeto Cluster permite controlar um cluster específico numa instalação 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)

Propriedades de cluster

  • name - o nome do aglomerado a que este objeto se refere

  • nodes - uma lista iterável dos registos de nó que compõem este cluster

Funções de cluster

  • get_status(nodes=False) - Obtém um objeto de Estado do Cluster do cluster, povoando opcionalmente a lista de nós também.

  • scale_by_cores(node_array, total_core_count) - Define o sistema para escalar a matriz do nó especificado para a contagem total do núcleo desejada. Se a matriz do nó já contiver mais do que total_core_count os núcleos, então a chamada não terá qualquer efeito.

  • scale_by_nodes(node_array, total_node_count) - Define o sistema para escalar a matriz de nó especificado para a contagem total de nós desejada. Se a matriz do nó já contiver mais do que total_node_count nós, então a chamada não terá qualquer efeito.

API direto

O resto da API pode ser acedido de forma mais direta utilizando a api at cyclecloud.api e cyclecloud.model que é gerada diretamente a partir da API REST. Para tal, basta construir um objeto Cliente e fazer chamadas utilizando a session propriedade fornecida nele.

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)