Merge "Add support for listing servers of other projects"
This commit is contained in:
		| @@ -185,6 +185,7 @@ List servers | |||||||
|         [--image <image>] |         [--image <image>] | ||||||
|         [--host <hostname>] |         [--host <hostname>] | ||||||
|         [--all-projects] |         [--all-projects] | ||||||
|  |         [--project <project> [--project-domain <project-domain>]] | ||||||
|         [--long] |         [--long] | ||||||
|  |  | ||||||
| .. option:: --reservation-id <reservation-id> | .. option:: --reservation-id <reservation-id> | ||||||
| @@ -227,6 +228,15 @@ List servers | |||||||
|  |  | ||||||
|     Include all projects (admin only) |     Include all projects (admin only) | ||||||
|  |  | ||||||
|  | .. option:: --project <project> | ||||||
|  |  | ||||||
|  |     Search by project (admin only) (name or ID) | ||||||
|  |  | ||||||
|  | .. option:: --project-domain <project-domain> | ||||||
|  |  | ||||||
|  |     Domain the project belongs to (name or ID). | ||||||
|  |     This can be used in case collisions between project names exist. | ||||||
|  |  | ||||||
| .. option:: --long | .. option:: --long | ||||||
|  |  | ||||||
|     List additional fields in output |     List additional fields in output | ||||||
|   | |||||||
| @@ -36,6 +36,7 @@ from openstackclient.common import exceptions | |||||||
| from openstackclient.common import parseractions | from openstackclient.common import parseractions | ||||||
| from openstackclient.common import utils | from openstackclient.common import utils | ||||||
| from openstackclient.i18n import _  # noqa | from openstackclient.i18n import _  # noqa | ||||||
|  | from openstackclient.identity import common as identity_common | ||||||
| from openstackclient.network import common | from openstackclient.network import common | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -699,6 +700,11 @@ class ListServer(lister.Lister): | |||||||
|             default=bool(int(os.environ.get("ALL_PROJECTS", 0))), |             default=bool(int(os.environ.get("ALL_PROJECTS", 0))), | ||||||
|             help=_('Include all projects (admin only)'), |             help=_('Include all projects (admin only)'), | ||||||
|         ) |         ) | ||||||
|  |         parser.add_argument( | ||||||
|  |             '--project', | ||||||
|  |             metavar='<project>', | ||||||
|  |             help="Search by project (admin only) (name or ID)") | ||||||
|  |         identity_common.add_project_domain_option_to_parser(parser) | ||||||
|         parser.add_argument( |         parser.add_argument( | ||||||
|             '--long', |             '--long', | ||||||
|             action='store_true', |             action='store_true', | ||||||
| @@ -710,6 +716,17 @@ class ListServer(lister.Lister): | |||||||
|     def take_action(self, parsed_args): |     def take_action(self, parsed_args): | ||||||
|         self.log.debug('take_action(%s)', parsed_args) |         self.log.debug('take_action(%s)', parsed_args) | ||||||
|         compute_client = self.app.client_manager.compute |         compute_client = self.app.client_manager.compute | ||||||
|  |  | ||||||
|  |         project_id = None | ||||||
|  |         if parsed_args.project: | ||||||
|  |             identity_client = self.app.client_manager.identity | ||||||
|  |             project_id = identity_common.find_project( | ||||||
|  |                 identity_client, | ||||||
|  |                 parsed_args.project, | ||||||
|  |                 parsed_args.project_domain, | ||||||
|  |             ).id | ||||||
|  |             parsed_args.all_projects = True | ||||||
|  |  | ||||||
|         search_opts = { |         search_opts = { | ||||||
|             'reservation_id': parsed_args.reservation_id, |             'reservation_id': parsed_args.reservation_id, | ||||||
|             'ip': parsed_args.ip, |             'ip': parsed_args.ip, | ||||||
| @@ -720,6 +737,7 @@ class ListServer(lister.Lister): | |||||||
|             'flavor': parsed_args.flavor, |             'flavor': parsed_args.flavor, | ||||||
|             'image': parsed_args.image, |             'image': parsed_args.image, | ||||||
|             'host': parsed_args.host, |             'host': parsed_args.host, | ||||||
|  |             'tenant_id': project_id, | ||||||
|             'all_tenants': parsed_args.all_projects, |             'all_tenants': parsed_args.all_projects, | ||||||
|         } |         } | ||||||
|         self.log.debug('search options: %s', search_opts) |         self.log.debug('search options: %s', search_opts) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Jenkins
					Jenkins