python xmlrpc的学习一例(获取kvm信息)
服务端代码: #!/usr/bin/env python #-*- coding: utf-8 -*-
from SimpleXMLRPCServer import SimpleXMLRPCServer from SimpleXMLRPCServer import SimpleXMLRPCRequestHandler import json import libvirt import socket
#获取本机电脑名 myname = socket.getfqdn(socket.gethostname( )) #获取本机ip myaddr = socket.gethostbyname(myname) print myaddr conn = libvirt.open("qemu:///system") class RequestHandler(SimpleXMLRPCRequestHandler): rpc_paths = ('/RPC2',)
try: server = SimpleXMLRPCServer((myaddr,8000), requestHandler=RequestHandler)
except Exception,e: print e #server.register_instance() server.register_introspection_functions() def get_kvm_list():
dom = conn.listDomainsID() return dom
def get_kvm_info(domain): dom = conn.lookupByID(domain) infos = dom.info() print infos print dom.name() infodir = {} infodir['id'] = domain infodir['Name'] = dom.name() infodir['state'] = infos[0] infodir['MaxMemory'] = infos[1] infodir['CPUS'] = infos[3] infodir['CPUTIME'] = infos[2] return infodir
server.register_function(get_kvm_list,'kvmlist') server.register_function(get_kvm_info,'kvminfo') server.serve_forever()
客户端代码: #!/usr/bin/env python #-*- coding: utf-8 -*-
import xmlrpclib
KVMhost = '192.168.0.109'
x = xmlrpclib.ServerProxy("http://%s:8000"%KVMhost) print x.system.listMethods() a =x.kvmlist() print a for i in a: dir = x.kvminfo(i) print "==================================================" print "Id is :",dir['id'] print 'domain Name is :',dir['Name'] print 'State is :',dir['state'] print 'Max Memory is :', dir['MaxMemory'] print 'Num of cpu is :',dir['CPUS'] print 'Cpu time is :',dir['CPUTIME']
运行结果: [iyunv@c03 xmlserver]# python kvmmonitorCiletn.py ['kvminfo', 'kvmlist', 'system.listMethods', 'system.methodHelp', 'system.methodSignature'] [4, 15] ================================================== Id is : 4 domain Name is : winxp State is : 1 Max Memory is : 1048576 Num of cpu is : 1 Cpu time is : 1048576 ================================================== Id is : 15 domain Name is : salttest State is : 1 Max Memory is : 1048576 Num of cpu is : 1 Cpu time is : 1048576
简单的练习下xmlrpc的使用。用来获取宿主主机上面的虚拟机的信息。打算用来集中管理kvm。:)
|