API Python

API Python CycleCloud позволяет взаимодействовать с REST API CycleCloud без необходимости выполнять HTTP-запросы вручную. Чтобы получить распространение источника API, перейдите в папку /about в установке CycleCloud и щелкните ссылку "Скачать API Python ". После получения исходного дистрибутива его можно pip install использовать в среде Python и приступить к работе.

Клиентские объекты

Клиентский объект можно создать с указанной конфигурацией или без нее. Если словарь конфигурации не указан, он будет автоматически пытаться извлечь конфигурацию из файла cli 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— объект Session — используется только при вызове API Direct.

  • clusters — карта объектов кластера в системе с ключом по имени кластера.

Объекты кластера

Объект кластера позволяет управлять определенным кластером в установке 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. Для этого необходимо просто создать объект Client и выполнить вызовы с помощью свойства, предоставленного 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)