)]}'
{"kubernetes_crds/kuryr_crds/kuryrloadbalancer.yaml":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"4db3a54fa7ac7fc309dd79496c51be8f992cd130","unresolved":false,"context_lines":[{"line_number":30,"context_line":"          spec:"},{"line_number":31,"context_line":"            type: object"},{"line_number":32,"context_line":"            properties:"},{"line_number":33,"context_line":"              endpointslice:"},{"line_number":34,"context_line":"                type: object"},{"line_number":35,"context_line":"                properties:"},{"line_number":36,"context_line":"                  endpoints:"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"9f560f44_2d0e05e5","line":33,"range":{"start_line":33,"start_character":14,"end_line":33,"end_character":27},"updated":"2020-08-13 15:23:19.000000000","message":"endpointSlice\n\nAlso as I explained in other comments this will need to be an array, so even endpointSlices.","commit_id":"ee68c8fbd3bd2a923fe6b019be2e066fea35272d"}],"kuryr_kubernetes/controller/handlers/lbaas.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"1f13681d5206473c36bc446cc8b049be0bdbf8b9","unresolved":false,"context_lines":[{"line_number":281,"context_line":"                LOG.debug(\"LBaaS spec IP %(endpoint_crd_ip)s !\u003d\""},{"line_number":282,"context_line":"                          \" %(endpoint_ip)s for %(link)s\""},{"line_number":283,"context_line":"                          % {\u0027endpoint_crd_ip\u0027: endpoint_crd_ip,"},{"line_number":284,"context_line":"                          \u0027endpoint_ip\u0027: endpoint_ip,"},{"line_number":285,"context_line":"                          \u0027link\u0027: link})"},{"line_number":286,"context_line":"                return True"},{"line_number":287,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_aea09343","line":284,"updated":"2020-08-07 17:17:15.000000000","message":"pep8: E128 continuation line under-indented for visual indent","commit_id":"094dac31b2fe9bc1e35af25f22f5ad5a86b62021"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"1f13681d5206473c36bc446cc8b049be0bdbf8b9","unresolved":false,"context_lines":[{"line_number":281,"context_line":"                LOG.debug(\"LBaaS spec IP %(endpoint_crd_ip)s !\u003d\""},{"line_number":282,"context_line":"                          \" %(endpoint_ip)s for %(link)s\""},{"line_number":283,"context_line":"                          % {\u0027endpoint_crd_ip\u0027: endpoint_crd_ip,"},{"line_number":284,"context_line":"                          \u0027endpoint_ip\u0027: endpoint_ip,"},{"line_number":285,"context_line":"                          \u0027link\u0027: link})"},{"line_number":286,"context_line":"                return True"},{"line_number":287,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_0e8b7fc2","line":284,"updated":"2020-08-07 17:17:15.000000000","message":"pep8: F821 undefined name \u0027endpoint_ip\u0027","commit_id":"094dac31b2fe9bc1e35af25f22f5ad5a86b62021"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"1f13681d5206473c36bc446cc8b049be0bdbf8b9","unresolved":false,"context_lines":[{"line_number":282,"context_line":"                          \" %(endpoint_ip)s for %(link)s\""},{"line_number":283,"context_line":"                          % {\u0027endpoint_crd_ip\u0027: endpoint_crd_ip,"},{"line_number":284,"context_line":"                          \u0027endpoint_ip\u0027: endpoint_ip,"},{"line_number":285,"context_line":"                          \u0027link\u0027: link})"},{"line_number":286,"context_line":"                return True"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"        return False"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_ee856bae","line":285,"updated":"2020-08-07 17:17:15.000000000","message":"pep8: E128 continuation line under-indented for visual indent","commit_id":"094dac31b2fe9bc1e35af25f22f5ad5a86b62021"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"1f13681d5206473c36bc446cc8b049be0bdbf8b9","unresolved":false,"context_lines":[{"line_number":341,"context_line":"            }"},{"line_number":342,"context_line":"        try:"},{"line_number":343,"context_line":"            kubernetes.patch_crd(\u0027spec/endpointslice\u0027,"},{"line_number":344,"context_line":"                loadbalancer_crd[\u0027metadata\u0027][\u0027selfLink\u0027], lbaas_update_crd)"},{"line_number":345,"context_line":"        except k_exc.K8sResourceNotFound:"},{"line_number":346,"context_line":"            LOG.debug(\u0027KuryrLoadbalancer CRD not found %s\u0027, loadbalancer_crd)"},{"line_number":347,"context_line":"        except k_exc.K8sConflict:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_4e91f7f0","line":344,"updated":"2020-08-07 17:17:15.000000000","message":"pep8: E128 continuation line under-indented for visual indent","commit_id":"094dac31b2fe9bc1e35af25f22f5ad5a86b62021"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"4db3a54fa7ac7fc309dd79496c51be8f992cd130","unresolved":false,"context_lines":[{"line_number":308,"context_line":"                targetRef \u003d address.get(\u0027targetRef\u0027)"},{"line_number":309,"context_line":"                endpoint \u003d {"},{"line_number":310,"context_line":"                    \u0027addresses\u0027: [ip],"},{"line_number":311,"context_line":"                    \u0027conditions\u0027: {"},{"line_number":312,"context_line":"                        \u0027ready\u0027: True"},{"line_number":313,"context_line":"                    },"},{"line_number":314,"context_line":"                    \u0027targetRef\u0027: targetRef"},{"line_number":315,"context_line":"                }"},{"line_number":316,"context_line":"                endpoints.append(endpoint)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_4dd8997e","line":313,"range":{"start_line":311,"start_character":0,"end_line":313,"end_character":22},"updated":"2020-08-13 15:23:19.000000000","message":"We could assume we only save ready ones, but maybe you\u0027re right and better to plan for the future if someone asks us to add unready as disabled members too.","commit_id":"ee68c8fbd3bd2a923fe6b019be2e066fea35272d"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"4db3a54fa7ac7fc309dd79496c51be8f992cd130","unresolved":false,"context_lines":[{"line_number":339,"context_line":"                \u0027finalizers\u0027: [k_const.KURYRLB_FINALIZER]"},{"line_number":340,"context_line":"                },"},{"line_number":341,"context_line":"            \u0027spec\u0027: {"},{"line_number":342,"context_line":"                \u0027endpointslice\u0027: epslice"},{"line_number":343,"context_line":"                },"},{"line_number":344,"context_line":"            \u0027status\u0027: {"},{"line_number":345,"context_line":"                }"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_6d72bd7e","line":342,"range":{"start_line":342,"start_character":17,"end_line":342,"end_character":30},"updated":"2020-08-13 15:23:19.000000000","message":"This should probably be an array - to make sure we can have multiple EndpointSlices with various ports set - otherwise we\u0027d need to assume all slices belonging to a service have same port and that might not be true.\n\nAlso endpointSlices would be better (camel case).","commit_id":"ee68c8fbd3bd2a923fe6b019be2e066fea35272d"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"6a43f12a3727a48c625b5ed31c1b06891e14349d","unresolved":false,"context_lines":[{"line_number":277,"context_line":"                      endpoints[\u0027metadata\u0027][\u0027name\u0027])"},{"line_number":278,"context_line":"            return"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"        if loadbalancer_crd is None:"},{"line_number":281,"context_line":"            self._create_crd_spec(endpoints)"},{"line_number":282,"context_line":"        else:"},{"line_number":283,"context_line":"            self._update_crd_spec(loadbalancer_crd, endpoints)"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    def _has_lbaas_spec_changes(self, endpoints, loadbalancer_crd):"},{"line_number":286,"context_line":"        return (self._has_ip_changes(endpoints, loadbalancer_crd) or"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_0ac3cb8a","line":283,"range":{"start_line":280,"start_character":0,"end_line":283,"end_character":62},"updated":"2020-08-20 11:50:20.000000000","message":"That was making me uneasy too. ;)","commit_id":"ebf99ca52793f7f0cd82f732bf30bc2eebb34066"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"6a43f12a3727a48c625b5ed31c1b06891e14349d","unresolved":false,"context_lines":[{"line_number":282,"context_line":"        else:"},{"line_number":283,"context_line":"            self._update_crd_spec(loadbalancer_crd, endpoints)"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    def _has_lbaas_spec_changes(self, endpoints, loadbalancer_crd):"},{"line_number":286,"context_line":"        return (self._has_ip_changes(endpoints, loadbalancer_crd) or"},{"line_number":287,"context_line":"                utils.has_port_changes(endpoints, loadbalancer_crd))"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"    def _has_ip_changes(self, endpoints, loadbalancer_crd):"},{"line_number":290,"context_line":"        link \u003d endpoints[\u0027metadata\u0027][\u0027selfLink\u0027]"},{"line_number":291,"context_line":"        endpoint_ip \u003d endpoints[\u0027subsets\u0027][\u0027addresses\u0027].get(\u0027ip\u0027)"},{"line_number":292,"context_line":"        endpoint_crd_ip \u003d loadbalancer_crd[\u0027spec\u0027].get(\u0027ip\u0027)"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"        if endpoint_crd_ip !\u003d endpoint_ip:"},{"line_number":295,"context_line":"            LOG.debug(\"LBaaS spec IP %(endpoint_crd_ip)s !\u003d\""},{"line_number":296,"context_line":"                      \" %(endpoint_ip)s for %(link)s\""},{"line_number":297,"context_line":"                      % {\u0027endpoint_crd_ip\u0027: endpoint_crd_ip,"},{"line_number":298,"context_line":"                         \u0027endpoint_ip\u0027: endpoint_ip,"},{"line_number":299,"context_line":"                         \u0027link\u0027: link})"},{"line_number":300,"context_line":"            return True"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"        return False"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"    def _has_pods(self, endpoints):"},{"line_number":305,"context_line":"        ep_subsets \u003d endpoints.get(\u0027subsets\u0027, [])"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_706a3681","line":302,"range":{"start_line":285,"start_character":0,"end_line":302,"end_character":20},"updated":"2020-08-20 11:50:20.000000000","message":"Seems like this operates on old format, but apparently it\u0027s not used anymore.","commit_id":"ebf99ca52793f7f0cd82f732bf30bc2eebb34066"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"14d8c366fcaec3ee4b141fd2bf06571f7d7ee0a9","unresolved":false,"context_lines":[{"line_number":282,"context_line":"        else:"},{"line_number":283,"context_line":"            self._update_crd_spec(loadbalancer_crd, endpoints)"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    def _has_lbaas_spec_changes(self, endpoints, loadbalancer_crd):"},{"line_number":286,"context_line":"        return (self._has_ip_changes(endpoints, loadbalancer_crd) or"},{"line_number":287,"context_line":"                utils.has_port_changes(endpoints, loadbalancer_crd))"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"    def _has_ip_changes(self, endpoints, loadbalancer_crd):"},{"line_number":290,"context_line":"        link \u003d endpoints[\u0027metadata\u0027][\u0027selfLink\u0027]"},{"line_number":291,"context_line":"        endpoint_ip \u003d endpoints[\u0027subsets\u0027][\u0027addresses\u0027].get(\u0027ip\u0027)"},{"line_number":292,"context_line":"        endpoint_crd_ip \u003d loadbalancer_crd[\u0027spec\u0027].get(\u0027ip\u0027)"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"        if endpoint_crd_ip !\u003d endpoint_ip:"},{"line_number":295,"context_line":"            LOG.debug(\"LBaaS spec IP %(endpoint_crd_ip)s !\u003d\""},{"line_number":296,"context_line":"                      \" %(endpoint_ip)s for %(link)s\""},{"line_number":297,"context_line":"                      % {\u0027endpoint_crd_ip\u0027: endpoint_crd_ip,"},{"line_number":298,"context_line":"                         \u0027endpoint_ip\u0027: endpoint_ip,"},{"line_number":299,"context_line":"                         \u0027link\u0027: link})"},{"line_number":300,"context_line":"            return True"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"        return False"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"    def _has_pods(self, endpoints):"},{"line_number":305,"context_line":"        ep_subsets \u003d endpoints.get(\u0027subsets\u0027, [])"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_5071f243","line":302,"range":{"start_line":285,"start_character":0,"end_line":302,"end_character":20},"in_reply_to":"9f560f44_706a3681","updated":"2020-08-20 12:05:48.000000000","message":"Indeed. I\u0027ll removed it.","commit_id":"ebf99ca52793f7f0cd82f732bf30bc2eebb34066"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"6a43f12a3727a48c625b5ed31c1b06891e14349d","unresolved":false,"context_lines":[{"line_number":321,"context_line":"                ip \u003d address.get(\u0027ip\u0027)"},{"line_number":322,"context_line":"                targetRef \u003d address.get(\u0027targetRef\u0027)"},{"line_number":323,"context_line":"                endpoint \u003d {"},{"line_number":324,"context_line":"                    \u0027addresses\u0027: [ip],"},{"line_number":325,"context_line":"                    \u0027conditions\u0027: {"},{"line_number":326,"context_line":"                        \u0027ready\u0027: True"},{"line_number":327,"context_line":"                    },"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_50b9f212","line":324,"range":{"start_line":324,"start_character":0,"end_line":324,"end_character":38},"updated":"2020-08-20 11:50:20.000000000","message":"That\u0027s an interesting change, for a single targetRef we might have multiple addresses.","commit_id":"ebf99ca52793f7f0cd82f732bf30bc2eebb34066"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"14d8c366fcaec3ee4b141fd2bf06571f7d7ee0a9","unresolved":false,"context_lines":[{"line_number":321,"context_line":"                ip \u003d address.get(\u0027ip\u0027)"},{"line_number":322,"context_line":"                targetRef \u003d address.get(\u0027targetRef\u0027)"},{"line_number":323,"context_line":"                endpoint \u003d {"},{"line_number":324,"context_line":"                    \u0027addresses\u0027: [ip],"},{"line_number":325,"context_line":"                    \u0027conditions\u0027: {"},{"line_number":326,"context_line":"                        \u0027ready\u0027: True"},{"line_number":327,"context_line":"                    },"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_b08fae21","line":324,"range":{"start_line":324,"start_character":0,"end_line":324,"end_character":38},"in_reply_to":"9f560f44_50b9f212","updated":"2020-08-20 12:05:48.000000000","message":"yup.","commit_id":"ebf99ca52793f7f0cd82f732bf30bc2eebb34066"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"adf43cdc89d022f92b5e784f1950ea2743738055","unresolved":false,"context_lines":[{"line_number":365,"context_line":""},{"line_number":366,"context_line":"        return loadbalancer_crd"},{"line_number":367,"context_line":""},{"line_number":368,"context_line":"    def _get_service_link(self, endpoints):"},{"line_number":369,"context_line":"        ep_link \u003d endpoints[\u0027metadata\u0027][\u0027selfLink\u0027]"},{"line_number":370,"context_line":"        link_parts \u003d ep_link.split(\u0027/\u0027)"},{"line_number":371,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9f560f44_ae745d37","side":"PARENT","line":368,"range":{"start_line":368,"start_character":0,"end_line":368,"end_character":43},"updated":"2020-08-21 10:29:32.000000000","message":"I don\u0027t see the call to this being removed in the PR. Was this a leftover from before?","commit_id":"fde2f27d0012fc0a10efeebba06e58187bf18542"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"bace14d17c04cdbc87dc9732c43083520eb61429","unresolved":false,"context_lines":[{"line_number":365,"context_line":""},{"line_number":366,"context_line":"        return loadbalancer_crd"},{"line_number":367,"context_line":""},{"line_number":368,"context_line":"    def _get_service_link(self, endpoints):"},{"line_number":369,"context_line":"        ep_link \u003d endpoints[\u0027metadata\u0027][\u0027selfLink\u0027]"},{"line_number":370,"context_line":"        link_parts \u003d ep_link.split(\u0027/\u0027)"},{"line_number":371,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9f560f44_8f2e9740","side":"PARENT","line":368,"range":{"start_line":368,"start_character":0,"end_line":368,"end_character":43},"in_reply_to":"9f560f44_ae745d37","updated":"2020-08-24 11:36:41.000000000","message":"Yes, it\u0027s a leftover.","commit_id":"fde2f27d0012fc0a10efeebba06e58187bf18542"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"adf43cdc89d022f92b5e784f1950ea2743738055","unresolved":false,"context_lines":[{"line_number":321,"context_line":"        namespace \u003d endpoints[\u0027metadata\u0027][\u0027namespace\u0027]"},{"line_number":322,"context_line":"        kubernetes \u003d clients.get_kubernetes_client()"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"        epslices \u003d self._convert_subsets_to_endpointslice(endpoints)"},{"line_number":325,"context_line":"        if not status:"},{"line_number":326,"context_line":"            status \u003d {}"},{"line_number":327,"context_line":"        if not spec:"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f560f44_ce94313a","line":324,"range":{"start_line":324,"start_character":19,"end_line":324,"end_character":68},"updated":"2020-08-21 10:29:32.000000000","message":"will this be needed once the endpoints are moved to endpoint slices? should we leave a note to remove this when that happens? same for update","commit_id":"fa6161109ca01eb2ac1d1b87e86d1258a42284eb"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"bace14d17c04cdbc87dc9732c43083520eb61429","unresolved":false,"context_lines":[{"line_number":321,"context_line":"        namespace \u003d endpoints[\u0027metadata\u0027][\u0027namespace\u0027]"},{"line_number":322,"context_line":"        kubernetes \u003d clients.get_kubernetes_client()"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"        epslices \u003d self._convert_subsets_to_endpointslice(endpoints)"},{"line_number":325,"context_line":"        if not status:"},{"line_number":326,"context_line":"            status \u003d {}"},{"line_number":327,"context_line":"        if not spec:"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f560f44_ef1e330a","line":324,"range":{"start_line":324,"start_character":19,"end_line":324,"end_character":68},"in_reply_to":"9f560f44_ce94313a","updated":"2020-08-24 11:36:41.000000000","message":"It won\u0027t be needed, I\u0027ll add the note.","commit_id":"fa6161109ca01eb2ac1d1b87e86d1258a42284eb"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"cc3ae004be20ee7228b0c48e513e5a8b99190acd","unresolved":false,"context_lines":[{"line_number":321,"context_line":"        namespace \u003d endpoints[\u0027metadata\u0027][\u0027namespace\u0027]"},{"line_number":322,"context_line":"        kubernetes \u003d clients.get_kubernetes_client()"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"        # TODO (maysams): Remove the convertion once we start handling"},{"line_number":325,"context_line":"        # Endpoint slices."},{"line_number":326,"context_line":"        epslices \u003d self._convert_subsets_to_endpointslice(endpoints)"},{"line_number":327,"context_line":"        if not status:"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f560f44_c17a2375","line":324,"updated":"2020-08-24 13:55:39.000000000","message":"pep8: H101: Use TODO(NAME)","commit_id":"c6c4f76453ee602fca9bf9d03333d5b75c0d64e5"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"cc3ae004be20ee7228b0c48e513e5a8b99190acd","unresolved":false,"context_lines":[{"line_number":357,"context_line":""},{"line_number":358,"context_line":"    def _update_crd_spec(self, loadbalancer_crd, endpoints):"},{"line_number":359,"context_line":"        kubernetes \u003d clients.get_kubernetes_client()"},{"line_number":360,"context_line":"        # TODO (maysams): Remove the convertion once we start handling"},{"line_number":361,"context_line":"        # Endpoint slices."},{"line_number":362,"context_line":"        epslices \u003d self._convert_subsets_to_endpointslice(endpoints)"},{"line_number":363,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f560f44_a17f2f64","line":360,"updated":"2020-08-24 13:55:39.000000000","message":"pep8: H101: Use TODO(NAME)","commit_id":"c6c4f76453ee602fca9bf9d03333d5b75c0d64e5"}]}
