From 10835a1886301d36ee77f0221b7b87476fe312cf Mon Sep 17 00:00:00 2001
From: JIHOJU <jihoju96@gmail.com>
Date: Mon, 11 Oct 2021 15:43:55 +0900
Subject: [PATCH] Add more filter option of columns for server list -c COLUMN

In order to improve the convenient of use,
columns corresponding to the "--long" option has been added
so that it can be used in the filter.
Currently filterable columns include the following:
'ID', 'Name', 'Status', 'Networks', 'Image', 'Flavor'.

Story: 2009150
Task: 43113
Change-Id: I6760ca5da0e3707d1d746ae5eeec7d9162020d15
---
 openstackclient/compute/v2/server.py          | 21 +++++++++++++++++++
 .../tests/unit/compute/v2/test_server.py      | 14 +++++++++++++
 ...-server-list-columns-4e3b87929dd330f7.yaml | 16 ++++++++++++++
 3 files changed, 51 insertions(+)
 create mode 100644 releasenotes/notes/add-more-server-list-columns-4e3b87929dd330f7.yaml

diff --git a/openstackclient/compute/v2/server.py b/openstackclient/compute/v2/server.py
index 69aaa3c57b..4fe6590ded 100644
--- a/openstackclient/compute/v2/server.py
+++ b/openstackclient/compute/v2/server.py
@@ -2458,6 +2458,27 @@ class ListServer(command.Lister):
                 if c in ('Security Groups', 'security_groups'):
                     columns += ('security_groups_name',)
                     column_headers += ('Security Groups',)
+                if c in ("Task State", "task_state"):
+                    columns += ('OS-EXT-STS:task_state',)
+                    column_headers += ('Task State',)
+                if c in ("Power State", "power_state"):
+                    columns += ('OS-EXT-STS:power_state',)
+                    column_headers += ('Power State',)
+                if c in ("Image ID", "image_id"):
+                    columns += ('Image ID',)
+                    column_headers += ('Image ID',)
+                if c in ("Flavor ID", "flavor_id"):
+                    columns += ('Flavor ID',)
+                    column_headers += ('Flavor ID',)
+                if c in ('Availability Zone', "availability_zone"):
+                    columns += ('OS-EXT-AZ:availability_zone',)
+                    column_headers += ('Availability Zone',)
+                if c in ('Host', "host"):
+                    columns += ('OS-EXT-SRV-ATTR:host',)
+                    column_headers += ('Host',)
+                if c in ('Properties', "properties"):
+                    columns += ('Metadata',)
+                    column_headers += ('Properties',)
 
             # convert back to tuple
             column_headers = tuple(column_headers)
diff --git a/openstackclient/tests/unit/compute/v2/test_server.py b/openstackclient/tests/unit/compute/v2/test_server.py
index 46ace57903..416364716f 100644
--- a/openstackclient/tests/unit/compute/v2/test_server.py
+++ b/openstackclient/tests/unit/compute/v2/test_server.py
@@ -4486,6 +4486,13 @@ class TestServerList(_TestServerList):
             '-c', 'User ID',
             '-c', 'Created At',
             '-c', 'Security Groups',
+            '-c', 'Task State',
+            '-c', 'Power State',
+            '-c', 'Image ID',
+            '-c', 'Flavor ID',
+            '-c', 'Availability Zone',
+            '-c', 'Host',
+            '-c', 'Properties',
             '--long'
         ]
         verifylist = [
@@ -4500,6 +4507,13 @@ class TestServerList(_TestServerList):
         self.assertIn('User ID', columns)
         self.assertIn('Created At', columns)
         self.assertIn('Security Groups', columns)
+        self.assertIn('Task State', columns)
+        self.assertIn('Power State', columns)
+        self.assertIn('Image ID', columns)
+        self.assertIn('Flavor ID', columns)
+        self.assertIn('Availability Zone', columns)
+        self.assertIn('Host', columns)
+        self.assertIn('Properties', columns)
 
     def test_server_list_no_name_lookup_option(self):
         self.data = tuple(
diff --git a/releasenotes/notes/add-more-server-list-columns-4e3b87929dd330f7.yaml b/releasenotes/notes/add-more-server-list-columns-4e3b87929dd330f7.yaml
new file mode 100644
index 0000000000..a4bf004362
--- /dev/null
+++ b/releasenotes/notes/add-more-server-list-columns-4e3b87929dd330f7.yaml
@@ -0,0 +1,16 @@
+---
+feature:
+    - |
+      The ``server list`` command now allows users to select the following
+      additional columns using the ``-c COLUMN`` option:
+
+      - Task State
+      - Power State
+      - Image ID
+      - Flavor ID
+      - Availability Zone
+      - Host
+      - Properties
+
+      These correspond to columns displayed by default when using the ``--long``
+      option.
\ No newline at end of file