Skip to content

Commit

Permalink
Adds extended status fields to nova list
Browse files Browse the repository at this point in the history
The nova list command now includes 'Task State' and 'Power State' fields to
bring parity with the dashboard.

	* Add helper function _translate_extended_states()
	to convert extended states to human

Fixes: bug #954750

Change-Id: I564b7f88e9e2524d8e4ffe21a51608c5e3b23d2d
  • Loading branch information
Dave Wilde committed Apr 29, 2013
1 parent 50fe79b commit e009bec
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 5 deletions.
36 changes: 35 additions & 1 deletion novaclient/v1_1/shell.py
Expand Up @@ -380,6 +380,31 @@ def _translate_keys(collection, convert):
setattr(item, to_key, item._info[from_key])


def _translate_extended_states(collection):
power_states = [
'NOSTATE', # 0x00
'Running', # 0x01
'', # 0x02
'Paused', # 0x03
'Shutdown', # 0x04
'', # 0x05
'Crashed', # 0x06
'Suspended' # 0x07
]

for item in collection:
try:
setattr(item, 'power_state',
power_states[getattr(item, 'power_state')]
)
except AttributeError:
setattr(item, 'power_state', "N/A")
try:
getattr(item, 'task_state')
except AttributeError:
setattr(item, 'task_state', "N/A")


def _translate_flavor_keys(collection):
_translate_keys(collection, [('ram', 'memory_mb')])

Expand Down Expand Up @@ -964,12 +989,21 @@ def do_list(cs, args):
convert = [('OS-EXT-SRV-ATTR:host', 'host'),
('OS-EXT-STS:task_state', 'task_state'),
('OS-EXT-SRV-ATTR:instance_name', 'instance_name'),
('OS-EXT-STS:power_state', 'power_state'),
('hostId', 'host_id')]
_translate_keys(servers, convert)
_translate_extended_states(servers)
if field_titles:
columns = [id_col] + field_titles
else:
columns = [id_col, 'Name', 'Status', 'Networks']
columns = [
id_col,
'Name',
'Status',
'Task State',
'Power State',
'Networks'
]
formatters['Networks'] = utils._format_servers_list_networks
utils.print_list(servers, columns,
formatters, sortby_index=1)
Expand Down
8 changes: 4 additions & 4 deletions tests/test_shell.py
Expand Up @@ -151,10 +151,10 @@ def test_password(self, mock_getpass, mock_stdin):
self.make_env(exclude='OS_PASSWORD')
stdout, stderr = self.shell('list')
self.assertEqual((stdout + stderr),
'+----+------+--------+----------+\n'
'| ID | Name | Status | Networks |\n'
'+----+------+--------+----------+\n'
'+----+------+--------+----------+\n')
'+----+------+--------+------------+-------------+----------+\n'
'| ID | Name | Status | Task State | Power State | Networks |\n'
'+----+------+--------+------------+-------------+----------+\n'
'+----+------+--------+------------+-------------+----------+\n')

@mock.patch('sys.stdin', side_effect=mock.MagicMock)
@mock.patch('getpass.getpass', side_effect=EOFError)
Expand Down

0 comments on commit e009bec

Please sign in to comment.