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