Loading cccli/command/account.py +29 −22 Original line number Diff line number Diff line Loading @@ -8,7 +8,7 @@ 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 from cccli.command.command import OptionCommand, TqlCommand class Command_addaccount(OptionCommand): '''Create an account''' Loading Loading @@ -56,29 +56,36 @@ class Command_declose(TqlCommand): self.rpccall("declose", self.args[0]) class Command_passwd(Command): class Command_passwd(TqlCommand): '''Change account password''' def __init__(self, cli, argv0): TqlCommand.__init__(self, cli, argv0) self.set_usage("%prog [options] [tql] [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) # parse args self.parse_args(argv) _tql = None _pass = None if len(self.args) == 0: _tql = "a=%s"%self.cli.settings["login"] elif len(self.args) == 1: _tql = self.args[0] elif len(self.args) == 2: _tql = self.args[0] _pass = self.args[1] _check = self.args[1] if self.printer.isinteractive(): self.printer.warn("Removing last line from history") self.printer.history.removelast() 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]" # get password if _pass is None: _pass = self.printer.getpass("Password: ") _check = self.printer.getpass("Again: ") if _pass != _check: raise cmdError("You don't type twice the same password. Aborted") # execute command self.rpccall("passwd", _tql, _pass) cccli/printer.py +3 −0 Original line number Diff line number Diff line Loading @@ -100,6 +100,9 @@ class Printer(object): if cccli.debug: self.out("%s%s%s"%(color["lgrey"],message,color["reset"]), fd, nl) def isinteractive(self): return self.readline is not None def interactive(self, message, fd=sys.stderr, nl=os.linesep): '''Print only in interactive mode''' if self.readline is not None: Loading Loading
cccli/command/account.py +29 −22 Original line number Diff line number Diff line Loading @@ -8,7 +8,7 @@ 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 from cccli.command.command import OptionCommand, TqlCommand class Command_addaccount(OptionCommand): '''Create an account''' Loading Loading @@ -56,29 +56,36 @@ class Command_declose(TqlCommand): self.rpccall("declose", self.args[0]) class Command_passwd(Command): class Command_passwd(TqlCommand): '''Change account password''' def __init__(self, cli, argv0): TqlCommand.__init__(self, cli, argv0) self.set_usage("%prog [options] [tql] [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) # parse args self.parse_args(argv) _tql = None _pass = None if len(self.args) == 0: _tql = "a=%s"%self.cli.settings["login"] elif len(self.args) == 1: _tql = self.args[0] elif len(self.args) == 2: _tql = self.args[0] _pass = self.args[1] _check = self.args[1] if self.printer.isinteractive(): self.printer.warn("Removing last line from history") self.printer.history.removelast() 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]" # get password if _pass is None: _pass = self.printer.getpass("Password: ") _check = self.printer.getpass("Again: ") if _pass != _check: raise cmdError("You don't type twice the same password. Aborted") # execute command self.rpccall("passwd", _tql, _pass)
cccli/printer.py +3 −0 Original line number Diff line number Diff line Loading @@ -100,6 +100,9 @@ class Printer(object): if cccli.debug: self.out("%s%s%s"%(color["lgrey"],message,color["reset"]), fd, nl) def isinteractive(self): return self.readline is not None def interactive(self, message, fd=sys.stderr, nl=os.linesep): '''Print only in interactive mode''' if self.readline is not None: Loading