Merge "Add yangtools release notes"
authorLuis Gomez <ecelgp@gmail.com>
Sun, 26 Sep 2021 19:32:07 +0000 (19:32 +0000)
committerGerrit Code Review <gerrit@opendaylight.org>
Sun, 26 Sep 2021 19:32:07 +0000 (19:32 +0000)
docs/documentation.rst
docs/ext/README.md [deleted file]
docs/ext/odl-jira.py
docs/release-notes/projects/aaa.rst
docs/release-notes/projects/infrautils.rst

index 74b11d5facb74f6a3fd654924cdfa5eee0e3a06e..2e427b15a9ca7ec9789f5970dd504cfbdce2d91e 100644 (file)
@@ -343,6 +343,23 @@ Because the labels have to be unique, a best practice is to prefix
 the labels with the project name to help share the label space; for example,
 use ``sfc-user-guide`` instead of just ``user-guide``.
 
+Referencing JIRA issues
+^^^^^^^^^^^^^^^^^^^^^^^
+
+In order to reference JIRA, we provide two new directives, ``jira_fixed_issues`` and
+``jira_known_issues``. These render a table of issues for a particular project and
+its version range. These are used like this:
+
+ .. code-block:: rst
+
+    .. jira_fixed_issues::
+       :project: CONTROLLER
+       :versions: 4.0.0-4.0.3
+
+    .. jira_known_issues::
+       :project: CONTROLLER
+       :versions: 4.0.0-4.0.3
+
 
 .. _docs-rst-troubleshooting:
 
diff --git a/docs/ext/README.md b/docs/ext/README.md
deleted file mode 100644 (file)
index a7b18f3..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-Sphinx extensions
-
-TODO: add proper linking
index 400eba8932394a6f67b19dfd05e7bdda199828e7..a5d2470f7005d51eed31e6320a07f28b76a9a34b 100644 (file)
@@ -13,12 +13,36 @@ Embeds a simple table with issues.
 from docutils import nodes
 from docutils.parsers.rst import directives, Directive
 from jira import JIRA
+from urllib.parse import quote
 import re
 import sphinx
 
 __copyright__ = "Copyright(c) 2021 PANTHEON.tech, s.r.o."
 __license__ = "Eclipse Public License v1.0"
 
+def jira_prj_versions(project, version_range):
+    jira = JIRA(server="https://jira.opendaylight.org")
+    prj = jira.project(project)
+    (from_ver, to_ver) = version_range.split('-', 1)
+
+    versions = set()
+    for ver in jira.project_versions(prj):
+        if ver.name >= from_ver and ver.name <= to_ver:
+            versions.add(ver.name)
+    versions = list(versions)
+    versions.sort()
+    versions = ", ".join(versions)
+
+    return (jira, prj, from_ver, to_ver, versions)
+
+def format_versions(versions):
+    result = set()
+    for version in versions:
+        result.add(version.name)
+    result = list(result)
+    result.sort()
+    return ", ".join(result)
+
 class JiraFixedIssuesDirective(Directive):
     """
     JIRA Fixed Issues directive
@@ -33,20 +57,14 @@ class JiraFixedIssuesDirective(Directive):
     }
 
     def run(self):
-        jira = JIRA(server="https://jira.opendaylight.org")
-        prj = jira.project(self.options.get('project'))
-        (from_ver, to_ver) = self.options.get('versions').split('-', 1)
+        (jira, prj, from_ver, to_ver, versions) = jira_prj_versions(self.options.get('project'), self.options.get('versions'))
 
-        versions = set()
-        for ver in jira.project_versions(prj):
-            if ver.name >= from_ver and ver.name <= to_ver:
-                versions.add(ver.name)
-        versions = ", ".join(versions)
+        query = 'project = %s AND resolution is not EMPTY AND fixVersion in (%s) ORDER BY type ASC' % (prj, versions)
+        issues = jira.search_issues(query)
 
         # FIXME: this is not quite nice: can we emit the table markup directly
         table = [
-            '.. list-table:: Issues resolved in versions %s through %s' % (from_ver, to_ver),
-            # FIXME: bind to https://datatables.net/
+            '.. list-table:: Issues resolved in versions %s through %s (`JIRA <https://jira.opendaylight.org/issues/?jql=%s>`__)' % (from_ver, to_ver, quote(query)),
             '   :class: datatable',
             '   :header-rows: 1',
             '   :widths: auto',
@@ -58,28 +76,21 @@ class JiraFixedIssuesDirective(Directive):
             '     - Fix Version(s)',
         ]
 
-        issues = jira.search_issues('project = %s AND resolution is not EMPTY AND fixVersion in (%s) ORDER BY type ASC' % (prj, versions))
-        for issue in issues:
-            # Groom fixVersions
-            fixVersions = set()
-            for version in issue.fields.fixVersions:
-                fixVersions.add(version.name)
-            fixVersions = list(fixVersions)
-            fixVersions.sort()
-
-            table.append('   * - .. image:: %s' % issue.fields.issuetype.iconUrl)
-            table.append('          :align: center')
-            table.append('          :alt: %s' % issue.fields.issuetype.name)
-            table.append('     - `%s <https://jira.opendaylight.org/browse/%s>`_' % (issue.key, issue.key))
-            table.append('     - %s' % issue.fields.summary)
-            table.append('     - %s' % issue.fields.resolution)
-            table.append('     - %s' % ", ".join(fixVersions))
-
-        table.append('')
-
-        for idx, line in enumerate(table):
-            self.content.data.insert(idx, line)
-            self.content.items.insert(idx, (None, idx))
+        if issues:
+            for issue in issues:
+                table.append('   * - .. image:: %s' % issue.fields.issuetype.iconUrl)
+                table.append('          :align: center')
+                table.append('          :alt: %s' % issue.fields.issuetype.name)
+                table.append('     - `%s <https://jira.opendaylight.org/browse/%s>`_' % (issue.key, issue.key))
+                table.append('     - %s' % issue.fields.summary)
+                table.append('     - %s' % issue.fields.resolution)
+                table.append('     - %s' % format_versions(issue.fields.fixVersions))
+
+            table.append('')
+
+            for idx, line in enumerate(table):
+                self.content.data.insert(idx, line)
+                self.content.items.insert(idx, (None, idx))
 
         node = nodes.container()
         self.state.nested_parse(self.content, self.content_offset, node)
@@ -99,20 +110,14 @@ class JiraKnownIssuesDirective(Directive):
     }
 
     def run(self):
-        jira = JIRA(server="https://jira.opendaylight.org")
-        prj = jira.project(self.options.get('project'))
-        (from_ver, to_ver) = self.options.get('versions').split('-', 1)
+        (jira, prj, from_ver, to_ver, versions) = jira_prj_versions(self.options.get('project'), self.options.get('versions'))
 
-        versions = set()
-        for ver in jira.project_versions(prj):
-            if ver.name >= from_ver and ver.name <= to_ver:
-                versions.add(ver.name)
-        versions = ", ".join(versions)
+        query = 'project = %s AND affectedVersion in (%s) AND fixVersion NOT in (%s) ORDER BY type ASC' % (prj, versions, versions)
+        issues = jira.search_issues(query)
 
         # FIXME: this is not quite nice: can we emit the table markup directly
         table = [
-            '.. list-table:: Issues affecting versions %s through %s' % (from_ver, to_ver),
-            # FIXME: bind to https://datatables.net/
+            '.. list-table:: Issues affecting versions %s through %s (`JIRA <https://jira.opendaylight.org/issues/?jql=%s>`__)' % (from_ver, to_ver, quote(query)),
             '   :class: datatable',
             '   :header-rows: 1',
             '   :widths: auto',
@@ -125,36 +130,24 @@ class JiraKnownIssuesDirective(Directive):
             '     - Fix Version(s)',
         ]
 
-        issues = jira.search_issues('project = %s AND affectedVersion in (%s) AND fixVersion NOT in (%s) ORDER BY type ASC' % (prj, versions, versions))
-        for issue in issues:
-            # Groom fixVersions
-            fixVersions = set()
-            for version in issue.fields.fixVersions:
-                fixVersions.add(version.name)
-            fixVersions = list(fixVersions)
-            fixVersions.sort()
-
-            # Groom affectedVersions
-            affectedVersions = set()
-            for version in issue.fields.versions:
-                affectedVersions.add(version.name)
-            affectedVersions = list(affectedVersions)
-            affectedVersions.sort()
-
-            table.append('   * - .. image:: %s' % issue.fields.issuetype.iconUrl)
-            table.append('          :align: center')
-            table.append('          :alt: %s' % issue.fields.issuetype.name)
-            table.append('     - `%s <https://jira.opendaylight.org/browse/%s>`_' % (issue.key, issue.key))
-            table.append('     - %s' % issue.fields.summary)
-            table.append('     - %s' % issue.fields.status)
-            table.append('     - %s' % ", ".join(affectedVersions))
-            table.append('     - %s' % ", ".join(fixVersions))
-
-        table.append('')
-
-        for idx, line in enumerate(table):
-            self.content.data.insert(idx, line)
-            self.content.items.insert(idx, (None, idx))
+        if issues:
+            for issue in issues:
+                fixVersions = format_versions(issue.fields.fixVersions)
+                affectvedVersions = format_versions(issue.fields.versions)
+                table.append('   * - .. image:: %s' % issue.fields.issuetype.iconUrl)
+                table.append('          :align: center')
+                table.append('          :alt: %s' % issue.fields.issuetype.name)
+                table.append('     - `%s <https://jira.opendaylight.org/browse/%s>`_' % (issue.key, issue.key))
+                table.append('     - %s' % issue.fields.summary)
+                table.append('     - %s' % issue.fields.status)
+                table.append('     - %s' % fixVersions)
+                table.append('     - %s' % affectvedVersions)
+
+            table.append('')
+
+            for idx, line in enumerate(table):
+                self.content.data.insert(idx, line)
+                self.content.items.insert(idx, (None, idx))
 
         node = nodes.container()
         self.state.nested_parse(self.content, self.content_offset, node)
@@ -167,6 +160,11 @@ def setup(app):
     app.add_directive('jira_fixed_issues', JiraFixedIssuesDirective)
     app.add_directive('jira_known_issues', JiraKnownIssuesDirective)
 
+    # https://datatables.net/ improvements to tables
+    app.add_css_file("https://cdn.datatables.net/1.11.2/css/jquery.dataTables.min.css")
+    app.add_js_file("https://cdn.datatables.net/1.11.2/js/jquery.dataTables.min.js")
+    app.add_js_file(None, **{"body": "$(document).ready( function () { $('table.datatable').DataTable(); } );", "type": "text/javascript", "class": "init"})
+
     return {
         'version': '0.1',
         'parallel_read_safe': True,
index 567bb8131b6d336cd45bc23a3d9ee1eaa6640a4a..58c7d290b10553d51634be6938b66a0db30fcde4 100644 (file)
@@ -10,16 +10,33 @@ improve the security posture of an OpenDaylight deployment. By default,
 the majority of OpenDaylight’s northbound APIs (and all RESTCONF APIs)
 are protected by AAA after installing the ``+odl-restconf+`` feature.
 
+Behavior/Feature Changes
+========================
+There are no changes to features.
+
+New Features
+============
+There are no new features.
+
+Deprecated and Removed Features
+===============================
+There are no deprecated or removed features.
+
 Resolved Issues
 ===============
 
-Here is the link to the resolved issues fixed in this release:
+The following table lists the issues resolved in this release.
 
-`OpenDaylight JIRA Tickets - Resolved Issue <https://jira.opendaylight.org/issues/?jql=project%20%3D%20aaa%20AND%20status%20in%20(Resolved%2C%20Done%2C%20Closed%2C%20Verified)%20AND%20fixVersion%20in%20(0.13.0%2C%200.13.1%2C%200.13.2)%20%20ORDER%20BY%20issuetype%20DESC%2C%20key%20ASC>`__
+.. jira_fixed_issues::
+   :project: AAA
+   :versions: 0.14.0-0.14.3
 
 Known Issues
 ============
 
-Here is the link to the known issues exist in this release:
+The following table lists the known issues that exist in this release.
+
+.. jira_known_issues::
+   :project: AAA
+   :versions: 0.14.0-0.14.3
 
-`OpenDaylight JIRA Tickets - Known Issue <https://jira.opendaylight.org/issues/?jql=project+%3D+aaa+AND+type+%3D+Bug+AND+status+not+in+%28Resolved%2C+Done%2C+Closed%29+ORDER+BY+issuetype+DESC%2C+key+ASC>`_
index ac0eb5916740e93a4e5bb9b965a02ce2c65e6219..cd36544a3eb4b6dc6028b9aee31e692159ae16d1 100644 (file)
@@ -10,7 +10,6 @@ The InfraUtils project provides a low-level utility for use by other OpenDayligh
 * @Inject DI
 * ``Utils`` incl. ``org.opendaylight.infrautils.utils.concurrent``
 * Test Utilities
-* Job Coordinator
 * Ready Service
 * Integration Test Utilities (``itestutils``)
 * Caches
@@ -19,36 +18,36 @@ The InfraUtils project provides a low-level utility for use by other OpenDayligh
 
 Behavior/Feature Changes
 ========================
-
-Here is the link to the features improved in this release:
-
-`OpenDaylight JIRA Tickets - Improvement <https://jira.opendaylight.org/issues/?jql=project+%3D+INFRAUTILS+AND+issuetype+%3D+Improvement+AND+status+in+%28Resolved%2C+Done%2C+Closed%29+AND+fixVersion+in+%28Silicon%2C+%22Silicon+GA%22%2C+1.9.5%29+ORDER+BY+issuetype+DESC%2C+key+ASC>`_
+Error Prone execution for pom.xmls inherited from ``org.opendaylight.infrautils:parent``  is now enabled
+on JDKs 11 through 17. This was previously disabled on JDK 16 and JDK 17 due to compatibility issues.
 
 New Features
 ============
+There are no new features.
 
-Here is the link to the new features introduced in this release:
-
-`OpenDaylight JIRA Tickets - New Feature <https://jira.opendaylight.org/issues/?jql=project+%3D+infrautils+AND+type+%3D+%22New+Feature%22+AND+status+in+%28Resolved%2C+Done%2C+Closed%29+AND+fixVersion+in+%28%22Silicon+GA%22%2C+Silicon%2C+silicon%2C+1.9.5%29++ORDER+BY+issuetype+DESC%2C+key+ASC>`_
-
-Deprecated Features
-===================
+Deprecated and Removed Features
+===============================
+Job Coordinator was a rather troublesome attempt at coordinating datastore updates, but in that it made
+reasoning about updates and recovery from failures nigh impossible. It is not used by any active projects
+and has been removed without a replacement.
 
-Here is the link to the features removed in this release:
-
-`OpenDaylight JIRA Tickets - Deprecated Feature <https://jira.opendaylight.org/issues/?jql=project+%3D+infrautils+AND+type+%3D+Deprecate+AND+status+in+%28Resolved%2C+Done%2C+Closed%29+AND+fixVersion+in+%28%22Silicon+GA%22%2C+Silicon%2C+silicon%2C+1.9.5%29++ORDER+BY+issuetype+DESC%2C+key+ASC>`_
+The ``shell`` artifact has been removed, as it has no users and provided no meaningful functionality.
 
 Resolved Issues
 ===============
 
-Here is the link to the resolved issues fixed in this release:
-
-`OpenDaylight JIRA Tickets - Resolved Issue <https://jira.opendaylight.org/issues/?jql=project+%3D+infrautils+AND+type+%3D+Bug+AND+status+in+%28Resolved%2C+Done%2C+Closed%29+AND+fixVersion+in+%28%22Silicon+GA%22%2C+Silicon%2C+silicon%2C+1.9.5%29++ORDER+BY+issuetype+DESC%2C+key+ASC>`_
+The following table lists the issues resolved in this release.
 
+.. jira_fixed_issues::
+   :project: INFRAUTILS
+   :versions: 2.0.0-2.0.5
 
 Known Issues
 ============
 
-Here is the link to the known issues exist in this release:
+The following table lists the known issues that exist in this release.
+
+.. jira_known_issues::
+   :project: INFRAUTILS
+   :versions: 2.0.0-2.0.5
 
-`OpenDaylight JIRA Tickets - Known Issue <https://jira.opendaylight.org/issues/?jql=project+%3D+infrautils+AND+type+%3D+Bug+AND+status+not+in+%28Resolved%2C+Done%2C+Closed%29+ORDER+BY+issuetype+DESC%2C+key+ASC>`_