summaryrefslogtreecommitdiff
path: root/openstackclient/compute/v2/server.py
diff options
context:
space:
mode:
authorTang Chen <tangchen@cn.fujitsu.com>2015-11-06 17:28:03 +0800
committerTang Chen <tangchen@cn.fujitsu.com>2015-11-14 09:38:01 +0800
commitfc32b0d76bf07cb5bd43f2f9dc0078438a9ae351 (patch)
treecd00012b4491d7bacd8b6265615d2bf591223824 /openstackclient/compute/v2/server.py
parent6e1ad737230f6a087afe2c20317156c633a5c80f (diff)
downloadpython-openstackclient-fc32b0d76bf07cb5bd43f2f9dc0078438a9ae351.tar.gz
Improve "server list" command to have the same output as "nova list".
"nova list" will also output "Task State" and "Power State" by default. This patch improves "server list" command to have the same columns, but not by default. These two columns will be output if --long is added. The power state is an int, so also adds a formatter helper function to translate it to human readable string, just as "Networks" does. Change-Id: I0530a910bec03835839a5ba7687c66d5643338f3
Diffstat (limited to 'openstackclient/compute/v2/server.py')
-rw-r--r--openstackclient/compute/v2/server.py45
1 files changed, 43 insertions, 2 deletions
diff --git a/openstackclient/compute/v2/server.py b/openstackclient/compute/v2/server.py
index b5e7f004..11123931 100644
--- a/openstackclient/compute/v2/server.py
+++ b/openstackclient/compute/v2/server.py
@@ -56,6 +56,29 @@ def _format_servers_list_networks(networks):
return '; '.join(output)
+def _format_servers_list_power_state(state):
+ """Return a formatted string of a server's power state
+
+ :param state: the power state number of a server
+ :rtype: a string mapped to the power state number
+ """
+ power_states = [
+ 'NOSTATE', # 0x00
+ 'Running', # 0x01
+ '', # 0x02
+ 'Paused', # 0x03
+ 'Shutdown', # 0x04
+ '', # 0x05
+ 'Crashed', # 0x06
+ 'Suspended' # 0x07
+ ]
+
+ try:
+ return power_states[state]
+ except Exception:
+ return 'N/A'
+
+
def _get_ip_address(addresses, address_type, ip_address_family):
# Old style addresses
if address_type in addresses:
@@ -762,6 +785,8 @@ class ListServer(lister.Lister):
'ID',
'Name',
'Status',
+ 'OS-EXT-STS:task_state',
+ 'OS-EXT-STS:power_state',
'Networks',
'OS-EXT-AZ:availability_zone',
'OS-EXT-SRV-ATTR:host',
@@ -771,18 +796,32 @@ class ListServer(lister.Lister):
'ID',
'Name',
'Status',
+ 'Task State',
+ 'Power State',
'Networks',
'Availability Zone',
'Host',
'Properties',
)
mixed_case_fields = [
+ 'OS-EXT-STS:task_state',
+ 'OS-EXT-STS:power_state',
'OS-EXT-AZ:availability_zone',
'OS-EXT-SRV-ATTR:host',
]
else:
- columns = ('ID', 'Name', 'Status', 'Networks')
- column_headers = columns
+ columns = (
+ 'ID',
+ 'Name',
+ 'Status',
+ 'Networks',
+ )
+ column_headers = (
+ 'ID',
+ 'Name',
+ 'Status',
+ 'Networks',
+ )
mixed_case_fields = []
data = compute_client.servers.list(search_opts=search_opts)
return (column_headers,
@@ -790,6 +829,8 @@ class ListServer(lister.Lister):
s, columns,
mixed_case_fields=mixed_case_fields,
formatters={
+ 'OS-EXT-STS:power_state':
+ _format_servers_list_power_state,
'Networks': _format_servers_list_networks,
'Metadata': utils.format_dict,
},