VOL-4865 - Fix broken links on the release notes page.

overview/releases.rst
---------------------
   o Refresh gerrit patch 33439 -- some changes already merged in.
   o Change refernece rst files to html to view the generated document.
   o Exclusions already added in config.py for the sphinx chicken-n-egg problem.

Added a new python 3.10+ patch so linkcheck could run to completion.

Add more config exclusions.

Change-Id: I586718b70afabbd78aeff3072fd301413f3e55c3
diff --git a/Makefile b/Makefile
index ed53983..289559c 100644
--- a/Makefile
+++ b/Makefile
@@ -64,6 +64,9 @@
 # -----------------------------------------------------------------------
 # Create the virtualenv with all the tools installed
 # -----------------------------------------------------------------------
+.PHONY: venv
+venv: $(VENV_NAME)
+
 $(VENV_NAME):
 	@echo
 	@echo "============================="
diff --git a/VERSION b/VERSION
index 9fdd305..9005dd0 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-2.10.10
+2.10.11
diff --git a/conf.py b/conf.py
index 3523c3c..fbde864 100644
--- a/conf.py
+++ b/conf.py
@@ -292,6 +292,16 @@
         r'https://github.com/opencord/voltha-helm-charts/blob/master/README',
         r'https://github.com/atomix/atomix/releases/tag/atomix-3.1.9',
         r'https://github.com/atomix/atomix/releases/tag/atomix-3.1.8',
+        #
+        r'../release_notes/voltha_2.2.html',
+        r'../release_notes/voltha_2.3.html',
+        r'../release_notes/voltha_2.4.html',
+        r'../release_notes/voltha_2.5.html',
+        r'../release_notes/voltha_2.6.html',
+        r'../release_notes/voltha_2.7.html',
+        r'../release_notes/voltha_2.8.html',
+        r'../release_notes/voltha_2.9.html',
+        r'../release_notes/voltha_2.10.html',
     ]
 
 # -- Configure recommonmark to use AutoStructify -----------------------------
diff --git a/makefiles/help/include.mk b/makefiles/help/include.mk
index ccba3f4..4264c52 100644
--- a/makefiles/help/include.mk
+++ b/makefiles/help/include.mk
@@ -20,6 +20,10 @@
 help ::
 	@echo "Usage: $(MAKE) [options] [target] ..."
 	@echo
+	@echo '[Virtual Env]'
+	@echo '  venv           Create a python virtual environmen"
+	@echo "  $(VENV_NAME)"
+	@echo
 	@echo '[CLEAN]'
 	@echo '  clean          Remove generated targets'
 	@echo '  sterile        clean + remove virtual env interpreter install'
diff --git a/makefiles/patches/README.md b/makefiles/patches/README.md
new file mode 100644
index 0000000..995a23d
--- /dev/null
+++ b/makefiles/patches/README.md
@@ -0,0 +1,14 @@
+# Howto create a python 3.10+ patch
+
+1) Checkout voltha-docs
+2) cd voltha-docs
+3) make venv
+4) make patch-init
+5) modify the file to be patched beneath staging/${relative_path_to_patch}
+6) make patch-create PATCH_PATH=${relative_path_to_patch}
+    o This will create patches/${relative_path_to_patch}/patch
+7) Verify
+    o make sterile
+    o make venv
+
+# [EOF]
\ No newline at end of file
diff --git a/overview/releases.rst b/overview/releases.rst
index 42b30c3..8970f83 100644
--- a/overview/releases.rst
+++ b/overview/releases.rst
@@ -18,84 +18,108 @@
 --------
 
 .. list-table:: VOLTHA Releases
-   :widths: 25 25 25 30
+   :widths: 25 25 25 30 25
    :header-rows: 1
 
    * - Release
      - Release Date
      - End of Support date
      - Notes
+     -
    * - VOLTHA v1.0.0
      - Sep 12, 2017
      - Oct 6, 2017
      -
+     -
    * - VOLTHA v1.1.0
      - Oct 6, 2017
      - Nov 16, 2017
      -
+     -
    * - VOLTHA v1.1.1
      - Nov 16, 2017
      - Dec 21, 2017
      -
+     -
    * - VOLTHA v1.2.0
      - Dec 21, 2017
      - March 16, 2018
      -
+     -
    * - VOLTHA v1.2.1
      - March 16, 2018
      - April 30, 2018
      -
+     -
    * - VOLTHA v1.3
      - April 30, 2018
      - July 22, 2018
      -
+     -
    * - VOLTHA v1.4
      - July 22, 2018
      - October 02, 2018
      -
+     -
    * - VOLTHA v1.5
      - October 02, 2018
      - May 21, 2019
      -
+     -
    * - VOLTHA v2.0
      - May 21, 2019
      - July 30, 2019
      -
+     -
    * - VOLTHA v2.1
      - July 30, 2019
      - December 22, 2019
      -
-   * - `VOLTHA v2.2 <../release_notes/voltha_2.2.rst>`_
+     -
+   * - `VOLTHA v2.2 <../release_notes/voltha_2.2.html>`_
      - December 12, 2019
      - March 24, 2020
      -
-   * - `VOLTHA v2.3 <../release_notes/voltha_2.3.rst>`_
+     -
+   * - `VOLTHA v2.3 <../release_notes/voltha_2.3.html>`_
      - March 24, 2020
      - July 29, 2020
      -
-   * - `VOLTHA v2.4 <../release_notes/voltha_2.4.rst>`_
+     -
+   * - `VOLTHA v2.4 <../release_notes/voltha_2.4.html>`_
      - July 29, 2020
      - September 30, 2020
      -
-   * - `VOLTHA v2.5 <../release_notes/voltha_2.5.rst>`_
+     -
+   * - `VOLTHA v2.5 <../release_notes/voltha_2.5.html>`_
      - September 30, 2020
      - December 18, 2020
      -
-   * - `VOLTHA v2.6 <../release_notes/voltha_2.6.rst>`_
+     -
+   * - `VOLTHA v2.6 <../release_notes/voltha_2.6.html>`_
      - December 18, 2020
      - March 30, 2021
      -
-   * - `VOLTHA v2.7 <../release_notes/voltha_2.7.rst>`_
+     -
+   * - `VOLTHA v2.7 <../release_notes/voltha_2.7.html>`_
      - March 30, 2021
      - July 11, 2021
      -
-   * - `VOLTHA 2.8 <../release_notes/voltha_2.8.rst>`_
+     -
+   * - `VOLTHA 2.8 <../release_notes/voltha_2.8.html>`_
      - July 11, 2021
      - December 30, 2022
      - Long Term Support Release
-   * - `VOLTHA 2.9 <../release_notes/voltha_2.9.rst>`_
+     -
+   * - `VOLTHA 2.9 <../release_notes/voltha_2.9.html>`_
      - December 17, 2021
      - June 30, 2022
      -
+     -
+   * - `VOLTHA 2.10 <../release_notes/voltha_2.10.html>`_
+     - June 30, 2022
+     - December 30, 2022
+     -
+     -
 
 
diff --git a/patches/lib/python3.10/site-packages/sphinxcontrib/openapi/utils.py/patch b/patches/lib/python3.10/site-packages/sphinxcontrib/openapi/utils.py/patch
new file mode 100644
index 0000000..3fda183
--- /dev/null
+++ b/patches/lib/python3.10/site-packages/sphinxcontrib/openapi/utils.py/patch
@@ -0,0 +1,29 @@
+--- staging/lib/python3.10/site-packages/sphinxcontrib/openapi/utils.py	2022-12-02 18:47:40.050490678 -0500
++++ venv_docs/lib/python3.10/site-packages/sphinxcontrib/openapi/utils.py	2022-12-02 18:45:53.023832002 -0500
+@@ -10,12 +10,7 @@
+ 
+ from __future__ import unicode_literals
+ 
+-try:
+-    import collections.abc
+-    from collections.abc import Mapping
+-except ImportError: # fall through
+-    import collections
+-    from collections import Mapping
++import collections
+ 
+ import jsonschema
+ try:
+@@ -40,10 +35,10 @@
+     resolver = jsonschema.RefResolver(uri, spec)
+ 
+     def _do_resolve(node):
+-        if isinstance(node, Mapping) and '$ref' in node:
++        if isinstance(node, collections.Mapping) and '$ref' in node:
+             with resolver.resolving(node['$ref']) as resolved:
+                 return resolved
+-        elif isinstance(node, Mapping):
++        elif isinstance(node, collections.Mapping):
+             for k, v in node.items():
+                 node[k] = _do_resolve(v)
+         elif isinstance(node, (list, tuple)):
diff --git a/patches/python_310_migration.sh b/patches/python_310_migration.sh
index e02a75c..12d7ca8 100755
--- a/patches/python_310_migration.sh
+++ b/patches/python_310_migration.sh
@@ -21,18 +21,10 @@
 src="staging"
 pat="patches"
 
-## Update logic to: find . -name 'patch')
 declare -a fyls=()
-fyls+=('lib/python3.10/site-packages/robot/utils/normalizing.py')
-fyls+=('lib/python3.10/site-packages/robot/utils/robottypes3.py')
-fyls+=('lib/python3.10/site-packages/sphinx/util/typing.py')
-
-echo
-echo "==========================================================================="
-echo "CMD: $0"
-echo "PWD: $(/bin/pwd)"
-echo "ARGV: $*"
-echo "==========================================================================="
+pushd "$pat" >/dev/null
+fyls+=( $(find . -name 'patch' -print) )
+popd         >/dev/null
 
 if [ $# -eq 0 ]; then set -- apply; fi
 
@@ -54,14 +46,16 @@
 	    pushd "$dst" >/dev/null || { echo "pushd $dst failed"; exit 1; }
 	    for fyl in "${fyls[@]}";
 	    do
+		path="${fyl%/*}"
+
 		# Conditional install, jenkins may not support interpreter yet.
-		if [ ! -e "$fyl" ]; then
-		    echo "[SKIP] $fyl"
+		if [ ! -e "$path" ]; then
+		    echo "[SKIP] $path"
 		    continue
 		fi
 		
-		echo "[APPLY] $fyl"
-		patch -R -p1 < "../$pat/$fyl/patch"
+		echo "[APPLY] $path"
+		patch -R -p1 < "../$pat/${path}/patch"
 	    done
 	    popd >/dev/null || { echo "popd $dst failed"; exit 1; }
 	    ;;
@@ -88,6 +82,8 @@
 	    exit 1
 	    ;;
     esac
+
+    echo
 done
 
 # [EOF]