summaryrefslogtreecommitdiff
path: root/openstackclient/identity/v2_0/user.py
diff options
Diffstat (limited to 'openstackclient/identity/v2_0/user.py')
-rw-r--r--openstackclient/identity/v2_0/user.py48
1 files changed, 40 insertions, 8 deletions
diff --git a/openstackclient/identity/v2_0/user.py b/openstackclient/identity/v2_0/user.py
index 371c45a..60af6dd 100644
--- a/openstackclient/identity/v2_0/user.py
+++ b/openstackclient/identity/v2_0/user.py
@@ -43,6 +43,12 @@ class CreateUser(show.ShowOne):
help='New user password',
)
parser.add_argument(
+ '--password-prompt',
+ dest="password_prompt",
+ action="store_true",
+ help='Prompt interactively for password',
+ )
+ parser.add_argument(
'--email',
metavar='<user-email>',
help='New user email address',
@@ -66,7 +72,7 @@ class CreateUser(show.ShowOne):
return parser
def take_action(self, parsed_args):
- self.log.debug('take_action(%s)' % parsed_args)
+ self.log.debug('take_action(%s)', parsed_args)
identity_client = self.app.client_manager.identity
if parsed_args.project:
@@ -80,6 +86,8 @@ class CreateUser(show.ShowOne):
enabled = True
if parsed_args.disable:
enabled = False
+ if parsed_args.password_prompt:
+ parsed_args.password = utils.get_password(self.app.stdin)
user = identity_client.users.create(
parsed_args.name,
@@ -115,7 +123,7 @@ class DeleteUser(command.Command):
return parser
def take_action(self, parsed_args):
- self.log.debug('take_action(%s)' % parsed_args)
+ self.log.debug('take_action(%s)', parsed_args)
identity_client = self.app.client_manager.identity
user = utils.find_resource(
@@ -143,11 +151,12 @@ class ListUser(lister.Lister):
'--long',
action='store_true',
default=False,
- help='Additional fields are listed in output')
+ help='List additional fields in output')
return parser
def take_action(self, parsed_args):
- self.log.debug('take_action(%s)' % parsed_args)
+ self.log.debug('take_action(%s)', parsed_args)
+ identity_client = self.app.client_manager.identity
def _format_project(project):
if not project:
@@ -157,6 +166,14 @@ class ListUser(lister.Lister):
else:
return project
+ project = None
+ if parsed_args.project:
+ project = utils.find_resource(
+ identity_client.tenants,
+ parsed_args.project,
+ )
+ project = project.id
+
if parsed_args.long:
columns = (
'ID',
@@ -175,14 +192,20 @@ class ListUser(lister.Lister):
# Cache the project list
project_cache = {}
try:
- for p in self.app.client_manager.identity.tenants.list():
+ for p in identity_client.tenants.list():
project_cache[p.id] = p
except Exception:
# Just forget it if there's any trouble
pass
else:
columns = column_headers = ('ID', 'Name')
- data = self.app.client_manager.identity.users.list()
+ data = identity_client.users.list(tenant_id=project)
+
+ if parsed_args.project:
+ d = {}
+ for s in data:
+ d[s.id] = s
+ data = d.values()
if parsed_args.long:
# FIXME(dtroyer): Sometimes user objects have 'tenant_id' instead
@@ -225,6 +248,12 @@ class SetUser(command.Command):
help='New user password',
)
parser.add_argument(
+ '--password-prompt',
+ dest="password_prompt",
+ action="store_true",
+ help='Prompt interactively for password',
+ )
+ parser.add_argument(
'--email',
metavar='<user-email>',
help='New user email address',
@@ -248,9 +277,12 @@ class SetUser(command.Command):
return parser
def take_action(self, parsed_args):
- self.log.debug('take_action(%s)' % parsed_args)
+ self.log.debug('take_action(%s)', parsed_args)
identity_client = self.app.client_manager.identity
+ if parsed_args.password_prompt:
+ parsed_args.password = utils.get_password(self.app.stdin)
+
if (not parsed_args.name
and not parsed_args.name
and not parsed_args.password
@@ -311,7 +343,7 @@ class ShowUser(show.ShowOne):
return parser
def take_action(self, parsed_args):
- self.log.debug('take_action(%s)' % parsed_args)
+ self.log.debug('take_action(%s)', parsed_args)
identity_client = self.app.client_manager.identity
user = utils.find_resource(