Merge "Add domain support for ec2creds in v3 identity"
This commit is contained in:
		| @@ -15,6 +15,8 @@ Create EC2 credentials | ||||
|     os ec2 credentials create | ||||
|         [--project <project>] | ||||
|         [--user <user>] | ||||
|         [--user-domain <user-domain>] | ||||
|         [--project-domain <project-domain>] | ||||
|  | ||||
| .. option:: --project <project> | ||||
|  | ||||
| @@ -24,6 +26,21 @@ Create EC2 credentials | ||||
|  | ||||
|     Specify an alternate user (default: current authenticated user) | ||||
|  | ||||
| .. option:: --user-domain <user-domain> | ||||
|  | ||||
|     Domain the user belongs to (name or ID). | ||||
|     This can be used in case collisions between user names exist. | ||||
|  | ||||
|     .. versionadded:: 3 | ||||
|  | ||||
| .. option:: --project-domain <project-domain> | ||||
|  | ||||
|     Domain the project belongs to (name or ID). | ||||
|     This can be used in case collisions between project names exist. | ||||
|  | ||||
|     .. versionadded:: 3 | ||||
|  | ||||
|  | ||||
| The :option:`--project` and :option:`--user`  options are typically only | ||||
| useful for admin users, but may be allowed for other users depending on | ||||
| the policy of the cloud and the roles granted to the user. | ||||
| @@ -38,12 +55,20 @@ Delete EC2 credentials | ||||
|  | ||||
|     os ec2 credentials delete | ||||
|         [--user <user>] | ||||
|         [--user-domain <user-domain>] | ||||
|         <access-key> | ||||
|  | ||||
| .. option:: --user <user> | ||||
|  | ||||
|     Specify a user | ||||
|  | ||||
| .. option:: --user-domain <user-domain> | ||||
|  | ||||
|     Domain the user belongs to (name or ID). | ||||
|     This can be used in case collisions between user names exist. | ||||
|  | ||||
|     .. versionadded:: 3 | ||||
|  | ||||
| .. _ec2_credentials_delete-access-key: | ||||
| .. describe:: access-key | ||||
|  | ||||
| @@ -63,11 +88,19 @@ List EC2 credentials | ||||
|  | ||||
|     os ec2 credentials list | ||||
|         [--user <user>] | ||||
|         [--user-domain <user-domain>] | ||||
|  | ||||
| .. option:: --user <user> | ||||
|  | ||||
|     Filter list by <user> | ||||
|  | ||||
| .. option:: --user-domain <user-domain> | ||||
|  | ||||
|     Domain the user belongs to (name or ID). | ||||
|     This can be used in case collisions between user names exist. | ||||
|  | ||||
|     .. versionadded:: 3 | ||||
|  | ||||
| The :option:`--user` option is typically only useful for admin users, but | ||||
| may be allowed for other users depending on the policy of the cloud and | ||||
| the roles granted to the user. | ||||
| @@ -82,12 +115,20 @@ Display EC2 credentials details | ||||
|  | ||||
|     os ec2 credentials show | ||||
|         [--user <user>] | ||||
|         [--user-domain <user-domain>] | ||||
|         <access-key> | ||||
|  | ||||
| .. option:: --user <user> | ||||
|  | ||||
|     Specify a user | ||||
|  | ||||
| .. option:: --user-domain <user-domain> | ||||
|  | ||||
|     Domain the user belongs to (name or ID). | ||||
|     This can be used in case collisions between user names exist. | ||||
|  | ||||
|     .. versionadded:: 3 | ||||
|  | ||||
| .. _ec2_credentials_show-access-key: | ||||
| .. describe:: access-key | ||||
|  | ||||
|   | ||||
| @@ -21,6 +21,35 @@ from cliff import show | ||||
|  | ||||
| from openstackclient.common import utils | ||||
| from openstackclient.i18n import _  # noqa | ||||
| from openstackclient.identity import common | ||||
|  | ||||
|  | ||||
| def _determine_ec2_user(parsed_args, client_manager): | ||||
|     """Determine a user several different ways. | ||||
|  | ||||
|     Assumes parsed_args has user and user_domain arguments. Attempts to find | ||||
|     the user if domain scoping is provided, otherwise revert to a basic user | ||||
|     call. Lastly use the currently authenticated user. | ||||
|  | ||||
|     """ | ||||
|  | ||||
|     user_domain = None | ||||
|     if parsed_args.user_domain: | ||||
|         user_domain = common.find_domain(client_manager.identity, | ||||
|                                          parsed_args.user_domain) | ||||
|     if parsed_args.user: | ||||
|         if user_domain is not None: | ||||
|             user = utils.find_resource(client_manager.identity.users, | ||||
|                                        parsed_args.user, | ||||
|                                        domain_id=user_domain.id).id | ||||
|         else: | ||||
|             user = utils.find_resource( | ||||
|                 client_manager.identity.users, | ||||
|                 parsed_args.user).id | ||||
|     else: | ||||
|         # Get the user from the current auth | ||||
|         user = client_manager.auth_ref.user_id | ||||
|     return user | ||||
|  | ||||
|  | ||||
| class CreateEC2Creds(show.ShowOne): | ||||
| @@ -42,28 +71,45 @@ class CreateEC2Creds(show.ShowOne): | ||||
|             help=_('Specify an alternate user' | ||||
|                    ' (default: current authenticated user)'), | ||||
|         ) | ||||
|         parser.add_argument( | ||||
|             '--user-domain', | ||||
|             metavar='<user-domain>', | ||||
|             help=('Domain the user belongs to (name or ID). ' | ||||
|                   'This can be used in case collisions between user names ' | ||||
|                   'exist.') | ||||
|         ) | ||||
|         parser.add_argument( | ||||
|             '--project-domain', | ||||
|             metavar='<project-domain>', | ||||
|             help=('Domain the project belongs to (name or ID). ' | ||||
|                   'This can be used in case collisions between project names ' | ||||
|                   'exist.') | ||||
|         ) | ||||
|         return parser | ||||
|  | ||||
|     def take_action(self, parsed_args): | ||||
|         self.log.debug('take_action(%s)', parsed_args) | ||||
|         identity_client = self.app.client_manager.identity | ||||
|         client_manager = self.app.client_manager | ||||
|         user = self.determine_ec2_user(parsed_args, client_manager) | ||||
|  | ||||
|         project_domain = None | ||||
|         if parsed_args.project_domain: | ||||
|             project_domain = common.find_domain(identity_client, | ||||
|                                                 parsed_args.project_domain) | ||||
|  | ||||
|         if parsed_args.project: | ||||
|             if project_domain is not None: | ||||
|                 project = utils.find_resource(identity_client.projects, | ||||
|                                               parsed_args.project, | ||||
|                                               domain_id=project_domain.id).id | ||||
|             else: | ||||
|                 project = utils.find_resource( | ||||
|                     identity_client.projects, | ||||
|                 parsed_args.project, | ||||
|             ).id | ||||
|                     parsed_args.project).id | ||||
|         else: | ||||
|             # Get the project from the current auth | ||||
|             project = self.app.client_manager.auth_ref.project_id | ||||
|         if parsed_args.user: | ||||
|             user = utils.find_resource( | ||||
|                 identity_client.users, | ||||
|                 parsed_args.user, | ||||
|             ).id | ||||
|         else: | ||||
|             # Get the user from the current auth | ||||
|             user = self.app.client_manager.auth_ref.user_id | ||||
|  | ||||
|         creds = identity_client.ec2.create(user, project) | ||||
|  | ||||
| @@ -95,22 +141,20 @@ class DeleteEC2Creds(command.Command): | ||||
|             metavar='<user>', | ||||
|             help=_('Specify a user'), | ||||
|         ) | ||||
|         parser.add_argument( | ||||
|             '--user-domain', | ||||
|             metavar='<user-domain>', | ||||
|             help=('Domain the user belongs to (name or ID). ' | ||||
|                   'This can be used in case collisions between user names ' | ||||
|                   'exist.') | ||||
|         ) | ||||
|         return parser | ||||
|  | ||||
|     def take_action(self, parsed_args): | ||||
|         self.log.debug('take_action(%s)', parsed_args) | ||||
|         identity_client = self.app.client_manager.identity | ||||
|  | ||||
|         if parsed_args.user: | ||||
|             user = utils.find_resource( | ||||
|                 identity_client.users, | ||||
|                 parsed_args.user, | ||||
|             ).id | ||||
|         else: | ||||
|             # Get the user from the current auth | ||||
|             user = self.app.client_manager.auth_ref.user_id | ||||
|  | ||||
|         identity_client.ec2.delete(user, parsed_args.access_key) | ||||
|         client_manager = self.app.client_manager | ||||
|         user = self.determine_ec2_user(parsed_args, client_manager) | ||||
|         client_manager.identity.ec2.delete(user, parsed_args.access_key) | ||||
|  | ||||
|  | ||||
| class ListEC2Creds(lister.Lister): | ||||
| @@ -125,24 +169,23 @@ class ListEC2Creds(lister.Lister): | ||||
|             metavar='<user>', | ||||
|             help=_('Specify a user'), | ||||
|         ) | ||||
|         parser.add_argument( | ||||
|             '--user-domain', | ||||
|             metavar='<user-domain>', | ||||
|             help=('Domain the user belongs to (name or ID). ' | ||||
|                   'This can be used in case collisions between user names ' | ||||
|                   'exist.') | ||||
|         ) | ||||
|         return parser | ||||
|  | ||||
|     def take_action(self, parsed_args): | ||||
|         self.log.debug('take_action(%s)', parsed_args) | ||||
|         identity_client = self.app.client_manager.identity | ||||
|  | ||||
|         if parsed_args.user: | ||||
|             user = utils.find_resource( | ||||
|                 identity_client.users, | ||||
|                 parsed_args.user, | ||||
|             ).id | ||||
|         else: | ||||
|             # Get the user from the current auth | ||||
|             user = self.app.client_manager.auth_ref.user_id | ||||
|         client_manager = self.app.client_manager | ||||
|         user = self.determine_ec2_user(parsed_args, client_manager) | ||||
|  | ||||
|         columns = ('access', 'secret', 'tenant_id', 'user_id') | ||||
|         column_headers = ('Access', 'Secret', 'Project ID', 'User ID') | ||||
|         data = identity_client.ec2.list(user) | ||||
|         data = client_manager.identity.ec2.list(user) | ||||
|  | ||||
|         return (column_headers, | ||||
|                 (utils.get_item_properties( | ||||
| @@ -168,22 +211,20 @@ class ShowEC2Creds(show.ShowOne): | ||||
|             metavar='<user>', | ||||
|             help=_('Specify a user'), | ||||
|         ) | ||||
|         parser.add_argument( | ||||
|             '--user-domain', | ||||
|             metavar='<user-domain>', | ||||
|             help=('Domain the user belongs to (name or ID). ' | ||||
|                   'This can be used in case collisions between user names ' | ||||
|                   'exist.') | ||||
|         ) | ||||
|         return parser | ||||
|  | ||||
|     def take_action(self, parsed_args): | ||||
|         self.log.debug('take_action(%s)', parsed_args) | ||||
|         identity_client = self.app.client_manager.identity | ||||
|  | ||||
|         if parsed_args.user: | ||||
|             user = utils.find_resource( | ||||
|                 identity_client.users, | ||||
|                 parsed_args.user, | ||||
|             ).id | ||||
|         else: | ||||
|             # Get the user from the current auth | ||||
|             user = self.app.client_manager.auth_ref.user_id | ||||
|  | ||||
|         creds = identity_client.ec2.get(user, parsed_args.access_key) | ||||
|         client_manager = self.app.client_manager | ||||
|         user = self.determine_ec2_user(parsed_args, client_manager) | ||||
|         creds = client_manager.identity.ec2.get(user, parsed_args.access_key) | ||||
|  | ||||
|         info = {} | ||||
|         info.update(creds._info) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Jenkins
					Jenkins