Skip to content

Commit c6949c7

Browse files
Jenkinsopenstack-gerrit
authored andcommitted
Merge "Improve "server list" command to have the same output as "nova list"."
2 parents 5243b09 + fc32b0d commit c6949c7

1 file changed

Lines changed: 43 additions & 2 deletions

File tree

openstackclient/compute/v2/server.py

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,29 @@ def _format_servers_list_networks(networks):
5656
return '; '.join(output)
5757

5858

59+
def _format_servers_list_power_state(state):
60+
"""Return a formatted string of a server's power state
61+
62+
:param state: the power state number of a server
63+
:rtype: a string mapped to the power state number
64+
"""
65+
power_states = [
66+
'NOSTATE', # 0x00
67+
'Running', # 0x01
68+
'', # 0x02
69+
'Paused', # 0x03
70+
'Shutdown', # 0x04
71+
'', # 0x05
72+
'Crashed', # 0x06
73+
'Suspended' # 0x07
74+
]
75+
76+
try:
77+
return power_states[state]
78+
except Exception:
79+
return 'N/A'
80+
81+
5982
def _get_ip_address(addresses, address_type, ip_address_family):
6083
# Old style addresses
6184
if address_type in addresses:
@@ -769,6 +792,8 @@ def take_action(self, parsed_args):
769792
'ID',
770793
'Name',
771794
'Status',
795+
'OS-EXT-STS:task_state',
796+
'OS-EXT-STS:power_state',
772797
'Networks',
773798
'OS-EXT-AZ:availability_zone',
774799
'OS-EXT-SRV-ATTR:host',
@@ -778,25 +803,41 @@ def take_action(self, parsed_args):
778803
'ID',
779804
'Name',
780805
'Status',
806+
'Task State',
807+
'Power State',
781808
'Networks',
782809
'Availability Zone',
783810
'Host',
784811
'Properties',
785812
)
786813
mixed_case_fields = [
814+
'OS-EXT-STS:task_state',
815+
'OS-EXT-STS:power_state',
787816
'OS-EXT-AZ:availability_zone',
788817
'OS-EXT-SRV-ATTR:host',
789818
]
790819
else:
791-
columns = ('ID', 'Name', 'Status', 'Networks')
792-
column_headers = columns
820+
columns = (
821+
'ID',
822+
'Name',
823+
'Status',
824+
'Networks',
825+
)
826+
column_headers = (
827+
'ID',
828+
'Name',
829+
'Status',
830+
'Networks',
831+
)
793832
mixed_case_fields = []
794833
data = compute_client.servers.list(search_opts=search_opts)
795834
return (column_headers,
796835
(utils.get_item_properties(
797836
s, columns,
798837
mixed_case_fields=mixed_case_fields,
799838
formatters={
839+
'OS-EXT-STS:power_state':
840+
_format_servers_list_power_state,
800841
'Networks': _format_servers_list_networks,
801842
'Metadata': utils.format_dict,
802843
},

0 commit comments

Comments
 (0)