From 242f1f5f33bd99c131249056965d67c889d3f2bb Mon Sep 17 00:00:00 2001 From: Seblu <sebastien.luttringer@smartjog.com> Date: Mon, 14 Feb 2011 12:00:20 +0100 Subject: [PATCH] command passwd use now TqlCommand --- cccli/command/account.py | 51 +++++++++++++++++++++++----------------- cccli/printer.py | 3 +++ 2 files changed, 32 insertions(+), 22 deletions(-) diff --git a/cccli/command/account.py b/cccli/command/account.py index 0734ea8..a95249d 100644 --- a/cccli/command/account.py +++ b/cccli/command/account.py @@ -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''' @@ -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) diff --git a/cccli/printer.py b/cccli/printer.py index cdac2f8..bc0a4aa 100644 --- a/cccli/printer.py +++ b/cccli/printer.py @@ -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: -- GitLab