)]}'
{"neutron/policy.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f81c7d75e391c7d9396eb71750722385417d041e","unresolved":false,"context_lines":[{"line_number":377,"context_line":"        # NOTE(slaweq): In case that target field is \"networks:shared\" we need"},{"line_number":378,"context_line":"        # to treat it in \"special\" way as it may be used for resources other"},{"line_number":379,"context_line":"        # than network, e.g. for port or subnet"},{"line_number":380,"context_line":"        if self.resource \u003d\u003d \"networks\" and self.field \u003d\u003d \"shared\":"},{"line_number":381,"context_line":"            target_network_id \u003d target_dict.get(\"network_id\")"},{"line_number":382,"context_line":"            if not target_network_id:"},{"line_number":383,"context_line":"                return"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fce034c_eb4fcaba","line":380,"updated":"2019-04-15 15:25:56.000000000","message":"maybe you can use neutron_lib.constants SHARED","commit_id":"258ec56728f823112cd96041c6c480c12bc1c9c7"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"7ef258e19a91a932959ae0be51c04a02a40a7659","unresolved":false,"context_lines":[{"line_number":377,"context_line":"        # NOTE(slaweq): In case that target field is \"networks:shared\" we need"},{"line_number":378,"context_line":"        # to treat it in \"special\" way as it may be used for resources other"},{"line_number":379,"context_line":"        # than network, e.g. for port or subnet"},{"line_number":380,"context_line":"        if self.resource \u003d\u003d \"networks\" and self.field \u003d\u003d \"shared\":"},{"line_number":381,"context_line":"            target_network_id \u003d target_dict.get(\"network_id\")"},{"line_number":382,"context_line":"            if not target_network_id:"},{"line_number":383,"context_line":"                return"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fce034c_f3cb2d50","line":380,"in_reply_to":"3fce034c_eb4fcaba","updated":"2019-04-16 13:02:54.000000000","message":"Done","commit_id":"258ec56728f823112cd96041c6c480c12bc1c9c7"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"15d8345d5123667cea8fecbd053311ff0d5bfdbb","unresolved":false,"context_lines":[{"line_number":371,"context_line":""},{"line_number":372,"context_line":"    def _get_target_value(self, target_dict):"},{"line_number":373,"context_line":"        target_value \u003d target_dict.get(self.field)"},{"line_number":374,"context_line":"        if target_value is not None:"},{"line_number":375,"context_line":"            return target_value"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"        # NOTE(slaweq): In case that target field is \"networks:shared\" we need"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffb9cba7_784a0381","line":374,"updated":"2019-04-22 10:09:47.000000000","message":"I think this checks self.field is included in target_dict. If so,\n\n  if self.field in target_value:\n\nis better. It can cover a case where a value is None.","commit_id":"c16e997f40996235543148c37fa75df8fa839387"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"1cbc01963504a93a8c434685b1139a8ef9f85590","unresolved":false,"context_lines":[{"line_number":371,"context_line":""},{"line_number":372,"context_line":"    def _get_target_value(self, target_dict):"},{"line_number":373,"context_line":"        target_value \u003d target_dict.get(self.field)"},{"line_number":374,"context_line":"        if target_value is not None:"},{"line_number":375,"context_line":"            return target_value"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"        # NOTE(slaweq): In case that target field is \"networks:shared\" we need"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffb9cba7_17ab771d","line":374,"in_reply_to":"ffb9cba7_784a0381","updated":"2019-04-23 12:24:05.000000000","message":"Done","commit_id":"c16e997f40996235543148c37fa75df8fa839387"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"15d8345d5123667cea8fecbd053311ff0d5bfdbb","unresolved":false,"context_lines":[{"line_number":380,"context_line":"        if self.resource \u003d\u003d \"networks\" and self.field \u003d\u003d constants.SHARED:"},{"line_number":381,"context_line":"            target_network_id \u003d target_dict.get(\"network_id\")"},{"line_number":382,"context_line":"            if not target_network_id:"},{"line_number":383,"context_line":"                return"},{"line_number":384,"context_line":"            plugin \u003d directory.get_plugin()"},{"line_number":385,"context_line":"            network \u003d plugin.get_network("},{"line_number":386,"context_line":"                context.get_admin_context(), target_network_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffb9cba7_3821ebb5","line":383,"range":{"start_line":383,"start_character":16,"end_line":383,"end_character":22},"updated":"2019-04-22 10:09:47.000000000","message":"In this case, the error message of L.364 will be incorrect. Perhaps it is better to move the log message at L.364 to this method.","commit_id":"c16e997f40996235543148c37fa75df8fa839387"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"1cbc01963504a93a8c434685b1139a8ef9f85590","unresolved":false,"context_lines":[{"line_number":380,"context_line":"        if self.resource \u003d\u003d \"networks\" and self.field \u003d\u003d constants.SHARED:"},{"line_number":381,"context_line":"            target_network_id \u003d target_dict.get(\"network_id\")"},{"line_number":382,"context_line":"            if not target_network_id:"},{"line_number":383,"context_line":"                return"},{"line_number":384,"context_line":"            plugin \u003d directory.get_plugin()"},{"line_number":385,"context_line":"            network \u003d plugin.get_network("},{"line_number":386,"context_line":"                context.get_admin_context(), target_network_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffb9cba7_37a8fb1d","line":383,"range":{"start_line":383,"start_character":16,"end_line":383,"end_character":22},"in_reply_to":"ffb9cba7_3821ebb5","updated":"2019-04-23 12:24:05.000000000","message":"Done","commit_id":"c16e997f40996235543148c37fa75df8fa839387"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"f9a1faf45dd26d4350e1fa22d3baacf77acdb87e","unresolved":false,"context_lines":[{"line_number":377,"context_line":"            if not target_network_id:"},{"line_number":378,"context_line":"                LOG.debug(\"Unable to find network_id field in target: \""},{"line_number":379,"context_line":"                          \"%(target_dict)s\","},{"line_number":380,"context_line":"                          {\u0027field\u0027: self.field, \u0027target_dict\u0027: target_dict})"},{"line_number":381,"context_line":"                return"},{"line_number":382,"context_line":"            plugin \u003d directory.get_plugin()"},{"line_number":383,"context_line":"            network \u003d plugin.get_network("}],"source_content_type":"text/x-python","patch_set":5,"id":"ffb9cba7_84fd706f","line":380,"range":{"start_line":380,"start_character":27,"end_line":380,"end_character":47},"updated":"2019-04-30 22:03:48.000000000","message":"This is not used in the log message.","commit_id":"ec1b78f5c1555d72f140c393df27ff3e88ecdadc"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"b5532d487971b78fc466e19b41bdd860a0cd6dd9","unresolved":false,"context_lines":[{"line_number":378,"context_line":"            if not target_network_id:"},{"line_number":379,"context_line":"                LOG.debug(\"Unable to find network_id field in target: \""},{"line_number":380,"context_line":"                          \"%(target_dict)s\","},{"line_number":381,"context_line":"                          {\u0027field\u0027: self.field, \u0027target_dict\u0027: target_dict})"},{"line_number":382,"context_line":"                return"},{"line_number":383,"context_line":"            plugin \u003d directory.get_plugin()"},{"line_number":384,"context_line":"            network \u003d plugin.get_network("}],"source_content_type":"text/x-python","patch_set":8,"id":"dfbec78f_b97b59bc","line":381,"range":{"start_line":381,"start_character":28,"end_line":381,"end_character":33},"updated":"2019-05-08 16:00:31.000000000","message":"It looks this key is not used.","commit_id":"039691220817db3519149b5e2fd2607365f3d8af"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"b5532d487971b78fc466e19b41bdd860a0cd6dd9","unresolved":false,"context_lines":[{"line_number":381,"context_line":"                          {\u0027field\u0027: self.field, \u0027target_dict\u0027: target_dict})"},{"line_number":382,"context_line":"                return"},{"line_number":383,"context_line":"            plugin \u003d directory.get_plugin()"},{"line_number":384,"context_line":"            network \u003d plugin.get_network("},{"line_number":385,"context_line":"                context.get_admin_context(), target_network_id)"},{"line_number":386,"context_line":"            target_value \u003d network.get(self.field)"},{"line_number":387,"context_line":"        if target_value is None:"}],"source_content_type":"text/x-python","patch_set":8,"id":"dfbec78f_5428e484","line":384,"range":{"start_line":384,"start_character":29,"end_line":384,"end_character":40},"updated":"2019-05-08 16:00:31.000000000","message":"A minor improvement is using the \u0027fields\u0027 parameter to select the target field:\n\n            network \u003d plugin.get_network(\n                context.get_admin_context(), target_network_id, fields\u003d[self.field])","commit_id":"039691220817db3519149b5e2fd2607365f3d8af"}],"neutron/tests/unit/test_policy.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f81c7d75e391c7d9396eb71750722385417d041e","unresolved":false,"context_lines":[{"line_number":415,"context_line":"        self._test_enforce_adminonly_attribute(\u0027update_network\u0027, **kwargs)"},{"line_number":416,"context_line":""},{"line_number":417,"context_line":"    def test_reset_adminonly_attr_to_default_fails(self):"},{"line_number":418,"context_line":"        kwargs \u003d {n_const.ATTRIBUTES_TO_UPDATE: [\u0027shared\u0027]}"},{"line_number":419,"context_line":"        self._test_nonadmin_action_on_attr("},{"line_number":420,"context_line":"            \u0027update\u0027, \u0027network\u0027, \u0027shared\u0027, False,"},{"line_number":421,"context_line":"            oslo_policy.PolicyNotAuthorized,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fce034c_ebda6a15","line":418,"range":{"start_line":418,"start_character":18,"end_line":418,"end_character":25},"updated":"2019-04-15 15:25:56.000000000","message":"Why this change?","commit_id":"258ec56728f823112cd96041c6c480c12bc1c9c7"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"7ef258e19a91a932959ae0be51c04a02a40a7659","unresolved":false,"context_lines":[{"line_number":415,"context_line":"        self._test_enforce_adminonly_attribute(\u0027update_network\u0027, **kwargs)"},{"line_number":416,"context_line":""},{"line_number":417,"context_line":"    def test_reset_adminonly_attr_to_default_fails(self):"},{"line_number":418,"context_line":"        kwargs \u003d {n_const.ATTRIBUTES_TO_UPDATE: [\u0027shared\u0027]}"},{"line_number":419,"context_line":"        self._test_nonadmin_action_on_attr("},{"line_number":420,"context_line":"            \u0027update\u0027, \u0027network\u0027, \u0027shared\u0027, False,"},{"line_number":421,"context_line":"            oslo_policy.PolicyNotAuthorized,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fce034c_53aec198","line":418,"range":{"start_line":418,"start_character":18,"end_line":418,"end_character":25},"in_reply_to":"3fce034c_ebda6a15","updated":"2019-04-16 13:02:54.000000000","message":"I don\u0027t know. Some mistake when I was rebasing things probably :/","commit_id":"258ec56728f823112cd96041c6c480c12bc1c9c7"}]}
