--- /dev/null
+# cobbled together from:
+# https://github.com/sphinx-contrib/documentedlist/blob/master/sphinxcontrib/documentedlist.py
+# https://github.com/sphinx-doc/sphinx/blob/v1.6.3/sphinx/ext/graphviz.py
+# https://github.com/thewtex/sphinx-contrib/blob/master/exceltable/sphinxcontrib/exceltable.py
+# https://bitbucket.org/prometheus/sphinxcontrib-htsql/src/331a542c29a102eec9f8cba44797e53a49de2a49/sphinxcontrib/htsql.py?at=default&fileviewer=file-view-default
+# into the glory that follows:
+import json
+import six
+import yaml
+import sphinx
+import datetime
+from docutils.parsers.rst import Directive
+from docutils import nodes
+from sphinx.util import logging
+
+class CephReleases(Directive):
+ has_content = False
+ required_arguments = 1
+ optional_arguments = 0
+ option_spec = {}
+
+ def run(self):
+ filename = self.arguments[0]
+ document = self.state.document
+ env = document.settings.env
+ rel_filename, filename = env.relfn2path(filename)
+ env.note_dependency(filename)
+ try:
+ with open(filename, 'r') as fp:
+ releases = yaml.load(fp)
+ releases = releases["releases"]
+ except Exception as e:
+ return [document.reporter.warning(
+ "Failed to open Ceph releases file {}: {}".format(filename, e),
+ line=self.lineno)]
+
+ table = nodes.table()
+ tgroup = nodes.tgroup(cols=3)
+ table += tgroup
+
+ tgroup.extend(
+ nodes.colspec(colwidth=30, colname='c'+str(idx))
+ for idx, _ in enumerate(range(4)))
+
+ thead = nodes.thead()
+ tgroup += thead
+ row_node = nodes.row()
+ thead += row_node
+ row_node.extend(nodes.entry(h, nodes.paragraph(text=h))
+ for h in ["Version", "Initial release", "Latest", "End of life (estimated)"])
+
+ releases = six.iteritems(releases)
+ releases = sorted(releases, key=lambda t: t[0], reverse=True)
+
+ tbody = nodes.tbody()
+ tgroup += tbody
+
+ rows = []
+ for code_name, info in releases:
+ actual_eol = info.get("actual_eol", None)
+ if actual_eol and actual_eol <= datetime.datetime.now().date():
+ continue
+ trow = nodes.row()
+
+ entry = nodes.entry()
+ para = nodes.paragraph(text="`{}`_".format(code_name))
+ sphinx.util.nodes.nested_parse_with_titles(
+ self.state, para, entry)
+ #entry += para
+ trow += entry
+
+ sorted_releases = sorted(info["releases"],
+ key=lambda t: t["released"])
+ oldest_release = sorted_releases[0]
+ newest_release = sorted_releases[-1]
+
+ entry = nodes.entry()
+ para = nodes.paragraph(text="{}".format(
+ oldest_release["released"].strftime("%b %Y")))
+ entry += para
+ trow += entry
+
+ entry = nodes.entry()
+ if newest_release.get("skip_ref", False):
+ para = nodes.paragraph(text="{}".format(
+ newest_release["version"]))
+ else:
+ para = nodes.paragraph(text="`{}`_".format(
+ newest_release["version"]))
+ sphinx.util.nodes.nested_parse_with_titles(
+ self.state, para, entry)
+ #entry += para
+ trow += entry
+
+ entry = nodes.entry()
+ para = nodes.paragraph(text="{}".format(
+ info.get("target_eol", "--")))
+ entry += para
+ trow += entry
+
+ rows.append(trow)
+
+ tbody.extend(rows)
+
+ return [table]
+
+class CephTimeline(Directive):
+ has_content = False
+ required_arguments = 12
+ optional_arguments = 0
+ option_spec = {}
+
+ def run(self):
+ filename = self.arguments[0]
+ document = self.state.document
+ env = document.settings.env
+ rel_filename, filename = env.relfn2path(filename)
+ env.note_dependency(filename)
+ try:
+ with open(filename, 'r') as fp:
+ releases = yaml.load(fp)
+ except Exception as e:
+ return [document.reporter.warning(
+ "Failed to open Ceph releases file {}: {}".format(filename, e),
+ line=self.lineno)]
+
+ display_releases = self.arguments[1:]
+
+ timeline = []
+ for code_name, info in six.iteritems(releases["releases"]):
+ if code_name in display_releases:
+ for release in info.get("releases", []):
+ released = release["released"]
+ timeline.append((released, code_name, release["version"],
+ release.get("skip_ref", False)))
+
+ assert "development" not in releases["releases"]
+ if "development" in display_releases:
+ for release in releases["development"]["releases"]:
+ released = release["released"]
+ timeline.append((released, "development", release["version"],
+ release.get("skip_ref", False)))
+
+ timeline = sorted(timeline, key=lambda t: t[0], reverse=True)
+
+ table = nodes.table()
+ tgroup = nodes.tgroup(cols=3)
+ table += tgroup
+
+ columns = ["Date"] + display_releases
+ tgroup.extend(
+ nodes.colspec(colwidth=30, colname='c'+str(idx))
+ for idx, _ in enumerate(range(len(columns))))
+
+ thead = nodes.thead()
+ tgroup += thead
+ row_node = nodes.row()
+ thead += row_node
+ for col in columns:
+ entry = nodes.entry()
+ if col.lower() in ["date", "development"]:
+ para = nodes.paragraph(text=col)
+ else:
+ para = nodes.paragraph(text="`{}`_".format(col))
+ sphinx.util.nodes.nested_parse_with_titles(
+ self.state, para, entry)
+ row_node += entry
+
+ tbody = nodes.tbody()
+ tgroup += tbody
+
+ rows = []
+ for row_info in timeline:
+ trow = nodes.row()
+
+ entry = nodes.entry()
+ para = nodes.paragraph(text=row_info[0].strftime("%b %Y"))
+ entry += para
+ trow += entry
+
+ for release in display_releases:
+ entry = nodes.entry()
+ if row_info[1] == release:
+ if row_info[3]: # if skip ref
+ para = nodes.paragraph(text=row_info[2])
+ else:
+ para = nodes.paragraph(text="`{}`_".format(row_info[2]))
+ sphinx.util.nodes.nested_parse_with_titles(
+ self.state, para, entry)
+ else:
+ para = nodes.paragraph(text="--")
+ entry += para
+ trow += entry
+ rows.append(trow)
+
+ tbody.extend(rows)
+
+ return [table]
+
+def setup(app):
+ app.add_directive('ceph_releases', CephReleases)
+ app.add_directive('ceph_timeline', CephTimeline)
Ceph Releases
=============
+Current
+-------
+
+.. ceph_releases:: releases.yml
+
Timeline
--------
-+----------------------+----------+-------------+-----------+----------+---------------+-----------+----------+------------+------------+-------------+
-| | `Mimic`_ | `Luminous`_ | `Kraken`_ | `Jewel`_ | `Infernalis`_ | `Hammer`_ | `Giant`_ | `Firefly`_ | `Emperor`_ | `Dumpling`_ |
-| | | | EOL | EOL | EOL | EOL | EOL | EOL | EOL | EOL |
-+----------------------+----------+-------------+-----------+----------+---------------+-----------+----------+------------+------------+-------------+
-| First release | June | August | January | April | November | April | October | May | November | August |
-| | 2018 | 2017 | 2017 | 2016 | 2015 | 2015 | 2014 | 2014 | 2013 | 2013 |
-+----------------------+----------+-------------+-----------+----------+---------------+-----------+----------+------------+------------+-------------+
-| Estimated retirement | | | August | June | | May | | January | | March |
-| | | | 2017 | 2018 | | 2017 | | 2016 | | 2015 |
-+----------------------+----------+-------------+-----------+----------+---------------+-----------+----------+------------+------------+-------------+
-| Actual retirement | | | August | July | April 2016 | August | April | April | May | May |
-| | | | 2017 | 2018 | | 2017 | 2015 | 2016 | 2014 | 2015 |
-+----------------------+----------+-------------+-----------+----------+---------------+-----------+----------+------------+------------+-------------+
-
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| | Development | `Mimic`_ | `Luminous`_ | `Kraken`_ | `Jewel`_ | `Infernalis`_ | `Hammer`_ | `Giant`_ | `Firefly`_ | `Emperor`_ | `Dumpling`_ |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| September 2018 | | `13.2.2`_ | `12.2.8`_ | | | | | | | | |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| July 2018 | | `13.2.1`_ | `12.2.6`_ | | `10.2.11`_ | | | | | | |
-| | | | `12.2.7`_ | | | | | | | | |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| June 2018 | | `13.2.0`_ | | | | | | | | | |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| May 2018 | 13.1.0 | | | | | | | | | | |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| April 2018 | 13.0.2 | | `12.2.5`_ | | | | | | | | |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| February 2018 | 13.0.1 | | `12.2.3`_ | | | | | | | | |
-| | | | `12.2.4`_ | | | | | | | | |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| December 2017 | | | `12.2.2`_ | | | | | | | | |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| October 2017 | | | | | `10.2.10`_ | | | | | | |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| September 2017 | | | `12.2.1`_ | | | | | | | | |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| August 2017 | 13.0.0 | | `12.2.0`_ | `11.2.1`_ | | | | | | | |
-| +-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| | 12.1.4 | | | | | | | | | | |
-| +-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| | 12.1.3 | | | | | | | | | | |
-| +-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| | 12.1.2 | | | | | | | | | | |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| July 2017 | 12.1.1 | | | | `10.2.9`_ | | | | | | |
-| +-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| | | | | | `10.2.8`_ | | | | | | |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| June 2017 | 12.1.0 | | | | | | | | | | |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| May 2017 | 12.0.3 | | | | | | | | | | |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| April 2017 | 12.0.2 | | | | `10.2.7`_ | | | | | | |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| March 2017 | 12.0.1 | | | | `10.2.6`_ | | | | | | |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| February 2017 | 12.0.0 | | | | | |`0.94.10`_ | | | | |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| January 2017 | 11.1.1 | | | `11.2.0`_ | | | | | | | |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| December 2016 | 11.1.0 | | | | `10.2.5`_ | | | | | | |
-| +-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| | | | | | `10.2.4`_ | | | | | | |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| October 2016 | `11.0.2`_ | | | | | | | | | | |
-| +-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| | 11.0.1 | | | | | | | | | | |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| September 2016 | | | | | `10.2.3`_ | | | | | | |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| August 2016 | | | | | | | `0.94.9`_ | | | | |
-| +-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| | | | | | | | `0.94.8`_ | | | | |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| June 2016 | 11.0.0 | | | | `10.2.2`_ | | | | | | |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| May 2016 | | | | | `10.2.1`_ | | `0.94.7`_ | | | | |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| April 2016 | `10.1.2`_ | | | | `10.2.0`_ | | | | | | |
-| +-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| | `10.1.1`_ | | | | | | | | | | |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| March 2016 | `10.1.0`_ | | | | | | | | | | |
-| +-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| | `10.0.5`_ | | | | | | | | | | |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| February 2016 | `10.0.3`_ | | | | | `9.2.1`_ | `0.94.6`_ | | | | |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| January 2016 | `10.0.2`_ | | | | | | | | | | |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| December 2015 | `10.0.1`_ | | | | | | | | | | |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| November 2015 | `10.0.0`_ | | | | | `9.2.0`_ | | | `0.80.11`_ | | |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| October 2015 | `9.1.0`_ | | | | | | `0.94.5`_ | | | | |
-| +-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| | | | | | | | `0.94.4`_ | | | | |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| August 2015 | `9.0.3`_ | | | | | | `0.94.3`_ | | | | |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| July 2015 | `9.0.2`_ | | | | | | | | `0.80.10`_ | | |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| June 2015 | `9.0.1`_ | | | | | | `0.94.2`_ | | | | |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| May 2015 | `9.0.0`_ | | | | | | | | | | |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| April 2015 | | | | | | | `0.94.1`_ | `0.87.2`_ | | | |
-| +-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| | | | | | | | `0.94`_ | | | | |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| March 2015 | | | | | | | | | `0.80.9`_ | | |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| February 2015 | `0.93`_ | | | | | | | `0.87.1`_ | | | |
-| +-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| | `0.92`_ | | | | | | | | | | |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| January 2015 | `0.91`_ | | | | | | | | `0.80.8`_ | | |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| December 2014 | `0.90`_ | | | | | | | | | | |
-| +-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| | `0.89`_ | | | | | | | | | | |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| November 2014 | `0.88`_ | | | | | | | | | | |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| October 2014 | `0.86`_ | | | | | | | `0.87`_ | `0.80.7`_ | | |
-| +-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| | | | | | | | | | `0.80.6`_ | | |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| September 2014 | `0.85`_ | | | | | | | | | | `0.67.11`_ |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| August 2014 | `0.84`_ | | | | | | | | | | `0.67.10`_ |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| July 2014 | `0.83`_ | | | | | | | | `0.80.5`_ | | |
-| +-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| | | | | | | | | | `0.80.4`_ | | |
-| +-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| | | | | | | | | | `0.80.3`_ | | |
-| +-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| | | | | | | | | | `0.80.2`_ | | |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| June 2014 | `0.82`_ | | | | | | | | | | |
-| +-------------+------------+------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| | `0.81`_ | | | | | | | | | | |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| May 2014 | | | | | | | | | `0.80.1`_ | | `0.67.9`_ |
-| +-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| | | | | | | | | | `0.80`_ | | `0.67.8`_ |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| April 2014 | `0.79`_ | | | | | | | | | | |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| March 2014 | `0.78`_ | | | | | | | | | | |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| February 2014 | `0.77`_ | | | | | | | | | | `0.67.7`_ |
-| +-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| | | | | | | | | | | | `0.67.6`_ |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| January 2014 | `0.76`_ | | | | | | | | | | |
-| +-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| | `0.75`_ | | | | | | | | | | |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| December 2013 | `0.74`_ | | | | | | | | | `0.72.2`_ | `0.67.5`_ |
-| +-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| | `0.73`_ | | | | | | | | | | |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| November 2013 | | | | | | | | | | `0.72.1`_ | |
-| +-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| | | | | | | | | | | `0.72`_ | |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| October 2013 | `0.71`_ | | | | | | | | | | `0.67.4`_ |
-| +-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| | `0.70`_ | | | | | | | | | | |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| September 2013 | `0.69`_ | | | | | | | | | | |
-| +-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| | `0.68`_ | | | | | | | | | | `0.67.3`_ |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| August 2013 | | | | | | | | | | | `0.67.2`_ |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| | | | | | | | | | | | `0.67.1`_ |
-| +-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
-| | | | | | | | | | | | `0.67`_ |
-+----------------+-------------+-----------+-------------+-----------+------------+---------------+-----------+------------+------------+------------+-------------+
+.. ceph_timeline:: releases.yml development mimic luminous kraken jewel infernalis hammer giant firefly emperor dumpling
.. _Mimic: ../mimic
.. _13.2.2: ../mimic#v13-2-2-mimic