Dieses Projekt ist ein SDK für die Cloudiq -API von Crayon, die in Python -Skripten und -Anwendungen verwendet werden kann. Bietet eine einfache Schnittstelle zur Authentifizierung mit der API mit OAuth2. Es kann verwendet werden, um Mieter zu erstellen, Lizenzabonnements zu erstellen und die Abrechnung zu überwachen. Alles, was im Cloud-IQ-Portal erfolgen kann, kann mit diesem Paket automatisiert werden.
Enthält mehrere vorkonfigurierte Datenschema- und API-Methoden. Benutzerdefinierte Datenblöcke können in der API als Python -Wörterbücher veröffentlicht werden. REST -Methoden: Get, Post, Patch, Put und Löschen können mit einem API -Endpunkt und einem Datenwörterbuch als Argumente aufgerufen werden.
pip install crayon-cloudiq-sdk
So erstellen Sie Cloud-IQ-API-Client-Anmeldeinformationen
Erstellen Sie ein neues Python -Skript
Importieren Sie die Cloudiq -Klasse
from cloudiq import CloudIQ
Initialisieren Sie eine Instanz der CloudIQ -Klasse mit gültigen Benutzeranmeldeinformationen:
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)
Die bevorzugte Art, Anmeldeinformationen zu importieren, besteht durch Env -Variablen.
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 -Variablen können mit verschiedenen Methoden eingestellt werden, einschließlich Injektion, wenn Container und Pipelines oder über einen Secrets -Manager wie Azure KeyVault verwendet werden. Um sie mit Bash auf ein lokales System einzustellen, führen Sie die folgenden Befehle aus:
export CLIENT_ID="xxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
export CLIENT_SECRET="xxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
export USERNAME="[email protected]"
export PASSWORD="Password123456"
Eine alternative Methode besteht darin, eine config.ini -Datei zu verwenden, die die Anmeldeinformationen enthält und sie mit dem Konfigurationsmodul abrufen.
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)
Siehe Beispieleordner für Authentifizierungsdemos unter Verwendung von ConfigParser, Env -Variablen und Azure DevOps Pipelines
Daten, die von der API zurückgegeben werden, werden in ein Antwortobjekt gespeichert (mit Ausnahme von GetToken und Validaten). Das Antwortobjekt enthält Werte wie Status_code, Header, Cookies und den vom API -Aufruf zurückgegebenen Text.
Um die JSON -Daten aus der Antwort zurückzugeben, verwenden Sie die Antwort.json () Klassenmethode
Um den Statuscode zurückzugeben, verwenden Sie die Antwort.Status_Code -Variable
Alle erfolgreichen API -Aufrufe geben entweder 200 OK , 201 erstellt oder 204 KEIN Inhalt zurück
Die meisten Fehlerantworten geben auch eine detaillierte Fehlermeldung in JSON -Form an
Wenn Sie einen Fehler von 500 erhalten, ist das Datenschema -Nutzlast höchstwahrscheinlich das Problem. Es kann falsch formatiert werden oder fehlende erforderliche Felder fehlen.
Denken Sie daran, Fehlerstatus beim Schreiben von Automationen zu behandeln
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)
Eine vollständige Erläuterung der Felder innerhalb eines Antwortobjekts finden Sie in den folgenden Links:
Offizielle Anfragen.Response-Klassen-Dokumentation: https://docs.python-requests.org/en/latest/api/#requests.response
W3 Schulen: https://www.w3schools.com/python/ref_requests_response.asp
Machen Sie eine nicht authentifizierte Testping für die API
response = crayon_api.ping()
print(response,json())
Informieren Sie sich über den aktuell authentifizierten Benutzer
response = crayon_api.me()
print(response.json())
Machen Sie eine Rohanfrage:
# 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())
Daten können als Standard -Python -Wörterbuch -Objekt an die API gesendet werden
Abrufen eines gültigen Autorisierungs -Tokens:
response = crayon_api.getToken()
print(response)
Erstellen Sie einen Mieter mit dem CustomertenantDetailed Schema:
# 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())
Kaufen Sie eine Microsoft -Lizenz für einen Mieter mit dem Abonnementdetailed Schema:
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)