Compartilhar via


API de Python

A API python do CycleCloud permite que você interaja com a API REST do CycleCloud sem precisar executar manualmente as solicitações HTTP. Para adquirir a distribuição de origem da API, navegue até /about na instalação do CycleCloud e clique no link Baixar a API do Python . Depois de ter a distribuição de origem, você poderá pip install usá-la em seu ambiente python e começar.

Objetos do cliente

Um objeto Client pode ser construído com ou sem uma configuração especificada. Se você não especificar um dicionário de configuração, ele tentará automaticamente extrair a configuração do arquivo de entrada padrão da CLI do CycleCloud (~/.cycle/config.ini).

A configuração pode ser fornecida como um ditado com os seguintes pares chave/valor:

  • url - necessária, a URL da interface da Web para a instalação do CycleCloud
  • username - Necessário
  • password - necessária, a senha de texto sem formatação do usuário
  • timeout - o tempo, em segundos, antes de ocorrer um erro de tempo limite ao tentar se conectar/se comunicar com o sistema (60 por padrão)
  • verify_certificates - um booliano que indica se a verificação de certificado deve ser habilitada (True por padrão)

Como alternativa, esses 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 - usado apenas para fazer chamadas para a API Direta

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

Objetos de cluster

Um objeto Cluster permite o controle sobre um cluster específico em uma instalação do 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 do cluster

  • name - o nome do cluster ao qual este objeto se refere

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

Funções de cluster

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

  • scale_by_cores(node_array, total_core_count) - Define o sistema para dimensionar a matriz de nós especificada para a contagem total de núcleos desejada. Se a matriz de nós já contiver mais do que total_core_count núcleos, a chamada não terá efeito.

  • scale_by_nodes(node_array, total_node_count) - Define o sistema para dimensionar a matriz de nós especificada para a contagem total de nós desejada. Se a matriz de nós já contiver mais de total_node_count nós, a chamada não terá efeito.

API direta

A API rest pode ser acessada de maneira mais direta usando a API em cyclecloud.api e cyclecloud.model que é gerada diretamente da API REST. Para fazer isso, basta construir um objeto Client e fazer chamadas usando 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)