Skip to content

Commit 66010b4

Browse files
Ashish SinghDean Troyer
authored andcommitted
Add support for listing servers of other projects
Added project and project-domain option to server list command for listing servers based on project name or id Co-Authored-By: Steve Martinelli <stevemar@ca.ibm.com> Change-Id: Iaadfffe734ad8a72fa4b1eeb2222748c66f7fae0 Closes-Bug: #1488486
1 parent f142516 commit 66010b4

2 files changed

Lines changed: 28 additions & 0 deletions

File tree

doc/source/command-objects/server.rst

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,7 @@ List servers
185185
[--image <image>]
186186
[--host <hostname>]
187187
[--all-projects]
188+
[--project <project> [--project-domain <project-domain>]]
188189
[--long]
189190
190191
.. option:: --reservation-id <reservation-id>
@@ -227,6 +228,15 @@ List servers
227228
228229
Include all projects (admin only)
229230
231+
.. option:: --project <project>
232+
233+
Search by project (admin only) (name or ID)
234+
235+
.. option:: --project-domain <project-domain>
236+
237+
Domain the project belongs to (name or ID).
238+
This can be used in case collisions between project names exist.
239+
230240
.. option:: --long
231241
232242
List additional fields in output

openstackclient/compute/v2/server.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
from openstackclient.common import parseractions
3737
from openstackclient.common import utils
3838
from openstackclient.i18n import _ # noqa
39+
from openstackclient.identity import common as identity_common
3940
from openstackclient.network import common
4041

4142

@@ -693,6 +694,11 @@ def get_parser(self, prog_name):
693694
default=bool(int(os.environ.get("ALL_PROJECTS", 0))),
694695
help=_('Include all projects (admin only)'),
695696
)
697+
parser.add_argument(
698+
'--project',
699+
metavar='<project>',
700+
help="Search by project (admin only) (name or ID)")
701+
identity_common.add_project_domain_option_to_parser(parser)
696702
parser.add_argument(
697703
'--long',
698704
action='store_true',
@@ -704,6 +710,17 @@ def get_parser(self, prog_name):
704710
def take_action(self, parsed_args):
705711
self.log.debug('take_action(%s)', parsed_args)
706712
compute_client = self.app.client_manager.compute
713+
714+
project_id = None
715+
if parsed_args.project:
716+
identity_client = self.app.client_manager.identity
717+
project_id = identity_common.find_project(
718+
identity_client,
719+
parsed_args.project,
720+
parsed_args.project_domain,
721+
).id
722+
parsed_args.all_projects = True
723+
707724
search_opts = {
708725
'reservation_id': parsed_args.reservation_id,
709726
'ip': parsed_args.ip,
@@ -714,6 +731,7 @@ def take_action(self, parsed_args):
714731
'flavor': parsed_args.flavor,
715732
'image': parsed_args.image,
716733
'host': parsed_args.host,
734+
'tenant_id': project_id,
717735
'all_tenants': parsed_args.all_projects,
718736
}
719737
self.log.debug('search options: %s', search_opts)

0 commit comments

Comments
 (0)