From: jmiao <jmiao@xxxxxxxxxx> The connection_nodeinfo.py test the node infomation the virConnect saved, like: arch, memory, cpus. Signed-off-by: jmiao <jmiao@xxxxxxxxxx> --- repos/virconn/connection_nodeinfo.py | 146 +++++++++++++++++++++++++++++++++++ 1 file changed, 146 insertions(+) create mode 100644 repos/virconn/connection_nodeinfo.py diff --git a/repos/virconn/connection_nodeinfo.py b/repos/virconn/connection_nodeinfo.py new file mode 100644 index 0000000..85fb5cb --- /dev/null +++ b/repos/virconn/connection_nodeinfo.py @@ -0,0 +1,146 @@ +#!/usr/bin/env python +# test libvirt connection node infomation + +import libvirt +from libvirt import libvirtError + +from src import sharedmod +from utils import utils + +required_params = () +optional_params = {'conn': ''} + + +def get_model(logger): + """get nodeinfo model + """ + output = utils.get_host_arch() + logger.info("model is %s" % output) + return output + + +def get_memory(logger): + """get nodeinfo memory + """ + output = utils.get_host_memory() + # the memory value python API returned is devided by 1024 + mem_cap = int(output) / 1024 + logger.info("memory is %s MiB" % mem_cap) + return mem_cap + + +def get_cpus(logger): + """get nodeinfo cpus + """ + output = utils.get_host_cpus() + logger.info("cpus is %s" % output) + return output + + +def get_cpu_mhz(logger): + """get nodeinfo cpu_mhz + """ + output = utils.get_host_frequency() + cpu_mhz = int(output.split('.')[0]) + logger.info("cpu MHz is %d" % cpu_mhz) + return cpu_mhz + + +def get_nodes(logger): + """get nodeinfo nodes + """ + cmds = "lscpu | grep 'node(s)' | awk {'print $3'}" + (status, output) = utils.exec_cmd(cmds, shell=True) + if status != 0: + logger.error("Exec_cmd failed: %s" % cmds) + return "" + logger.info("nodes is %s" % output[0]) + return int(output[0]) + + +def get_sockets(logger): + """get nodeinfo sockets + """ + cmds = "lscpu | grep 'Socket(s)' | awk {'print $2'}" + (status, output) = utils.exec_cmd(cmds, shell=True) + if status != 0: + logger.error("Exec_cmd failed: %s" % cmds) + return "" + logger.info("cpu sockets is %s" % output[0]) + return int(output[0]) + + +def get_cores(logger): + """get nodeinfo cores + """ + cmds = "lscpu | grep 'Core(s)' | awk {'print $4'}" + (status, output) = utils.exec_cmd(cmds, shell=True) + if status != 0: + logger.error("Exec_cmd failed: %s" % cmds) + return "" + logger.info("cpu cores is %s" % output[0]) + return int(output[0]) + + +def get_threads(logger): + """get nodeinfo threads + """ + cmds = "lscpu | grep 'Thread(s)' | awk {'print $4'}" + (status, output) = utils.exec_cmd(cmds, shell=True) + if status != 0: + logger.error("Exec_cmd failed: %s" % cmds) + return "" + logger.info("cpu threads is %s" % output[0]) + return int(output[0]) + + +def check_conn_nodeinfo(conn_nodeinfo, logger): + """check each nodeinfo value + """ + ret = True + # python2.6 does not have ordered dict, so that enumerate + # could not get the defined sequence which API getInfo() returned. + res_types = ['model', 'memory', 'cpus', 'cpu_mhz', 'nodes', + 'sockets', 'cores', 'threads'] + get_res_func = [get_model, get_memory, get_cpus, get_cpu_mhz, + get_nodes, get_sockets, get_cores, get_threads] + + for idx, res in enumerate(zip(res_types, get_res_func)): + logger.debug("Checking %s" % res[0]) + logger.debug("Executing %s" % res[1]) + get_res = res[1](logger) + if get_res != conn_nodeinfo[idx]: + logger.error("Failed to check nodeinfo's %s" % res[0]) + logger.error("%s %s is wrong, should be %s" % + (res, conn_nodeinfo[idx], get_res)) + ret = False + + return ret + + +def connection_nodeinfo(params): + """test libvirt connection node infomation + """ + logger = params['logger'] + + try: + # get connection firstly. + # If conn is not specified, use conn from sharedmod + if 'conn' in params: + conn = libvirt.open(params['conn']) + else: + conn = sharedmod.libvirtobj['conn'] + + logger.info("get connection node infomation") + conn_nodeinfo = conn.getInfo() + logger.info("connection node infomation is %s" % conn_nodeinfo) + + check_conn_nodeinfo(conn_nodeinfo, logger) + + except libvirtError, e: + logger.error("API error message: %s, error code is %s" % + e.message) + logger.error("start failed") + return 1 + + return 0 -- 1.8.3.1 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list