@@ -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+
5982def _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