from PVEApi import PVEApi from ZabbixJSON import listofdicts_to_zabbix_json from argparse import ArgumentParser from VM import VM USERNAME = "zabbix@pve" PASSWORD = "zabbix" HOST = "172.16.3.11:8006" conn = PVEApi(HOST, USERNAME, PASSWORD) nodelist = conn.get_node_list() parser = ArgumentParser() parser.add_argument("node", help="Enter node name") parser.add_argument("type", choices=['vm', 'cluster', 'node'], help='categories') parser.add_argument("-l", "--list", dest='listing', action='store_true') parser.add_argument("-n", "--name", dest='name') parser.add_argument("-p", "--param", dest='param') args = parser.parse_args() NODE = next((n for n in nodelist if n.name == args.node), None) if NODE is None: raise ValueError("No such Node found", "Valid nodes:", nodelist) def exec_vm(**kwargs): """ Handles vm positional parameter :param kwargs: handle cmd parametres :return: """ # Initiate instances vms = conn.get_cluster_vmlist(nodelist) if kwargs['name'] is not None and kwargs['listing'] is False: try: vm = next(v for v in vms if v.name == kwargs['name']) print vm.get_vminfo(kwargs['param']) except StopIteration: print "No such VM found. Possible VMs: " + str(VM.get_vmnames(NODE)) else: print listofdicts_to_zabbix_json( VM.get_vmnames(NODE, name=kwargs['name'], listing=kwargs['listing'])) if args.type == "vm": exec_vm(listing=args.listing, name=args.name, param=args.param) else: print args