Skip to content
Snippets Groups Projects
host.py 1.51 KiB

'''
CloudControl physical host related commands
'''

from cccli.exception import *
from sjrpc.core.exceptions import *
from cccli.printer import Printer, color
from cccli.command.command import TqlCommand

class Command_exec(TqlCommand):
    '''Execute a command on the remote host'''

    def __init__(self, cli, argv0):
        TqlCommand.__init__(self, cli, argv0)
        self.set_usage("%prog [options] <tql> <command>")

    def __call__(self, argv):
        # arg parse
        self.parse_args(argv)
        if len(self.args) != 2:
            raise cmdBadArgument()
        # rpc call
        self.rpccall("exec", self.args[0], self.args[1])


class Command_shutdown(TqlCommand):
    '''Shutdown a physical host'''

    def __init__(self, cli, argv0):
        TqlCommand.__init__(self, cli, argv0)
        self.set_usage("%prog [options] <tql>")
        self.add_option("-R", "--reboot", action="store_true", dest="reboot",
                        help="Reboot after shutdown (default)")
        self.add_option("-H", "--halt", action="store_false", dest="reboot",
                        help="Halt after shutdown")
        self.add_option("-F", action="store_false", dest="graceful", default=True,
                        help="do not go through init but go down real fast")

    def __call__(self, argv):
        # arg parse
        self.parse_args(argv)
        if len(self.args) != 1:
            raise cmdBadArgument()
        self.rpccall("shutdown", self.args[0], self.options.reboot,
                     self.options.graceful)