cloud/cloud.py

70 lines
2.8 KiB
Python
Raw Permalink Normal View History

2024-12-20 11:17:50 +00:00
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")]