diff options
Diffstat (limited to 'build/lib/Bcfg2/Server/Admin/Xcmd.py')
-rw-r--r-- | build/lib/Bcfg2/Server/Admin/Xcmd.py | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/build/lib/Bcfg2/Server/Admin/Xcmd.py b/build/lib/Bcfg2/Server/Admin/Xcmd.py new file mode 100644 index 000000000..80d5cfb25 --- /dev/null +++ b/build/lib/Bcfg2/Server/Admin/Xcmd.py @@ -0,0 +1,49 @@ +import Bcfg2.Options +import Bcfg2.Proxy +import Bcfg2.Server.Admin + +import sys +import xmlrpclib + +class Xcmd(Bcfg2.Server.Admin.Mode): + __shorthelp__ = ("XML-RPC Command Interface") + __longhelp__ = (__shorthelp__ + "\n\nbcfg2-admin xcmd command") + __usage__ = ("bcfg2-admin xcmd <command>") + + def __call__(self, args): + optinfo = { + 'server': Bcfg2.Options.SERVER_LOCATION, + 'user': Bcfg2.Options.CLIENT_USER, + 'password': Bcfg2.Options.SERVER_PASSWORD, + 'key': Bcfg2.Options.SERVER_KEY, + 'certificate' : Bcfg2.Options.CLIENT_CERT, + 'ca' : Bcfg2.Options.CLIENT_CA + } + setup = Bcfg2.Options.OptionParser(optinfo) + setup.parse(sys.argv[2:]) + Bcfg2.Proxy.RetryMethod.max_retries = 1 + proxy = Bcfg2.Proxy.ComponentProxy(setup['server'], + setup['user'], + setup['password'], + key = setup['key'], + cert = setup['certificate'], + ca = setup['ca'], timeout=180) + if len(setup['args']) == 0: + print("Usage: xcmd <xmlrpc method> <optional arguments>") + return + cmd = setup['args'][0] + args = () + if len(setup['args']) > 1: + args = tuple(setup['args'][1:]) + try: + data = apply(getattr(proxy, cmd), args) + except xmlrpclib.Fault, flt: + if flt.faultCode == 7: + print("Unknown method %s" % cmd) + return + elif flt.faultCode == 20: + return + else: + raise + if data != None: + print data |