Python API

CycleCloud Python API'si, HTTP isteklerini el ile gerçekleştirmek zorunda kalmadan CycleCloud REST API ile etkileşim kurmanızı sağlar. API kaynak dağıtımını almak için CycleCloud yüklemenizde /about konumuna gidin ve Python API'sini İndir bağlantısına tıklayın. Kaynak dağıtımı aldıktan sonra python ortamınıza aktarabilir pip install ve kullanmaya başlayabilirsiniz.

İstemci Nesneleri

İstemci nesnesi, belirtilen bir yapılandırmayla veya yapılandırma olmadan oluşturulabilir. Yapılandırma sözlüğü belirtmezseniz, yapılandırmayı otomatik olarak varsayılan CycleCloud CLI ini dosyasından (~/.cycle/config.ini) çekmeye çalışır.

Yapılandırma, aşağıdaki anahtar/değer çiftleriyle bir dikte olarak sağlanabilir:

  • url - gerekli, Web arabiriminin CycleCloud yüklemesinin URL'si
  • username - Gerekli
  • password - gerekli, kullanıcının düz metin parolası
  • timeout - sistemle bağlanmaya/iletişim kurmaya çalışırken zaman aşımı hatası oluşmadan önce saniye olarak süre (varsayılan olarak 60)
  • verify_certificates - Sertifika denetiminin etkinleştirilip etkinleştirilmeydiğini belirten bir boole değeri (Varsayılan olarak True)

Alternatif olarak, bu değerler oluşturucuya anahtar sözcük bağımsız değişkenleri olarak verilebilir.

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")

İstemci özellikleri

  • session- Session nesnesi - yalnızca Doğrudan API'ye çağrı yapmak için kullanılır

  • clusters - Sistemdeki Küme nesnelerinin küme adına göre anahtarlanmış bir haritası

Küme Nesneleri

Küme nesnesi, CycleCloud yüklemesindeki belirli bir küme üzerinde denetime olanak tanır.

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)

Küme özellikleri

  • name - bu nesnenin başvurduğu kümenin adı

  • nodes - bu kümeyi oluşturan düğüm kayıtlarının yinelenebilir listesi

Küme işlevleri

  • get_status(nodes=False) - İsteğe bağlı olarak düğüm listesini de doldurarak kümenin Küme Durumu nesnesini alır.

  • scale_by_cores(node_array, total_core_count) - Belirtilen düğüm dizisini istenen toplam çekirdek sayısıyla ölçeklendirmek için sistemi ayarlar. Düğüm dizisi zaten çekirdekten daha fazlasını total_core_count içeriyorsa, çağrının hiçbir etkisi olmaz.

  • scale_by_nodes(node_array, total_node_count) - Belirtilen düğüm dizisini istenen toplam düğüm sayısıyla ölçeklendirmek için sistemi ayarlar. Düğüm dizisi zaten düğümden daha fazla total_node_count düğüm içeriyorsa, çağrının hiçbir etkisi olmaz.

Doğrudan API

rest API'ye, doğrudan REST API'den oluşturulan ve cyclecloud.model api'sini cyclecloud.api kullanarak daha doğrudan erişilebilir. Bunu yapmak için bir client nesnesi oluşturmanız ve üzerinde sağlanan özelliği kullanarak session çağrılar yapmanız yeterlidir.

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)