+ exit(1)
+
+
+@cli.command(name='user-update')
+@click.argument('username')
+@click.option('--password',
+ # prompt=True,
+ # hide_input=True,
+ # confirmation_prompt=True,
+ help='user password')
+@click.option('--set-username', 'set_username',
+ default=None,
+ help='change username')
+@click.option('--set-project', 'set_project',
+ default=None, multiple=True,
+ help='create/replace the project,role(s) mapping for this project: \'project,role1,role2,...\'')
+@click.option('--remove-project', 'remove_project',
+ default=None, multiple=True,
+ help='removes project from user: \'project\'')
+@click.option('--add-project-role', 'add_project_role',
+ default=None, multiple=True,
+ help='adds project,role(s) mapping: \'project,role1,role2,...\'')
+@click.option('--remove-project-role', 'remove_project_role',
+ default=None, multiple=True,
+ help='removes project,role(s) mapping: \'project,role1,role2,...\'')
+@click.pass_context
+def user_update(ctx, username, password, set_username, set_project, remove_project,
+ add_project_role, remove_project_role):
+ """Update a user information
+
+ \b
+ USERNAME: name of the user
+ PASSWORD: new password
+ SET_USERNAME: new username
+ SET_PROJECT: creating mappings for project/role(s)
+ REMOVE_PROJECT: deleting mappings for project/role(s)
+ ADD_PROJECT_ROLE: adding mappings for project/role(s)
+ REMOVE_PROJECT_ROLE: removing mappings for project/role(s)
+ """
+ user = {}
+ user['password'] = password
+ user['username'] = set_username
+ user['set-project'] = set_project
+ user['remove-project'] = remove_project
+ user['add-project-role'] = add_project_role
+ user['remove-project-role'] = remove_project_role
+
+ try:
+ check_client_version(ctx.obj, ctx.command.name)
+ ctx.obj.user.update(username, user)
+ except ClientException as inst:
+ print(inst.message)
+ exit(1)