cloud/cloud.py
2024-12-20 18:17:50 +07:00

70 lines
2.8 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import config
import requests
import xml.dom.minidom
class cloud:
def __init__(self, API_KEY: str):
'''
Запрос списка машин с перечнем атрибутов: Имя, ОС, IP-адрес, Состояние
На входе нужен Access Token получить который можно при помощи функции getAccessToken(API Token)
'''
url = "https://" + config.SITE + "/oauth/tenant/" + config.TENANT + "/token"
headers = {
"Accept": "application/json",
"Content-Type": "application/x-www-form-urlencoded",
"Content-Length": "71"
}
data = "grant_type=refresh_token&refresh_token=" + config.API_TOKEN
try:
token = requests.post(url=url, headers=headers, data=data).json()['access_token']
self.__access_token = token
except:
raise SystemError("Ошибка иницализации Access Token.")
def getVMList(self) -> list:
'''
Запрос списка машин с перечнем атрибутов: Имя, ОС, IP-адрес, Состояние
'''
url = "https://" + config.SITE + "/api/query/?type=vm&fields=name,detectedGuestOs,ipAddress,status&filter=isVAppTemplate==false"
headers = {
"Accept": "application/*;version=" + config.API_VERSION,
"Authorization": "Bearer " + self.__access_token
}
res = requests.get(url=url, headers=headers)
dom = xml.dom.minidom.parseString(res.text)
return [{
"name": e.attributes['name'].value,
"detectedGuestOs": e.attributes['detectedGuestOs'].value,
"ipAddress": e.attributes['ipAddress'].value,
"status": e.attributes['status'].value}
for e in dom.getElementsByTagName("VMRecord")]
def getUserList(self) -> list:
'''
Запрос списка пользователей
На выходе имеем список словарей:
[{
"name": "str('name')",
"fullName": "str('fullName)",
"isEnabled": bool('isEnabled')
}, {
.....
}]
'''
url = "https://" + config.SITE + "/api/query?type=user&fields=name,fullName,isEnabled"
headers = {
"Accept": "application/*;version=" + config.API_VERSION,
"Authorization": "Bearer " + self.__access_token
}
res = requests.get(url=url, headers=headers)
dom = xml.dom.minidom.parseString(res.text)
return [{"name": e.attributes['name'].value, "fullName": e.attributes['fullName'].value, "isEnabled": bool(e.attributes['isEnabled'].value)} for e in dom.getElementsByTagName("UserRecord")]