)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0e9f39c77b82cac636c424885d844d9fa2910a71","unresolved":false,"context_lines":[{"line_number":15,"context_line":"present in destination share instance share type"},{"line_number":16,"context_line":"and handle it accordingly."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Also, this does not affect the fact that"},{"line_number":19,"context_line":"snapshot export locations of"},{"line_number":20,"context_line":"\u0027migrating\u0027/\u0027migrating_to\u0027 share instances are"},{"line_number":21,"context_line":"not displayed, only \u0027available\u0027 ones are."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Change-Id: I3b6635a3abc0751b30bd069426726243b6f49ef8"},{"line_number":24,"context_line":"Closes-bug: #1661381"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1a430d35_ff81b04e","line":21,"range":{"start_line":18,"start_character":0,"end_line":21,"end_character":41},"updated":"2017-02-03 14:40:54.000000000","message":"?\nWe\u0027re filtering out the ones of \"migrating_to\" aren\u0027t we.","commit_id":"5f3a93f639caee3c9e2ca378983762550f12c912"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"cd1c511a2b0717a593fbccaba38cec5cacc09732","unresolved":false,"context_lines":[{"line_number":15,"context_line":"present in destination share instance share type"},{"line_number":16,"context_line":"and handle it accordingly."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Also, this does not affect the fact that"},{"line_number":19,"context_line":"snapshot export locations of"},{"line_number":20,"context_line":"\u0027migrating\u0027/\u0027migrating_to\u0027 share instances are"},{"line_number":21,"context_line":"not displayed, only \u0027available\u0027 ones are."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Change-Id: I3b6635a3abc0751b30bd069426726243b6f49ef8"},{"line_number":24,"context_line":"Closes-bug: #1661381"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1a430d35_9ac7da44","line":21,"range":{"start_line":18,"start_character":0,"end_line":21,"end_character":41},"in_reply_to":"1a430d35_3fb418f1","updated":"2017-02-03 15:17:35.000000000","message":"Maybe we don\u0027t need to mention this here.","commit_id":"5f3a93f639caee3c9e2ca378983762550f12c912"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"0c5242c6cf15010474f2a5cafd6835ca36737936","unresolved":false,"context_lines":[{"line_number":15,"context_line":"present in destination share instance share type"},{"line_number":16,"context_line":"and handle it accordingly."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Also, this does not affect the fact that"},{"line_number":19,"context_line":"snapshot export locations of"},{"line_number":20,"context_line":"\u0027migrating\u0027/\u0027migrating_to\u0027 share instances are"},{"line_number":21,"context_line":"not displayed, only \u0027available\u0027 ones are."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Change-Id: I3b6635a3abc0751b30bd069426726243b6f49ef8"},{"line_number":24,"context_line":"Closes-bug: #1661381"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1a430d35_2bfe9a6b","line":21,"range":{"start_line":18,"start_character":0,"end_line":21,"end_character":41},"in_reply_to":"1a430d35_9ac7da44","updated":"2017-02-03 16:39:25.000000000","message":"Done","commit_id":"5f3a93f639caee3c9e2ca378983762550f12c912"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"e3db2ade82ffe9cda262e6c02909864734a7c3e0","unresolved":false,"context_lines":[{"line_number":15,"context_line":"present in destination share instance share type"},{"line_number":16,"context_line":"and handle it accordingly."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Also, this does not affect the fact that"},{"line_number":19,"context_line":"snapshot export locations of"},{"line_number":20,"context_line":"\u0027migrating\u0027/\u0027migrating_to\u0027 share instances are"},{"line_number":21,"context_line":"not displayed, only \u0027available\u0027 ones are."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Change-Id: I3b6635a3abc0751b30bd069426726243b6f49ef8"},{"line_number":24,"context_line":"Closes-bug: #1661381"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1a430d35_3fb418f1","line":21,"range":{"start_line":18,"start_character":0,"end_line":21,"end_character":41},"in_reply_to":"1a430d35_ff81b04e","updated":"2017-02-03 14:53:37.000000000","message":"we are filtering all of them that are not available","commit_id":"5f3a93f639caee3c9e2ca378983762550f12c912"}],"manila/share/manager.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"053be2aaebbd796f4b2a94a4e7eca8c9a18455a8","unresolved":false,"context_lines":[{"line_number":1218,"context_line":"            self.db.share_snapshot_instance_update("},{"line_number":1219,"context_line":"                context, dest_snap_ins[\u0027id\u0027], model_update)"},{"line_number":1220,"context_line":""},{"line_number":1221,"context_line":"            dest_extra_specs \u003d self._get_extra_specs_from_share_type("},{"line_number":1222,"context_line":"                context, dest_share_instance[\u0027share_type_id\u0027])"},{"line_number":1223,"context_line":""},{"line_number":1224,"context_line":"            if dest_extra_specs[\u0027mount_snapshot_support\u0027]:"},{"line_number":1225,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a430d35_2541823a","line":1222,"range":{"start_line":1221,"start_character":0,"end_line":1222,"end_character":62},"updated":"2017-02-03 02:19:17.000000000","message":"you should do this outside the for loop","commit_id":"1f90580b5cebf8e9dd3677633f95b88ca04bd6aa"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"86b0346f69dc7efce27d247dc2b46cbc02c36c51","unresolved":false,"context_lines":[{"line_number":1218,"context_line":"            self.db.share_snapshot_instance_update("},{"line_number":1219,"context_line":"                context, dest_snap_ins[\u0027id\u0027], model_update)"},{"line_number":1220,"context_line":""},{"line_number":1221,"context_line":"            dest_extra_specs \u003d self._get_extra_specs_from_share_type("},{"line_number":1222,"context_line":"                context, dest_share_instance[\u0027share_type_id\u0027])"},{"line_number":1223,"context_line":""},{"line_number":1224,"context_line":"            if dest_extra_specs[\u0027mount_snapshot_support\u0027]:"},{"line_number":1225,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a430d35_b12cc6ac","line":1222,"range":{"start_line":1221,"start_character":0,"end_line":1222,"end_character":62},"in_reply_to":"1a430d35_2541823a","updated":"2017-02-03 11:48:22.000000000","message":"Done","commit_id":"1f90580b5cebf8e9dd3677633f95b88ca04bd6aa"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"e6ec975789af5189b625e4bc38c6e39901bb1fd7","unresolved":false,"context_lines":[{"line_number":1213,"context_line":""},{"line_number":1214,"context_line":"        for src_snap_ins, dest_snap_ins in snapshot_mappings.items():"},{"line_number":1215,"context_line":"            model_update \u003d snapshot_updates.get(dest_snap_ins[\u0027id\u0027]) or {}"},{"line_number":1216,"context_line":"            snapshot_export_locations \u003d model_update.pop("},{"line_number":1217,"context_line":"                \u0027export_locations\u0027, [])"},{"line_number":1218,"context_line":""},{"line_number":1219,"context_line":"            model_update[\u0027status\u0027] \u003d constants.STATUS_AVAILABLE"},{"line_number":1220,"context_line":"            model_update[\u0027progress\u0027] \u003d \u0027100%\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a430d35_9246de21","line":1217,"range":{"start_line":1216,"start_character":12,"end_line":1217,"end_character":39},"updated":"2017-02-03 17:21:32.000000000","message":"It should be done after line 1224. Also, no need to define alias for it. Just use it inline.","commit_id":"6197a9108e61b5623abc0f63bbb304e3d2d03be2"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"e9d8bba0a686bcfeac46d5dab8f9768db3124062","unresolved":false,"context_lines":[{"line_number":1213,"context_line":""},{"line_number":1214,"context_line":"        for src_snap_ins, dest_snap_ins in snapshot_mappings.items():"},{"line_number":1215,"context_line":"            model_update \u003d snapshot_updates.get(dest_snap_ins[\u0027id\u0027]) or {}"},{"line_number":1216,"context_line":"            snapshot_export_locations \u003d model_update.pop("},{"line_number":1217,"context_line":"                \u0027export_locations\u0027, [])"},{"line_number":1218,"context_line":""},{"line_number":1219,"context_line":"            model_update[\u0027status\u0027] \u003d constants.STATUS_AVAILABLE"},{"line_number":1220,"context_line":"            model_update[\u0027progress\u0027] \u003d \u0027100%\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a430d35_23479ebc","line":1217,"range":{"start_line":1216,"start_character":12,"end_line":1217,"end_character":39},"in_reply_to":"1a430d35_9246de21","updated":"2017-02-03 18:44:22.000000000","message":"if drivers return this field anyway, it must not be passed to the model update below, so it needs to be popped.","commit_id":"6197a9108e61b5623abc0f63bbb304e3d2d03be2"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"e6ec975789af5189b625e4bc38c6e39901bb1fd7","unresolved":false,"context_lines":[{"line_number":1225,"context_line":""},{"line_number":1226,"context_line":"                for el in snapshot_export_locations:"},{"line_number":1227,"context_line":"                    values \u003d {"},{"line_number":1228,"context_line":"                        \u0027share_snapshot_instance_id\u0027: dest_snap_ins[\u0027id\u0027],"},{"line_number":1229,"context_line":"                        \u0027path\u0027: el[\u0027path\u0027],"},{"line_number":1230,"context_line":"                        \u0027is_admin_only\u0027: el[\u0027is_admin_only\u0027],"},{"line_number":1231,"context_line":"                    }"},{"line_number":1232,"context_line":"                    self.db.share_snapshot_instance_export_location_create("},{"line_number":1233,"context_line":"                        context, values)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a430d35_d21dc610","line":1230,"range":{"start_line":1228,"start_character":24,"end_line":1230,"end_character":61},"updated":"2017-02-03 17:21:32.000000000","message":"This code is not safe. It does not check that you have dict and this dict has these keys. It is very likely that some driver returns list of strings or just string. In the latter case you will iterate string elements. So, this code kind of fragile now.","commit_id":"6197a9108e61b5623abc0f63bbb304e3d2d03be2"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3c9fedf4a356d870832e593d90389ebfe6b1b93e","unresolved":false,"context_lines":[{"line_number":1225,"context_line":""},{"line_number":1226,"context_line":"                for el in snapshot_export_locations:"},{"line_number":1227,"context_line":"                    values \u003d {"},{"line_number":1228,"context_line":"                        \u0027share_snapshot_instance_id\u0027: dest_snap_ins[\u0027id\u0027],"},{"line_number":1229,"context_line":"                        \u0027path\u0027: el[\u0027path\u0027],"},{"line_number":1230,"context_line":"                        \u0027is_admin_only\u0027: el[\u0027is_admin_only\u0027],"},{"line_number":1231,"context_line":"                    }"},{"line_number":1232,"context_line":"                    self.db.share_snapshot_instance_export_location_create("},{"line_number":1233,"context_line":"                        context, values)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a430d35_9172537b","line":1230,"range":{"start_line":1228,"start_character":24,"end_line":1230,"end_character":61},"in_reply_to":"1a430d35_039462e0","updated":"2017-02-03 21:20:17.000000000","message":"I agree with ganso.. \n\nThis is a new interface and drivers are expected to code this anew and adhere to the new format of export locations... \n\nSo, unlike us building backwards-compatibility for the create_share interface.. we don\u0027t need those checks..","commit_id":"6197a9108e61b5623abc0f63bbb304e3d2d03be2"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"e9d8bba0a686bcfeac46d5dab8f9768db3124062","unresolved":false,"context_lines":[{"line_number":1225,"context_line":""},{"line_number":1226,"context_line":"                for el in snapshot_export_locations:"},{"line_number":1227,"context_line":"                    values \u003d {"},{"line_number":1228,"context_line":"                        \u0027share_snapshot_instance_id\u0027: dest_snap_ins[\u0027id\u0027],"},{"line_number":1229,"context_line":"                        \u0027path\u0027: el[\u0027path\u0027],"},{"line_number":1230,"context_line":"                        \u0027is_admin_only\u0027: el[\u0027is_admin_only\u0027],"},{"line_number":1231,"context_line":"                    }"},{"line_number":1232,"context_line":"                    self.db.share_snapshot_instance_export_location_create("},{"line_number":1233,"context_line":"                        context, values)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a430d35_039462e0","line":1230,"range":{"start_line":1228,"start_character":24,"end_line":1230,"end_character":61},"in_reply_to":"1a430d35_d21dc610","updated":"2017-02-03 18:44:22.000000000","message":"the docstring has been updated to instruct drivers to follow this format. If this is not followed, I think it is better to break than to have something working partially, or existing the method gracefully hiding an error. Driver.migration-complete should *NOT* return a list of strings. The problem you stated can happen in many parts of the code and I don\u0027t think it is our job to prepare for anything that a driver could return when not following the correct format. Also, there is a try-except block in the invoking method, so it will capture this and set instances to error, as it would for whatever exception the driver.migration_complete method could raise.","commit_id":"6197a9108e61b5623abc0f63bbb304e3d2d03be2"}],"manila/tests/share/test_manager.py":[{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"c65571200762c6738d12e56ee135a688fb75a8b7","unresolved":false,"context_lines":[{"line_number":4601,"context_line":"                                   [snapshot.instance]]))"},{"line_number":4602,"context_line":"        self.mock_object("},{"line_number":4603,"context_line":"            self.share_manager.db, \u0027share_snapshot_instance_update\u0027)"},{"line_number":4604,"context_line":"        self.mock_object(self.share_manager.db,"},{"line_number":4605,"context_line":"                         \u0027share_snapshot_instance_export_location_create\u0027)"},{"line_number":4606,"context_line":""},{"line_number":4607,"context_line":"        # run"},{"line_number":4608,"context_line":"        self.share_manager._migration_complete_driver("}],"source_content_type":"text/x-python","patch_set":2,"id":"1a430d35_32b9b4ea","line":4605,"range":{"start_line":4604,"start_character":7,"end_line":4605,"end_character":74},"updated":"2017-02-03 12:57:35.000000000","message":"you can declare a variable \nel_create \u003d this_mock","commit_id":"5f3a93f639caee3c9e2ca378983762550f12c912"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0e9f39c77b82cac636c424885d844d9fa2910a71","unresolved":false,"context_lines":[{"line_number":4601,"context_line":"                                   [snapshot.instance]]))"},{"line_number":4602,"context_line":"        self.mock_object("},{"line_number":4603,"context_line":"            self.share_manager.db, \u0027share_snapshot_instance_update\u0027)"},{"line_number":4604,"context_line":"        self.mock_object(self.share_manager.db,"},{"line_number":4605,"context_line":"                         \u0027share_snapshot_instance_export_location_create\u0027)"},{"line_number":4606,"context_line":""},{"line_number":4607,"context_line":"        # run"},{"line_number":4608,"context_line":"        self.share_manager._migration_complete_driver("}],"source_content_type":"text/x-python","patch_set":2,"id":"1a430d35_7ff940c8","line":4605,"range":{"start_line":4604,"start_character":7,"end_line":4605,"end_character":74},"in_reply_to":"1a430d35_32b9b4ea","updated":"2017-02-03 14:40:54.000000000","message":"+1","commit_id":"5f3a93f639caee3c9e2ca378983762550f12c912"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"0c5242c6cf15010474f2a5cafd6835ca36737936","unresolved":false,"context_lines":[{"line_number":4601,"context_line":"                                   [snapshot.instance]]))"},{"line_number":4602,"context_line":"        self.mock_object("},{"line_number":4603,"context_line":"            self.share_manager.db, \u0027share_snapshot_instance_update\u0027)"},{"line_number":4604,"context_line":"        self.mock_object(self.share_manager.db,"},{"line_number":4605,"context_line":"                         \u0027share_snapshot_instance_export_location_create\u0027)"},{"line_number":4606,"context_line":""},{"line_number":4607,"context_line":"        # run"},{"line_number":4608,"context_line":"        self.share_manager._migration_complete_driver("}],"source_content_type":"text/x-python","patch_set":2,"id":"1a430d35_4b03e673","line":4605,"range":{"start_line":4604,"start_character":7,"end_line":4605,"end_character":74},"in_reply_to":"1a430d35_7ff940c8","updated":"2017-02-03 16:39:25.000000000","message":"Done","commit_id":"5f3a93f639caee3c9e2ca378983762550f12c912"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"c65571200762c6738d12e56ee135a688fb75a8b7","unresolved":false,"context_lines":[{"line_number":4655,"context_line":"             share_snapshot_instance_export_location_create."},{"line_number":4656,"context_line":"             assert_called_once_with(self.context, el))"},{"line_number":4657,"context_line":"        else:"},{"line_number":4658,"context_line":"            (self.share_manager.db."},{"line_number":4659,"context_line":"             share_snapshot_instance_export_location_create."},{"line_number":4660,"context_line":"             assert_not_called())"},{"line_number":4661,"context_line":""},{"line_number":4662,"context_line":"    def test__migration_complete_host_assisted(self):"},{"line_number":4663,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a430d35_d2b5d0d0","line":4660,"range":{"start_line":4658,"start_character":12,"end_line":4660,"end_character":33},"updated":"2017-02-03 12:57:35.000000000","message":"and then use el_create.assert_not_called() here..","commit_id":"5f3a93f639caee3c9e2ca378983762550f12c912"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"0c5242c6cf15010474f2a5cafd6835ca36737936","unresolved":false,"context_lines":[{"line_number":4655,"context_line":"             share_snapshot_instance_export_location_create."},{"line_number":4656,"context_line":"             assert_called_once_with(self.context, el))"},{"line_number":4657,"context_line":"        else:"},{"line_number":4658,"context_line":"            (self.share_manager.db."},{"line_number":4659,"context_line":"             share_snapshot_instance_export_location_create."},{"line_number":4660,"context_line":"             assert_not_called())"},{"line_number":4661,"context_line":""},{"line_number":4662,"context_line":"    def test__migration_complete_host_assisted(self):"},{"line_number":4663,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a430d35_abf28a98","line":4660,"range":{"start_line":4658,"start_character":12,"end_line":4660,"end_character":33},"in_reply_to":"1a430d35_3f5898fa","updated":"2017-02-03 16:39:25.000000000","message":"Done","commit_id":"5f3a93f639caee3c9e2ca378983762550f12c912"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0e9f39c77b82cac636c424885d844d9fa2910a71","unresolved":false,"context_lines":[{"line_number":4655,"context_line":"             share_snapshot_instance_export_location_create."},{"line_number":4656,"context_line":"             assert_called_once_with(self.context, el))"},{"line_number":4657,"context_line":"        else:"},{"line_number":4658,"context_line":"            (self.share_manager.db."},{"line_number":4659,"context_line":"             share_snapshot_instance_export_location_create."},{"line_number":4660,"context_line":"             assert_not_called())"},{"line_number":4661,"context_line":""},{"line_number":4662,"context_line":"    def test__migration_complete_host_assisted(self):"},{"line_number":4663,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a430d35_3f5898fa","line":4660,"range":{"start_line":4658,"start_character":12,"end_line":4660,"end_character":33},"in_reply_to":"1a430d35_d2b5d0d0","updated":"2017-02-03 14:40:54.000000000","message":"+1","commit_id":"5f3a93f639caee3c9e2ca378983762550f12c912"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"e6ec975789af5189b625e4bc38c6e39901bb1fd7","unresolved":false,"context_lines":[{"line_number":4568,"context_line":""},{"line_number":4569,"context_line":"        model_update \u003d {\u0027fake_keys\u0027: \u0027fake_values\u0027}"},{"line_number":4570,"context_line":"        if snapshot_els:"},{"line_number":4571,"context_line":"            el \u003d {\u0027path\u0027: \u0027fake_path\u0027, \u0027is_admin_only\u0027: False}"},{"line_number":4572,"context_line":"            model_update[\u0027export_locations\u0027] \u003d [el]"},{"line_number":4573,"context_line":""},{"line_number":4574,"context_line":"        fake_return_data \u003d {"},{"line_number":4575,"context_line":"            \u0027export_locations\u0027: \u0027fake_export_locations\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a430d35_72b412f2","line":4572,"range":{"start_line":4571,"start_character":12,"end_line":4572,"end_character":51},"updated":"2017-02-03 17:21:32.000000000","message":"Need also to have case when driver returns list of strings. Manager code should be smart enough to resist it properly.","commit_id":"6197a9108e61b5623abc0f63bbb304e3d2d03be2"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"e9d8bba0a686bcfeac46d5dab8f9768db3124062","unresolved":false,"context_lines":[{"line_number":4568,"context_line":""},{"line_number":4569,"context_line":"        model_update \u003d {\u0027fake_keys\u0027: \u0027fake_values\u0027}"},{"line_number":4570,"context_line":"        if snapshot_els:"},{"line_number":4571,"context_line":"            el \u003d {\u0027path\u0027: \u0027fake_path\u0027, \u0027is_admin_only\u0027: False}"},{"line_number":4572,"context_line":"            model_update[\u0027export_locations\u0027] \u003d [el]"},{"line_number":4573,"context_line":""},{"line_number":4574,"context_line":"        fake_return_data \u003d {"},{"line_number":4575,"context_line":"            \u0027export_locations\u0027: \u0027fake_export_locations\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a430d35_63c1a6e4","line":4572,"range":{"start_line":4571,"start_character":12,"end_line":4572,"end_character":51},"in_reply_to":"1a430d35_72b412f2","updated":"2017-02-03 18:44:22.000000000","message":"See response in manager.py","commit_id":"6197a9108e61b5623abc0f63bbb304e3d2d03be2"}]}
