From d8aba0991d1a3a76bb6bdaf950e64a9067a04ac7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Herv=C3=A9=20Beraud?= <hberaud@redhat.com>
Date: Thu, 29 Oct 2020 17:19:34 +0100
Subject: [PATCH] add tooling to list em series from data

Change-Id: I114f08c0c1c38a31f34d798562dd530910bcd3d5
---
 doc/source/reference/using.rst            |  9 ++++++++
 openstack_releases/cmds/list_em_series.py | 26 +++++++++++++++++++++++
 openstack_releases/series_status.py       |  4 ++++
 setup.cfg                                 |  1 +
 4 files changed, 40 insertions(+)
 create mode 100644 openstack_releases/cmds/list_em_series.py

diff --git a/doc/source/reference/using.rst b/doc/source/reference/using.rst
index 55c5c05ecb..aa9c0e0820 100644
--- a/doc/source/reference/using.rst
+++ b/doc/source/reference/using.rst
@@ -931,3 +931,12 @@ is equivalent to:
 ::
 
   ./list_unreleased_changes.sh stable/liberty $(list-deliverables --repos --series liberty)
+
+list-em-series
+--------------
+
+Command to list all series tagged as in extended maintenance.
+
+::
+
+  tox -e venv -- list-em-series
diff --git a/openstack_releases/cmds/list_em_series.py b/openstack_releases/cmds/list_em_series.py
new file mode 100644
index 0000000000..c0f59e9905
--- /dev/null
+++ b/openstack_releases/cmds/list_em_series.py
@@ -0,0 +1,26 @@
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+import os
+
+from openstack_releases import series_status
+
+
+BASE_PATH = os.path.dirname(os.path.realpath(__file__))
+ROOT_DIR = f'{BASE_PATH}/../../data'
+
+
+def main():
+    series = series_status.SeriesStatus.from_directory(ROOT_DIR)
+    for serie in series:
+        if series.get(serie).is_em:
+            print(serie)
diff --git a/openstack_releases/series_status.py b/openstack_releases/series_status.py
index a967797237..051df75c9b 100644
--- a/openstack_releases/series_status.py
+++ b/openstack_releases/series_status.py
@@ -47,6 +47,10 @@ class Series(object):
     def eol_date(self):
         return self._data.get('eol-date', None)
 
+    @property
+    def is_em(self):
+        return self.status == 'extended maintenance'
+
 
 class SeriesStatus(collections.abc.Mapping):
 
diff --git a/setup.cfg b/setup.cfg
index bc38ba3064..2702e088ec 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -24,6 +24,7 @@ packages = openstack_releases
 console_scripts =
     validate-request = openstack_releases.cmds.validate:main
     list-changes = openstack_releases.cmds.list_changes:main
+    list-em-series = openstack_releases.cmds.list_em_series:main
     list-unreleased-changes = openstack_releases.cmds.list_unreleased_changes:main
     list-constraints = openstack_releases.cmds.list_constraints:main
     new-release = openstack_releases.cmds.new_release:main