[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] Add an xm serve command.
# HG changeset patch # User anthony@xxxxxxxxxxxxxxxxxxxxx # Node ID 95ac3f0f79bc1ab821cd93da525df52e2e33329a # Parent 0fe87421cc8026fdbb13a5ac85c936fd951d3c0e Add an xm serve command. This command proxies the Xend XML-RPC over stdio. This is similiar to mercurial's hg serve --stdio command. The most obvious use of this command is remote XML-RPC invocation over SSH. Signed-off-by: Anthony Liguori <aliguori@xxxxxxxxxx> --- tools/python/xen/xm/main.py | 32 +++++++++++++++++++++++++++++++- 1 files changed, 31 insertions(+), 1 deletion(-) diff -r 0fe87421cc80 -r 95ac3f0f79bc tools/python/xen/xm/main.py --- a/tools/python/xen/xm/main.py Tue Jun 20 10:25:18 2006 +0100 +++ b/tools/python/xen/xm/main.py Tue Jun 20 10:25:20 2006 +0100 @@ -41,6 +41,7 @@ import xen.xend.XendClient import xen.xend.XendClient from xen.xend.XendClient import server from xen.util import security +from select import select # getopt.gnu_getopt is better, but only exists in Python 2.3+. Use # getopt.getopt if gnu_getopt is not available. This will mean that options @@ -124,6 +125,7 @@ loadpolicy_help = "loadpolicy <policy> loadpolicy_help = "loadpolicy <policy> Load binary policy into hypervisor" makepolicy_help = "makepolicy <policy> Build policy and create .bin/.map files" labels_help = "labels [policy] [type=DOM|..] List <type> labels for (active) policy." +serve_help = "serve Proxy Xend XML-RPC over stdio" short_command_list = [ "console", @@ -171,7 +173,8 @@ host_commands = [ host_commands = [ "dmesg", "info", - "log" + "log", + "serve", ] scheduler_commands = [ @@ -833,6 +836,32 @@ def xm_log(args): arg_check(args, "log", 0) print server.xend.node.log() + +def xm_serve(args): + arg_check(args, "serve", 0) + + from fcntl import fcntl, F_SETFL + + s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) + s.connect(xen.xend.XendClient.XML_RPC_SOCKET) + fcntl(sys.stdin, F_SETFL, os.O_NONBLOCK) + + while True: + iwtd, owtd, ewtd = select([sys.stdin, s], [], []) + if s in iwtd: + data = s.recv(4096) + if len(data) > 0: + sys.stdout.write(data) + sys.stdout.flush() + else: + break + if sys.stdin in iwtd: + data = sys.stdin.read(4096) + if len(data) > 0: + s.sendall(data) + else: + break + s.close() def parse_dev_info(info): def get_info(n, t, d): @@ -1072,6 +1101,7 @@ commands = { "dmesg": xm_dmesg, "info": xm_info, "log": xm_log, + "serve": xm_serve, # scheduler "sched-bvt": xm_sched_bvt, "sched-bvt-ctxallow": xm_sched_bvt_ctxallow, _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |