)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"4d617707373eab297264657ed645d95eecb09859","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2019-05-14 11:28:55 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Update the spec of querying filter by change-since for Train"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Ia041bf4e1205cdb9c3b94af6566e4850fb54eecc"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"bfb3d3c7_75242b0e","line":8,"updated":"2019-05-20 17:19:03.000000000","message":"It would be good to have some summary information here.","commit_id":"0576530acb56452b4b9a2727c0b85a8304a13257"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"d574018fc26c54a13ed69779e1788ee747481f6d","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2019-05-14 11:28:55 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Update the spec of querying filter by change-since for Train"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Ia041bf4e1205cdb9c3b94af6566e4850fb54eecc"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9fb8cfa7_7b4f1592","line":8,"in_reply_to":"bfb3d3c7_75242b0e","updated":"2019-06-06 07:07:37.000000000","message":"Sure","commit_id":"0576530acb56452b4b9a2727c0b85a8304a13257"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"cc62905999b64b82dd8fe695b8e69a110a17b8c1","unresolved":false,"context_lines":[{"line_number":10,"context_line":"that resources are changed since or changed from before,"},{"line_number":11,"context_line":"and cinder will return all which match the condition."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Will add two filters changes-since and changes-from-before in querying API."},{"line_number":14,"context_line":"\"volumes/detail?changes-since\u003d2016-01-01T01:00:00\u0026changes-from-before\u003d2016-12-31T01:00:00\""},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: Ia041bf4e1205cdb9c3b94af6566e4850fb54eecc"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"7faddb67_91b07b45","line":13,"range":{"start_line":13,"start_character":39,"end_line":13,"end_character":58},"updated":"2019-07-12 13:50:18.000000000","message":"This should be changed-prior-to based on the current proposal.","commit_id":"5648f51f4b727c3edb5393a85cc67536e97d1ded"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"ecbd9a6b7915aa35f0f34ee705607f1dd2083e98","unresolved":false,"context_lines":[{"line_number":10,"context_line":"that resources are changed since or changed from before,"},{"line_number":11,"context_line":"and cinder will return all which match the condition."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Will add two filters changes-since and changes-from-before in querying API."},{"line_number":14,"context_line":"\"volumes/detail?changes-since\u003d2016-01-01T01:00:00\u0026changes-from-before\u003d2016-12-31T01:00:00\""},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: Ia041bf4e1205cdb9c3b94af6566e4850fb54eecc"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"7faddb67_f8ee12eb","line":13,"range":{"start_line":13,"start_character":39,"end_line":13,"end_character":58},"in_reply_to":"7faddb67_91b07b45","updated":"2019-07-19 07:52:15.000000000","message":"sure, thanks","commit_id":"5648f51f4b727c3edb5393a85cc67536e97d1ded"}],"specs/train/query-cinder-resources-filter-by-change-since.rst":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"4d617707373eab297264657ed645d95eecb09859","unresolved":false,"context_lines":[{"line_number":64,"context_line":"changes-from-before. User can pass time to the list API url to retrieve"},{"line_number":65,"context_line":"resources operated since or from before a specific time."},{"line_number":66,"context_line":"This changes also need to bump the microversion of API to keep forward"},{"line_number":67,"context_line":"compatibility\u001a"},{"line_number":68,"context_line":"This changes also need to bump the microversion of API to keep"},{"line_number":69,"context_line":"forward compatibility."},{"line_number":70,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"bfb3d3c7_b512a3b0","line":67,"updated":"2019-05-20 17:19:03.000000000","message":"Looks like a formatting error here.","commit_id":"0576530acb56452b4b9a2727c0b85a8304a13257"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"d574018fc26c54a13ed69779e1788ee747481f6d","unresolved":false,"context_lines":[{"line_number":64,"context_line":"changes-from-before. User can pass time to the list API url to retrieve"},{"line_number":65,"context_line":"resources operated since or from before a specific time."},{"line_number":66,"context_line":"This changes also need to bump the microversion of API to keep forward"},{"line_number":67,"context_line":"compatibility\u001a"},{"line_number":68,"context_line":"This changes also need to bump the microversion of API to keep"},{"line_number":69,"context_line":"forward compatibility."},{"line_number":70,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9fb8cfa7_9b80c98d","line":67,"in_reply_to":"bfb3d3c7_b512a3b0","updated":"2019-06-06 07:07:37.000000000","message":"Done","commit_id":"0576530acb56452b4b9a2727c0b85a8304a13257"},{"author":{"_account_id":29288,"name":"Guilherme J.  Arantes","email":"guilherme.jannotti@gmail.com","username":"guilherme.arantes"},"change_message_id":"746194fe977cb1a2aa7b74fa7bbd691510ceae2e","unresolved":false,"context_lines":[{"line_number":65,"context_line":"resources operated since or from before a specific time."},{"line_number":66,"context_line":"This changes also need to bump the microversion of API to keep forward"},{"line_number":67,"context_line":"compatibility\u001a."},{"line_number":68,"context_line":"This changes also need to bump the microversion of API to keep"},{"line_number":69,"context_line":"forward compatibility."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"* GET /v3/{project_id}/volumes/{detail}?changes-since\u003d2016-01-01T01:00:00\u0026changes-from-before\u003d2016-12-01T01:00:00"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"9fb8cfa7_6e0127af","line":69,"range":{"start_line":68,"start_character":0,"end_line":69,"end_character":22},"updated":"2019-06-12 17:25:47.000000000","message":"Duplicated.","commit_id":"29bcff5e1f60655a181e940d7f68fc34a2724edb"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"fcd2b632e28255fa449a2fe25b3aac27540da0fc","unresolved":false,"context_lines":[{"line_number":65,"context_line":"resources operated since or from before a specific time."},{"line_number":66,"context_line":"This changes also need to bump the microversion of API to keep forward"},{"line_number":67,"context_line":"compatibility\u001a."},{"line_number":68,"context_line":"This changes also need to bump the microversion of API to keep"},{"line_number":69,"context_line":"forward compatibility."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"* GET /v3/{project_id}/volumes/{detail}?changes-since\u003d2016-01-01T01:00:00\u0026changes-from-before\u003d2016-12-01T01:00:00"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"9fb8cfa7_6a879763","line":69,"range":{"start_line":68,"start_character":0,"end_line":69,"end_character":22},"in_reply_to":"9fb8cfa7_6e0127af","updated":"2019-06-17 03:28:20.000000000","message":"Thanks","commit_id":"29bcff5e1f60655a181e940d7f68fc34a2724edb"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"bd5256f594ab902a77fe4e87a18308266bd8e3c7","unresolved":false,"context_lines":[{"line_number":11,"context_line":"https://blueprints.launchpad.net/cinder/+spec/support-to-query-cinder-resources-filter-by-change-since"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Support users can query resources by specifying the time that resources"},{"line_number":14,"context_line":"are changed since or/and changed from before, and cinder will return the all"},{"line_number":15,"context_line":"which matches condition."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Problem description"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9fb8cfa7_6162b140","line":14,"range":{"start_line":14,"start_character":68,"end_line":14,"end_character":72},"updated":"2019-06-26 20:46:35.000000000","message":"remote \u0027the\u0027","commit_id":"7d726ef9a100542d91d3e61b227cc91c088a0d40"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"4ffd8e7e279595e6586efe6304cab91000d38f2c","unresolved":false,"context_lines":[{"line_number":11,"context_line":"https://blueprints.launchpad.net/cinder/+spec/support-to-query-cinder-resources-filter-by-change-since"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Support users can query resources by specifying the time that resources"},{"line_number":14,"context_line":"are changed since or/and changed from before, and cinder will return the all"},{"line_number":15,"context_line":"which matches condition."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Problem description"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9fb8cfa7_e63bbb36","line":14,"range":{"start_line":14,"start_character":68,"end_line":14,"end_character":72},"in_reply_to":"9fb8cfa7_6162b140","updated":"2019-07-03 01:19:48.000000000","message":"Done","commit_id":"7d726ef9a100542d91d3e61b227cc91c088a0d40"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"bd5256f594ab902a77fe4e87a18308266bd8e3c7","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Problem description"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Cinder(also other projects, like heat and neutron) API only supports filtering"},{"line_number":21,"context_line":"resources by discrete values, even though cinder resources have timestamp"},{"line_number":22,"context_line":"fields, users can only query resources operated at given time,"},{"line_number":23,"context_line":"not during given period. Users may be interested in resources operated in a"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9fb8cfa7_21583988","line":20,"range":{"start_line":20,"start_character":60,"end_line":20,"end_character":68},"updated":"2019-06-26 20:46:35.000000000","message":"support","commit_id":"7d726ef9a100542d91d3e61b227cc91c088a0d40"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"4ffd8e7e279595e6586efe6304cab91000d38f2c","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Problem description"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Cinder(also other projects, like heat and neutron) API only supports filtering"},{"line_number":21,"context_line":"resources by discrete values, even though cinder resources have timestamp"},{"line_number":22,"context_line":"fields, users can only query resources operated at given time,"},{"line_number":23,"context_line":"not during given period. Users may be interested in resources operated in a"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9fb8cfa7_06392f3e","line":20,"range":{"start_line":20,"start_character":60,"end_line":20,"end_character":68},"in_reply_to":"9fb8cfa7_21583988","updated":"2019-07-03 01:19:48.000000000","message":"Done","commit_id":"7d726ef9a100542d91d3e61b227cc91c088a0d40"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"bd5256f594ab902a77fe4e87a18308266bd8e3c7","unresolved":false,"context_lines":[{"line_number":38,"context_line":"Proposed change"},{"line_number":39,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"* Introduce two new changes-since and changes-from-before filters for"},{"line_number":42,"context_line":"  retrieving resources. It accepts one or two timestamps and projects will"},{"line_number":43,"context_line":"  return resources whose update_at fields are later than or earlier than those"},{"line_number":44,"context_line":"  timestamps."}],"source_content_type":"text/x-rst","patch_set":3,"id":"9fb8cfa7_21cd992f","line":41,"range":{"start_line":41,"start_character":38,"end_line":41,"end_character":57},"updated":"2019-06-26 20:46:35.000000000","message":"This should be changes-before for consistency.","commit_id":"7d726ef9a100542d91d3e61b227cc91c088a0d40"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"4ffd8e7e279595e6586efe6304cab91000d38f2c","unresolved":false,"context_lines":[{"line_number":38,"context_line":"Proposed change"},{"line_number":39,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"* Introduce two new changes-since and changes-from-before filters for"},{"line_number":42,"context_line":"  retrieving resources. It accepts one or two timestamps and projects will"},{"line_number":43,"context_line":"  return resources whose update_at fields are later than or earlier than those"},{"line_number":44,"context_line":"  timestamps."}],"source_content_type":"text/x-rst","patch_set":3,"id":"9fb8cfa7_c64237ac","line":41,"range":{"start_line":41,"start_character":38,"end_line":41,"end_character":57},"in_reply_to":"9fb8cfa7_21cd992f","updated":"2019-07-03 01:19:48.000000000","message":"okay. I will change the code back to \u0027changes-before\u0027 for consistency","commit_id":"7d726ef9a100542d91d3e61b227cc91c088a0d40"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"190590b920b20f460a3cf90b7b9f621155ba7a8b","unresolved":false,"context_lines":[{"line_number":38,"context_line":"Proposed change"},{"line_number":39,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"* Introduce two new changes-since and changes-before filters for"},{"line_number":42,"context_line":"  retrieving resources. It accepts one or two timestamps and projects will"},{"line_number":43,"context_line":"  return resources whose update_at fields are later than or earlier than those"},{"line_number":44,"context_line":"  timestamps."}],"source_content_type":"text/x-rst","patch_set":4,"id":"9fb8cfa7_e652db68","line":41,"range":{"start_line":41,"start_character":38,"end_line":41,"end_character":52},"updated":"2019-07-03 01:22:58.000000000","message":"Jay, I saw you have given comments in code patch that this should be changed-prior-to.","commit_id":"9f871be6e9bf4123d08c112a20efabfc3b6ec83f"}],"specs/train/query-cinder-resources-filter-by-time-comparison-operators.rst":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"4d3c43bfca6522a0eae1e4ac30e5b7839d04b542","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Problem description"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Cinder(also other projects, like heat and neutron) API only support filtering"},{"line_number":21,"context_line":"resources by discrete values, even though cinder resources have timestamp"},{"line_number":22,"context_line":"fields, users can only query resources operated at given time,"},{"line_number":23,"context_line":"not during given period. Users may be interested in resources operated in a"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7faddb67_59e05397","line":20,"range":{"start_line":20,"start_character":6,"end_line":20,"end_character":7},"updated":"2019-07-23 21:30:48.000000000","message":"nit: should be a space before the parenthesis","commit_id":"ee1e7876c044e20a3ca8bfe0109668578e81b1c0"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"c751774e76fe8dd25af5bbd00a71455845cc3349","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Problem description"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Cinder(also other projects, like heat and neutron) API only support filtering"},{"line_number":21,"context_line":"resources by discrete values, even though cinder resources have timestamp"},{"line_number":22,"context_line":"fields, users can only query resources operated at given time,"},{"line_number":23,"context_line":"not during given period. Users may be interested in resources operated in a"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7faddb67_89b0a08d","line":20,"range":{"start_line":20,"start_character":6,"end_line":20,"end_character":7},"in_reply_to":"7faddb67_59e05397","updated":"2019-07-25 01:41:31.000000000","message":"Done","commit_id":"ee1e7876c044e20a3ca8bfe0109668578e81b1c0"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"597c264e2249928c62ee4d298b639afafd01c0b9","unresolved":false,"context_lines":[{"line_number":75,"context_line":"This changes also need to bump the microversion of API to keep forward"},{"line_number":76,"context_line":"compatibility."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"* GET /v3/{project_id}/volumes/{detail}?updated_at\u003dgt:2016-01-01T01:00:00;lt:2016-12-01T01:00:00"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"Security impact"},{"line_number":81,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7faddb67_1882cb50","line":78,"updated":"2019-07-24 10:41:02.000000000","message":"The semicolon separator will not work (without escaping) because \u0027;\u0027 is treated as query parameter separator by most libraries (in the same was as \u0027\u0026\u0027). In fact \u0027;\u0027 is the more official separator but it never really caught on. So if you parse this query string you\u0027re not going to get what you expect:\n\n\u003e\u003e\u003e import urllib.parse as up\n\u003e\u003e\u003e up.parse_qs(\u0027updated_at\u003dgt:2016-01-01T01:00:00;lt:2016-12-01T01:00:00\u0027)\n{\u0027updated_at\u0027: [\u0027gt:2016-01-01T01:00:00\u0027]}\n\u003e\u003e\u003e up.parse_qs(\u0027updated_at\u003dgt:2016-01-01T01:00:00;lt:2016-12-01T01:00:00\u0027, strict_parsing\u003dTrue)\nTraceback (most recent call last):\n  File \"\u003cstdin\u003e\", line 1, in \u003cmodule\u003e\n  File \"/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/parse.py\", line 672, in parse_qs\n    max_num_fields\u003dmax_num_fields)\n  File \"/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/parse.py\", line 725, in parse_qsl\n    raise ValueError(\"bad query field: %r\" % (name_value,))\nValueError: bad query field: \u0027lt:2016-12-01T01:00:00\u0027\n\nSince you\u0027re not really expressing a range, but rather members of a bound, \u0027,\u0027 seems like your best bet here. \u0027-\u0027 is already used all over the place, and \u0027,\u0027 is common in openstack for parameters that take multiple args (e.g. in placement \u0027resources\u003dVCPU:1,MEMORY_MB:1024\u0027)","commit_id":"ee1e7876c044e20a3ca8bfe0109668578e81b1c0"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"c751774e76fe8dd25af5bbd00a71455845cc3349","unresolved":false,"context_lines":[{"line_number":75,"context_line":"This changes also need to bump the microversion of API to keep forward"},{"line_number":76,"context_line":"compatibility."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"* GET /v3/{project_id}/volumes/{detail}?updated_at\u003dgt:2016-01-01T01:00:00;lt:2016-12-01T01:00:00"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"Security impact"},{"line_number":81,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7faddb67_897500cf","line":78,"in_reply_to":"7faddb67_1882cb50","updated":"2019-07-25 01:41:31.000000000","message":"Thanks, Chris, this is a really great suggestion.","commit_id":"ee1e7876c044e20a3ca8bfe0109668578e81b1c0"}]}
