added simple class for vm
This commit is contained in:
parent
d9f9e826f8
commit
a0342a2ee5
|
|
@ -0,0 +1,11 @@
|
|||
from PVEApi import PVEApi
|
||||
|
||||
USERNAME = "zabbix@pve"
|
||||
PASSWORD = "zabbix"
|
||||
HOST = "172.16.3.11:8006"
|
||||
|
||||
conn = PVEApi(HOST, USERNAME, PASSWORD)
|
||||
|
||||
print conn.get_node_list()
|
||||
for vm in conn.get_cluster_vmlist():
|
||||
print vm.node, vm.name, vm.vmid, vm.cpus
|
||||
51
PVEApi.py
51
PVEApi.py
|
|
@ -2,10 +2,7 @@ import urllib
|
|||
import urllib2
|
||||
import ssl
|
||||
import json
|
||||
|
||||
USERNAME = "zabbix@pve"
|
||||
PASSWORD = "zabbix"
|
||||
HOST = "172.16.3.11:8006"
|
||||
from VM import VM
|
||||
|
||||
|
||||
def get_auth(host, username, password):
|
||||
|
|
@ -21,10 +18,50 @@ class PVEApi(object):
|
|||
|
||||
def __init__(self, host, username, password):
|
||||
self.host = host
|
||||
self.url = "https://" + self.host + "/api2/json"
|
||||
self.csrftoken = get_auth(self.host, username, password)[0]
|
||||
self.ticket = get_auth(self.host, username, password)[1]
|
||||
|
||||
def get_request(self, url):
|
||||
req = urllib2.Request(url)
|
||||
req.add_header('Cookie', 'PVEAuthCookie=' + self.ticket)
|
||||
return req
|
||||
|
||||
conn = PVEApi(HOST, USERNAME, PASSWORD)
|
||||
print conn.ticket
|
||||
print conn.csrftoken
|
||||
def get_node_list(self):
|
||||
url = self.url + '/nodes'
|
||||
response = json.load(urllib2.urlopen(self.get_request(url), context=ssl._create_unverified_context()))
|
||||
resources = response['data']
|
||||
nodes = list()
|
||||
for node in resources:
|
||||
if type(node) is dict:
|
||||
nodes.append(node[u'node'])
|
||||
return nodes
|
||||
|
||||
def get_cluster_vmlist(self):
|
||||
vmlist = list()
|
||||
for node in self.get_node_list():
|
||||
url = self.url + '/nodes/' + node + '/qemu'
|
||||
response = json.load(urllib2.urlopen(self.get_request(url), context=ssl._create_unverified_context()))
|
||||
resources = response['data']
|
||||
print resources
|
||||
for machine in resources:
|
||||
name = machine[u'name']
|
||||
status = machine[u'status']
|
||||
uptime = machine[u'uptime']
|
||||
diskread = machine[u'diskread']
|
||||
diskwrite = machine[u'diskwrite']
|
||||
memusage = machine[u'mem']
|
||||
pid = machine[u'pid']
|
||||
vmid = machine[u'vmid']
|
||||
netin = machine[u'netin']
|
||||
netout = machine[u'netout']
|
||||
cpus = machine[u'cpus']
|
||||
template = machine[u'template']
|
||||
disk = machine[u'disk']
|
||||
cpuusage = machine[u'cpu']
|
||||
maxdisk = machine[u'maxdisk']
|
||||
maxmem = machine[u'maxmem']
|
||||
vm = VM(node, name, status, uptime, diskread, diskwrite, memusage, pid, vmid, netin, netout, cpus,
|
||||
template, disk, cpuusage, maxdisk, maxmem)
|
||||
vmlist.append(vm)
|
||||
return vmlist
|
||||
|
|
|
|||
|
|
@ -0,0 +1,23 @@
|
|||
class VM(object):
|
||||
def __init__(self, node, name, status, uptime, diskread, diskwrite, memusage, pid, vmid, netin, netout, cpus,
|
||||
template, disk, cpuusage, maxdisk, maxmem):
|
||||
self.name = name
|
||||
self.node = node
|
||||
self.status = status
|
||||
self.uptime = uptime
|
||||
self.diskread = diskread
|
||||
self.diskwrite = diskwrite
|
||||
self.memusage = memusage
|
||||
self.pid = pid
|
||||
self.vmid = vmid
|
||||
self.netin = netin
|
||||
self.netout = netout
|
||||
self.cpus = cpus
|
||||
self.template = template
|
||||
self.disk = disk
|
||||
self.cpuusage = cpuusage
|
||||
self.maxdisk = maxdisk
|
||||
self.maxmem = maxmem
|
||||
|
||||
def __repr__(self):
|
||||
return "<%s:%s>" % (self.node, self.name)
|
||||
Loading…
Reference in New Issue