added simple class for vm

This commit is contained in:
osiu97 2019-01-09 15:11:57 +01:00
parent d9f9e826f8
commit a0342a2ee5
3 changed files with 78 additions and 7 deletions

11
PVE-Zabbix.py Normal file
View File

@ -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

View File

@ -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

23
VM.py Normal file
View File

@ -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)