이 프로젝트는 Python 스크립트 및 응용 프로그램에서 사용할 수있는 Crayon의 CloudIQ API 용 SDK입니다. OAUTH2를 사용하여 API로 인증하는 간단한 인터페이스를 제공합니다. 임차인을 만들고 라이센스 가입을 만들고 청구를 모니터링하는 데 사용될 수 있습니다. Cloud-IQ 포털에서 수행 할 수있는 모든 것은이 패키지를 사용하여 자동화 할 수 있습니다.
몇 가지 사전 구성된 데이터 스키마 및 API 메소드가 포함되어 있습니다. 데이터 블록의 데이터 블록은 Python 사전으로 API에 게시 할 수 있습니다. 휴식 방법 : API 엔드 포인트 및 데이터 사전으로 인수로 Get, Post, Patch, Put 및 Delete를 호출 할 수 있습니다.
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를 사용하여 로컬 시스템에 설정하려면 다음 명령을 실행합니다.
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 및 ValidAteNoke 제외). 응답 객체에는 status_code, 헤더, 쿠키 및 API 호출에 의해 반환 된 텍스트와 같은 값이 포함되어 있습니다.
응답 사용 response.json () 클래스 메소드에서 JSON 데이터를 반환하려면
상태 코드를 반환하려면 response.status_code 변수를 사용하십시오
모든 성공적인 API 호출 Return 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)
응답 객체 내의 필드에 대한 전체 설명은 다음 링크의 정보를 검토하십시오.
공식 요청 .Response 클래스 문서 : https://docs.python-requests.org/en/latest/api/#requests.response
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())
RAW GET 요청을 작성하십시오.
# 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())
데이터는 표준 Python 사전 개체로 API로 보낼 수 있습니다.
유효한 승인 토큰 검색 :
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 라이센스를 구매하십시오.
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)