)]}'
{"kuryr_kubernetes/controller/drivers/utils.py":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"e761123370b6dbd35c22132e58465cab1f76b864","unresolved":true,"context_lines":[{"line_number":349,"context_line":"        LOG.exception(\u0027Kubernetes CRD not found\u0027)"},{"line_number":350,"context_line":"        return []"},{"line_number":351,"context_line":"    except k_exc.K8sClientException:"},{"line_number":352,"context_line":"        LOG.exception(\"Exception while fetching Kubernetes resource\")"},{"line_number":353,"context_line":"        raise k_exc.ResourceNotReady(resource_path)"},{"line_number":354,"context_line":"    return k8s_resource.get(\u0027items\u0027, [])"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"813be0b0_94095559","line":353,"range":{"start_line":352,"start_character":0,"end_line":353,"end_character":51},"updated":"2021-08-16 11:18:28.000000000","message":"Let\u0027s make this one generic and only repack K8sClientException into ResourceNotReady in get_kuryrnetworkpolicy_crds(). I think that\u0027ll be the best way to implement this making sure that get_kuryrnetworkpolicy_crds() behavior is not changed.","commit_id":"0cea4d3606db93054eb7c6db62e7ab7e569a2e4a"},{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"6359a909e54c35c156ff91a76c78a07fe4e8bcbf","unresolved":true,"context_lines":[{"line_number":347,"context_line":"            klb_path \u003d constants.K8S_API_CRD_KURYRLOADBALANCERS"},{"line_number":348,"context_line":"        klbs \u003d get_k8s_resource(klb_path)"},{"line_number":349,"context_line":"    except k_exc.K8sClientException:"},{"line_number":350,"context_line":"        LOG.exception(\"Exception while fetching KuryrLoadBalancers\")"},{"line_number":351,"context_line":"    return klbs.get(\u0027items\u0027, [])"},{"line_number":352,"context_line":""},{"line_number":353,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"4ae4c806_8ed53e53","line":350,"updated":"2021-08-23 10:51:40.000000000","message":"Shouldn\u0027t we throw an exception similar to line 337, instead of just ignoring it?","commit_id":"30200843a112adccb3936ffe7cb38136c1ed6720"},{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"6359a909e54c35c156ff91a76c78a07fe4e8bcbf","unresolved":true,"context_lines":[{"line_number":348,"context_line":"        klbs \u003d get_k8s_resource(klb_path)"},{"line_number":349,"context_line":"    except k_exc.K8sClientException:"},{"line_number":350,"context_line":"        LOG.exception(\"Exception while fetching KuryrLoadBalancers\")"},{"line_number":351,"context_line":"    return klbs.get(\u0027items\u0027, [])"},{"line_number":352,"context_line":""},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"def get_k8s_resource(resource_path):"}],"source_content_type":"text/x-python","patch_set":11,"id":"4851ec07_2ae31081","line":351,"updated":"2021-08-23 10:51:40.000000000","message":"In case `get_k8s_resource(klb_path)` returns empty list, this will fail with attribute error. Similar on line 338.","commit_id":"30200843a112adccb3936ffe7cb38136c1ed6720"},{"author":{"_account_id":33240,"name":"Sunday Mgbogu","email":"digitalsimboja@gmail.com","username":"digitalsimboja"},"change_message_id":"212d9498dd696b4908f909f318e54908fd28306f","unresolved":true,"context_lines":[{"line_number":348,"context_line":"        klbs \u003d get_k8s_resource(klb_path)"},{"line_number":349,"context_line":"    except k_exc.K8sClientException:"},{"line_number":350,"context_line":"        LOG.exception(\"Exception while fetching KuryrLoadBalancers\")"},{"line_number":351,"context_line":"    return klbs.get(\u0027items\u0027, [])"},{"line_number":352,"context_line":""},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"def get_k8s_resource(resource_path):"}],"source_content_type":"text/x-python","patch_set":11,"id":"9ac91eff_504e94d9","line":351,"in_reply_to":"4851ec07_2ae31081","updated":"2021-08-24 03:13:44.000000000","message":"\u003e In case `get_k8s_resource(klb_path)` returns empty list, this will fail with attribute error. Similar on line 338.\n\nOkay. I trust it makes sense to check if get_k8s_resource(resource_path) returns and empty list and return [] otherwise then return the items in the list","commit_id":"30200843a112adccb3936ffe7cb38136c1ed6720"},{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"b15e657cc894cc5861129e2042122f39f8e63043","unresolved":true,"context_lines":[{"line_number":335,"context_line":"    except k_exc.K8sClientException:"},{"line_number":336,"context_line":"        LOG.exception(\"Exception during fetch KuryrNetworkPolicies. Retrying.\")"},{"line_number":337,"context_line":"        raise k_exc.ResourceNotReady(knp_path)"},{"line_number":338,"context_line":"    if knps \u003d\u003d []:"},{"line_number":339,"context_line":"        return []"},{"line_number":340,"context_line":"    else:"},{"line_number":341,"context_line":"        return knps.get(\u0027items\u0027, [])"},{"line_number":342,"context_line":""},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"def get_kuryrloadbalancer_crds(namespace\u003dNone):"}],"source_content_type":"text/x-python","patch_set":12,"id":"a41a6d79_8588958d","line":341,"range":{"start_line":338,"start_character":0,"end_line":341,"end_character":36},"updated":"2021-08-24 08:31:00.000000000","message":"that\u0027s kind of duplication with lines 355-358. How about leaving it as it was before, i.e. leaving\n\n  return k8s_resource.get(\u0027items\u0027, [])\n\nin get_k8s_resource() as it was originally, and here simply return knps? What\u0027s the benefits for returning whole dictionary instead just requested resources?","commit_id":"7e573439e22f0106f2d474d522b2d596e694d3ce"},{"author":{"_account_id":33240,"name":"Sunday Mgbogu","email":"digitalsimboja@gmail.com","username":"digitalsimboja"},"change_message_id":"82940a516307e8caa5318d6b8e256729c92158cd","unresolved":true,"context_lines":[{"line_number":335,"context_line":"    except k_exc.K8sClientException:"},{"line_number":336,"context_line":"        LOG.exception(\"Exception during fetch KuryrNetworkPolicies. Retrying.\")"},{"line_number":337,"context_line":"        raise k_exc.ResourceNotReady(knp_path)"},{"line_number":338,"context_line":"    if knps \u003d\u003d []:"},{"line_number":339,"context_line":"        return []"},{"line_number":340,"context_line":"    else:"},{"line_number":341,"context_line":"        return knps.get(\u0027items\u0027, [])"},{"line_number":342,"context_line":""},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"def get_kuryrloadbalancer_crds(namespace\u003dNone):"}],"source_content_type":"text/x-python","patch_set":12,"id":"e08055c7_a9245a04","line":341,"range":{"start_line":338,"start_character":0,"end_line":341,"end_character":36},"in_reply_to":"a41a6d79_8588958d","updated":"2021-08-24 12:28:59.000000000","message":"\u003e that\u0027s kind of duplication with lines 355-358. How about leaving it as it was before, i.e. leaving\n\u003e \n\u003e   return k8s_resource.get(\u0027items\u0027, [])\n\u003e \n\u003e in get_k8s_resource() as it was originally, and here simply return knps? What\u0027s the benefits for returning whole dictionary instead just requested resources?\n\nOkay got it!","commit_id":"7e573439e22f0106f2d474d522b2d596e694d3ce"}],"kuryr_kubernetes/controller/handlers/loadbalancer.py":[{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"e6d2e132773158251c67cacbdc5f9d8f104459e3","unresolved":true,"context_lines":[{"line_number":139,"context_line":"        lbaas_spec \u003d {}"},{"line_number":140,"context_line":"        self._drv_lbaas.add_tags(\u0027loadbalancer\u0027, lbaas_spec)"},{"line_number":141,"context_line":"        loadbalancers \u003d lbaas.load_balancers(**lbaas_spec)"},{"line_number":142,"context_line":"        # NOTE(digitalsimboja): give some extra time to ensure the Load"},{"line_number":143,"context_line":"        # Balancers are available before iteration"},{"line_number":144,"context_line":"        time.sleep(5)"},{"line_number":145,"context_line":"        loadbalancers_id \u003d [loadbalancer[\u0027id\u0027]"},{"line_number":146,"context_line":"                            for loadbalancer in loadbalancers]"},{"line_number":147,"context_line":"        # for each loadbalancer id in the CRD status, check if exists in"}],"source_content_type":"text/x-python","patch_set":1,"id":"7869438a_6f664eb3","line":144,"range":{"start_line":142,"start_character":0,"end_line":144,"end_character":21},"updated":"2021-08-10 06:20:33.000000000","message":"I don\u0027t understand the need for this. If the loadbalancer is not (yet) available, then it won\u0027t be on the CRD status anyway. Are you waiting for the loadbalancer to be created or for what? Probably this is due to a different reason, and not running the periodic task inmediately would avoid any problem here","commit_id":"13346aee3493fd244097708e4e68824d2709cfd3"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"98d45e8c5905519a528fcda10a425781f85484b1","unresolved":true,"context_lines":[{"line_number":121,"context_line":"        loadbalancer_crds \u003d []"},{"line_number":122,"context_line":"        try:"},{"line_number":123,"context_line":"            loadbalancer_crds \u003d driver_utils.get_kuryrloadbalancer_crds()"},{"line_number":124,"context_line":"        except k_exc.K8sClientException:"},{"line_number":125,"context_line":"            LOG.debug(\"Error retriving KuryrLoadBalanders CRDs\")"},{"line_number":126,"context_line":"        try:"},{"line_number":127,"context_line":"            self._trigger_loadbalancer_reconciliation(loadbalancer_crds)"},{"line_number":128,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":2,"id":"b925edf6_617d0263","line":125,"range":{"start_line":124,"start_character":0,"end_line":125,"end_character":64},"updated":"2021-08-10 14:10:27.000000000","message":"This will never happen as K8sClientException is caught in get_k8s_resource and reraised as ResourceNotReady. I\u0027d probably rather split get_kuryrnetworkpolicy_crds and get_kuryrloadbalancer_crds back into separate functions.","commit_id":"eb28aac3e067f9e3316470bd36bf9f7f4d04ef56"},{"author":{"_account_id":33240,"name":"Sunday Mgbogu","email":"digitalsimboja@gmail.com","username":"digitalsimboja"},"change_message_id":"6cd1dfd98a070a3596277065598d293d140058f0","unresolved":true,"context_lines":[{"line_number":121,"context_line":"        loadbalancer_crds \u003d []"},{"line_number":122,"context_line":"        try:"},{"line_number":123,"context_line":"            loadbalancer_crds \u003d driver_utils.get_kuryrloadbalancer_crds()"},{"line_number":124,"context_line":"        except k_exc.K8sClientException:"},{"line_number":125,"context_line":"            LOG.debug(\"Error retriving KuryrLoadBalanders CRDs\")"},{"line_number":126,"context_line":"        try:"},{"line_number":127,"context_line":"            self._trigger_loadbalancer_reconciliation(loadbalancer_crds)"},{"line_number":128,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":2,"id":"290b939b_c71e915c","line":125,"range":{"start_line":124,"start_character":0,"end_line":125,"end_character":64},"in_reply_to":"702856b3_1d812fdd","updated":"2021-08-12 08:00:20.000000000","message":"\u003e why? the utils functions are doing the same. I would go instead for caching here the ResourceNotReady exception, print the same debug message and add a return\n\nSo better still to go for ResourceNotReady?","commit_id":"eb28aac3e067f9e3316470bd36bf9f7f4d04ef56"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"0dc04b3f7d13eddec1760008ff140c7c36702cea","unresolved":true,"context_lines":[{"line_number":121,"context_line":"        loadbalancer_crds \u003d []"},{"line_number":122,"context_line":"        try:"},{"line_number":123,"context_line":"            loadbalancer_crds \u003d driver_utils.get_kuryrloadbalancer_crds()"},{"line_number":124,"context_line":"        except k_exc.K8sClientException:"},{"line_number":125,"context_line":"            LOG.debug(\"Error retriving KuryrLoadBalanders CRDs\")"},{"line_number":126,"context_line":"        try:"},{"line_number":127,"context_line":"            self._trigger_loadbalancer_reconciliation(loadbalancer_crds)"},{"line_number":128,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":2,"id":"702856b3_1d812fdd","line":125,"range":{"start_line":124,"start_character":0,"end_line":125,"end_character":64},"in_reply_to":"b925edf6_617d0263","updated":"2021-08-11 06:50:49.000000000","message":"why? the utils functions are doing the same. I would go instead for caching here the ResourceNotReady exception, print the same debug message and add a return","commit_id":"eb28aac3e067f9e3316470bd36bf9f7f4d04ef56"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"98d45e8c5905519a528fcda10a425781f85484b1","unresolved":true,"context_lines":[{"line_number":161,"context_line":"            except k_exc.K8sResourceNotFound:"},{"line_number":162,"context_line":"                LOG.debug(\u0027Unable to reconcile the KuryLoadBalancer CRD %s\u0027,"},{"line_number":163,"context_line":"                          selflink)"},{"line_number":164,"context_line":"                return"},{"line_number":165,"context_line":"            except k_exc.K8sClientException:"},{"line_number":166,"context_line":"                LOG.warning(\u0027Unable fetch the KuryLoadBalancer CRD %s\u0027,"},{"line_number":167,"context_line":"                            selflink)"}],"source_content_type":"text/x-python","patch_set":2,"id":"778f63be_2032322a","line":164,"range":{"start_line":164,"start_character":16,"end_line":164,"end_character":22},"updated":"2021-08-10 14:10:27.000000000","message":"Why don\u0027t we just do `continue` here so it just skips that one LB, not full loop?","commit_id":"eb28aac3e067f9e3316470bd36bf9f7f4d04ef56"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"0dc04b3f7d13eddec1760008ff140c7c36702cea","unresolved":true,"context_lines":[{"line_number":161,"context_line":"            except k_exc.K8sResourceNotFound:"},{"line_number":162,"context_line":"                LOG.debug(\u0027Unable to reconcile the KuryLoadBalancer CRD %s\u0027,"},{"line_number":163,"context_line":"                          selflink)"},{"line_number":164,"context_line":"                return"},{"line_number":165,"context_line":"            except k_exc.K8sClientException:"},{"line_number":166,"context_line":"                LOG.warning(\u0027Unable fetch the KuryLoadBalancer CRD %s\u0027,"},{"line_number":167,"context_line":"                            selflink)"}],"source_content_type":"text/x-python","patch_set":2,"id":"b9e793a4_f676903c","line":164,"range":{"start_line":164,"start_character":16,"end_line":164,"end_character":22},"in_reply_to":"778f63be_2032322a","updated":"2021-08-11 06:50:49.000000000","message":"+1","commit_id":"eb28aac3e067f9e3316470bd36bf9f7f4d04ef56"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"98d45e8c5905519a528fcda10a425781f85484b1","unresolved":true,"context_lines":[{"line_number":163,"context_line":"                          selflink)"},{"line_number":164,"context_line":"                return"},{"line_number":165,"context_line":"            except k_exc.K8sClientException:"},{"line_number":166,"context_line":"                LOG.warning(\u0027Unable fetch the KuryLoadBalancer CRD %s\u0027,"},{"line_number":167,"context_line":"                            selflink)"},{"line_number":168,"context_line":"                return"},{"line_number":169,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"fcebe099_6c62d98a","line":166,"range":{"start_line":166,"start_character":36,"end_line":166,"end_character":41},"updated":"2021-08-10 14:10:27.000000000","message":"`Unable to patch the KuryLoadBalancer CRD %s` would sound better","commit_id":"eb28aac3e067f9e3316470bd36bf9f7f4d04ef56"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"0dc04b3f7d13eddec1760008ff140c7c36702cea","unresolved":true,"context_lines":[{"line_number":163,"context_line":"                          selflink)"},{"line_number":164,"context_line":"                return"},{"line_number":165,"context_line":"            except k_exc.K8sClientException:"},{"line_number":166,"context_line":"                LOG.warning(\u0027Unable fetch the KuryLoadBalancer CRD %s\u0027,"},{"line_number":167,"context_line":"                            selflink)"},{"line_number":168,"context_line":"                return"},{"line_number":169,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"80e49c58_7118727b","line":166,"range":{"start_line":166,"start_character":36,"end_line":166,"end_character":41},"in_reply_to":"fcebe099_6c62d98a","updated":"2021-08-11 06:50:49.000000000","message":"+1","commit_id":"eb28aac3e067f9e3316470bd36bf9f7f4d04ef56"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"98d45e8c5905519a528fcda10a425781f85484b1","unresolved":true,"context_lines":[{"line_number":165,"context_line":"            except k_exc.K8sClientException:"},{"line_number":166,"context_line":"                LOG.warning(\u0027Unable fetch the KuryLoadBalancer CRD %s\u0027,"},{"line_number":167,"context_line":"                            selflink)"},{"line_number":168,"context_line":"                return"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    def _should_ignore(self, loadbalancer_crd):"},{"line_number":171,"context_line":"        return (not(self._has_endpoints(loadbalancer_crd) or"}],"source_content_type":"text/x-python","patch_set":2,"id":"7c948c49_7d374d25","line":168,"range":{"start_line":168,"start_character":16,"end_line":168,"end_character":22},"updated":"2021-08-10 14:10:27.000000000","message":"Same here, error on a single KLB doesn\u0027t mean other will not work.","commit_id":"eb28aac3e067f9e3316470bd36bf9f7f4d04ef56"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"ed9bcbdba0e378783099ce3d65d7ff0ea3db1e48","unresolved":true,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import time"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"# import eventlet"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from oslo_log import log as logging"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"48ebf1d4_1d0674dd","line":18,"range":{"start_line":18,"start_character":0,"end_line":18,"end_character":17},"updated":"2021-08-15 20:10:32.000000000","message":"this looks ready to be removed","commit_id":"3574a4c37a6b19c2072ba14051d76c9ec5071442"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"ed9bcbdba0e378783099ce3d65d7ff0ea3db1e48","unresolved":true,"context_lines":[{"line_number":55,"context_line":"        self._drv_svc_project \u003d drv_base.ServiceProjectDriver.get_instance()"},{"line_number":56,"context_line":"        self._drv_sg \u003d drv_base.ServiceSecurityGroupsDriver.get_instance()"},{"line_number":57,"context_line":"        self._drv_nodes_subnets \u003d drv_base.NodesSubnetsDriver.get_instance()"},{"line_number":58,"context_line":"        # eventlet.spawn(self._reconcile_loadbalancers)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def _get_nodes_subnets(self):"},{"line_number":61,"context_line":"        return utils.get_subnets_id_cidrs("}],"source_content_type":"text/x-python","patch_set":4,"id":"5f031285_a98bd91a","line":58,"range":{"start_line":58,"start_character":8,"end_line":58,"end_character":55},"updated":"2021-08-15 20:10:32.000000000","message":"ditto","commit_id":"3574a4c37a6b19c2072ba14051d76c9ec5071442"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"e761123370b6dbd35c22132e58465cab1f76b864","unresolved":true,"context_lines":[{"line_number":119,"context_line":"        try:"},{"line_number":120,"context_line":"            loadbalancer_crds \u003d driver_utils.get_kuryrloadbalancer_crds()"},{"line_number":121,"context_line":"        except k_exc.ResourceNotReady:"},{"line_number":122,"context_line":"            LOG.debug(\"Error retriving KuryrLoadBalanders CRDs\")"},{"line_number":123,"context_line":"        try:"},{"line_number":124,"context_line":"            self._trigger_loadbalancer_reconciliation(loadbalancer_crds)"},{"line_number":125,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":5,"id":"a9e5ee9d_93d7f584","line":122,"range":{"start_line":122,"start_character":16,"end_line":122,"end_character":21},"updated":"2021-08-16 11:18:28.000000000","message":"An error should probably produce at least a LOG.warning().","commit_id":"0cea4d3606db93054eb7c6db62e7ab7e569a2e4a"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"3ed3ac574e01e4f3495a2def6df4535475952048","unresolved":true,"context_lines":[{"line_number":118,"context_line":"        loadbalancer_crds \u003d []"},{"line_number":119,"context_line":"        try:"},{"line_number":120,"context_line":"            loadbalancer_crds \u003d driver_utils.get_kuryrloadbalancer_crds()"},{"line_number":121,"context_line":"        except k_exc.ResourceNotReady:"},{"line_number":122,"context_line":"            LOG.warning(\"Error retriving KuryrLoadBalanders CRDs\")"},{"line_number":123,"context_line":"        try:"},{"line_number":124,"context_line":"            self._trigger_loadbalancer_reconciliation(loadbalancer_crds)"}],"source_content_type":"text/x-python","patch_set":8,"id":"2721088f_32e6e719","line":121,"range":{"start_line":121,"start_character":21,"end_line":121,"end_character":37},"updated":"2021-08-19 08:19:46.000000000","message":"It\u0027s not ResourceNotReady anymore, it\u0027s K8sClientException now.","commit_id":"4358f6eba1f74f185ff862cb724d60a07b5712ab"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"74f52113ec9f0da37709a028d36a726f73fb1ae6","unresolved":true,"context_lines":[{"line_number":118,"context_line":"        loadbalancer_crds \u003d []"},{"line_number":119,"context_line":"        try:"},{"line_number":120,"context_line":"            loadbalancer_crds \u003d driver_utils.get_kuryrloadbalancer_crds()"},{"line_number":121,"context_line":"        except k_exc.K8sClientException:"},{"line_number":122,"context_line":"            LOG.warning(\"Error retriving KuryrLoadBalanders CRDs\")"},{"line_number":123,"context_line":"        try:"},{"line_number":124,"context_line":"            self._trigger_loadbalancer_reconciliation(loadbalancer_crds)"}],"source_content_type":"text/x-python","patch_set":13,"id":"fc53b444_43d08196","line":121,"range":{"start_line":121,"start_character":21,"end_line":121,"end_character":39},"updated":"2021-08-27 15:53:46.000000000","message":"This won\u0027t work again, you\u0027ve made `get_kuryrloadbalancer_crds()` to repack K8sClientException into ResourceNotReady, why? Please just remove all try-except clause from `get_kuryrloadbalancer_crds()`, K8sClientException will be caught and logged here.","commit_id":"61f99ddba645a393c6951cb464232eb2bcdecfd4"},{"author":{"_account_id":33240,"name":"Sunday Mgbogu","email":"digitalsimboja@gmail.com","username":"digitalsimboja"},"change_message_id":"8596956e7910336dbd036f6f567cb0fbfddb9859","unresolved":true,"context_lines":[{"line_number":118,"context_line":"        loadbalancer_crds \u003d []"},{"line_number":119,"context_line":"        try:"},{"line_number":120,"context_line":"            loadbalancer_crds \u003d driver_utils.get_kuryrloadbalancer_crds()"},{"line_number":121,"context_line":"        except k_exc.K8sClientException:"},{"line_number":122,"context_line":"            LOG.warning(\"Error retriving KuryrLoadBalanders CRDs\")"},{"line_number":123,"context_line":"        try:"},{"line_number":124,"context_line":"            self._trigger_loadbalancer_reconciliation(loadbalancer_crds)"}],"source_content_type":"text/x-python","patch_set":13,"id":"42c7d2a5_63d33f31","line":121,"range":{"start_line":121,"start_character":21,"end_line":121,"end_character":39},"in_reply_to":"fc53b444_43d08196","updated":"2021-08-27 20:12:23.000000000","message":"\u003e This won\u0027t work again, you\u0027ve made `get_kuryrloadbalancer_crds()` to repack K8sClientException into ResourceNotReady, why? Please just remove all try-except clause from `get_kuryrloadbalancer_crds()`, K8sClientException will be caught and logged here.\n\nThanks, I have updated this in the next patch","commit_id":"61f99ddba645a393c6951cb464232eb2bcdecfd4"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"74f52113ec9f0da37709a028d36a726f73fb1ae6","unresolved":true,"context_lines":[{"line_number":160,"context_line":"                          selflink)"},{"line_number":161,"context_line":"                continue"},{"line_number":162,"context_line":"            except k_exc.K8sClientException:"},{"line_number":163,"context_line":"                LOG.warning(\u0027Unable patch the KuryLoadBalancer CRD %s\u0027,"},{"line_number":164,"context_line":"                            selflink)"},{"line_number":165,"context_line":"                continue"},{"line_number":166,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"048bddf7_bc668f98","line":163,"range":{"start_line":163,"start_character":29,"end_line":163,"end_character":41},"updated":"2021-08-27 15:53:46.000000000","message":"\"Unable to patch\" would be better.","commit_id":"61f99ddba645a393c6951cb464232eb2bcdecfd4"}],"kuryr_kubernetes/controller/service.py":[{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"e6d2e132773158251c67cacbdc5f9d8f104459e3","unresolved":true,"context_lines":[{"line_number":162,"context_line":"        self.watcher.stop()"},{"line_number":163,"context_line":"        super(KuryrK8sService, self).stop(graceful)"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    @periodic_task.periodic_task(spacing\u003d600, run_immediately\u003dTrue)"},{"line_number":166,"context_line":"    def reconcile_loadbalancers():"},{"line_number":167,"context_line":"        handlers \u003d _load_kuryr_ctrlr_handlers()"},{"line_number":168,"context_line":"        for handler in handlers:"}],"source_content_type":"text/x-python","patch_set":1,"id":"d935fc4e_ebf6d4cb","line":165,"range":{"start_line":165,"start_character":46,"end_line":165,"end_character":66},"updated":"2021-08-10 06:20:33.000000000","message":"I don\u0027t think there is a need to run inmediately","commit_id":"13346aee3493fd244097708e4e68824d2709cfd3"},{"author":{"_account_id":33240,"name":"Sunday Mgbogu","email":"digitalsimboja@gmail.com","username":"digitalsimboja"},"change_message_id":"41670e5c1af888dcb3e29590094c0c50b2d41f20","unresolved":true,"context_lines":[{"line_number":167,"context_line":"        handlers \u003d _load_kuryr_ctrlr_handlers()"},{"line_number":168,"context_line":"        for handler in handlers:"},{"line_number":169,"context_line":"            try:"},{"line_number":170,"context_line":"                handler.check_resources()"},{"line_number":171,"context_line":"            except AttributeError:"},{"line_number":172,"context_line":"                pass"},{"line_number":173,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"942d3367_903151e6","line":170,"updated":"2021-08-09 07:18:01.000000000","message":"I just thought of something, if handler.check_resources() raises AttributeError itself, then this would fail. I will amend thus.","commit_id":"13346aee3493fd244097708e4e68824d2709cfd3"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"e6d2e132773158251c67cacbdc5f9d8f104459e3","unresolved":true,"context_lines":[{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    @periodic_task.periodic_task(spacing\u003d600, run_immediately\u003dTrue)"},{"line_number":166,"context_line":"    def reconcile_loadbalancers():"},{"line_number":167,"context_line":"        handlers \u003d _load_kuryr_ctrlr_handlers()"},{"line_number":168,"context_line":"        for handler in handlers:"},{"line_number":169,"context_line":"            try:"},{"line_number":170,"context_line":"                handler.check_resources()"},{"line_number":171,"context_line":"            except AttributeError:"},{"line_number":172,"context_line":"                pass"},{"line_number":173,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"4e26a912_6f0d0385","line":170,"range":{"start_line":167,"start_character":0,"end_line":170,"end_character":41},"updated":"2021-08-10 06:20:33.000000000","message":"why is this here? shouldn\u0027t this call the loadbalancer handler (and its check_resources function, which perhaps could be renamed, not sure if \"check_resources\" is the more meaningful name)","commit_id":"13346aee3493fd244097708e4e68824d2709cfd3"},{"author":{"_account_id":33240,"name":"Sunday Mgbogu","email":"digitalsimboja@gmail.com","username":"digitalsimboja"},"change_message_id":"850349ef0ce239357b3520eff8b1f64261a7be6f","unresolved":true,"context_lines":[{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    @periodic_task.periodic_task(spacing\u003d600, run_immediately\u003dTrue)"},{"line_number":166,"context_line":"    def reconcile_loadbalancers():"},{"line_number":167,"context_line":"        handlers \u003d _load_kuryr_ctrlr_handlers()"},{"line_number":168,"context_line":"        for handler in handlers:"},{"line_number":169,"context_line":"            try:"},{"line_number":170,"context_line":"                handler.check_resources()"},{"line_number":171,"context_line":"            except AttributeError:"},{"line_number":172,"context_line":"                pass"},{"line_number":173,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7835e022_1ab00919","line":170,"range":{"start_line":167,"start_character":0,"end_line":170,"end_character":41},"in_reply_to":"4e26a912_6f0d0385","updated":"2021-08-10 07:56:09.000000000","message":"\u003e why is this here? shouldn\u0027t this call the loadbalancer handler (and its check_resources function, which perhaps could be renamed, not sure if \"check_resources\" is the more meaningful name)\n\nI need a clarification, my thought is that there would be several handlers, so for each handler we need to check_for_reconciliation(), so I could rename it to check_for_reconciliation?","commit_id":"13346aee3493fd244097708e4e68824d2709cfd3"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"98d45e8c5905519a528fcda10a425781f85484b1","unresolved":true,"context_lines":[{"line_number":165,"context_line":"    @periodic_task.periodic_task(spacing\u003d600, run_immediately\u003dFalse)"},{"line_number":166,"context_line":"    def reconcile_loadbalancers():"},{"line_number":167,"context_line":"        LOG.debug(\"Checking for Kubernetes resources reconciliations\")"},{"line_number":168,"context_line":"        handlers \u003d _load_kuryr_ctrlr_handlers()"},{"line_number":169,"context_line":"        for handler in handlers:"},{"line_number":170,"context_line":"            try:"},{"line_number":171,"context_line":"                if hasattr(handler, \u0027check_for_reconciliation\u0027) and callable("}],"source_content_type":"text/x-python","patch_set":2,"id":"e9929958_4e3ca9bc","line":168,"range":{"start_line":168,"start_character":0,"end_line":168,"end_character":47},"updated":"2021-08-10 14:10:27.000000000","message":"Maybe we can just save handlers into `self.handlers` and then be able to use it here?","commit_id":"eb28aac3e067f9e3316470bd36bf9f7f4d04ef56"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"35566055226fb699eb2fe23619845d40797d8ded","unresolved":true,"context_lines":[{"line_number":168,"context_line":"        handlers \u003d _load_kuryr_ctrlr_handlers()"},{"line_number":169,"context_line":"        for handler in handlers:"},{"line_number":170,"context_line":"            try:"},{"line_number":171,"context_line":"                if hasattr(handler, \u0027check_for_reconciliation\u0027) and callable("},{"line_number":172,"context_line":"                   getattr(handler, \u0027check_for_reconciliation\u0027, None)):"},{"line_number":173,"context_line":"                    handler.check_for_reconciliation()"},{"line_number":174,"context_line":"            except AttributeError:"},{"line_number":175,"context_line":"                pass"}],"source_content_type":"text/x-python","patch_set":2,"id":"6c0766b6_6fadde6d","line":172,"range":{"start_line":171,"start_character":0,"end_line":172,"end_character":71},"updated":"2021-08-10 10:50:06.000000000","message":"Instead of checking if the handlers have the function defined, the function could be defined on the base class[1] that all the handlers inherit from and redefine it accordingly when used on the specific handlers.\n\n[1] https://github.com/openstack/kuryr-kubernetes/blob/master/kuryr_kubernetes/handlers/k8s_base.py","commit_id":"eb28aac3e067f9e3316470bd36bf9f7f4d04ef56"},{"author":{"_account_id":33240,"name":"Sunday Mgbogu","email":"digitalsimboja@gmail.com","username":"digitalsimboja"},"change_message_id":"05af3c530602a7a5602fd7df6e4e227e979e6722","unresolved":true,"context_lines":[{"line_number":168,"context_line":"        handlers \u003d _load_kuryr_ctrlr_handlers()"},{"line_number":169,"context_line":"        for handler in handlers:"},{"line_number":170,"context_line":"            try:"},{"line_number":171,"context_line":"                if hasattr(handler, \u0027check_for_reconciliation\u0027) and callable("},{"line_number":172,"context_line":"                   getattr(handler, \u0027check_for_reconciliation\u0027, None)):"},{"line_number":173,"context_line":"                    handler.check_for_reconciliation()"},{"line_number":174,"context_line":"            except AttributeError:"},{"line_number":175,"context_line":"                pass"}],"source_content_type":"text/x-python","patch_set":2,"id":"7e01d573_9235c009","line":172,"range":{"start_line":171,"start_character":0,"end_line":172,"end_character":71},"in_reply_to":"6c0766b6_6fadde6d","updated":"2021-08-10 13:47:45.000000000","message":"\u003e Instead of checking if the handlers have the function defined, the function could be defined on the base class[1] that all the handlers inherit from and redefine it accordingly when used on the specific handlers.\n\u003e \n\u003e [1] https://github.com/openstack/kuryr-kubernetes/blob/master/kuryr_kubernetes/handlers/k8s_base.py\n\nGot it!","commit_id":"eb28aac3e067f9e3316470bd36bf9f7f4d04ef56"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"ed9bcbdba0e378783099ce3d65d7ff0ea3db1e48","unresolved":true,"context_lines":[{"line_number":169,"context_line":"        for handler in self.handlers:"},{"line_number":170,"context_line":"            try:"},{"line_number":171,"context_line":"                handler.check_for_reconciliation()"},{"line_number":172,"context_line":"            except AttributeError:"},{"line_number":173,"context_line":"                pass"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"49b5f280_92e45543","line":172,"range":{"start_line":172,"start_character":12,"end_line":172,"end_character":18},"updated":"2021-08-15 20:10:32.000000000","message":"as all handlers will have this function defined there is no need for handling the exception. Also it might be good to rename the function to something in the lines of \"reconcile\"","commit_id":"3574a4c37a6b19c2072ba14051d76c9ec5071442"},{"author":{"_account_id":33240,"name":"Sunday Mgbogu","email":"digitalsimboja@gmail.com","username":"digitalsimboja"},"change_message_id":"3a939ce91d4e95bf50f38340c4da8323c6a179c2","unresolved":true,"context_lines":[{"line_number":169,"context_line":"        for handler in self.handlers:"},{"line_number":170,"context_line":"            try:"},{"line_number":171,"context_line":"                handler.check_for_reconciliation()"},{"line_number":172,"context_line":"            except AttributeError:"},{"line_number":173,"context_line":"                pass"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"10cabfe9_9353ea36","line":172,"range":{"start_line":172,"start_character":12,"end_line":172,"end_character":18},"in_reply_to":"49b5f280_92e45543","updated":"2021-08-15 20:59:54.000000000","message":"\u003e as all handlers will have this function defined there is no need for handling the exception. Also it might be good to rename the function to something in the lines of \"reconcile\"\n\nThis is noted. Let me update in the next patchset","commit_id":"3574a4c37a6b19c2072ba14051d76c9ec5071442"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"e761123370b6dbd35c22132e58465cab1f76b864","unresolved":true,"context_lines":[{"line_number":165,"context_line":"    @periodic_task.periodic_task(spacing\u003d600, run_immediately\u003dFalse)"},{"line_number":166,"context_line":"    def reconcile_loadbalancers(self):"},{"line_number":167,"context_line":"        LOG.debug(\"Checking for Kubernetes resources reconciliations\")"},{"line_number":168,"context_line":"        self.handlers \u003d _load_kuryr_ctrlr_handlers()"},{"line_number":169,"context_line":"        for handler in self.handlers:"},{"line_number":170,"context_line":"            try:"},{"line_number":171,"context_line":"                handler.reconcile_klb_crd()"}],"source_content_type":"text/x-python","patch_set":5,"id":"c78c287e_0163f702","line":168,"range":{"start_line":168,"start_character":0,"end_line":168,"end_character":52},"updated":"2021-08-16 11:18:28.000000000","message":"This should be set in line 91 and then you\u0027d be just able to use it here without this line.","commit_id":"0cea4d3606db93054eb7c6db62e7ab7e569a2e4a"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"e761123370b6dbd35c22132e58465cab1f76b864","unresolved":true,"context_lines":[{"line_number":169,"context_line":"        for handler in self.handlers:"},{"line_number":170,"context_line":"            try:"},{"line_number":171,"context_line":"                handler.reconcile_klb_crd()"},{"line_number":172,"context_line":"            except AttributeError:"},{"line_number":173,"context_line":"                pass"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"def start():"}],"source_content_type":"text/x-python","patch_set":5,"id":"6d1d5343_ac84c9a7","line":173,"range":{"start_line":172,"start_character":0,"end_line":173,"end_character":20},"updated":"2021-08-16 11:18:28.000000000","message":"You don\u0027t need try-except anymore. I also suggested on k8s_base.py that reconcile_klb_crd should be renamed.","commit_id":"0cea4d3606db93054eb7c6db62e7ab7e569a2e4a"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"3ed3ac574e01e4f3495a2def6df4535475952048","unresolved":true,"context_lines":[{"line_number":88,"context_line":"        self.current_leader \u003d None"},{"line_number":89,"context_line":"        self.node_name \u003d utils.get_node_name()"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        self.handlers \u003d _load_kuryr_ctrlr_handlers()"},{"line_number":92,"context_line":"        for handler in self.handlers:"},{"line_number":93,"context_line":"            self.watcher.add(handler.get_watch_path())"},{"line_number":94,"context_line":"            pipeline.register(handler)"}],"source_content_type":"text/x-python","patch_set":8,"id":"496bd2a9_3a861db3","line":91,"range":{"start_line":91,"start_character":8,"end_line":91,"end_character":21},"updated":"2021-08-19 08:19:46.000000000","message":"Can we initialize self.handlers with an empty list `[]` before line 82? Just to guarantee it\u0027s set to something when periodic tasks are started. It\u0027s almost impossible that lines 84-89 will take more than 600 seconds, but you know, Murphy\u0027s law.","commit_id":"4358f6eba1f74f185ff862cb724d60a07b5712ab"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"1219ff0d775e6193f561a5bb3f21a61e7fb571fe","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        self.current_leader \u003d None"},{"line_number":89,"context_line":"        self.node_name \u003d utils.get_node_name()"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        self.handlers \u003d _load_kuryr_ctrlr_handlers()"},{"line_number":92,"context_line":"        for handler in self.handlers:"},{"line_number":93,"context_line":"            self.watcher.add(handler.get_watch_path())"},{"line_number":94,"context_line":"            pipeline.register(handler)"}],"source_content_type":"text/x-python","patch_set":8,"id":"af4bc75c_930bd561","line":91,"range":{"start_line":91,"start_character":8,"end_line":91,"end_character":21},"in_reply_to":"3340c75e_5195b456","updated":"2021-08-19 15:30:30.000000000","message":"Yup, no changes needed, my mistake!","commit_id":"4358f6eba1f74f185ff862cb724d60a07b5712ab"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"2d3bd586e83318f1af60ad48dd3aa88485c8d55e","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        self.current_leader \u003d None"},{"line_number":89,"context_line":"        self.node_name \u003d utils.get_node_name()"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        self.handlers \u003d _load_kuryr_ctrlr_handlers()"},{"line_number":92,"context_line":"        for handler in self.handlers:"},{"line_number":93,"context_line":"            self.watcher.add(handler.get_watch_path())"},{"line_number":94,"context_line":"            pipeline.register(handler)"}],"source_content_type":"text/x-python","patch_set":8,"id":"dcff2423_b7c24ab6","line":91,"range":{"start_line":91,"start_character":8,"end_line":91,"end_character":21},"in_reply_to":"496bd2a9_3a861db3","updated":"2021-08-19 08:23:40.000000000","message":"Please disregard this comment, the periodic tasks will only be started after start().","commit_id":"4358f6eba1f74f185ff862cb724d60a07b5712ab"},{"author":{"_account_id":33240,"name":"Sunday Mgbogu","email":"digitalsimboja@gmail.com","username":"digitalsimboja"},"change_message_id":"427cb5437cf08cc81a78bb520741d15da16c5afd","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        self.current_leader \u003d None"},{"line_number":89,"context_line":"        self.node_name \u003d utils.get_node_name()"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        self.handlers \u003d _load_kuryr_ctrlr_handlers()"},{"line_number":92,"context_line":"        for handler in self.handlers:"},{"line_number":93,"context_line":"            self.watcher.add(handler.get_watch_path())"},{"line_number":94,"context_line":"            pipeline.register(handler)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3340c75e_5195b456","line":91,"range":{"start_line":91,"start_character":8,"end_line":91,"end_character":21},"in_reply_to":"dcff2423_b7c24ab6","updated":"2021-08-19 08:37:24.000000000","message":"\u003e Please disregard this comment, the periodic tasks will only be started after start().\n\nSo no changes here required?","commit_id":"4358f6eba1f74f185ff862cb724d60a07b5712ab"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"3ed3ac574e01e4f3495a2def6df4535475952048","unresolved":true,"context_lines":[{"line_number":109,"context_line":"            self.pool_driver.sync_pools()"},{"line_number":110,"context_line":"        else:"},{"line_number":111,"context_line":"            LOG.info(\u0027Running in HA mode, watcher will be started later.\u0027)"},{"line_number":112,"context_line":"            f \u003d functools.partial(self.run_periodic_tasks, None)"},{"line_number":113,"context_line":"            self.tg.add_timer(1, f)"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        self.health_manager.run()"},{"line_number":116,"context_line":"        LOG.info(\"Service \u0027%s\u0027 started\", self.__class__.__name__)"}],"source_content_type":"text/x-python","patch_set":8,"id":"54dd505f_b9aa6cd3","line":113,"range":{"start_line":112,"start_character":0,"end_line":113,"end_character":35},"updated":"2021-08-19 08:19:46.000000000","message":"Ouch, I just noticed that to trigger periodic tasks this should be run even in non-HA mode. Looks like you need to move this outside of this else clause (unindent in). And then add this between lines 119 and 120:\n\n if not CONF.kubernetes.controller_ha:\n     return","commit_id":"4358f6eba1f74f185ff862cb724d60a07b5712ab"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"afcdc811ef3a9e6c3f6b45b6126f8c87304e16e3","unresolved":true,"context_lines":[{"line_number":165,"context_line":"        super(KuryrK8sService, self).stop(graceful)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    @periodic_task.periodic_task(spacing\u003d600, run_immediately\u003dFalse)"},{"line_number":168,"context_line":"    def reconcile_loadbalancers(self):"},{"line_number":169,"context_line":"        LOG.debug(\"Checking for Kubernetes resources reconciliations\")"},{"line_number":170,"context_line":"        for handler in self.handlers:"},{"line_number":171,"context_line":"            handler.reconcile()"}],"source_content_type":"text/x-python","patch_set":10,"id":"7362db43_0ce524ba","line":168,"range":{"start_line":168,"start_character":31,"end_line":168,"end_character":38},"updated":"2021-08-20 11:16:46.000000000","message":"the context is missing in the function parameter, otherwise this function won\u0027t work","commit_id":"78b6002d7a29e6bcadadffb340eb46b056c306f1"}],"kuryr_kubernetes/handlers/k8s_base.py":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"e761123370b6dbd35c22132e58465cab1f76b864","unresolved":true,"context_lines":[{"line_number":106,"context_line":"    def on_finalize(self, obj, *args, **kwargs):"},{"line_number":107,"context_line":"        pass"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def reconcile_klb_crd(self):"},{"line_number":110,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a136486_2bae1f91","line":109,"range":{"start_line":109,"start_character":8,"end_line":109,"end_character":25},"updated":"2021-08-16 11:18:28.000000000","message":"This should have more generic name, it\u0027s not only about KuryrLoadBalancers. How about just \"reconcile\"?","commit_id":"0cea4d3606db93054eb7c6db62e7ab7e569a2e4a"}]}
