استخدام واجهة برمجة تطبيقات CycleCloud REST

يوفر Cyclecloud واجهة برمجة تطبيقات REST لإضافة إدارة نظام المجموعة التلقائية والبرمجية. يتطلب التحجيم التلقائي المخصص وتكامل المجدول المخصص أداة تقوم بتقييم قائمة انتظار حمل العمل وبدء تشغيل الأجهزة الظاهرية (VM) مساوية لطلب حمل العمل. واجهة برمجة تطبيقات CycleCloud REST هي نقطة النهاية المناسبة لمثل هذه الأداة وتدعم متطلبات حمل العمل التي قد تتضمن ترتيبات جهاز ظاهري عالية الإنتاجية أو مقترنة بإحكام.

تحديد حالة نظام المجموعة

يمكنك الاستعلام عن CycleCloud لتحديد حالة نظام المجموعة التي تشير إلى توفر الجهاز الظاهري في كل تكوين من تكوينات نظام المجموعة.

curl --location --request GET '${CC-URL}/clusters/${CLUSTER}/status' \
--header 'Authorization: Basic ****************************'

ملاحظة

تقبل واجهة برمجة تطبيقات CycleCloud المصادقة الأساسية باستخدام تركيبة اسم المستخدم وكلمة المرور. أمثلة واجهة برمجة التطبيقات curl هذه هي سلسلة مشفرة base64 'user:password'.

ستكون الاستجابة بالشكل التالي. تحتوي الاستجابة على مجموعة كاملة من سمات العقدة ولكن يتم حذف العديد منها هنا للتبسيط.

{
  "state": "Started",
  "targetState": "Started",
  "maxCount": 100,
  "maxCoreCount": 10000,
  "nodearrays": [
    {
      "name": "ondemand",
      "maxCount": 100,
      "maxCoreCount": 500,
      "buckets": [
        {
        "bucketId": "cd56af52-abcd-1234-a4e7-e6a91ca519a2",
        "definition": {
            "machineType": "Standard_Fs32_v2"
          },
          "maxCount": 3,
          "maxCoreCount": 96,
          "activeCount": 0,
          "activeCoreCount": 0,
          "availableCount": 3,
          "availableCoreCount": 96,
          "quotaCount": 3,
          "quotaCoreCount": 100,
          "consumedCoreCount": 0,
          "maxPlacementGroupSize": 40,
          "maxPlacementGroupCoreSize": 1280,
          "valid": true,
          "placementGroups": [],
          "virtualMachine": {
            "vcpuCount": 32,
            "memory": 64.0,
            "infiniband": false
          }
          },
        {
        "bucketId": "d81e001a-abcd-1234-9754-79815cb7b225",
        "definition": {
            "machineType": "Standard_Hc44rs"
          },
          "maxCount": 11,
          "maxCoreCount": 484,
          "activeCount": 0,
          "activeCoreCount": 0,
          "availableCount": 11,
          "availableCoreCount": 484,
          "quotaCount": 200,
          "quotaCoreCount": 8800,
          "consumedCoreCount": 44,
          "maxPlacementGroupSize": 40,
          "maxPlacementGroupCoreSize": 1760,
          "valid": true,
          "placementGroups": [],
          "virtualMachine": {
            "vcpuCount": 44,
            "memory": 327.83,
            "infiniband": true
          }
        }
    ]
}

إنشاء عقد

توفر واجهة برمجة التطبيقات مرونة كبيرة في بدء العقد. السمات المطلوبة الوحيدة لإنشاء العقد هي nodearray و count. سيرث الاستدعاء الذي يستخدم الحد الأدنى من السمات المطلوبة جميع تكوينات العقدة الموجودة وسيتم وضعها في المستودع الأول الذي يمكن أن يلبي الطلب.

curl --location --request POST '${CC-URL}/clusters/${CLUSTER}/nodes/create' \
--header 'Authorization: Basic ****************************' \
--header 'Content-Type: text/plain' \
--data-raw '{ "requestId" : "463270ca-abcd-1234-98d6-431ee3ef8ed5",
    "sets" : [
        {
            "count" : 1,
            "nodearray" : "ondemand"
        }
    ]
}'

ستوفر الاستجابة لهذا الاستدعاء معرف عملية.

{
  "operationId": "3b53d621-abcd-1234-8876-6ec1158897ac",
  "sets": [
    {
      "added": 1
    }
  ]
}

يمكن تعقب حالة العملية باستخدام واجهة برمجة تطبيقات العمليات. يمكنك تعيين المعلمة request_id لتصفية استجابة عقد GET. يمكن أن يوفر لك هذا تفاصيل لجميع العقد التي تم إنشاؤها مع طلب الإنشاء.

curl --location --request GET '${CC-URL}/clusters/${CLUSTER}/nodes?request_id=463270ca-abcd-1234-98d6-431ee3ef8ed5' \

إضافة عقد مقترنة بإحكام

يمكن تعريف CycleCloud nodearrays مع أنواع أجهزة صالحة متعددة في قائمة. لنفترض أن nodearray يحتوي على ondemand كل من Standard_F32s_v2_و Standard_Hc44rs معرف. ستظهر واجهة برمجة تطبيقات حالة نظام المجموعة اثنين buckets على الأقل لهذا nodearray واحد لكل حجم جهاز ظاهري. لاحظ أن Standard_Hc44rs المستودع يشير إلى توفر خدمة infiniband . تتم كتابة بعض البرامج الكمية لتوسيع نطاقها عبر العقد والاستفادة من الاتصالات ذات زمن الانتقال المنخفض بين العقد.

لنفترض أنك تقوم بتشغيل حمل العمل هذا واستدعاءات الوظيفة لأربع عقد متصلة بواسطة شبكة Azure Infiniband. للتأكد من أن العقد الأربع ينتهي بها المطاف في نفس مجموعة الموضع، وبالتالي على نفس شبكة Infiniband، ستستخدم استدعاء واجهة برمجة تطبيقات إنشاء العقد مع placementGroupId.

curl --location --request POST '${CC-URL}/clusters/${CLUSTER}/nodes/create' \
--header 'Authorization: Basic ****************************' \
--header 'Content-Type: text/plain' \
--data-raw '{ "requestId" : "463270ca-abcd-1234-98d6-431ee3ef8ed5",
    "sets" : [
        {
            "count" : 4,
            "nodearray" : "ondemand",
            "placementGroupId" : "pg0",
            "definition" : { "machineType" : "Standard_Hc44rs" }
        }
    ]
}'

قد يشير أو placementGroupId لا يشير إلى مجموعة موضع موجودة مسبقا. هذه مجموعة منطقية تستخدم في CycleCloud وإذا لم تكن مجموعة موضع معينة موجودة عند إجراء الطلب، فسينشئ CycleCloud مجموعة موضع جديدة. يمكنك إضافة أجهزة ظاهرية إضافية إلى نفس مجموعة الموضع في طلبات إنشاء عقد إضافية.

حذف العقد

في مرحلة ما، سترغب خدمة المدير في إنهاء العقد التي تم إنشاؤها.

curl --location --request POST '${CC-URL}/clusters/${CLUSTER}/nodes/terminate' \
--header 'Authorization: Basic ****************************' \
--header 'Content-Type: text/plain' \
--data-raw '{
 "ids" : ["62a1b116-abcd-1234-b290-b54ea23f1b68"]
}'
{
  "operationId": "15aaa844-abcd-1234-9591-8904c546028d",
  "nodes": [
    {
      "name": "ondemand-3",
      "id": "62a1b116-abcd-1234-b290-b54ea23f1b68",
      "status": "OK"
    }
  ]
}