File: //usr/lib/python2.7/site-packages/lap/xen_patch_version.py
#!/usr/bin/python
import socket
import subprocess
import yaml
import sys
import commands
import ConfigParser, os
try:
from xenapi import XenAPI
except:
import XenAPI
socket.setdefaulttimeout(10)
def __run__(params):
try:
f = open('/etc/xensource-inventory', 'r')
config = f.read()
cfg = config.split("\n")
xen_version = params.get("xen_version")
version = params.get("patch")
session = XenAPI.xapi_local()
session.login_with_password("", "")
hostname = socket.gethostname()
pool_patches = session.xenapi.pool_patch.get_all()
ver = ""
for infos in cfg:
keys = infos.split("=")
if keys[0] == "PRODUCT_VERSION":
version_inst = keys[1].replace("'", "")
if version_inst == xen_version:
for p in pool_patches:
name_label = session.xenapi.pool_patch.get_name_label(p)
if name_label > ver:
ver = name_label
session.xenapi.session.logout()
if ver >= version:
return [0, "OK - UPDATED => %s" % ver]
else:
return [1, "WARNING - OLD PATCH, NEED UPGRADE TO LATEST PATCH => %s" % version]
else:
session.xenapi.session.logout()
return [1, "WARNING - PRODUCT_VERSION => %s - NEED UPGRADE LATEST VERSION => %s" % ( version_inst, xen_version)]
except Exception, e:
xapi.xenapi.session.logout()
return [2, "CRITICAL - Error: %s" % repr(e)]