)]}'
{"specs/kilo/datastore-visibility.rst":[{"author":{"_account_id":9746,"name":"Doug Shelley","email":"dougshelley66@gmail.com","username":"dougshelley"},"change_message_id":"462e87ba6325d23f2cb2d40f8b5ac8f78720804a","unresolved":false,"context_lines":[{"line_number":113,"context_line":"    datastore_version_id| varchar(36) | YES  | Foreign(datastore_version.id)|"},{"line_number":114,"context_line":"    tenant_id           | varchar(36) | NO   |                              |"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    All Default fields are NULL, and Extra is empty."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"Public API"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba7be1f8_4f1ea864","line":116,"range":{"start_line":116,"start_character":4,"end_line":116,"end_character":7},"updated":"2015-02-24 11:07:27.000000000","message":"I think you mean:\nThe default value for all fields is NULL and Extra is empty.\n\nBTW - what is \"Extra\"? (I realize this is probably out of scope of this fix and I should have asked during spec review)","commit_id":"c62837396fef25afc5179b329c24034b922dd44e"},{"author":{"_account_id":5293,"name":"Nikhil","email":"SlickNik@gmail.com","username":"slicknik"},"change_message_id":"e470d765ea24f7cf09fa4116d145ef90cdf75c3b","unresolved":false,"context_lines":[{"line_number":113,"context_line":"    datastore_version_id| varchar(36) | YES  | Foreign(datastore_version.id)|"},{"line_number":114,"context_line":"    tenant_id           | varchar(36) | NO   |                              |"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    All Default fields are NULL, and Extra is empty."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"Public API"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba7be1f8_63c360ed","line":116,"range":{"start_line":116,"start_character":4,"end_line":116,"end_character":7},"in_reply_to":"ba7be1f8_4f1ea864","updated":"2015-02-25 03:05:14.000000000","message":"Fixed this in the latest patchset to make it more clear.\n\nI think \"Extra\" is just a column to just any more information regarding that field -- looks like no extra information / clarification was needed for the fields. I considered taking it out, but wanted to leave the content of the spec intact.","commit_id":"c62837396fef25afc5179b329c24034b922dd44e"}],"specs/template.rst":[{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"818f700d8c46c6e76b4bf00792bbe60d4e761fd4","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":25,"context_line":"Template for New Trove Specs"},{"line_number":26,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":".. If section numbers are desired, unindent this"},{"line_number":29,"context_line":"    .. sectnum::"}],"source_content_type":"text/x-rst","patch_set":5,"id":"fa32b979_5b013f04","line":26,"updated":"2015-06-16 21:59:38.000000000","message":"I changed this because \u0027Title of the Spec\u0027 didn\u0027t look that great on the specs page: http://specs.openstack.org/openstack/trove-specs/","commit_id":"4a72d213aad2209e2c4dcc4d4150a6623557d7c7"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"818f700d8c46c6e76b4bf00792bbe60d4e761fd4","unresolved":false,"context_lines":[{"line_number":62,"context_line":"https://review.openstack.org/#/q/status:open+project:openstack/trove-specs+message:apiimpact,n,z"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"Code snippets, etc. should be placed in appropriately marked blocks:"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":".. code-block:: bash"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    # This is a bash command"},{"line_number":70,"context_line":"    ls -lf"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":".. code-block:: python"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    # sample code"},{"line_number":75,"context_line":"    for count in range(1, 10):"},{"line_number":76,"context_line":"        print count"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Configuration"}],"source_content_type":"text/x-rst","patch_set":5,"id":"fa32b979_7b2d2394","line":76,"range":{"start_line":65,"start_character":0,"end_line":76,"end_character":19},"updated":"2015-06-16 21:59:38.000000000","message":"These were added mostly so that new spec writers wouldn\u0027t have to hunt for the syntax all the time ;)","commit_id":"4a72d213aad2209e2c4dcc4d4150a6623557d7c7"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"818f700d8c46c6e76b4bf00792bbe60d4e761fd4","unresolved":false,"context_lines":[{"line_number":235,"context_line":"Please add any useful references here. You are not required to have any"},{"line_number":236,"context_line":"references. Moreover, this specification should still make sense when your"},{"line_number":237,"context_line":"references are unavailable. Examples of what you could include are [1]_,"},{"line_number":238,"context_line":"[2]_, [3]_ and [4]_."},{"line_number":239,"context_line":""},{"line_number":240,"context_line":".. [1] Links to mailing list or IRC discussions"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":".. [2] Links to notes from a summit session"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":".. [3] Links to relevant research, if appropriate"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":".. [4] Anything else you feel it is worthwhile to refer to"}],"source_content_type":"text/x-rst","patch_set":5,"id":"fa32b979_fb3933d8","line":246,"range":{"start_line":238,"start_character":0,"end_line":246,"end_character":58},"updated":"2015-06-16 21:59:38.000000000","message":"ditto","commit_id":"4a72d213aad2209e2c4dcc4d4150a6623557d7c7"}],"tests/test_titles.py":[{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"b51e160d3a5ab00671b57713e2a0cdc0aacf2d41","unresolved":false,"context_lines":[{"line_number":69,"context_line":"            self.assertTrue("},{"line_number":70,"context_line":"                len(line) \u003c 80,"},{"line_number":71,"context_line":"                msg\u003d\"%s:%d: Line limited to a maximum of 79 characters.\" %"},{"line_number":72,"context_line":"                (tpl, i+1))"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def _check_no_cr(self, tpl, raw):"},{"line_number":75,"context_line":"        matches \u003d re.findall(\u0027\\r\u0027, raw)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_ed778a39","line":72,"updated":"2015-03-05 16:55:30.000000000","message":"Note: This will force people to format the file manually (instead of letting the .rst renderer do it), which could be onerous if large paragraphs exist.  For example, adding one word to a 40 line paragraph could force someone to change all 40 lines.","commit_id":"8b7b9589a4e82d61b333be1a55b07c5a074db28b"},{"author":{"_account_id":5293,"name":"Nikhil","email":"SlickNik@gmail.com","username":"slicknik"},"change_message_id":"312ae9b9a477d0b34b999f3a2bf196a492dcd169","unresolved":false,"context_lines":[{"line_number":69,"context_line":"            self.assertTrue("},{"line_number":70,"context_line":"                len(line) \u003c 80,"},{"line_number":71,"context_line":"                msg\u003d\"%s:%d: Line limited to a maximum of 79 characters.\" %"},{"line_number":72,"context_line":"                (tpl, i+1))"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def _check_no_cr(self, tpl, raw):"},{"line_number":75,"context_line":"        matches \u003d re.findall(\u0027\\r\u0027, raw)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_ef493ad1","line":72,"in_reply_to":"9a80dd14_ed778a39","updated":"2015-03-10 17:49:58.000000000","message":"This makes it much easier to review on gerrit in the diff view -- currently having lines that are really long make for a painful review. Also most editors will automatically do this for you if you set a column limit, so it\u0027s not really that hard to do.","commit_id":"8b7b9589a4e82d61b333be1a55b07c5a074db28b"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"7b585dcde3931199e34fc8f905ae2e7049e5301f","unresolved":false,"context_lines":[{"line_number":69,"context_line":"            self.assertTrue("},{"line_number":70,"context_line":"                len(line) \u003c 80,"},{"line_number":71,"context_line":"                msg\u003d\"%s:%d: Line limited to a maximum of 79 characters.\" %"},{"line_number":72,"context_line":"                (tpl, i+1))"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def _check_no_cr(self, tpl, raw):"},{"line_number":75,"context_line":"        matches \u003d re.findall(\u0027\\r\u0027, raw)"}],"source_content_type":"text/x-python","patch_set":4,"id":"dac4157f_b5677724","line":72,"in_reply_to":"9a80dd14_ef493ad1","updated":"2015-04-22 04:18:01.000000000","message":"I figured out how to do it in my editor, so I\u0027m good ;)","commit_id":"8b7b9589a4e82d61b333be1a55b07c5a074db28b"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"a2cba64bf68b23c27e1ea4f6609ef470188d1e82","unresolved":false,"context_lines":[{"line_number":93,"context_line":"            spec \u003d docutils.core.publish_doctree(template)"},{"line_number":94,"context_line":"            template_titles \u003d self._get_titles(spec)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"            files \u003d glob.glob(\"specs/%s/*\" % release)"},{"line_number":97,"context_line":"            for filename in files:"},{"line_number":98,"context_line":"                self.assertTrue(filename.endswith(\".rst\"),"},{"line_number":99,"context_line":"                                \"spec\u0027s file must uses \u0027rst\u0027 extension.\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba7be1f8_557c40b5","line":96,"updated":"2015-02-25 12:16:41.000000000","message":"A downside of this approach is that if the template is changed (for some reason) then one would have to go and revise all existing RST files.\n\nI would like to propose the addition, as part of this change, of a list of \u0027approved\u0027 specs so that when the template changes, those specs would be considered grandfathered for the purpose of the checking.\n\nThe list of approved specs need not be a file with a bunch of names. It may be merely a mechanism of excluding files from this list (files) based for example on the stat information of the file.","commit_id":"8b7b9589a4e82d61b333be1a55b07c5a074db28b"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"74a315b061381532e3e0140eabc71e87169ea35b","unresolved":false,"context_lines":[{"line_number":93,"context_line":"            spec \u003d docutils.core.publish_doctree(template)"},{"line_number":94,"context_line":"            template_titles \u003d self._get_titles(spec)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"            files \u003d glob.glob(\"specs/%s/*\" % release)"},{"line_number":97,"context_line":"            for filename in files:"},{"line_number":98,"context_line":"                self.assertTrue(filename.endswith(\".rst\"),"},{"line_number":99,"context_line":"                                \"spec\u0027s file must uses \u0027rst\u0027 extension.\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_b4a5a948","line":96,"in_reply_to":"9a80dd14_4d833656","updated":"2015-03-06 14:35:42.000000000","message":"Enforcing consistency would be the ideal, but it seems too expensive. Is the scenario of having to change the template in the middle of a cycle frequent? If yes, then having a place to store current specs seems a good approach. If not, we should try to stick to consistency enforcing. IMO it shouldn\u0027t be a frequent requirement.","commit_id":"8b7b9589a4e82d61b333be1a55b07c5a074db28b"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"7b585dcde3931199e34fc8f905ae2e7049e5301f","unresolved":false,"context_lines":[{"line_number":93,"context_line":"            spec \u003d docutils.core.publish_doctree(template)"},{"line_number":94,"context_line":"            template_titles \u003d self._get_titles(spec)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"            files \u003d glob.glob(\"specs/%s/*\" % release)"},{"line_number":97,"context_line":"            for filename in files:"},{"line_number":98,"context_line":"                self.assertTrue(filename.endswith(\".rst\"),"},{"line_number":99,"context_line":"                                \"spec\u0027s file must uses \u0027rst\u0027 extension.\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"dac4157f_101f5160","line":96,"in_reply_to":"9a80dd14_b4a5a948","updated":"2015-04-22 04:18:01.000000000","message":"I think we can have it look in the current release directory only (as has been suggested).  Once the new release starts, we can add the new directory when we change the test - or just make it a requirement that the first spec needs to change it, like creating the new dir is now","commit_id":"8b7b9589a4e82d61b333be1a55b07c5a074db28b"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"a54eaa0ac231a6bb6ac9dc70226bb020d8e8497f","unresolved":false,"context_lines":[{"line_number":93,"context_line":"            spec \u003d docutils.core.publish_doctree(template)"},{"line_number":94,"context_line":"            template_titles \u003d self._get_titles(spec)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"            files \u003d glob.glob(\"specs/%s/*\" % release)"},{"line_number":97,"context_line":"            for filename in files:"},{"line_number":98,"context_line":"                self.assertTrue(filename.endswith(\".rst\"),"},{"line_number":99,"context_line":"                                \"spec\u0027s file must uses \u0027rst\u0027 extension.\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba7be1f8_722e9ea6","line":96,"in_reply_to":"ba7be1f8_557c40b5","updated":"2015-02-25 21:23:12.000000000","message":"fair point.\n\na slightly less lenient alternative would be to enforce consistency on an OpenStack release basis (e.g. Kilo).","commit_id":"8b7b9589a4e82d61b333be1a55b07c5a074db28b"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"b51e160d3a5ab00671b57713e2a0cdc0aacf2d41","unresolved":false,"context_lines":[{"line_number":93,"context_line":"            spec \u003d docutils.core.publish_doctree(template)"},{"line_number":94,"context_line":"            template_titles \u003d self._get_titles(spec)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"            files \u003d glob.glob(\"specs/%s/*\" % release)"},{"line_number":97,"context_line":"            for filename in files:"},{"line_number":98,"context_line":"                self.assertTrue(filename.endswith(\".rst\"),"},{"line_number":99,"context_line":"                                \"spec\u0027s file must uses \u0027rst\u0027 extension.\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_4d833656","line":96,"in_reply_to":"ba7be1f8_722e9ea6","updated":"2015-03-05 16:55:30.000000000","message":"Could we have a \u0027current\u0027 directory where new specs would go (and those are the only ones that are validated). Once spec freeze passes, all approved specs are then moved to the appropriate release directory (i.e. kilo, liberty, etc.).","commit_id":"8b7b9589a4e82d61b333be1a55b07c5a074db28b"}]}
