)]}'
{"nova/api/openstack/compute/contrib/__init__.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e9cb83b373e6b43a27dd780710be6fb510836dfe","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"# NOTE(alex_xu): This is just for backward compatible. Avoid operator change"},{"line_number":17,"context_line":"# their value for option \u0027osapi_compute_extension\u0027."},{"line_number":18,"context_line":"from nova.api.openstack.compute.legacy_v2 import contrib"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_fd02913d","line":17,"updated":"2015-08-11 11:12:20.000000000","message":"I don\u0027t think we need this, given the conversion logic you have for that config now?","commit_id":"00b2aca4c0accbd0621025ebfe54146b05cc255d"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"d755b4337954a4460e2b0323c11234d199e5ae3c","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"standard_extensions \u003d contrib.standard_extensions"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"select_extensions \u003d contrib.select_extensions"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_d8b48336","line":23,"updated":"2015-08-11 11:07:12.000000000","message":"I needn\u0027t this reference anymore. As there are some code use new path instead old one when loading extensions.","commit_id":"00b2aca4c0accbd0621025ebfe54146b05cc255d"}],"nova/api/openstack/compute/legacy_v2/contrib/__init__.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"d755b4337954a4460e2b0323c11234d199e5ae3c","unresolved":false,"context_lines":[{"line_number":29,"context_line":"                default\u003d[],"},{"line_number":30,"context_line":"                help\u003d\u0027Specify list of extensions to load when using osapi_\u0027"},{"line_number":31,"context_line":"                     \u0027compute_extension option with nova.api.openstack.\u0027"},{"line_number":32,"context_line":"                     \u0027compute.contrib.select_extensions\u0027),"},{"line_number":33,"context_line":"]"},{"line_number":34,"context_line":"CONF \u003d cfg.CONF"},{"line_number":35,"context_line":"CONF.register_opts(ext_opts)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_f8afffe0","line":32,"updated":"2015-08-11 11:07:12.000000000","message":"I should update this.","commit_id":"00b2aca4c0accbd0621025ebfe54146b05cc255d"}],"nova/api/openstack/compute/legacy_v2/extensions.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e9cb83b373e6b43a27dd780710be6fb510836dfe","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"class ExtensionManager(base_extensions.ExtensionManager):"},{"line_number":35,"context_line":"    def __init__(self):"},{"line_number":36,"context_line":"        self.cls_list \u003d CONF.osapi_compute_extension"},{"line_number":37,"context_line":"        self.extensions \u003d {}"},{"line_number":38,"context_line":"        self.sorted_ext_list \u003d []"},{"line_number":39,"context_line":"        self._load_extensions()"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_fd5e1144","line":36,"updated":"2015-08-11 11:12:20.000000000","message":"I wonder if this is really where the logic for this should go:\n\nnova.api.openstack.compute.contrib.* -\u003e nova.api.openstack.compute.legacy_v2.contrib.*","commit_id":"00b2aca4c0accbd0621025ebfe54146b05cc255d"}],"nova/api/openstack/compute/versions.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"bb67c69d1da6dd45e166096adb6392e0036a26cb","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from nova.api.openstack.compute.views import versions as views_versions"},{"line_number":20,"context_line":"from nova.api.openstack import wsgi"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"CONF \u003d cfg.CONF"},{"line_number":24,"context_line":"CONF.import_opt(\u0027enabled\u0027, \u0027nova.api.openstack\u0027, group\u003d\u0027osapi_v3\u0027)"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_ab901a44","side":"PARENT","line":22,"updated":"2015-08-12 00:49:25.000000000","message":"an extra change... But I think it\u0027s fine.","commit_id":"40825b26523c39eb7d6b45a4ac77ccce75a9bcf0"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"78cd5a1f8e13a3fefd38d82825b207bbee1f7f6f","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from nova.api.openstack.compute.views import versions as views_versions"},{"line_number":20,"context_line":"from nova.api.openstack import wsgi"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"CONF \u003d cfg.CONF"},{"line_number":24,"context_line":"CONF.import_opt(\u0027enabled\u0027, \u0027nova.api.openstack\u0027, group\u003d\u0027osapi_v3\u0027)"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_0b8eeecf","side":"PARENT","line":22,"in_reply_to":"1a4dcd0f_ab901a44","updated":"2015-08-12 01:06:04.000000000","message":"Heh - this got changed back and forth so many times, I\u0027m surprised that this is the only place where it didn\u0027t get fixed correctly","commit_id":"40825b26523c39eb7d6b45a4ac77ccce75a9bcf0"}],"nova/api/openstack/extensions.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e9cb83b373e6b43a27dd780710be6fb510836dfe","unresolved":false,"context_lines":[{"line_number":215,"context_line":"                             \"\u0027nova.api.openstack.compute.legacy_v2.contrib\u0027. \""},{"line_number":216,"context_line":"                             \"Use new path instead of old path %s\"),"},{"line_number":217,"context_line":"                         ext_factory)"},{"line_number":218,"context_line":"                ext_factory \u003d ext_factory.replace(\u0027contrib\u0027,"},{"line_number":219,"context_line":"                                                  \u0027legacy_v2.contrib\u0027)"},{"line_number":220,"context_line":"            # Load the factory"},{"line_number":221,"context_line":"            factory \u003d importutils.import_class(ext_factory)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_5d15c546","line":218,"updated":"2015-08-11 11:12:20.000000000","message":"I am tempted to say patch the full path, in case this breaks people with out of tree fun and games.\n\nWhere is the test for this? Ideally checking specific examples.","commit_id":"00b2aca4c0accbd0621025ebfe54146b05cc255d"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"c49d7d8facf7f9fe6295896ea4b3590eed49e391","unresolved":false,"context_lines":[{"line_number":215,"context_line":"                             \"\u0027nova.api.openstack.compute.legacy_v2.contrib\u0027. \""},{"line_number":216,"context_line":"                             \"Use new path instead of old path %s\"),"},{"line_number":217,"context_line":"                         ext_factory)"},{"line_number":218,"context_line":"                ext_factory \u003d ext_factory.replace(\u0027contrib\u0027,"},{"line_number":219,"context_line":"                                                  \u0027legacy_v2.contrib\u0027)"},{"line_number":220,"context_line":"            # Load the factory"},{"line_number":221,"context_line":"            factory \u003d importutils.import_class(ext_factory)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a4dcd0f_2aa7110c","line":218,"updated":"2015-08-12 10:53:21.000000000","message":"Nit: I still don\u0027t like this not including the full base path, I think its going to cause folks problems.\n\nBut anyways, we can do that in a future change.","commit_id":"40cdc2b8ee162951f8d76bd091a408ab2efffd26"}],"nova/api/openstack/versions.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"bb67c69d1da6dd45e166096adb6392e0036a26cb","unresolved":false,"context_lines":[{"line_number":9,"context_line":"#"},{"line_number":10,"context_line":"#    Unless required by applicable law or agreed to in writing, software"},{"line_number":11,"context_line":"#    distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"},{"line_number":12,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_0ba82e76","line":12,"updated":"2015-08-12 00:49:25.000000000","message":"why there is any copy of nova/api/openstack/compute/versions.py","commit_id":"c0b622fe0a604c917805a073b6e2422a5c620360"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"643f67839cfb12874f4adf7dbd835436d4122c6c","unresolved":false,"context_lines":[{"line_number":9,"context_line":"#"},{"line_number":10,"context_line":"#    Unless required by applicable law or agreed to in writing, software"},{"line_number":11,"context_line":"#    distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"},{"line_number":12,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_cb7fa6de","line":12,"in_reply_to":"1a4dcd0f_0ba82e76","updated":"2015-08-12 01:02:23.000000000","message":"Yeah, this additional file is not necessary in this patch.","commit_id":"c0b622fe0a604c917805a073b6e2422a5c620360"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"78cd5a1f8e13a3fefd38d82825b207bbee1f7f6f","unresolved":false,"context_lines":[{"line_number":9,"context_line":"#"},{"line_number":10,"context_line":"#    Unless required by applicable law or agreed to in writing, software"},{"line_number":11,"context_line":"#    distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"},{"line_number":12,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_8b6f5efb","line":12,"in_reply_to":"1a4dcd0f_cb7fa6de","updated":"2015-08-12 01:06:04.000000000","message":"I thought I ran \u0027git mv\u0027 to push this back to n/a/o/compute, and that this file would be gone.","commit_id":"c0b622fe0a604c917805a073b6e2422a5c620360"}],"nova/tests/functional/test_api_samples.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e9cb83b373e6b43a27dd780710be6fb510836dfe","unresolved":false,"context_lines":[{"line_number":167,"context_line":""},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"class ServersSampleMultiStatusJsonTest(ServersSampleBase):"},{"line_number":170,"context_line":"    extension_name \u003d \u0027.\u0027.join((\u0027nova.api.openstack.compute.legacy_v2.contrib\u0027,"},{"line_number":171,"context_line":"                               \u0027server_list_multi_status\u0027,"},{"line_number":172,"context_line":"                               \u0027Server_list_multi_status\u0027))"},{"line_number":173,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_186e6b96","line":170,"updated":"2015-08-11 11:12:20.000000000","message":"I guess we don\u0027t really need these kinds of changes, given the conf re-rewrite logic, but its probably best to keep them.","commit_id":"00b2aca4c0accbd0621025ebfe54146b05cc255d"}],"nova/tests/unit/test_hacking.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"643f67839cfb12874f4adf7dbd835436d4122c6c","unresolved":false,"context_lines":[{"line_number":531,"context_line":"        self._assert_has_errors(code, checks.check_http_not_implemented,"},{"line_number":532,"context_line":"                                expected_errors\u003derrors, filename\u003dfilename)"},{"line_number":533,"context_line":""},{"line_number":534,"context_line":"        filename \u003d \"nova.api.openstack.compute.legacy_v2.contrib/test.py\""},{"line_number":535,"context_line":"        self._assert_has_no_errors(code, checks.check_http_not_implemented,"},{"line_number":536,"context_line":"                                   filename\u003dfilename)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_2b8baac4","line":534,"updated":"2015-08-12 01:02:23.000000000","message":"Here should be:\n\n nova/api/openstack/compute/legacy_v2/contrib/test.py","commit_id":"c0b622fe0a604c917805a073b6e2422a5c620360"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"78cd5a1f8e13a3fefd38d82825b207bbee1f7f6f","unresolved":false,"context_lines":[{"line_number":531,"context_line":"        self._assert_has_errors(code, checks.check_http_not_implemented,"},{"line_number":532,"context_line":"                                expected_errors\u003derrors, filename\u003dfilename)"},{"line_number":533,"context_line":""},{"line_number":534,"context_line":"        filename \u003d \"nova.api.openstack.compute.legacy_v2.contrib/test.py\""},{"line_number":535,"context_line":"        self._assert_has_no_errors(code, checks.check_http_not_implemented,"},{"line_number":536,"context_line":"                                   filename\u003dfilename)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_6b41b262","line":534,"in_reply_to":"1a4dcd0f_2b8baac4","updated":"2015-08-12 01:06:04.000000000","message":"Check out the third patch in the series. I changed it to \u0027v21\u0027 because this check should still work after legacy_v2 is deleted.","commit_id":"c0b622fe0a604c917805a073b6e2422a5c620360"}]}
