summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDean Troyer <dtroyer@gmail.com>2013-07-29 12:28:53 -0500
committerDean Troyer <dtroyer@gmail.com>2013-07-31 10:12:20 -0500
commit7d138b94eccdc30487d3aa95c8bd6338933eefe6 (patch)
tree02099c651c87d9f908d7c456eb7e8c571ca273d2
parentc385180df2338a52e89b1dfdf4d59dd698eaba67 (diff)
downloadpython-openstackclient-7d138b94eccdc30487d3aa95c8bd6338933eefe6.tar.gz
Remove tenant round 3 - other commands
Mostly options and help strings: * image, server, project usage, volume Change-Id: I788b0660f8c2daacde53c20a72dd1afc60cf5159
-rw-r--r--openstackclient/common/utils.py2
-rw-r--r--openstackclient/compute/v2/server.py8
-rw-r--r--openstackclient/compute/v2/usage.py21
-rw-r--r--openstackclient/image/v1/image.py8
-rw-r--r--openstackclient/volume/v1/volume.py12
5 files changed, 37 insertions, 14 deletions
diff --git a/openstackclient/common/utils.py b/openstackclient/common/utils.py
index fd504ea1..a9130168 100644
--- a/openstackclient/common/utils.py
+++ b/openstackclient/common/utils.py
@@ -91,7 +91,7 @@ def format_dict(data):
def get_item_properties(item, fields, mixed_case_fields=[], formatters={}):
"""Return a tuple containing the item properties.
- :param item: a single item resource (e.g. Server, Tenant, etc)
+ :param item: a single item resource (e.g. Server, Project, etc)
:param fields: tuple of strings with the desired field names
:param mixed_case_fields: tuple of field names to preserve case
:param formatters: dictionary mapping field names to callables
diff --git a/openstackclient/compute/v2/server.py b/openstackclient/compute/v2/server.py
index 793461eb..12431229 100644
--- a/openstackclient/compute/v2/server.py
+++ b/openstackclient/compute/v2/server.py
@@ -414,10 +414,10 @@ class ListServer(lister.Lister):
metavar='<server-name>',
help='regular expression to match instance name (admin only)')
parser.add_argument(
- '--all-tenants',
+ '--all-projects',
action='store_true',
- default=bool(int(os.environ.get("ALL_TENANTS", 0))),
- help='display information from all tenants (admin only)')
+ default=bool(int(os.environ.get("ALL_PROJECTS", 0))),
+ help='Include all projects (admin only)')
parser.add_argument(
'--long',
action='store_true',
@@ -438,7 +438,7 @@ class ListServer(lister.Lister):
'flavor': parsed_args.flavor,
'image': parsed_args.image,
'host': parsed_args.host,
- 'all_tenants': parsed_args.all_tenants,
+ 'all_tenants': parsed_args.all_projects,
}
self.log.debug('search options: %s', search_opts)
diff --git a/openstackclient/compute/v2/usage.py b/openstackclient/compute/v2/usage.py
index 0bfbc9b8..f60c2105 100644
--- a/openstackclient/compute/v2/usage.py
+++ b/openstackclient/compute/v2/usage.py
@@ -47,6 +47,15 @@ class ListUsage(lister.Lister):
def take_action(self, parsed_args):
self.log.debug("take_action(%s)" % parsed_args)
+
+ def _format_project(project):
+ if not project:
+ return ""
+ if project in project_cache.keys():
+ return project_cache[project].name
+ else:
+ return project
+
compute_client = self.app.client_manager.compute
columns = (
"tenant_id",
@@ -55,7 +64,7 @@ class ListUsage(lister.Lister):
"total_local_gb_usage"
)
column_headers = (
- "Project ID",
+ "Project",
"RAM MB-Hours",
"CPU Hours",
"Disk GB-Hours"
@@ -76,6 +85,15 @@ class ListUsage(lister.Lister):
usage_list = compute_client.usage.list(start, end)
+ # Cache the project list
+ project_cache = {}
+ try:
+ for p in self.app.client_manager.identity.tenants.list():
+ project_cache[p.id] = p
+ except Exception:
+ # Just forget it if there's any trouble
+ pass
+
if len(usage_list) > 0:
print("Usage from %s to %s:" % (start.strftime(dateformat),
end.strftime(dateformat)))
@@ -84,6 +102,7 @@ class ListUsage(lister.Lister):
(utils.get_item_properties(
s, columns,
formatters={
+ 'tenant_id': _format_project,
'total_memory_mb_usage': lambda x: float("%.2f" % x),
'total_vcpus_usage': lambda x: float("%.2f" % x),
'total_local_gb_usage': lambda x: float("%.2f" % x),
diff --git a/openstackclient/image/v1/image.py b/openstackclient/image/v1/image.py
index 0213ed1e..8827d079 100644
--- a/openstackclient/image/v1/image.py
+++ b/openstackclient/image/v1/image.py
@@ -71,8 +71,8 @@ class CreateImage(show.ShowOne):
)
parser.add_argument(
"--owner",
- metavar="<tenant>",
- help="Owner of the image",
+ metavar="<project>",
+ help="Image owner (project name or ID)",
)
parser.add_argument(
"--size",
@@ -296,8 +296,8 @@ class SetImage(show.ShowOne):
)
parser.add_argument(
"--owner",
- metavar="<tenant>",
- help="Owner of the image",
+ metavar="<project>",
+ help="Image owner (project name or ID)",
)
parser.add_argument(
"--min-disk",
diff --git a/openstackclient/volume/v1/volume.py b/openstackclient/volume/v1/volume.py
index 97f8d31d..c6690fd6 100644
--- a/openstackclient/volume/v1/volume.py
+++ b/openstackclient/volume/v1/volume.py
@@ -179,10 +179,10 @@ class ListVolume(lister.Lister):
help='Filter results by name',
)
parser.add_argument(
- '--all-tenants',
+ '--all-projects',
action='store_true',
default=False,
- help='Display information from all tenants (admin only)',
+ help='Include all projects (admin only)',
)
parser.add_argument(
'--long',
@@ -232,7 +232,7 @@ class ListVolume(lister.Lister):
'Attached',
)
search_opts = {
- 'all_tenants': parsed_args.all_tenants,
+ 'all_tenants': parsed_args.all_projects,
'display_name': parsed_args.name,
'status': parsed_args.status,
}
@@ -322,7 +322,11 @@ class ShowVolume(show.ShowOne):
volume._info.update(
{'properties': utils.format_dict(volume._info.pop('metadata'))}
)
-
+ if 'os-vol-tenant-attr:tenant_id' in volume._info:
+ volume._info.update(
+ {'project_id': volume._info.pop(
+ 'os-vol-tenant-attr:tenant_id')}
+ )
return zip(*sorted(six.iteritems(volume._info)))