#!/usr/bin/env python #coding=utf8 ''' CloudControl accounts related commands ''' from cccli.exception import * from sjrpc.core.exceptions import * from cccli.printer import Printer, color from cccli.command.command import Command, OptionCommand, TqlCommand class Command_addaccount(OptionCommand): '''Create an account''' def __init__(self, cli, argv0): OptionCommand.__init__(self, cli, argv0) self.set_usage("%prog [options] <account name> <role>") def __call__(self, argv): # parse args self.parse_args(argv) if len(self.args) != 2: raise cmdBadArgument() # execute command self.rpccall("addaccount", self.args[0], self.args[1]) class Command_delaccount(TqlCommand): '''Delete an account''' def __call__(self, argv): self.parse_args(argv) if len(self.args) != 1: raise cmdBadArgument("<tql>") self.rpccall("delaccount", self.args[0]) class Command_close(TqlCommand): '''Disable accounts''' def __call__(self, argv): self.parse_args(argv) if len(self.args) != 1: raise cmdBadArgument("<tql>") self.rpccall("close", self.args[0]) class Command_declose(TqlCommand): '''Enable accounts''' def __call__(self, argv): self.parse_args(argv) if len(self.args) != 1: raise cmdBadArgument("<tql>") self.rpccall("declose", self.args[0]) class Command_passwd(Command): '''Change account password''' def __call__(self, argv): if len(argv) == 1: argv.append("a=%s"%self.cli.settings["login"]) if len(argv) == 2: a = self.printer.getpass("Password: ") b = self.printer.getpass("Again: ") if a != b: raise cmdError("You don't type twice the same password. Aborted") argv.append(a) elif len(argv) == 3: if self.cli.interactive: s = "You cannot set password with clear argument in interactive mode.\n" s += "*** Think to clean your history! ***" raise cmdError(s) else: raise cmdBadArgument() try: self.cli.rpc.call("passwd", argv[1], argv[2]) except RpcError as e: raise cmdError("RPCError: %s"%str(e)) def usage(self): return "Usage: passwd [tql] [password]"