summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2015-09-10 20:18:45 +0000
committerGerrit Code Review <review@openstack.org>2015-09-10 20:18:45 +0000
commit1e36b122f87aad901334ce70b6957498d8a71a14 (patch)
tree21a73c162969e9c61c9fe06f1632196b64ad018b
parenta591ab34c73fc386cb0f68578eeb744b99a5d0ec (diff)
parent66010b41f128d415aff6aedde3f21981117600a6 (diff)
downloadpython-openstackclient-1e36b122f87aad901334ce70b6957498d8a71a14.tar.gz
Merge "Add support for listing servers of other projects"
-rw-r--r--doc/source/command-objects/server.rst10
-rw-r--r--openstackclient/compute/v2/server.py18
2 files changed, 28 insertions, 0 deletions
diff --git a/doc/source/command-objects/server.rst b/doc/source/command-objects/server.rst
index eb61bab5..b00b9447 100644
--- a/doc/source/command-objects/server.rst
+++ b/doc/source/command-objects/server.rst
@@ -185,6 +185,7 @@ List servers
[--image <image>]
[--host <hostname>]
[--all-projects]
+ [--project <project> [--project-domain <project-domain>]]
[--long]
.. option:: --reservation-id <reservation-id>
@@ -227,6 +228,15 @@ List servers
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
List additional fields in output
diff --git a/openstackclient/compute/v2/server.py b/openstackclient/compute/v2/server.py
index 6d837d9c..66e2e0cb 100644
--- a/openstackclient/compute/v2/server.py
+++ b/openstackclient/compute/v2/server.py
@@ -36,6 +36,7 @@ from openstackclient.common import exceptions
from openstackclient.common import parseractions
from openstackclient.common import utils
from openstackclient.i18n import _ # noqa
+from openstackclient.identity import common as identity_common
from openstackclient.network import common
@@ -700,6 +701,11 @@ class ListServer(lister.Lister):
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(
'--long',
action='store_true',
default=False,
@@ -710,6 +716,17 @@ class ListServer(lister.Lister):
def take_action(self, parsed_args):
self.log.debug('take_action(%s)', parsed_args)
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 = {
'reservation_id': parsed_args.reservation_id,
'ip': parsed_args.ip,
@@ -720,6 +737,7 @@ class ListServer(lister.Lister):
'flavor': parsed_args.flavor,
'image': parsed_args.image,
'host': parsed_args.host,
+ 'tenant_id': project_id,
'all_tenants': parsed_args.all_projects,
}
self.log.debug('search options: %s', search_opts)