)]}'
{"neutron/agent/metadata/agent.py":[{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"9498fe1e4880e3d3cd6ab3529d76e78b96dca285","unresolved":false,"context_lines":[{"line_number":86,"context_line":"            LOG.debug(\"Request: %s\", req)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"            instance_id, tenant_id \u003d self._get_instance_and_tenant_id(req)"},{"line_number":89,"context_line":"            if instance_id:"},{"line_number":90,"context_line":"                res \u003d self._proxy_request(instance_id, tenant_id, req)"},{"line_number":91,"context_line":"                if isinstance(res, webob.exc.HTTPNotFound):"},{"line_number":92,"context_line":"                    LOG.info(\"The instance: %s is not present anymore, \""}],"source_content_type":"text/x-python","patch_set":3,"id":"df33271e_de3ba299","line":89,"range":{"start_line":89,"start_character":9,"end_line":89,"end_character":27},"updated":"2020-03-25 08:54:53.000000000","message":"We have the same issue in OVN Metadata agent.\n\nActually we can inherit from this MetadataProxyHandler, because for now we have a code duplication, please see:\n\nhttps://github.com/openstack/neutron/blob/master/neutron/agent/ovn/metadata/server.py#L45\n\nBut we will need someone else approval on this :)\n\nIf you will have a minute, after fixing this here, to start inherit OVN MetadataProxyHandler from this place, community will really appreciate that :)","commit_id":"ec878bb173a1eef48d8aedd23736f956d9f36cb8"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"7e31485d0f05a215237a1ca25106e3ae9d1d7cfd","unresolved":false,"context_lines":[{"line_number":86,"context_line":"            LOG.debug(\"Request: %s\", req)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"            instance_id, tenant_id \u003d self._get_instance_and_tenant_id(req)"},{"line_number":89,"context_line":"            if instance_id:"},{"line_number":90,"context_line":"                res \u003d self._proxy_request(instance_id, tenant_id, req)"},{"line_number":91,"context_line":"                if isinstance(res, webob.exc.HTTPNotFound):"},{"line_number":92,"context_line":"                    LOG.info(\"The instance: %s is not present anymore, \""}],"source_content_type":"text/x-python","patch_set":3,"id":"df33271e_82b898c8","line":89,"range":{"start_line":89,"start_character":9,"end_line":89,"end_character":27},"in_reply_to":"df33271e_de3ba299","updated":"2020-03-25 14:08:18.000000000","message":"May be I\u0027m missing something, but I don\u0027t see that cache is used in OVN MetadataProxyHandler, so not sure similar logic will help. Correct me if I\u0027n wrong.","commit_id":"ec878bb173a1eef48d8aedd23736f956d9f36cb8"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"b190e7e21253e2a091164e494ee4ffb524b5906c","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        return filters"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    @cache.cache_method_results"},{"line_number":129,"context_line":"    def _get_router_networks(self, router_id, skip_cache\u003dFalse):"},{"line_number":130,"context_line":"        \"\"\"Find all networks connected to given router.\"\"\""},{"line_number":131,"context_line":"        internal_ports \u003d self._get_ports_from_server(router_id\u003drouter_id)"},{"line_number":132,"context_line":"        return tuple(p[\u0027network_id\u0027] for p in internal_ports)"}],"source_content_type":"text/x-python","patch_set":6,"id":"df33271e_ffa7320a","line":129,"range":{"start_line":129,"start_character":46,"end_line":129,"end_character":56},"updated":"2020-03-30 11:56:30.000000000","message":"You never use skip_cache","commit_id":"72a5b5b61f532bba6de502feda36dfc7d36cefc7"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"0fd250d6cf19ce35e596d3459732d6d8e0f16ed4","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        return filters"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    @cache.cache_method_results"},{"line_number":129,"context_line":"    def _get_router_networks(self, router_id, skip_cache\u003dFalse):"},{"line_number":130,"context_line":"        \"\"\"Find all networks connected to given router.\"\"\""},{"line_number":131,"context_line":"        internal_ports \u003d self._get_ports_from_server(router_id\u003drouter_id)"},{"line_number":132,"context_line":"        return tuple(p[\u0027network_id\u0027] for p in internal_ports)"}],"source_content_type":"text/x-python","patch_set":6,"id":"df33271e_4c3dbedb","line":129,"range":{"start_line":129,"start_character":46,"end_line":129,"end_character":56},"in_reply_to":"df33271e_9f1f06b6","updated":"2020-03-31 12:39:16.000000000","message":"ok I see it now","commit_id":"72a5b5b61f532bba6de502feda36dfc7d36cefc7"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"e655314313084e014f1f4eedf41a70ee69af3713","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        return filters"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    @cache.cache_method_results"},{"line_number":129,"context_line":"    def _get_router_networks(self, router_id, skip_cache\u003dFalse):"},{"line_number":130,"context_line":"        \"\"\"Find all networks connected to given router.\"\"\""},{"line_number":131,"context_line":"        internal_ports \u003d self._get_ports_from_server(router_id\u003drouter_id)"},{"line_number":132,"context_line":"        return tuple(p[\u0027network_id\u0027] for p in internal_ports)"}],"source_content_type":"text/x-python","patch_set":6,"id":"df33271e_9f1f06b6","line":129,"range":{"start_line":129,"start_character":46,"end_line":129,"end_character":56},"in_reply_to":"df33271e_ffa7320a","updated":"2020-03-30 12:15:47.000000000","message":"It is used in decorator - cache_method_results","commit_id":"72a5b5b61f532bba6de502feda36dfc7d36cefc7"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"b190e7e21253e2a091164e494ee4ffb524b5906c","unresolved":false,"context_lines":[{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    @cache.cache_method_results"},{"line_number":135,"context_line":"    def _get_ports_for_remote_address(self, remote_address, networks,"},{"line_number":136,"context_line":"                                      skip_cache\u003dFalse):"},{"line_number":137,"context_line":"        \"\"\"Get list of ports that has given ip address and are part of"},{"line_number":138,"context_line":"        given networks."},{"line_number":139,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"df33271e_3fad1ae9","line":136,"range":{"start_line":136,"start_character":38,"end_line":136,"end_character":48},"updated":"2020-03-30 11:56:30.000000000","message":"ditto","commit_id":"72a5b5b61f532bba6de502feda36dfc7d36cefc7"}],"neutron/common/cache_utils.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"41ad7e1b57bf62e827fd94dc3b17fee8eafba429","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        }"},{"line_number":76,"context_line":"        if skip_cache:"},{"line_number":77,"context_line":"            LOG.debug(\u0027Skipping getting result from cache for %s.\u0027, func_name)"},{"line_number":78,"context_line":"            return self.func(target_self, *args, **kwargs)"},{"line_number":79,"context_line":"        key \u003d (func_name,) + args"},{"line_number":80,"context_line":"        if kwargs:"},{"line_number":81,"context_line":"            key +\u003d helpers.dict2tuple(kwargs)"}],"source_content_type":"text/x-python","patch_set":5,"id":"df33271e_66e91119","line":78,"updated":"2020-03-26 14:51:05.000000000","message":"Although we are not returning the cache value, shouldn\u0027t we cache the new value retrieved?","commit_id":"454bb50b6488d0c4a66d13b3a666891b56b26c87"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"35bc7473421c90c3e71793845e6f7f72e04c9b37","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        }"},{"line_number":76,"context_line":"        if skip_cache:"},{"line_number":77,"context_line":"            LOG.debug(\u0027Skipping getting result from cache for %s.\u0027, func_name)"},{"line_number":78,"context_line":"            return self.func(target_self, *args, **kwargs)"},{"line_number":79,"context_line":"        key \u003d (func_name,) + args"},{"line_number":80,"context_line":"        if kwargs:"},{"line_number":81,"context_line":"            key +\u003d helpers.dict2tuple(kwargs)"}],"source_content_type":"text/x-python","patch_set":5,"id":"df33271e_12079184","line":78,"in_reply_to":"df33271e_1e0de036","updated":"2020-03-27 12:49:22.000000000","message":"Done","commit_id":"454bb50b6488d0c4a66d13b3a666891b56b26c87"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"70ed96bc7b8d1cf877e01f2c41c532c09425596c","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        }"},{"line_number":76,"context_line":"        if skip_cache:"},{"line_number":77,"context_line":"            LOG.debug(\u0027Skipping getting result from cache for %s.\u0027, func_name)"},{"line_number":78,"context_line":"            return self.func(target_self, *args, **kwargs)"},{"line_number":79,"context_line":"        key \u003d (func_name,) + args"},{"line_number":80,"context_line":"        if kwargs:"},{"line_number":81,"context_line":"            key +\u003d helpers.dict2tuple(kwargs)"}],"source_content_type":"text/x-python","patch_set":5,"id":"df33271e_1e0de036","line":78,"in_reply_to":"df33271e_66e91119","updated":"2020-03-27 07:40:41.000000000","message":"+1","commit_id":"454bb50b6488d0c4a66d13b3a666891b56b26c87"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"c462bfac1b01ccc119f0e9df69be3b0e499d2c00","unresolved":false,"context_lines":[{"line_number":92,"context_line":"                return self.func(target_self, *args, **kwargs)"},{"line_number":93,"context_line":"        else:"},{"line_number":94,"context_line":"            LOG.debug(\u0027Skipping getting result from cache for %s.\u0027, func_name)"},{"line_number":95,"context_line":"            item \u003d self._not_cached"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        if item is self._not_cached:"},{"line_number":98,"context_line":"            item \u003d self.func(target_self, *args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":6,"id":"df33271e_bb247db0","line":95,"updated":"2020-03-31 15:20:44.000000000","message":"nitty nit: I would use \"positive\" logic, so something like:\n\n    if skip_cache:\n        ...\n    else:\n        ...\n\nbut that\u0027s only style of coding :)","commit_id":"72a5b5b61f532bba6de502feda36dfc7d36cefc7"}],"neutron/tests/unit/agent/metadata/test_agent.py":[{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"9a831584d687c424d587f011b69d9ecebb112b69","unresolved":false,"context_lines":[{"line_number":202,"context_line":"                                            router_id)"},{"line_number":203,"context_line":"            mock_get_ip_addr.assert_called_once_with(remote_address,"},{"line_number":204,"context_line":"                                                     networks,"},{"line_number":205,"context_line":"                                                     skip_cache\u003dFalse)"},{"line_number":206,"context_line":"            self.assertFalse(mock_get_router_networks.called)"},{"line_number":207,"context_line":"        self.assertEqual(expected, ports)"},{"line_number":208,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"df33271e_430e9b8d","line":205,"range":{"start_line":205,"start_character":53,"end_line":205,"end_character":69},"updated":"2020-03-25 08:14:02.000000000","message":"Would be good to have unittest in which skip_cache\u003dTrue is used.","commit_id":"ec878bb173a1eef48d8aedd23736f956d9f36cb8"}]}
