)]}'
{"nova/api/openstack/compute/plugins/v3/limits.py":[{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"9fded0fab2447f286d16afcc300709f917f51dfe","unresolved":false,"context_lines":[{"line_number":504,"context_line":"    version \u003d 1"},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"    def get_resources(self):"},{"line_number":507,"context_line":"        resources \u003d [extensions.ResourceExtension(self.alias, LimitsController,"},{"line_number":508,"context_line":"                                        collection_actions\u003d{\u0027GET\u0027: \u0027index\u0027})]"},{"line_number":509,"context_line":"        return resources"},{"line_number":510,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPH%2F%2F8j4%3D","line":507,"updated":"2013-05-18 05:00:44.000000000","message":"should set member_name\u003d\"limit\" here","commit_id":"bcacead30f5d69ebcee3f7ba74c43d0376890565"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"5ecce908ac36e8fd5f258f9213722d75e0e619b8","unresolved":false,"context_lines":[{"line_number":44,"context_line":"PER_SECOND \u003d 1"},{"line_number":45,"context_line":"PER_MINUTE \u003d 60"},{"line_number":46,"context_line":"PER_HOUR \u003d 60 * 60"},{"line_number":47,"context_line":"PER_DAY \u003d 60 * 60 * 24"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"limits_nsmap \u003d {None: xmlutil.XMLNS_COMMON_V10, \u0027atom\u0027: xmlutil.XMLNS_ATOM}"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAPH%2F%2FhVM%3D","line":47,"updated":"2013-05-31 11:31:55.000000000","message":"is it not possible to get these out of utils somewhere? Seems weird to be embedded in the plugin.","commit_id":"dd638fc90aea8049094873af56fb516f9c2aded2"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"5e21ab13ff14a4c4b6b5db10fbd9cdb38cf195c6","unresolved":false,"context_lines":[{"line_number":44,"context_line":"PER_SECOND \u003d 1"},{"line_number":45,"context_line":"PER_MINUTE \u003d 60"},{"line_number":46,"context_line":"PER_HOUR \u003d 60 * 60"},{"line_number":47,"context_line":"PER_DAY \u003d 60 * 60 * 24"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"limits_nsmap \u003d {None: xmlutil.XMLNS_COMMON_V10, \u0027atom\u0027: xmlutil.XMLNS_ATOM}"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAPX%2F%2F6uU%3D","line":47,"in_reply_to":"AAAAPH%2F%2FhVM%3D","updated":"2013-06-06 01:27:46.000000000","message":"I guess the question is do we do the cleanup in the port or separate it into a separate changeset which fixes both the V2 and V3 versions?","commit_id":"dd638fc90aea8049094873af56fb516f9c2aded2"},{"author":{"_account_id":5174,"name":"Mauro Sergio Martins Rodrigues","email":"maurosr@linux.vnet.ibm.com","username":"maurosr"},"change_message_id":"b1c59a416005fbbcc48a0dba4c7a6025ec183c8d","unresolved":false,"context_lines":[{"line_number":44,"context_line":"PER_SECOND \u003d 1"},{"line_number":45,"context_line":"PER_MINUTE \u003d 60"},{"line_number":46,"context_line":"PER_HOUR \u003d 60 * 60"},{"line_number":47,"context_line":"PER_DAY \u003d 60 * 60 * 24"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"limits_nsmap \u003d {None: xmlutil.XMLNS_COMMON_V10, \u0027atom\u0027: xmlutil.XMLNS_ATOM}"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAPX%2F%2F2HI%3D","line":47,"in_reply_to":"AAAAPX%2F%2F6uU%3D","updated":"2013-06-07 17:53:58.000000000","message":"I\u0027ll do this as a base patch for both classes.\nThank you guys!","commit_id":"dd638fc90aea8049094873af56fb516f9c2aded2"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"5ecce908ac36e8fd5f258f9213722d75e0e619b8","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        60: \"MINUTE\","},{"line_number":125,"context_line":"        60 * 60: \"HOUR\","},{"line_number":126,"context_line":"        60 * 60 * 24: \"DAY\","},{"line_number":127,"context_line":"    }"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    UNIT_MAP \u003d dict([(v, k) for k, v in UNITS.items()])"},{"line_number":130,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAPH%2F%2FhVI%3D","line":127,"updated":"2013-05-31 11:31:55.000000000","message":"same complaint","commit_id":"dd638fc90aea8049094873af56fb516f9c2aded2"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"636db6a6e80860faa6d475e4ebf63acdf0154280","unresolved":false,"context_lines":[{"line_number":38,"context_line":"from nova import wsgi as base_wsgi"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"QUOTAS \u003d quota.QUOTAS"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAPn%2F%2FpY8%3D","line":41,"updated":"2013-06-26 01:24:56.000000000","message":"added an extra line here","commit_id":"ea22592c805e9881dc4b646768040b91586d220a"},{"author":{"_account_id":5174,"name":"Mauro Sergio Martins Rodrigues","email":"maurosr@linux.vnet.ibm.com","username":"maurosr"},"change_message_id":"bc9fc3d1c88ec4e8960d411920d3faf6b978b874","unresolved":false,"context_lines":[{"line_number":38,"context_line":"from nova import wsgi as base_wsgi"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"QUOTAS \u003d quota.QUOTAS"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAPn%2F%2FhsQ%3D","line":41,"in_reply_to":"AAAAPn%2F%2FpY8%3D","updated":"2013-06-28 14:52:32.000000000","message":"Done","commit_id":"ea22592c805e9881dc4b646768040b91586d220a"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"636db6a6e80860faa6d475e4ebf63acdf0154280","unresolved":false,"context_lines":[{"line_number":214,"context_line":"    Limit(\"GET\", \"*changes-since*\", \".*changes-since.*\", 3,"},{"line_number":215,"context_line":"          utils.TIME_UNITS[\u0027MINUTE\u0027]),"},{"line_number":216,"context_line":"    Limit(\"DELETE\", \"*\", \".*\", 100, utils.TIME_UNITS[\u0027MINUTE\u0027]),"},{"line_number":217,"context_line":"    Limit(\"GET\", \"*/os-fping\", \"^/os-fping\", 12, utils.TIME_UNITS[\u0027DAY\u0027]),"},{"line_number":218,"context_line":"]"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAPn%2F%2FpY4%3D","line":217,"updated":"2013-06-26 01:24:56.000000000","message":"This was changed from HOUR to DAY.  If this was intentional, it would be good to document it in the commit message.","commit_id":"ea22592c805e9881dc4b646768040b91586d220a"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"a724f3c05fca90c4e9d9879e19cfd959f07752af","unresolved":false,"context_lines":[{"line_number":214,"context_line":"    Limit(\"GET\", \"*changes-since*\", \".*changes-since.*\", 3,"},{"line_number":215,"context_line":"          utils.TIME_UNITS[\u0027MINUTE\u0027]),"},{"line_number":216,"context_line":"    Limit(\"DELETE\", \"*\", \".*\", 100, utils.TIME_UNITS[\u0027MINUTE\u0027]),"},{"line_number":217,"context_line":"    Limit(\"GET\", \"*/os-fping\", \"^/os-fping\", 12, utils.TIME_UNITS[\u0027DAY\u0027]),"},{"line_number":218,"context_line":"]"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAPn%2F%2Fchg%3D","line":217,"in_reply_to":"AAAAPn%2F%2FhsA%3D","updated":"2013-07-01 19:47:52.000000000","message":"Good example of how the part 1 and part 2 approach to reviewing these is a lot easier :-)","commit_id":"ea22592c805e9881dc4b646768040b91586d220a"},{"author":{"_account_id":5174,"name":"Mauro Sergio Martins Rodrigues","email":"maurosr@linux.vnet.ibm.com","username":"maurosr"},"change_message_id":"bc9fc3d1c88ec4e8960d411920d3faf6b978b874","unresolved":false,"context_lines":[{"line_number":214,"context_line":"    Limit(\"GET\", \"*changes-since*\", \".*changes-since.*\", 3,"},{"line_number":215,"context_line":"          utils.TIME_UNITS[\u0027MINUTE\u0027]),"},{"line_number":216,"context_line":"    Limit(\"DELETE\", \"*\", \".*\", 100, utils.TIME_UNITS[\u0027MINUTE\u0027]),"},{"line_number":217,"context_line":"    Limit(\"GET\", \"*/os-fping\", \"^/os-fping\", 12, utils.TIME_UNITS[\u0027DAY\u0027]),"},{"line_number":218,"context_line":"]"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAPn%2F%2FhsA%3D","line":217,"in_reply_to":"AAAAPn%2F%2FpY4%3D","updated":"2013-06-28 14:52:32.000000000","message":"it wasn\u0027t... huge mistake, sorry!","commit_id":"ea22592c805e9881dc4b646768040b91586d220a"}],"nova/tests/api/openstack/compute/plugins/v3/test_limits.py":[{"author":{"_account_id":5652,"name":"David Ripton","email":"dripton@redhat.com","username":"dripton"},"change_message_id":"841ad52b1b16634b251d6f61dd3c22997e947bc0","unresolved":false,"context_lines":[{"line_number":308,"context_line":"                          req, 1, {})"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"class TestLimiter(limits.Limiter):"},{"line_number":312,"context_line":"    pass"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAPH%2F%2FdJA%3D","line":311,"updated":"2013-06-03 15:51:02.000000000","message":"This classname is a bit unfortunate because some unit test frameworks think that any class starting with Test is a test suite. (And OpenStack changes test frameworks often.)  Maybe MockListener or MyListener or ListenerSubclass?","commit_id":"dd638fc90aea8049094873af56fb516f9c2aded2"},{"author":{"_account_id":5174,"name":"Mauro Sergio Martins Rodrigues","email":"maurosr@linux.vnet.ibm.com","username":"maurosr"},"change_message_id":"b1c59a416005fbbcc48a0dba4c7a6025ec183c8d","unresolved":false,"context_lines":[{"line_number":308,"context_line":"                          req, 1, {})"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"class TestLimiter(limits.Limiter):"},{"line_number":312,"context_line":"    pass"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAPX%2F%2F2Iw%3D","line":311,"in_reply_to":"AAAAPH%2F%2FdJA%3D","updated":"2013-06-07 17:53:58.000000000","message":"sure, nice catch! but I think you meant {Mock,My}Limits instead of listener right?","commit_id":"dd638fc90aea8049094873af56fb516f9c2aded2"},{"author":{"_account_id":5586,"name":"Ivan-Zhu","email":"zhubo198511@gmail.com","username":"ivan-zhu"},"change_message_id":"a0d6d1d0918e0e0cd6601ce1312873fd4a9737bc","unresolved":false,"context_lines":[{"line_number":904,"context_line":"        serializer \u003d limits.LimitsTemplate()"},{"line_number":905,"context_line":"        fixture \u003d {"},{"line_number":906,"context_line":"            \"limits\": {"},{"line_number":907,"context_line":"                   \"rate\": [{"},{"line_number":908,"context_line":"                         \"uri\": \"*\","},{"line_number":909,"context_line":"                         \"regex\": \".*\","},{"line_number":910,"context_line":"                         \"limit\": [{"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAPX%2F%2F%2FLk%3D","line":907,"updated":"2013-06-04 14:05:38.000000000","message":"Should  we change \"rate\" to \"rates\"? It will be consistence with xml:\n\u003crates\u003e\n   \u003crate\u003e\n         ........\n   \u003c/rate\u003e\n\u003c/rates\u003e","commit_id":"dd638fc90aea8049094873af56fb516f9c2aded2"},{"author":{"_account_id":5174,"name":"Mauro Sergio Martins Rodrigues","email":"maurosr@linux.vnet.ibm.com","username":"maurosr"},"change_message_id":"b1c59a416005fbbcc48a0dba4c7a6025ec183c8d","unresolved":false,"context_lines":[{"line_number":904,"context_line":"        serializer \u003d limits.LimitsTemplate()"},{"line_number":905,"context_line":"        fixture \u003d {"},{"line_number":906,"context_line":"            \"limits\": {"},{"line_number":907,"context_line":"                   \"rate\": [{"},{"line_number":908,"context_line":"                         \"uri\": \"*\","},{"line_number":909,"context_line":"                         \"regex\": \".*\","},{"line_number":910,"context_line":"                         \"limit\": [{"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAPX%2F%2F2Hs%3D","line":907,"in_reply_to":"AAAAPX%2F%2F%2FLk%3D","updated":"2013-06-07 17:53:58.000000000","message":"hey Ivan, I totally agree with you, but as chris mentioned let\u0027s postpone this for a while until we begin to fork the viewers","commit_id":"dd638fc90aea8049094873af56fb516f9c2aded2"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"de47865401cd8033eb0cd0a0aa10767017755868","unresolved":false,"context_lines":[{"line_number":24,"context_line":"from lxml import etree"},{"line_number":25,"context_line":"import webob"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"from nova.api.openstack.compute import limits"},{"line_number":28,"context_line":"from nova.api.openstack.compute import views"},{"line_number":29,"context_line":"from nova.api.openstack import xmlutil"},{"line_number":30,"context_line":"import nova.context"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAP3%2F%2FtQw%3D","line":27,"updated":"2013-07-12 17:19:25.000000000","message":"Is this not ment to be testing the new code at this point? Seems to have been lost between change set 15/14.","commit_id":"67cd5cf56ebb3644ad3c0431dd527b80ecc9b688"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"7ef1c8e2281d6c13fce81b3c8430258cd65640c6","unresolved":false,"context_lines":[{"line_number":24,"context_line":"from lxml import etree"},{"line_number":25,"context_line":"import webob"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"from nova.api.openstack.compute import limits"},{"line_number":28,"context_line":"from nova.api.openstack.compute import views"},{"line_number":29,"context_line":"from nova.api.openstack import xmlutil"},{"line_number":30,"context_line":"import nova.context"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAP3%2F%2Frto%3D","line":27,"in_reply_to":"AAAAP3%2F%2FtQw%3D","updated":"2013-07-13 05:41:46.000000000","message":"No this is just the part1 patch now which just copies the v2 files across unmodified. The part2 patch modifies the extension and the tests to work with the v3 framework","commit_id":"67cd5cf56ebb3644ad3c0431dd527b80ecc9b688"}]}
