[PYTHON] Utilisez Nutanix avec l'API REST, partie 2

Utilisez Nutanix avec l'API REST, partie 2

table des matières

Présentation du script

Objectif

Flux de programme

Faire petit à petit

Script de confirmation de processus principal

import requests
import urllib3
from urllib3.exceptions import InsecureRequestWarning
urllib3.disable_warnings(InsecureRequestWarning)
import json

IP = '10.42.8.37'
USER = 'admin'
PASSWORD = 'hogehoge'

# (1) Make Session
session = requests.Session()
session.auth = (USER, PASSWORD)
session.verify = False                              
session.headers.update({'Content-Type': 'application/json; charset=utf-8'})

# (2) Make URL
url = 'https://{}:9440/PrismGateway/services/rest/v1/cluster'.format(IP)

# (3) Send request and get Response
response = session.get(url)

# (4) Check response code
print('Response Code: {}'.format(response.status_code))
print('Response OK?: {}'.format(response.ok))

# (5) Check response body
print('Response Body:')
print(response.text)


Description du script

processus d'importation. Défini lorsque vous faites quelque chose à l'aide de la communication http

import requests
import urllib3
from urllib3.exceptions import InsecureRequestWarning
urllib3.disable_warnings(InsecureRequestWarning)
import json

Création et initialisation des objets de session

IP = '10.42.8.37'
USER = 'admin'
PASSWORD = 'hogehoge'

# (1) Make Session
session = requests.Session()
session.auth = (USER, PASSWORD)
session.verify = False                              
session.headers.update({'Content-Type': 'application/json; charset=utf-8'})

# (2) Make URL
url = 'https://{}:9440/PrismGateway/services/rest/v1/cluster'.format(IP)

Exécuter la session

# (3) Send request and get Response
response = session.get(url)

# (4) Check response code
print('Response Code: {}'.format(response.status_code))
print('Response OK?: {}'.format(response.ok))

# (5) Check response body
print('Response Body:')
print(response.text)

Le script terminé

import requests
import urllib3
from urllib3.exceptions import InsecureRequestWarning
urllib3.disable_warnings(InsecureRequestWarning)
import json
import base64

#Lire le fichier
fin = open('cvm_info.json', 'r')

#Lire les informations du serveur
# IP = '10.42.8.37'
# USER = 'admin'
# PASSWORD = 'pass'

sv_info = json.load(fin)
IP = sv_info['cluster_address']
USER = sv_info['user_name']
PASSWORD = sv_info['cvm_password']
fin.close()

auth_str = USER + ':' + PASSWORD
auth_str = api_head = {
    'Authorization': 'Basic ' + base64.b64encode(auth_str.encode('utf-8')).decode(),
}

# (1) Make Session
session = requests.Session()
session.auth = (USER, PASSWORD)
session.verify = False                              
session.headers.update({'Content-Type': 'application/json; charset=utf-8'})

# (2) Make URL
url = 'https://{}:9440/PrismGateway/services/rest/v2.0/vms/'.format(IP)

# (3) Send request and get Response
response = session.get(url, headers=api_head)

# (4) Check response code
# print('Response Code: {}'.format(response.status_code))
# print('Response OK?: {}'.format(response.ok))

# (5) Check response body
# print('Response Body:')
# print(response.text)


# (6) text -> dict
dict_data = json.loads(response.text)

# (7)Sortie de la liste de VM CSV
i = 0
while i < dict_data['metadata']['total_entities']:
    vms= (
        dict_data['entities'][i]['name'], 
        dict_data['entities'][i]['description'], 
        dict_data['entities'][i]['num_cores_per_vcpu'],
        dict_data['entities'][i]['num_vcpus'],
        dict_data['entities'][i]['memory_mb'], 
        dict_data['entities'][i]['uuid']
        )
    print(*vms,sep=',')
    i += 1

Supplément

auth_str = USER + ':' + PASSWORD
auth_str = api_head = {
    'Authorization': 'Basic ' + base64.b64encode(auth_str.encode('utf-8')).decode(),
}
# (6) text -> dict
dict_data = json.loads(response.text)

# (7)Sortie de la liste de VM CSV
i = 0
while i < dict_data['metadata']['total_entities']:
    vms= (
        dict_data['entities'][i]['name'], 
        dict_data['entities'][i]['description'], 
        dict_data['entities'][i]['num_cores_per_vcpu'],
        dict_data['entities'][i]['num_vcpus'],
        dict_data['entities'][i]['memory_mb'], 
        dict_data['entities'][i]['uuid']
        )
    print(*vms,sep=',')
    i += 1

Résultat d'exécution

PS C:\Users\oresama>  get_aos_rest.py
Move VM,RX-Autodeployed-VM,4,1,8192,ffac0fb7-6a0b-45b1-a3ea-7c8079af2364
RXAutomationPC,NutanixPrismCentral,1,4,16384,f6817073-c941-4504-8034-a1d776b03a4c
Windows 2012 VM,RX-Autodeployed-VM,4,1,8192,23647618-2d45-46ac-8909-ea1444be6d94
Windows 10 VM,RX-Autodeployed-VM,4,1,8192,59a768a1-556d-4c17-bd84-71875a666d99
AutoDC VM,RX-Autodeployed-VM,4,1,8192,68eef805-3671-4717-99d6-5a07723da365
CentOS VM,RX-Autodeployed-VM,4,1,8192,cd9d44b4-db7a-4582-91f0-44d5d27aff2b
{"metadata":{"grand_total_entities":6,"total_entities":6,"count":6,"start_index":0,"end_index":6},"entities":[{"allow_live_migrate":true,"gpus_assigned":false,"boot":{"disk_address":{"device_bus":"scsi","device_index":0},"boot_device_type":"disk"},"description":"RX-Autodeployed-VM","ha_priority":0,"memory_mb":8192,"name":"Move VM","num_cores_per_vcpu":4,"num_vcpus":1,"power_state":"off","timezone":"UTC","uuid":"ffac0fb7-6a0b-45b1-a3ea-7c8079af2364","vm_features":{"AGENT_VM":false,"VGA_CONSOLE":true},"vm_logical_timestamp":1,"machine_type":"pc"},{"allow_live_migrate":true,"gpus_assigned":false,"description":"NutanixPrismCentral","ha_priority":0,"host_uuid":"fab5dfe4-f92d-4ce8-b296-4790dd19f4c8","memory_mb":16384,"name":"RXAutomationPC","num_cores_per_vcpu":1,"num_vcpus":4,"power_state":"on","timezone":"UTC","uuid":"f6817073-c941-4504-8034-a1d776b03a4c","vm_features":{"AGENT_VM":false,"VGA_CONSOLE":true},"vm_logical_timestamp":2,"machine_type":"pc"},{"allow_live_migrate":true,"gpus_assigned":false,"boot":{"disk_address":{"device_bus":"scsi","device_index":0},"boot_device_type":"disk"},"description":"RX-Autodeployed-VM","ha_priority":0,"memory_mb":8192,"name":"Windows 2012 VM","num_cores_per_vcpu":4,"num_vcpus":1,"power_state":"off","timezone":"UTC","uuid":"23647618-2d45-46ac-8909-ea1444be6d94","vm_features":{"AGENT_VM":false,"VGA_CONSOLE":true},"vm_logical_timestamp":1,"machine_type":"pc"},{"allow_live_migrate":true,"gpus_assigned":false,"boot":{"disk_address":{"device_bus":"scsi","device_index":0},"boot_device_type":"disk"},"description":"RX-Autodeployed-VM","ha_priority":0,"host_uuid":"fee3e23a-2c0f-4a51-963e-289601935fd3","memory_mb":8192,"name":"Windows 10 VM","num_cores_per_vcpu":4,"num_vcpus":1,"power_state":"on","timezone":"UTC","uuid":"59a768a1-556d-4c17-bd84-71875a666d99","vm_features":{"AGENT_VM":false,"VGA_CONSOLE":true},"vm_logical_timestamp":2,"machine_type":"pc"},{"allow_live_migrate":true,"gpus_assigned":false,"boot":{"disk_address":{"device_bus":"scsi","device_index":0},"boot_device_type":"disk"},"description":"RX-Autodeployed-VM","ha_priority":0,"host_uuid":"fee3e23a-2c0f-4a51-963e-289601935fd3","memory_mb":8192,"name":"AutoDC VM","num_cores_per_vcpu":4,"num_vcpus":1,"power_state":"on","timezone":"UTC","uuid":"68eef805-3671-4717-99d6-5a07723da365","vm_features":{"AGENT_VM":false,"VGA_CONSOLE":true},"vm_logical_timestamp":2,"machine_type":"pc"},{"allow_live_migrate":true,"gpus_assigned":false,"boot":{"disk_address":{"device_bus":"scsi","device_index":0},"boot_device_type":"disk"},"description":"RX-Autodeployed-VM","ha_priority":0,"memory_mb":8192,"name":"CentOS VM","num_cores_per_vcpu":4,"num_vcpus":1,"power_state":"off","timezone":"UTC","uuid":"cd9d44b4-db7a-4582-91f0-44d5d27aff2b","vm_features":{"AGENT_VM":false,"VGA_CONSOLE":true},"vm_logical_timestamp":1,"machine_type":"pc"}]}

Résumé

Recommended Posts

Utilisez Nutanix avec l'API REST, partie 2
Faites fonctionner Jupyter avec l'API REST pour extraire et enregistrer le code Python
Livre de recettes Cloud DevOps, partie 4 - Explorez DevOps DirectMail en Python avec l'API REST
Créer une API REST pour faire fonctionner dynamodb avec le Framework Django REST
API REST facile avec API Gateway / Lambda / DynamoDB
Utiliser Kinesis avec Python
bac à sable avec neo4j partie 10
Extruder avec l'API Fusion360
Faire fonctionner Blender avec Python
Comment faire fonctionner l'API Discord avec Python (enregistrement de bot)
Utiliser Excel avec Python (1)
Utiliser Excel avec Python (2)
La première API à créer avec le framework Python Djnago REST
J'ai essayé Google Sign-In avec Spring Boot + Spring Security REST API
Trading automatique FX avec algorithme génétique Partie 3 Trading réel avec l'API Oanda
Téléchargement d'image avec l'API Flickr
Traitement d'image avec Python (partie 2)
Exploitez Excel avec Python open pyxl
Etudier Python avec freeCodeCamp part1
Utiliser l'API Trello avec python
Images en bordure avec python Partie 1
Faire fonctionner le conteneur Db2 avec Go
Exploitez TwitterBot avec Lambda, Python
Grattage avec Selenium + Python Partie 1
Créer une API avec Django
Utiliser l'API Twitter avec Python
API avec Flask + uWSGI + Nginx
Obtenir des informations avec l'API Zabbix
[Note] Faites fonctionner MongoDB avec Python
Etudier Python avec freeCodeCamp part2
Traitement d'image avec Python (partie 1)
API Web avec Python + Falcon
Travailler avec des sites Web à l'aide de Python_Webbrowser
Résolution de Nampre avec Python (partie 2)
Traitement d'image avec Python (3)
Soutenez-vous avec l'API Twitter
Grattage avec Selenium + Python Partie 2
[Python] [SQLite3] Exploiter SQLite avec Python (basique)
Appelez l'API avec python3.
Utiliser l'API subsonique avec python3
Cours ROS 105 Fonctionnement toio avec ROS
Framework Django REST avec Vue.js
Update_with_media réussi avec l'API Twitter
Connectez-vous avec Django Rest Framework
Qiita API Oauth avec Django
Obtenez un classement avec l'API Rakuten
Une histoire sur l'ajout d'une API REST à un démon créé avec Python
Implémentation de CRUD à l'aide de l'API REST avec Python + Django Rest framework + igGrid
Discord Bot avec fonction d'enregistrement commençant par Python: (5) Exploitez directement l'API Discord
Créer une API REST qui renvoie l'heure actuelle avec Python3 + Falcon
Importation et téléchargement d'images sur le stockage Azure. Avec Python + requêtes + API REST
Essayez de créer un article de Qiita avec l'API REST [Préparation environnementale]