Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
API Python CycleCloud позволяет взаимодействовать с REST API CycleCloud, не выполняя HTTP-запросы вручную. Чтобы получить исходную дистрибуцию API, перейдите на вашей установке CycleCloud по ссылке /about и нажмите на ссылку Скачать API Python. После получения исходного дистрибутива его можно установить pip install
в вашу среду Python и приступить к работе.
Клиентские объекты
Объект клиента можно создать с указанной конфигурацией или без нее. Если словарь конфигурации не указан, программа автоматически пытается извлечь конфигурацию из ini-файла командной строки CycleCloud по умолчанию (~/.cycle/config.ini).
Конфигурация может быть предоставлена в виде дикта со следующими парами "ключ-значение":
-
url
- требуется, URL-адрес веб-интерфейса для установки CycleCloud -
username
- обязательный -
password
- требуется, пароль пользователя в открытом тексте -
timeout
— время в секундах до возникновения ошибки таймаута при попытке установить соединение или взаимодействовать с системой (по умолчанию 60) -
verify_certificates
— логическое значение, указывающее, следует ли включить проверку сертификатов (по умолчанию значение True)
Кроме того, эти значения можно указать в качестве аргументов ключевых слов конструктору.
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")
Свойства клиента
session
— объект сеанса — используется только для вызова Direct APIclusters
— карта объектов кластера в системе с ключом по имени кластера
Объекты кластера
Объект кластера позволяет контролировать определенный кластер в установке 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)
Свойства кластера
name
— имя кластера, на который ссылается этот объект.nodes
— итерируемый список записей узлов, составляющих этот кластер.
Функции кластера
get_status(nodes=False)
- Получает объект состояния кластера , при необходимости также заполняя список узлов.scale_by_cores(node_array, total_core_count)
. Задает системе масштабирование указанного массива узлов до требуемого общего количества ядер. Если массив узлов уже содержит большеtotal_core_count
ядер, вызов не действует.scale_by_nodes(node_array, total_node_count)
. Задает системе масштабирование указанного массива узлов до требуемого общего количества узлов. Если массив узлов уже содержит большеtotal_node_count
узлов, вызов не действует.
Прямой доступ к API
Доступ к REST API можно получить более прямым образом с помощью API cyclecloud.api
и cyclecloud.model
, которые создаются непосредственно из REST API. Для этого вы создаете объект клиента и выполняете вызовы с помощью свойства, предоставленного session
на нем.
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)