OracleVM: Como usar el api de python

Automatizar actividades, tareas o consulta de información, una buena práctica es el propio uso de las APIs que nos oferecen los sistemas (como es obvio).

Con estos pasos se puede hacer lo propio con OracleVM y su api de Python.

Para empezar usando dichas apis lo primero que se tiene que hacer es instalar los siguientes paquetes vía pip:

pip3 install python-ovmclient
pip3 install requests

y una vez hecho esto ya escribir el código que queramos para, por ejemplo y siguiendo el siguiente, acceder a los datos tanto de las máquinas hipervisoras como de las máquinas virtuales que hay dentro:

def serverList(s,baseUri):
r=s.get(baseUri+'/Server')
print ("Servers")
for i in r.json():
# do something with the content
print('{name} is {state}'.format(name=i['name'],state=i['serverRunState']))

def vmList(s,baseUri):
r=s.get(baseUri+'/Vm')
print ("Virtual Machines")
# Muestra toda la respuesta en formato JSON
# print (json.dumps(r.json(),indent=2))
# Muestro aquellos campos que necesito
for i in r.json():
# do something with the content
# print('{name} {OS} {state} {memory} {cpu} {server}'.format(name=i['name'],state=i['vmRunState'],memory=i['memory'],cpu=i['cpuCount'],OS=i['osType'],server=i['serverId']['name']))
if i['vmRunState'] == "TEMPLATE":
print('{name}\t{OS}\t{state}\t{memory}\t{cpu}\tNONE'.format(name=i['name'],state=i['vmRunState'],memory=i['memory'],cpu=i['cpuCount'],OS=i['osType']))
else:
print('{name}\t{OS}\t{state}\t{memory}\t{cpu}\t{server}'.format(name=i['name'],state=i['vmRunState'],memory=i['memory'],cpu=i['cpuCount'],OS=i['osType'],server=i['serverId']['name']))

import requests
import json
from ovmclient import *

s=requests.Session()
s.auth=('admin','PASSWORD')
s.verify=False #disables SSL certificate verification
s.headers.update({'Accept': 'application/json', 'Content-Type': 'application/json'})

ovmmServer="ORACLE_VM_SERVER:7002"
print ("Running against OVM Manager Server: " + ovmmServer)
baseUri='https://'+ovmmServer+'/ovm/core/wsapi/rest'

serverList(s,baseUri)
vmList(s,baseUri)

Dentro del código las partes de login y conexión son importantes para garantizar un correcto resultado de los datos.

Por el resto hay algunos trucos, como imprimir todo el JSON para ver que datos obtenemos:

print (json.dumps(r.json(),indent=2))

y con ello será mas fácil posteriormente imprimir la información que queremos:

print('{name}\t{OS}\t{state}\t{memory}\t{cpu}\t{server}'.format(name=i['name'],state=i['vmRunState'],memory=i['memory'],cpu=i['cpuCount'],OS=i['osType'],server=i['serverId']['name']))

Tenéis mas información en:

Enjoy!!!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: