Python API

تسمح لك واجهة برمجة تطبيقات CycleCloud Python بالتفاعل مع واجهة برمجة تطبيقات CycleCloud REST دون الحاجة إلى تنفيذ طلبات HTTP يدويا. للحصول على توزيع مصدر واجهة برمجة التطبيقات، انتقل إلى /about على تثبيت CycleCloud وانقر على ارتباط Download Python API . بمجرد حصولك على توزيع المصدر، يمكنك pip install ذلك في بيئة python الخاصة بك والبدء.

كائنات العميل

يمكن إنشاء كائن العميل مع تكوين محدد أو بدونه. إذا لم تحدد قاموس تكوين، فسيحاول تلقائيا سحب التكوين من ملف CycleCloud CLI ini الافتراضي (~/.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 - كائن جلسة العمل - يستخدم فقط في إجراء مكالمات إلى واجهة برمجة التطبيقات المباشرة

  • 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 عقد، فلن يكون للاتصال أي تأثير.

واجهة برمجة التطبيقات المباشرة

يمكن الوصول إلى واجهة برمجة التطبيقات المتبقية بطريقة أكثر مباشرة باستخدام واجهة برمجة التطبيقات في cyclecloud.api والتي cyclecloud.model يتم إنشاؤها مباشرة من واجهة برمجة تطبيقات REST. للقيام بذلك، يمكنك ببساطة إنشاء كائن عميل وإجراء استدعاءات باستخدام الخاصية المتوفرة 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)