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 Diretaclusters
- 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 referenodes
- 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 quetotal_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 detotal_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)