Newer
Older
#!/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
def __init__(self, cli, argv0):
OptionCommand.__init__(self, cli, argv0)
self.set_usage("%prog [options] <account name> <role>")
# parse args
self.parse_args(argv)
if len(self.args) != 2:
# 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):
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]"