هذا المشروع عبارة عن SDK لـ CloudIQ API من Crayon والتي يمكن استخدامها في البرامج النصية والتطبيقات Python. يوفر واجهة بسيطة للمصادقة باستخدام API باستخدام OAUTH2. يمكن استخدامه لإنشاء المستأجرين ، وإنشاء اشتراكات ترخيص ، ومراقبة الفواتير. أي شيء يمكن القيام به في بوابة Cloud-IQ يمكن تلقائيًا باستخدام هذه الحزمة.
يتضمن العديد من مخطط البيانات المسبق مسبقًا وطرق API. يمكن نشر كتل مخصصة للبيانات على API كقواميات Python. أساليب REST: يمكن استدعاء ، والنشر ، والتصحيح ، والحذف ، مع نقاط نهاية API وقاموس البيانات كوسائط.
pip install crayon-cloudiq-sdk
كيفية إنشاء بيانات اعتماد عميل Cloud-IQ API
قم بإنشاء نص Python جديد
استيراد فئة Cloudiq
from cloudiq import CloudIQ
تهيئة مثيل فئة CloudIQ مع بيانات اعتماد المستخدم صالحة:
from cloudiq import CloudIQ
CLIENT_ID = xxxxxxx-xxxx-xxxx-xxxx-xxxxxx
CLIENT_SECRET = xxxxxxx-xxxx-xxxx-xxxx-xxxxxx
USERNAME = "[email protected]"
PASSWORD = "Password123456"
crayon_api = CloudIQ(CLIENT_ID,CLIENT_SECRET,USERNAME,PASSWORD)
الطريقة المفضلة لاستيراد بيانات الاعتماد هي من خلال متغيرات ENV.
from os import getenv
from cloudiq import CloudIQ
CLIENT_ID = getenv('CLIENT_ID')
CLIENT_SECRET = getenv('CLIENT_SECRET')
USERNAME = getenv('CLOUDIQ_USER')
PASSWORD = getenv('CLOUDIQ_PW')
crayon_api = CloudIQ(CLIENT_ID,CLIENT_SECRET,USERNAME,PASSWORD)
يمكن تعيين متغيرات ENV باستخدام طرق مختلفة بما في ذلك الحقن إذا كان استخدام الحاويات وخطوط الأنابيب أو من خلال مدير أسرار مثل Azure KeyVault. لتعيينها على نظام محلي باستخدام Bash Run الأوامر التالية:
export CLIENT_ID="xxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
export CLIENT_SECRET="xxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
export USERNAME="[email protected]"
export PASSWORD="Password123456"
تتمثل الطريقة البديلة في استخدام ملف config.ini الذي يحتوي على بيانات الاعتماد واستردادها باستخدام وحدة ConfigParser.
import configparser
from cloudiq import CloudIQ
# Parse configuration file
try:
config = configparser.ConfigParser()
config.read('config.ini')
ID = config['CRAYON_API']['ID']
SECRET = config['CRAYON_API']['SECRET']
USER = config['CRAYON_API']['USER']
PASS = config['CRAYON_API']['PASS']
except configparser.Error:
print("Configuration Error...config.ini not found")
exit()
except KeyError:
print("Configuration Error...configuration not found in config.ini")
exit()
crayon_api = CloudIQ(CLIENT_ID,CLIENT_SECRET,USERNAME,PASSWORD)
راجع مجلد أمثلة لعروض التوضيح باستخدام ConfigParser ، ومتغيرات ENV ، وخطوط أنابيب Azure DevOps
يتم حفظ البيانات التي يتم إرجاعها بواسطة API في كائن استجابة (باستثناء getToken و ValidateToken). يحتوي كائن الاستجابة على قيم مثل status_code والرؤوس وملفات تعريف الارتباط والنص الذي يتم إرجاعه بواسطة استدعاء API.
لإرجاع بيانات JSON من طريقة فئة الاستجابة للاستجابة. json ()
لإرجاع رمز الحالة ، استخدم متغير Response.Status_Code
جميع مكالمات API الناجحة إما إرجاع 200 OK ، 201 تم إنشاؤها ، أو 204 لا محتوى
توفر معظم ردود الأخطاء أيضًا رسالة خطأ مفصلة في نموذج JSON
إذا تلقيت خطأ 500 ، فمن المرجح أن تكون حمولة مخطط البيانات هي المشكلة. قد يتم تنسيقه بشكل غير صحيح أو مفقود الحقول المطلوبة.
تذكر أن تتعامل مع حالات الخطأ عند كتابة الأتمتة
response = crayon_api.me()
if(int(response.status_code) == 200):
# Handle JSON data
print(response.json())
else:
# Handle Error
print(response.status_code)
exit(1)
للحصول على شرح كامل للحقول ضمن كائن استجابة ، يرجى مراجعة المعلومات الواردة في الروابط التالية:
طلبات فئة الرسمية
مدارس W3: https://www.w3schools.com/python/ref_requests_response.asp
قم بإجراء اختبار غير مصدق على API
response = crayon_api.ping()
print(response,json())
احصل على معلومات حول المستخدم المصادق عليه حاليًا
response = crayon_api.me()
print(response.json())
اجعل طلبًا خامًا:
# retrieves all products in the Azure Active Directory product family within Org 123456
params = {
'OrganizationId': 123456,
'Include.ProductFamilyNames': 'Azure Active Directory'
}
# make a GET request to https://api.crayon.com/api/v1/AgreementProducts
response = crayon_api.get("https://api.crayon.com/api/v1/AgreementProducts",params)
print(response.json())
يمكن إرسال البيانات إلى API ككائن قاموس Python القياسي
استرداد رمز ترخيص صالح:
response = crayon_api.getToken()
print(response)
قم بإنشاء مستأجر باستخدام مخطط CustomertenantDetailed:
# Set Unique Tenant Variables
tenant_name = "tenant_name"
domain_prefix = "domain_prefix"
# Initialize Tenant and Agreement objects
tenant = crayon_api.CustomerTenantDetailed(
tenant_name=tenant_name,
domain_prefix=domain_prefix,
org_id=111111,
org_name="Fake Org",
invoice_profile_id=80408, # Default
contact_firstname="First",
contact_lastname="Last",
contact_email="[email protected]",
contact_phone="5555555555",
address_firstname="First",
address_lastname="Last",
address_address="75 NoWhere Lane",
address_city="Boston",
address_countrycode="US",
address_region="MA",
address_zipcode="02109"
)
agreement = crayon_api.CustomerTenantAgreement(
firstname="First",
lastname="Last",
phone_number="5555555555",
email="[email protected]"
)
#Create New Tenant
new_tenant = crayon_api.createTenant(tenant.tenant)
print(new_tenant.json())
# Agree to Microsoft Customer Agreement
tenant_id = new_tenant["Tenant"]["Id"]
agreement = crayon_api.createTenantAgreement(tenant_id,agreement.agreement)
print(agreement.json())
شراء رخصة Microsoft للمستأجر باستخدام مخطط الاشتراك DubscriptionDealed:
tenant_id=123456
# Create Subscription objects
azure_subscription = crayon_api.SubscriptionDetailed(
name="Azure P2 Subscription",
tenant_id=tenant_id,
part_number="CFQ7TTC0LFK5:0001",
quantity=1,
billing_cycle=1,
duration="P1M"
)
# Create Azure P2 Subscription
subscription = crayon_api.createSubscription(azure_subscription.subscription)
print(subscription.json)
from cloudiq import CloudIQ
help(CloudIQ)