From 809239ca1e404c8077dd2499eafc8d12bd21c4cd Mon Sep 17 00:00:00 2001
From: Tang Chen <chen.tang@easystack.cn>
Date: Sat, 7 May 2016 14:54:44 +0800
Subject: [PATCH] Map server power state num to meanful string

In _prep_server_detail(), power_state is not formatted
by _format_servers_list_power_state(). So when executing
"server show" or "server create", the power state is
represented by number. This patch map the numbers to
meanful strings.

This patch also adds power_state attribute to FakeServer,
and improves unit tests for this attribute.

Change-Id: I2ec674327de4e5133b8712ba6bb53fa5ce55e3f4
---
 openstackclient/compute/v2/server.py            | 5 +++++
 openstackclient/tests/compute/v2/fakes.py       | 3 ++-
 openstackclient/tests/compute/v2/test_server.py | 5 +++++
 3 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/openstackclient/compute/v2/server.py b/openstackclient/compute/v2/server.py
index bf9f0985df..8c53315822 100644
--- a/openstackclient/compute/v2/server.py
+++ b/openstackclient/compute/v2/server.py
@@ -155,6 +155,11 @@ def _prep_server_detail(compute_client, server):
     if 'tenant_id' in info:
         info['project_id'] = info.pop('tenant_id')
 
+    # Map power state num to meanful string
+    if 'OS-EXT-STS:power_state' in info:
+        info['OS-EXT-STS:power_state'] = _format_servers_list_power_state(
+            info['OS-EXT-STS:power_state'])
+
     # Remove values that are long and not too useful
     info.pop('links', None)
 
diff --git a/openstackclient/tests/compute/v2/fakes.py b/openstackclient/tests/compute/v2/fakes.py
index 23957738a3..b3f3fb4917 100644
--- a/openstackclient/tests/compute/v2/fakes.py
+++ b/openstackclient/tests/compute/v2/fakes.py
@@ -472,7 +472,8 @@ class FakeServer(object):
             },
             'flavor': {
                 'id': 'flavor-id-' + uuid.uuid4().hex,
-            }
+            },
+            'OS-EXT-STS:power_state': 1,
         }
 
         # Overwrite default attributes.
diff --git a/openstackclient/tests/compute/v2/test_server.py b/openstackclient/tests/compute/v2/test_server.py
index 17681672b5..0ba033d234 100644
--- a/openstackclient/tests/compute/v2/test_server.py
+++ b/openstackclient/tests/compute/v2/test_server.py
@@ -89,6 +89,7 @@ class TestServer(compute_fakes.TestComputev2):
 class TestServerCreate(TestServer):
 
     columns = (
+        'OS-EXT-STS:power_state',
         'addresses',
         'flavor',
         'id',
@@ -100,6 +101,8 @@ class TestServerCreate(TestServer):
 
     def datalist(self):
         datalist = (
+            server._format_servers_list_power_state(
+                getattr(self.new_server, 'OS-EXT-STS:power_state')),
             '',
             self.flavor.name + ' (' + self.new_server.flavor.get('id') + ')',
             self.new_server.id,
@@ -1476,6 +1479,8 @@ class TestServerGeneral(TestServer):
             'image': u'%s (%s)' % (_image.name, _image.id),
             'project_id': u'tenant-id-xxx',
             'properties': '',
+            'OS-EXT-STS:power_state': server._format_servers_list_power_state(
+                getattr(_server, 'OS-EXT-STS:power_state')),
         }
 
         # Call _prep_server_detail().