#!/usr/bin/env python #coding=utf8 ''' CloudControl server command ''' from cccli.exception import * from sjrpc.core.exceptions import * from cccli.printer import Printer, color from cccli.command.command import RemoteCommand class Command_server(RemoteCommand): '''Server manipulation command''' def __init__(self, cli, argv0): RemoteCommand.__init__(self, cli, argv0) self.set_usage("%prog <options>") self.add_option("-c", action="store_true", dest="cache", help="show server cache") self.add_option("-f", action="store_true", dest="functions", help="show server functions") self.add_option("-v", action="store_true", dest="version", help="show server version") def __call__(self, argv): self.parse_args(argv) if len(self.args) > 0: self.printer.out(self.usage()) elif self.options.cache: self.show_cache() elif self.options.functions: self.show_functions() elif self.options.version: self.show_version() else: self.printer.out(self.usage()) def remote_functions(self): return set(('dbstats', 'version')) def show_functions(self): try: for cmds in self.cli.rpc.call("functions"): self.printer.out("%s"%cmds["name"]) except RpcError as e: raise cmdError("RPCError: %s"%str(e)) def show_cache(self): try: d = self.cli.rpc.call("dbstats") for i,v in d.items(): self.printer.out("%s: %s"%(i,v)) except RpcError as e: raise cmdError("RPCError: %s"%str(e)) def show_version(self): try: self.printer.out(self.cli.rpc.call("version")) except RpcError as e: raise cmdError("RPCError: %s"%str(e))