)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"49858e86c93b8b18354bcb521fe5d3d189153a9c","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     chnehuayi \u003cchenhuayi@huawei.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-04-13 16:26:33 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Implement neutron network protectable plugin"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Closes-Bug: 1569998"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1a122d0e_b2fa8ebb","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":44},"updated":"2016-04-26 07:22:29.000000000","message":"Please add the description about how to fix this bug.","commit_id":"fd682bca796767899d74751ecc463ef36eb3def5"}],"karbor/services/protection/protectable_plugins/network.py":[{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"ed31e237d0c82234c5ee5465ed7ae08fe854be89","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    _SUPPORT_RESOURCE_TYPE \u003d constants.NETWORK_RESOURCE_TYPE"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def _neutron_client(self, cntxt):"},{"line_number":34,"context_line":"        self._neutron_client_instance \u003d \\"},{"line_number":35,"context_line":"            ClientFactory.create_client(\u0027neutron\u0027, cntxt)"},{"line_number":36,"context_line":"        return self._neutron_client_instance"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3a71b18c_c153a737","line":34,"range":{"start_line":34,"start_character":40,"end_line":34,"end_character":41},"updated":"2016-12-06 03:38:35.000000000","message":"Use () instead of \u0027\\\u0027","commit_id":"e77f2d351fc462db30a1f4ebb3b10c05a5f291bd"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"ed31e237d0c82234c5ee5465ed7ae08fe854be89","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        return self._neutron_client_instance"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def _nova_client(self, cntxt):"},{"line_number":39,"context_line":"        self._nova_client_instance \u003d \\"},{"line_number":40,"context_line":"            ClientFactory.create_client(\u0027nova\u0027, cntxt)"},{"line_number":41,"context_line":"        return self._nova_client_instance"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3a71b18c_e132630f","line":39,"range":{"start_line":39,"start_character":36,"end_line":39,"end_character":38},"updated":"2016-12-06 03:38:35.000000000","message":"Use () instead of \u0027\\\u0027","commit_id":"e77f2d351fc462db30a1f4ebb3b10c05a5f291bd"}],"smaug/services/protection/manager.py":[{"author":{"_account_id":2023,"name":"Saggi Mizrahi","email":"ficoos+osreview@gmail.com","username":"ficoos"},"change_message_id":"681359406e4e9f0b3fb49c7775d999c8565ac675","unresolved":false,"context_lines":[{"line_number":208,"context_line":"    def suspend(self, plan):"},{"line_number":209,"context_line":"        # TODO(wangliuan)"},{"line_number":210,"context_line":"        pass"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"    @messaging.expected_exceptions(exception.ProviderNotFound,"},{"line_number":213,"context_line":"                                   exception.CheckpointNotFound)"},{"line_number":214,"context_line":"    def list_checkpoints(self, context, provider_id, marker\u003dNone, limit\u003dNone,"},{"line_number":215,"context_line":"                         sort_keys\u003dNone, sort_dirs\u003dNone, filters\u003dNone):"},{"line_number":216,"context_line":"        LOG.info(_LI(\"Starting list checkpoints. \""},{"line_number":217,"context_line":"                     \"provider_id:%s\"), provider_id)"},{"line_number":218,"context_line":"        plan_id \u003d filters.get(\"plan_id\", None)"},{"line_number":219,"context_line":"        start_date \u003d None"},{"line_number":220,"context_line":"        end_date \u003d None"},{"line_number":221,"context_line":"        if filters.get(\"start_date\", None):"},{"line_number":222,"context_line":"            start_date \u003d datetime.strptime("},{"line_number":223,"context_line":"                filters.get(\"start_date\"), \"%Y-%m-%d\")"},{"line_number":224,"context_line":"        if filters.get(\"end_date\", None):"},{"line_number":225,"context_line":"            end_date \u003d datetime.strptime("},{"line_number":226,"context_line":"                filters.get(\"end_date\"), \"%Y-%m-%d\")"},{"line_number":227,"context_line":"        sort_dir \u003d None if sort_dirs is None else sort_dirs[0]"},{"line_number":228,"context_line":"        provider \u003d self.provider_registry.show_provider(provider_id)"},{"line_number":229,"context_line":"        if provider is None:"},{"line_number":230,"context_line":"            raise exception.ProviderNotFound(provider_id\u003dprovider_id)"},{"line_number":231,"context_line":"        checkpoint_ids \u003d provider.list_checkpoints("},{"line_number":232,"context_line":"            limit\u003dlimit, marker\u003dmarker, plan_id\u003dplan_id,"},{"line_number":233,"context_line":"            start_date\u003dstart_date, end_date\u003dend_date, sort_dir\u003dsort_dir)"},{"line_number":234,"context_line":"        checkpoints \u003d []"},{"line_number":235,"context_line":"        for checkpoint_id in checkpoint_ids:"},{"line_number":236,"context_line":"            checkpoint \u003d provider.get_checkpoint(checkpoint_id)"},{"line_number":237,"context_line":"            checkpoints.append(checkpoint.to_dict())"},{"line_number":238,"context_line":"        return checkpoints"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"    @messaging.expected_exceptions(exception.ProviderNotFound,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3ac371cc_dbc78210","line":237,"range":{"start_line":211,"start_character":0,"end_line":237,"end_character":52},"updated":"2016-08-16 11:20:31.000000000","message":"Is this related?","commit_id":"f0f409b04e04b0c0fe2de402653a43e7a3f49dda"},{"author":{"_account_id":16206,"name":"chenhuayi","email":"chenhuayi@huawei.com","username":"chenhuayi2"},"change_message_id":"d0f07d7cfb5063670b9c0d804f73026f44b07971","unresolved":false,"context_lines":[{"line_number":208,"context_line":"    def suspend(self, plan):"},{"line_number":209,"context_line":"        # TODO(wangliuan)"},{"line_number":210,"context_line":"        pass"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"    @messaging.expected_exceptions(exception.ProviderNotFound,"},{"line_number":213,"context_line":"                                   exception.CheckpointNotFound)"},{"line_number":214,"context_line":"    def list_checkpoints(self, context, provider_id, marker\u003dNone, limit\u003dNone,"},{"line_number":215,"context_line":"                         sort_keys\u003dNone, sort_dirs\u003dNone, filters\u003dNone):"},{"line_number":216,"context_line":"        LOG.info(_LI(\"Starting list checkpoints. \""},{"line_number":217,"context_line":"                     \"provider_id:%s\"), provider_id)"},{"line_number":218,"context_line":"        plan_id \u003d filters.get(\"plan_id\", None)"},{"line_number":219,"context_line":"        start_date \u003d None"},{"line_number":220,"context_line":"        end_date \u003d None"},{"line_number":221,"context_line":"        if filters.get(\"start_date\", None):"},{"line_number":222,"context_line":"            start_date \u003d datetime.strptime("},{"line_number":223,"context_line":"                filters.get(\"start_date\"), \"%Y-%m-%d\")"},{"line_number":224,"context_line":"        if filters.get(\"end_date\", None):"},{"line_number":225,"context_line":"            end_date \u003d datetime.strptime("},{"line_number":226,"context_line":"                filters.get(\"end_date\"), \"%Y-%m-%d\")"},{"line_number":227,"context_line":"        sort_dir \u003d None if sort_dirs is None else sort_dirs[0]"},{"line_number":228,"context_line":"        provider \u003d self.provider_registry.show_provider(provider_id)"},{"line_number":229,"context_line":"        if provider is None:"},{"line_number":230,"context_line":"            raise exception.ProviderNotFound(provider_id\u003dprovider_id)"},{"line_number":231,"context_line":"        checkpoint_ids \u003d provider.list_checkpoints("},{"line_number":232,"context_line":"            limit\u003dlimit, marker\u003dmarker, plan_id\u003dplan_id,"},{"line_number":233,"context_line":"            start_date\u003dstart_date, end_date\u003dend_date, sort_dir\u003dsort_dir)"},{"line_number":234,"context_line":"        checkpoints \u003d []"},{"line_number":235,"context_line":"        for checkpoint_id in checkpoint_ids:"},{"line_number":236,"context_line":"            checkpoint \u003d provider.get_checkpoint(checkpoint_id)"},{"line_number":237,"context_line":"            checkpoints.append(checkpoint.to_dict())"},{"line_number":238,"context_line":"        return checkpoints"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"    @messaging.expected_exceptions(exception.ProviderNotFound,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a71b18c_f72ada2b","line":237,"range":{"start_line":211,"start_character":0,"end_line":237,"end_character":52},"in_reply_to":"3ac371cc_dbc78210","updated":"2016-12-01 08:00:26.000000000","message":"no need. will delete it.","commit_id":"f0f409b04e04b0c0fe2de402653a43e7a3f49dda"}],"smaug/services/protection/protectable_plugins/network.py":[{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"49858e86c93b8b18354bcb521fe5d3d189153a9c","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    @property"},{"line_number":33,"context_line":"    def _neutron_client(self):"},{"line_number":34,"context_line":"        if not hasattr(self, \u0027_netron_client_instance\u0027):"},{"line_number":35,"context_line":"            self._neutron_client_instance \u003d \\"},{"line_number":36,"context_line":"                ClientFactory.create_client(\u0027neutron\u0027, self._context)"},{"line_number":37,"context_line":"        return self._neutron_client_instance"},{"line_number":38,"context_line":"    "}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_f217e6eb","line":35,"range":{"start_line":35,"start_character":44,"end_line":35,"end_character":45},"updated":"2016-04-26 07:22:29.000000000","message":"Use () instead of \u0027\\\u0027","commit_id":"fd682bca796767899d74751ecc463ef36eb3def5"},{"author":{"_account_id":19346,"name":"yinwei","email":"yinweiishere@icloud.com","username":"yinwei"},"change_message_id":"3b2a67bcfb6dad1da5c3866a11ce696732224354","unresolved":false,"context_lines":[{"line_number":35,"context_line":"            self._neutron_client_instance \u003d \\"},{"line_number":36,"context_line":"                ClientFactory.create_client(\u0027neutron\u0027, self._context)"},{"line_number":37,"context_line":"        return self._neutron_client_instance"},{"line_number":38,"context_line":"    "},{"line_number":39,"context_line":"    @property"},{"line_number":40,"context_line":"    def _nova_client(self):"},{"line_number":41,"context_line":"        if not hasattr(self, \u0027_nova_client_instance\u0027):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a18252c_65fcb672","line":38,"updated":"2016-04-14 01:19:25.000000000","message":"pls. check redundant blanks.","commit_id":"fd682bca796767899d74751ecc463ef36eb3def5"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"49858e86c93b8b18354bcb521fe5d3d189153a9c","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    @property"},{"line_number":40,"context_line":"    def _nova_client(self):"},{"line_number":41,"context_line":"        if not hasattr(self, \u0027_nova_client_instance\u0027):"},{"line_number":42,"context_line":"            self._nova_client_instance \u003d \\"},{"line_number":43,"context_line":"                ClientFactory.create_client(\u0027nova\u0027, self._context)"},{"line_number":44,"context_line":"        return self._nova_client_instance"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_d2146aea","line":42,"range":{"start_line":42,"start_character":41,"end_line":42,"end_character":42},"updated":"2016-04-26 07:22:29.000000000","message":"same","commit_id":"fd682bca796767899d74751ecc463ef36eb3def5"}],"smaug/tests/unit/plugins/test_network_protectable_plugin.py":[{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"49858e86c93b8b18354bcb521fe5d3d189153a9c","unresolved":false,"context_lines":[{"line_number":113,"context_line":"                               type\u003dconstants.PROJECT_RESOURCE_TYPE)"},{"line_number":114,"context_line":"        plugin \u003d NetworkProtectablePlugin(self._context)"},{"line_number":115,"context_line":"        "},{"line_number":116,"context_line":"        \u0027\u0027\u0027"},{"line_number":117,"context_line":"        plugin._neutron_client.list_networks.get \u003d \\"},{"line_number":118,"context_line":"            mock.MagicMock(return_value\u003d["},{"line_number":119,"context_line":"                network_info(\u0027123\u0027, \u0027abcd\u0027),"},{"line_number":120,"context_line":"            ])"},{"line_number":121,"context_line":"        "},{"line_number":122,"context_line":"        self.assertEqual(plugin.get_dependent_resources(project),"},{"line_number":123,"context_line":"                         resource.Resource(type\u003dconstants.NETWORK_RESOURCE_TYPE,"},{"line_number":124,"context_line":"                                            id\u003d\u0027abcd\u0027))"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        \u0027\u0027\u0027"},{"line_number":127,"context_line":"        "},{"line_number":128,"context_line":"        # TODO(chenhuayi)"},{"line_number":129,"context_line":"        \u0027\u0027\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_f273664c","line":126,"range":{"start_line":116,"start_character":8,"end_line":126,"end_character":11},"updated":"2016-04-26 07:22:29.000000000","message":"Please remove redundant code.","commit_id":"fd682bca796767899d74751ecc463ef36eb3def5"},{"author":{"_account_id":19346,"name":"yinwei","email":"yinweiishere@icloud.com","username":"yinwei"},"change_message_id":"b5b3c2962d57ef8fc9d229169e8512ccbc8b9176","unresolved":false,"context_lines":[{"line_number":84,"context_line":"    @mock.patch.object(client.Client, \u0027list_networks\u0027)    "},{"line_number":85,"context_line":"    def test_list_resources(self, mock_client_list_networks):"},{"line_number":86,"context_line":"        plugin \u003d NetworkProtectablePlugin(self._context)"},{"line_number":87,"context_line":"        "},{"line_number":88,"context_line":"        fake_network_info \u003d {\u0027networks\u0027: ["},{"line_number":89,"context_line":"            {u\u0027status\u0027: u\u0027ACTIVE\u0027,"},{"line_number":90,"context_line":"             u\u0027description\u0027: u\u0027\u0027,   "}],"source_content_type":"text/x-python","patch_set":5,"id":"3aaa91ec_bf9acd11","line":87,"updated":"2016-06-27 09:29:40.000000000","message":"remove redundant blanks.","commit_id":"2b025b66f0597d6b1381cd5069dfcc5d2bc0a1ff"},{"author":{"_account_id":16206,"name":"chenhuayi","email":"chenhuayi@huawei.com","username":"chenhuayi2"},"change_message_id":"dec2c69b87b6b1d1a05fe129192cfbdbb9c21bac","unresolved":false,"context_lines":[{"line_number":84,"context_line":"    @mock.patch.object(client.Client, \u0027list_networks\u0027)    "},{"line_number":85,"context_line":"    def test_list_resources(self, mock_client_list_networks):"},{"line_number":86,"context_line":"        plugin \u003d NetworkProtectablePlugin(self._context)"},{"line_number":87,"context_line":"        "},{"line_number":88,"context_line":"        fake_network_info \u003d {\u0027networks\u0027: ["},{"line_number":89,"context_line":"            {u\u0027status\u0027: u\u0027ACTIVE\u0027,"},{"line_number":90,"context_line":"             u\u0027description\u0027: u\u0027\u0027,   "}],"source_content_type":"text/x-python","patch_set":5,"id":"3aaa91ec_4219c687","line":87,"in_reply_to":"3aaa91ec_bf9acd11","updated":"2016-06-29 12:45:30.000000000","message":"Done","commit_id":"2b025b66f0597d6b1381cd5069dfcc5d2bc0a1ff"}]}
