Proyek ini adalah SDK untuk API CloudIQ Crayon yang dapat digunakan dalam skrip dan aplikasi Python. Memberikan antarmuka sederhana untuk mengotentikasi dengan API menggunakan OAuth2. Ini dapat digunakan untuk membuat penyewa, membuat langganan lisensi, dan memantau penagihan. Apa pun yang dapat dilakukan di portal Cloud-IQ dapat diotomatisasi menggunakan paket ini.
Termasuk beberapa skema data dan metode API yang telah dikonfigurasi sebelumnya. Blok data khusus dapat diposting ke API sebagai kamus Python. Metode REST: Dapatkan, posting, tambalan, put, dan hapus dapat dipanggil dengan titik akhir API dan kamus data sebagai argumen.
pip install crayon-cloudiq-sdk
Cara Membuat Kredensial Klien API Cloud-IQ
Buat skrip Python baru
Impor kelas cloudiq
from cloudiq import CloudIQ
Inisialisasi instance kelas CloudIQ dengan kredensial pengguna yang valid:
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)
Cara yang disukai untuk mengimpor kredensial adalah melalui variabel 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)
Variabel Env dapat diatur menggunakan berbagai metode termasuk injeksi jika menggunakan wadah dan pipa atau melalui manajer rahasia seperti Azure Keyvault. Untuk mengaturnya pada sistem lokal menggunakan Bash Run perintah berikut:
export CLIENT_ID="xxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
export CLIENT_SECRET="xxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
export USERNAME="[email protected]"
export PASSWORD="Password123456"
Metode alternatif adalah menggunakan file config.ini yang berisi kredensial dan mengambilnya menggunakan modul 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)
Lihat Contoh Folder untuk Demo Otentikasi Menggunakan ConfigParser, Variabel Env, dan Azure DevOps Pipelines
Data yang dikembalikan oleh API disimpan ke dalam objek respons (kecuali untuk gettoken dan validateToken). Objek respons berisi nilai -nilai seperti status_code, header, cookie, dan teks yang dikembalikan oleh panggilan API.
Untuk mengembalikan data JSON dari metode kelas response use response.json ()
Untuk mengembalikan kode status, gunakan variabel respons.status_code
Semua panggilan API yang berhasil baik mengembalikan 200 ok , 201 dibuat , atau 204 tidak ada konten
Sebagian besar respons kesalahan juga memberikan pesan kesalahan terperinci dalam formulir JSON
Jika Anda menerima kesalahan 500, muatan skema data kemungkinan besar masalahnya. Ini dapat diformat secara tidak benar atau hilang bidang yang diperlukan.
Ingatlah untuk menangani status kesalahan saat menulis otomatisasi
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)
Untuk penjelasan lengkap tentang bidang dalam objek respons, silakan tinjau informasi di tautan berikut:
Permintaan resmi
Sekolah W3: https://www.w3schools.com/python/ref_requests_response.asp
Buat ping tes yang tidak autentikasi ke API
response = crayon_api.ping()
print(response,json())
Dapatkan informasi tentang pengguna yang saat ini diautentikasi
response = crayon_api.me()
print(response.json())
Membuat permintaan mendapatkan mentah:
# 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())
Data dapat dikirim ke API sebagai objek Kamus Python standar
Mengambil token otorisasi yang valid:
response = crayon_api.getToken()
print(response)
Buat penyewa menggunakan skema 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())
Beli lisensi Microsoft untuk penyewa menggunakan skema yang berlangganan:
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)