Python API

CycleCloud Python API를 사용하면 HTTP 요청을 수동으로 수행할 필요 없이 CycleCloud REST API와 상호 작용할 수 있습니다. API 원본 배포를 얻으려면 CycleCloud 설치에서 /about 로 이동하고 Python API 다운로드 링크를 클릭합니다. 원본 배포가 완료되면 Python 환경에 배포하고 시작할 수 있습니다 pip install .

클라이언트 개체

클라이언트 개체는 구성을 지정하거나 지정하지 않고 생성할 수 있습니다. 구성 사전을 지정하지 않으면 기본 CycleCloud CLI ini 파일(~/.cycle/config.ini)에서 구성을 자동으로 끌어오려고 시도합니다.

구성은 다음 키/값 쌍을 사용하여 받아쓰기로 제공할 수 있습니다.

  • url - 필수, CycleCloud 설치에 대한 웹 인터페이스의 URL
  • 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 개체 - Direct API 호출에만 사용

  • clusters - 클러스터 이름으로 키 지정되는 시스템의 클러스터 개체 맵

클러스터 개체

Cluster 개체를 사용하면 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 많은 노드가 포함되어 있으면 호출에 영향을 주지 않습니다.

Direct API

REST API에서 직접 생성되는 API cyclecloud.apicyclecloud.model 를 사용하여 더 직접적인 방식으로 나머지 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)