)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"f22322fac2377a3b3790f00a8ab6e1ed26503886","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"8d3a0042_a596f3c1","updated":"2021-10-21 15:28:03.000000000","message":"Just a note - I think that we could create events on CNI side too, which actually could be pretty awesome.","commit_id":"eacea160b1b458c0af7f79d9c4d9975352a171f9"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"447854a6d57cd13ee29563510a675095d5ae3b54","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"318fe34b_ca4bb8e5","updated":"2021-11-30 16:08:23.000000000","message":"To me this is focusing too little on the most common set of errors - problems when requesting POST on ports from Neutron (e.g. quota issues) and timing out waiting for the pod to become ACTIVE. Now the problem is that I don\u0027t see an obvious way to achieve that. :/\n\nIt might be that at least getting Neutron errors from port pools might need to wait for locking work Maysa is trying to implement.","commit_id":"9084663b8021a7e8351c7b7980a44208cef20a60"},{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"8d17ed26281478a5e11ea5279afb2b0440d745fb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"77ce80ca_02298fc7","updated":"2021-11-22 05:46:16.000000000","message":"recheck","commit_id":"9084663b8021a7e8351c7b7980a44208cef20a60"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"5ddd011b661e2032b73d3ccfd63d6331eddd6b2e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"b62dd543_712086ed","updated":"2021-12-09 18:15:44.000000000","message":"Good, this now catches all the main places where failures can happen. I suggested one more and quite a bunch of improvements on wording, etc.","commit_id":"88bcfeb191b7b6e5982260b009123341493ad8f8"},{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"c88436cd17b2bf2f1cb7e856fbcf6ee9141d517e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"635f1fbd_4f4fc683","updated":"2021-12-06 05:55:10.000000000","message":"recheck","commit_id":"88bcfeb191b7b6e5982260b009123341493ad8f8"},{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"8d661611590f53988127fdb90a59cbbb5e33b5f9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"a1f24192_f4282f1c","updated":"2021-12-13 12:44:18.000000000","message":"recheck","commit_id":"472ac8762b2c0967ee2a724370ca54c1ffdc594b"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"56877881029274e2888753792efc9e484104823f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"e94343b7_813feaee","updated":"2021-12-14 13:21:19.000000000","message":"I\u0027m going to fix these in a follow-up patch.","commit_id":"4403c5b6990045d1f04dc102a2fb6df6b8b315da"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"2a1e018e82d07a8509284e19f82ed688f2763e63","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"1ebdd316_9a8b54c3","updated":"2021-12-14 17:05:54.000000000","message":"recheck","commit_id":"4403c5b6990045d1f04dc102a2fb6df6b8b315da"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"f72e95d7f3e01e92cf4ec20626d863f83e94bcc1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"9469f766_951bd140","updated":"2021-12-15 07:21:14.000000000","message":"recheck","commit_id":"4403c5b6990045d1f04dc102a2fb6df6b8b315da"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"15b0fafcea23064634597f2b2eb7b26bd9ce1475","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"ebb4c6a9_a3d1b747","updated":"2021-12-15 13:38:32.000000000","message":"recheck","commit_id":"4403c5b6990045d1f04dc102a2fb6df6b8b315da"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"c739adf8d811693b6bbca241544c126803ad4445","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"9e1bb78a_606f1ee1","updated":"2021-12-14 16:12:04.000000000","message":"recheck\n\nLooks like gate\u0027s fixed.","commit_id":"4403c5b6990045d1f04dc102a2fb6df6b8b315da"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"d8c12cd6b239bedd86279acec215ce22ed3017bf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"273d10e6_34bf101a","updated":"2021-12-15 10:16:51.000000000","message":"recheck\n\nUnrelated.","commit_id":"4403c5b6990045d1f04dc102a2fb6df6b8b315da"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"20d4c1166b25228f6e2974780351b848e29439e0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"f6d47239_cfed7ca7","updated":"2021-12-15 14:10:56.000000000","message":"A tiny fix for a corner case when referenced object is gone before we fetch it.","commit_id":"f8c0b736c1042d8b2a71d5212a26950563decf25"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"2129f392e0e4544e6235605cc8a1cbaec3c2d1aa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"83301171_1bcccd12","updated":"2021-12-15 19:45:49.000000000","message":"recheck\n\nLooks like Neutron failing to set port to ACTIVE.","commit_id":"f8c0b736c1042d8b2a71d5212a26950563decf25"}],"kuryr_kubernetes/cni/plugins/k8s_cni_registry.py":[{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"8f03766147e2b765eca021f8c249d1256418ab46","unresolved":true,"context_lines":[{"line_number":94,"context_line":"        def wait_for_active(kp_name):"},{"line_number":95,"context_line":"            return self.registry[kp_name][\u0027vifs\u0027]"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        pod_data \u003d {\u0027type\u0027: \u0027pods\u0027, \u0027name\u0027: params.args.K8S_POD_NAME,"},{"line_number":98,"context_line":"                    \u0027namespace\u0027: params.args.K8S_POD_NAMESPACE}"},{"line_number":99,"context_line":"        self.k8s.add_event(pod_data, \u0027CNIWaitingForVIFs\u0027,"},{"line_number":100,"context_line":"                           f\u0027Waiting for VIFs for {kp_name} to become active\u0027)"},{"line_number":101,"context_line":"        vifs \u003d wait_for_active(kp_name)"},{"line_number":102,"context_line":"        for vif in vifs.values():"},{"line_number":103,"context_line":"            if not vif.active:"}],"source_content_type":"text/x-python","patch_set":7,"id":"cebcfe44_ef52a4d4","line":100,"range":{"start_line":97,"start_character":0,"end_line":100,"end_character":78},"updated":"2021-12-08 14:01:11.000000000","message":"Maybe it\u0027s also good to notify that it timed out waiting for the VIFs to become active?","commit_id":"88bcfeb191b7b6e5982260b009123341493ad8f8"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"5ddd011b661e2032b73d3ccfd63d6331eddd6b2e","unresolved":true,"context_lines":[{"line_number":97,"context_line":"        pod_data \u003d {\u0027type\u0027: \u0027pods\u0027, \u0027name\u0027: params.args.K8S_POD_NAME,"},{"line_number":98,"context_line":"                    \u0027namespace\u0027: params.args.K8S_POD_NAMESPACE}"},{"line_number":99,"context_line":"        self.k8s.add_event(pod_data, \u0027CNIWaitingForVIFs\u0027,"},{"line_number":100,"context_line":"                           f\u0027Waiting for VIFs for {kp_name} to become active\u0027)"},{"line_number":101,"context_line":"        vifs \u003d wait_for_active(kp_name)"},{"line_number":102,"context_line":"        for vif in vifs.values():"},{"line_number":103,"context_line":"            if not vif.active:"}],"source_content_type":"text/x-python","patch_set":7,"id":"0e709368_ed60c535","line":100,"range":{"start_line":100,"start_character":41,"end_line":100,"end_character":45},"updated":"2021-12-09 18:15:44.000000000","message":"Maybe we should say Neutron ports directly to direct the blame…? ;)\n\nHow about:\n\n Waiting for Neutron ports of {kp_name} to become ACTIVE after binding.","commit_id":"88bcfeb191b7b6e5982260b009123341493ad8f8"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"5ddd011b661e2032b73d3ccfd63d6331eddd6b2e","unresolved":true,"context_lines":[{"line_number":94,"context_line":"        def wait_for_active(kp_name):"},{"line_number":95,"context_line":"            return self.registry[kp_name][\u0027vifs\u0027]"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        pod_data \u003d {\u0027type\u0027: \u0027pods\u0027, \u0027name\u0027: params.args.K8S_POD_NAME,"},{"line_number":98,"context_line":"                    \u0027namespace\u0027: params.args.K8S_POD_NAMESPACE}"},{"line_number":99,"context_line":"        self.k8s.add_event(pod_data, \u0027CNIWaitingForVIFs\u0027,"},{"line_number":100,"context_line":"                           f\u0027Waiting for VIFs for {kp_name} to become active\u0027)"},{"line_number":101,"context_line":"        vifs \u003d wait_for_active(kp_name)"},{"line_number":102,"context_line":"        for vif in vifs.values():"},{"line_number":103,"context_line":"            if not vif.active:"}],"source_content_type":"text/x-python","patch_set":7,"id":"313944d9_1977f0fc","line":100,"range":{"start_line":97,"start_character":0,"end_line":100,"end_character":78},"in_reply_to":"6ae08ea5_9d159351","updated":"2021-12-09 18:15:44.000000000","message":"It\u0027s not, you\u0027d need to do it in 104-105.","commit_id":"88bcfeb191b7b6e5982260b009123341493ad8f8"},{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"c9aed383df701dfe925c6f50f8ddd8e9de8099aa","unresolved":true,"context_lines":[{"line_number":94,"context_line":"        def wait_for_active(kp_name):"},{"line_number":95,"context_line":"            return self.registry[kp_name][\u0027vifs\u0027]"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        pod_data \u003d {\u0027type\u0027: \u0027pods\u0027, \u0027name\u0027: params.args.K8S_POD_NAME,"},{"line_number":98,"context_line":"                    \u0027namespace\u0027: params.args.K8S_POD_NAMESPACE}"},{"line_number":99,"context_line":"        self.k8s.add_event(pod_data, \u0027CNIWaitingForVIFs\u0027,"},{"line_number":100,"context_line":"                           f\u0027Waiting for VIFs for {kp_name} to become active\u0027)"},{"line_number":101,"context_line":"        vifs \u003d wait_for_active(kp_name)"},{"line_number":102,"context_line":"        for vif in vifs.values():"},{"line_number":103,"context_line":"            if not vif.active:"}],"source_content_type":"text/x-python","patch_set":7,"id":"6ae08ea5_9d159351","line":100,"range":{"start_line":97,"start_character":0,"end_line":100,"end_character":78},"in_reply_to":"cebcfe44_ef52a4d4","updated":"2021-12-09 08:18:57.000000000","message":"Yup. It is done on line 181.","commit_id":"88bcfeb191b7b6e5982260b009123341493ad8f8"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"5ddd011b661e2032b73d3ccfd63d6331eddd6b2e","unresolved":true,"context_lines":[{"line_number":181,"context_line":"            pod_data \u003d {\u0027type\u0027: \u0027pods\u0027, \u0027name\u0027: params.args.K8S_POD_NAME,"},{"line_number":182,"context_line":"                        \u0027namespace\u0027: params.args.K8S_POD_NAMESPACE}"},{"line_number":183,"context_line":"            self.k8s.add_event(pod_data, \u0027CNITimeoutKuryrPortRegistry\u0027,"},{"line_number":184,"context_line":"                               f\u0027Timed out waiting for KuryrPort {kp_name} to \u0027"},{"line_number":185,"context_line":"                               f\u0027appear in registry\u0027)"},{"line_number":186,"context_line":"            raise exceptions.ResourceNotReady(kp_name)"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"        for ifname, vif in vifs.items():"}],"source_content_type":"text/x-python","patch_set":7,"id":"662a9e53_8ec94782","line":185,"range":{"start_line":184,"start_character":31,"end_line":185,"end_character":52},"updated":"2021-12-09 18:15:44.000000000","message":"Again, it\u0027s probably good to direct the blame:\n\n Timed out waiting for Neutron ports to be created for {kp_name}. Check kuryr-controller logs.","commit_id":"88bcfeb191b7b6e5982260b009123341493ad8f8"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"56877881029274e2888753792efc9e484104823f","unresolved":true,"context_lines":[{"line_number":93,"context_line":"                        retry_on_result\u003dutils.any_vif_inactive)"},{"line_number":94,"context_line":"        def wait_for_active(kp_name):"},{"line_number":95,"context_line":"            return self.registry[kp_name][\u0027vifs\u0027]"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        data \u003d {\u0027metadata\u0027: {\u0027name\u0027: params.args.K8S_POD_NAME,"},{"line_number":98,"context_line":"                             \u0027namespace\u0027: params.args.K8S_POD_NAMESPACE}}"},{"line_number":99,"context_line":"        pod \u003d k_utils.get_referenced_object(data, \u0027Pod\u0027)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        try:"},{"line_number":102,"context_line":"            self.k8s.add_event(pod, \u0027CNIWaitingForVIFs\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"422c5478_d25a0471","line":99,"range":{"start_line":96,"start_character":0,"end_line":99,"end_character":56},"updated":"2021-12-14 13:21:19.000000000","message":"Ha, pretty neat.","commit_id":"4403c5b6990045d1f04dc102a2fb6df6b8b315da"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"56877881029274e2888753792efc9e484104823f","unresolved":true,"context_lines":[{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        try:"},{"line_number":102,"context_line":"            self.k8s.add_event(pod, \u0027CNIWaitingForVIFs\u0027,"},{"line_number":103,"context_line":"                               f\u0027 Waiting for Neutron ports of {kp_name} to \u0027"},{"line_number":104,"context_line":"                               f\u0027become ACTIVE after binding.\u0027)"},{"line_number":105,"context_line":"            vifs \u003d wait_for_active(kp_name)"},{"line_number":106,"context_line":"        except retrying.RetryError:"}],"source_content_type":"text/x-python","patch_set":10,"id":"d43dc4eb_902db17b","line":103,"range":{"start_line":103,"start_character":33,"end_line":103,"end_character":34},"updated":"2021-12-14 13:21:19.000000000","message":"Trailing whitespace?","commit_id":"4403c5b6990045d1f04dc102a2fb6df6b8b315da"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"56877881029274e2888753792efc9e484104823f","unresolved":true,"context_lines":[{"line_number":105,"context_line":"            vifs \u003d wait_for_active(kp_name)"},{"line_number":106,"context_line":"        except retrying.RetryError:"},{"line_number":107,"context_line":"            self.k8s.add_event(pod, \u0027CNITimedOutWaitingForVIFs\u0027,"},{"line_number":108,"context_line":"                               f\u0027 Time out on waiting for Neutron ports of \u0027"},{"line_number":109,"context_line":"                               f\u0027{kp_name} to become ACTIVE after binding.\u0027,"},{"line_number":110,"context_line":"                               \u0027Warning\u0027)"},{"line_number":111,"context_line":"            raise exceptions.CNINeutronPortActivationTimeout("}],"source_content_type":"text/x-python","patch_set":10,"id":"67ae24c3_51195b7b","line":108,"range":{"start_line":108,"start_character":33,"end_line":108,"end_character":38},"updated":"2021-12-14 13:21:19.000000000","message":"Timed? Without the leading space.","commit_id":"4403c5b6990045d1f04dc102a2fb6df6b8b315da"}],"kuryr_kubernetes/controller/drivers/vif_pool.py":[{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"8f03766147e2b765eca021f8c249d1256418ab46","unresolved":true,"context_lines":[{"line_number":472,"context_line":"                            try:"},{"line_number":473,"context_line":"                                os_net.delete_port(port.id)"},{"line_number":474,"context_line":"                            except os_exc.SDKException:"},{"line_number":475,"context_line":"                                LOG.debug(\"Problem deleting leftover port %s. \""},{"line_number":476,"context_line":"                                          \"Skipping.\", port.id)"},{"line_number":477,"context_line":"                    else:"},{"line_number":478,"context_line":"                        # delete port if they have no binding but belong to the"}],"source_content_type":"text/x-python","patch_set":7,"id":"5b73c04f_e7bae724","line":475,"updated":"2021-12-08 14:01:11.000000000","message":"This might be an important event to be created","commit_id":"88bcfeb191b7b6e5982260b009123341493ad8f8"},{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"c9aed383df701dfe925c6f50f8ddd8e9de8099aa","unresolved":true,"context_lines":[{"line_number":472,"context_line":"                            try:"},{"line_number":473,"context_line":"                                os_net.delete_port(port.id)"},{"line_number":474,"context_line":"                            except os_exc.SDKException:"},{"line_number":475,"context_line":"                                LOG.debug(\"Problem deleting leftover port %s. \""},{"line_number":476,"context_line":"                                          \"Skipping.\", port.id)"},{"line_number":477,"context_line":"                    else:"},{"line_number":478,"context_line":"                        # delete port if they have no binding but belong to the"}],"source_content_type":"text/x-python","patch_set":7,"id":"ad4a0bef_7565eefd","line":475,"in_reply_to":"5b73c04f_e7bae724","updated":"2021-12-09 08:18:57.000000000","message":"My understanding is, that leftover ports are not associated with no pods anymore, hence there is no corresponding object to be passed to the event. Perhaps we could think about some general events, which could be created for the cluster, instead of specific namespace and object (pod in this case).","commit_id":"88bcfeb191b7b6e5982260b009123341493ad8f8"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"5ddd011b661e2032b73d3ccfd63d6331eddd6b2e","unresolved":true,"context_lines":[{"line_number":472,"context_line":"                            try:"},{"line_number":473,"context_line":"                                os_net.delete_port(port.id)"},{"line_number":474,"context_line":"                            except os_exc.SDKException:"},{"line_number":475,"context_line":"                                LOG.debug(\"Problem deleting leftover port %s. \""},{"line_number":476,"context_line":"                                          \"Skipping.\", port.id)"},{"line_number":477,"context_line":"                    else:"},{"line_number":478,"context_line":"                        # delete port if they have no binding but belong to the"}],"source_content_type":"text/x-python","patch_set":7,"id":"f18113fc_173f1e8c","line":475,"in_reply_to":"ad4a0bef_7565eefd","updated":"2021-12-09 18:15:44.000000000","message":"Yeah, we don\u0027t have pod info here, so it\u0027s out of the scope of the patch.","commit_id":"88bcfeb191b7b6e5982260b009123341493ad8f8"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"8f03766147e2b765eca021f8c249d1256418ab46","unresolved":true,"context_lines":[{"line_number":479,"context_line":"                        # deployment networks, regardless of their tagging"},{"line_number":480,"context_line":"                        try:"},{"line_number":481,"context_line":"                            os_net.delete_port(port.id)"},{"line_number":482,"context_line":"                        except os_exc.SDKException:"},{"line_number":483,"context_line":"                            LOG.debug(\"Problem deleting leftover port %s. \""},{"line_number":484,"context_line":"                                      \"Skipping.\", port.id)"},{"line_number":485,"context_line":"                            continue"}],"source_content_type":"text/x-python","patch_set":7,"id":"ab29fa2f_a21b0e38","line":482,"updated":"2021-12-08 14:01:11.000000000","message":"ditto","commit_id":"88bcfeb191b7b6e5982260b009123341493ad8f8"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"5ddd011b661e2032b73d3ccfd63d6331eddd6b2e","unresolved":true,"context_lines":[{"line_number":479,"context_line":"                        # deployment networks, regardless of their tagging"},{"line_number":480,"context_line":"                        try:"},{"line_number":481,"context_line":"                            os_net.delete_port(port.id)"},{"line_number":482,"context_line":"                        except os_exc.SDKException:"},{"line_number":483,"context_line":"                            LOG.debug(\"Problem deleting leftover port %s. \""},{"line_number":484,"context_line":"                                      \"Skipping.\", port.id)"},{"line_number":485,"context_line":"                            continue"}],"source_content_type":"text/x-python","patch_set":7,"id":"dd00257d_8079820e","line":482,"in_reply_to":"ab29fa2f_a21b0e38","updated":"2021-12-09 18:15:44.000000000","message":"Same here.","commit_id":"88bcfeb191b7b6e5982260b009123341493ad8f8"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"8f03766147e2b765eca021f8c249d1256418ab46","unresolved":true,"context_lines":[{"line_number":500,"context_line":"                self._trigger_removed_nodes_ports_cleanup("},{"line_number":501,"context_line":"                    previous_ports_to_remove)"},{"line_number":502,"context_line":"            except Exception:"},{"line_number":503,"context_line":"                LOG.exception(\u0027Error while removing the ports associated to \u0027"},{"line_number":504,"context_line":"                              \u0027deleted nodes. It will be retried in %s \u0027"},{"line_number":505,"context_line":"                              \u0027seconds\u0027, NODE_PORTS_CLEAN_FREQUENCY)"},{"line_number":506,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"fce3db5f_b0ea9320","line":503,"updated":"2021-12-08 14:01:11.000000000","message":"ditto","commit_id":"88bcfeb191b7b6e5982260b009123341493ad8f8"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"5ddd011b661e2032b73d3ccfd63d6331eddd6b2e","unresolved":true,"context_lines":[{"line_number":500,"context_line":"                self._trigger_removed_nodes_ports_cleanup("},{"line_number":501,"context_line":"                    previous_ports_to_remove)"},{"line_number":502,"context_line":"            except Exception:"},{"line_number":503,"context_line":"                LOG.exception(\u0027Error while removing the ports associated to \u0027"},{"line_number":504,"context_line":"                              \u0027deleted nodes. It will be retried in %s \u0027"},{"line_number":505,"context_line":"                              \u0027seconds\u0027, NODE_PORTS_CLEAN_FREQUENCY)"},{"line_number":506,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"a658bdd0_eee4e343","line":503,"in_reply_to":"fce3db5f_b0ea9320","updated":"2021-12-09 18:15:44.000000000","message":"If node is gone, so are the pods that were running on it. ;) Out of scope of this patch.","commit_id":"88bcfeb191b7b6e5982260b009123341493ad8f8"}],"kuryr_kubernetes/controller/handlers/kuryrport.py":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"447854a6d57cd13ee29563510a675095d5ae3b54","unresolved":true,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        pod \u003d self._get_pod(kuryrport_crd)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        if all([v[\u0027vif\u0027].active for v in vifs.values()]):"},{"line_number":82,"context_line":"            self.k8s.add_event(pod, \u0027AllVifsActive\u0027,"},{"line_number":83,"context_line":"                               \u0027All VIFs for pod are active\u0027)"},{"line_number":84,"context_line":"            return"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        changed \u003d False"}],"source_content_type":"text/x-python","patch_set":2,"id":"ec61077b_40d3c9d3","line":83,"range":{"start_line":81,"start_character":0,"end_line":83,"end_character":61},"updated":"2021-11-30 16:08:23.000000000","message":"Won\u0027t this end up being called every time the pod is processed by the handler, i.e. every kuryr-controller restart? That\u0027s not really great, I guess I\u0027d just skip it?","commit_id":"9084663b8021a7e8351c7b7980a44208cef20a60"},{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"2cb3f786f5f9636a28eb677d5b7378754d14a669","unresolved":true,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        pod \u003d self._get_pod(kuryrport_crd)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        if all([v[\u0027vif\u0027].active for v in vifs.values()]):"},{"line_number":82,"context_line":"            self.k8s.add_event(pod, \u0027AllVifsActive\u0027,"},{"line_number":83,"context_line":"                               \u0027All VIFs for pod are active\u0027)"},{"line_number":84,"context_line":"            return"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        changed \u003d False"}],"source_content_type":"text/x-python","patch_set":2,"id":"76ccb08f_ba5e5ccb","line":83,"range":{"start_line":81,"start_character":0,"end_line":83,"end_character":61},"in_reply_to":"ec61077b_40d3c9d3","updated":"2021-12-02 11:32:36.000000000","message":"Right. Esp, that we agreed to not populate happy path scenario event messages.","commit_id":"9084663b8021a7e8351c7b7980a44208cef20a60"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"447854a6d57cd13ee29563510a675095d5ae3b54","unresolved":true,"context_lines":[{"line_number":95,"context_line":"                    driver_utils.update_port_pci_info(pod_node, data[\u0027vif\u0027])"},{"line_number":96,"context_line":"                if not data[\u0027vif\u0027].active:"},{"line_number":97,"context_line":"                    try:"},{"line_number":98,"context_line":"                        self._drv_vif_pool.activate_vif(data[\u0027vif\u0027], pod\u003dpod,"},{"line_number":99,"context_line":"                                                        retry_info\u003dretry_info)"},{"line_number":100,"context_line":"                        changed \u003d True"},{"line_number":101,"context_line":"                    except os_exc.ResourceNotFound:"},{"line_number":102,"context_line":"                        self.k8s.add_event(pod, \u0027ActivatePortFailed\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"0587658e_8a55b90f","line":99,"range":{"start_line":98,"start_character":0,"end_line":99,"end_character":78},"updated":"2021-11-30 16:08:23.000000000","message":"This is another common place we can see problems with - a port never becomes ACTIVE (either Neutron screwed up or CNI failed to bind it). We should be able to log an event if this is about to time out. We have PortNotReady raised from activate_vif if this happens, but we don\u0027t really know how many times it got raised at this point.\n\nMaybe we could use [1] to judge this, but it would be kinda reversed dependency to me. :/\n\n[1] https://github.com/openstack/kuryr-kubernetes/blob/6440cfea25d1c07982eb3c64c981e90b7633435f/kuryr_kubernetes/handlers/retry.py#L82-L84","commit_id":"9084663b8021a7e8351c7b7980a44208cef20a60"},{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"2cb3f786f5f9636a28eb677d5b7378754d14a669","unresolved":true,"context_lines":[{"line_number":95,"context_line":"                    driver_utils.update_port_pci_info(pod_node, data[\u0027vif\u0027])"},{"line_number":96,"context_line":"                if not data[\u0027vif\u0027].active:"},{"line_number":97,"context_line":"                    try:"},{"line_number":98,"context_line":"                        self._drv_vif_pool.activate_vif(data[\u0027vif\u0027], pod\u003dpod,"},{"line_number":99,"context_line":"                                                        retry_info\u003dretry_info)"},{"line_number":100,"context_line":"                        changed \u003d True"},{"line_number":101,"context_line":"                    except os_exc.ResourceNotFound:"},{"line_number":102,"context_line":"                        self.k8s.add_event(pod, \u0027ActivatePortFailed\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1cb72eac_2c52b0f0","line":99,"range":{"start_line":98,"start_character":0,"end_line":99,"end_character":78},"in_reply_to":"0587658e_8a55b90f","updated":"2021-12-02 11:32:36.000000000","message":"One of the place would be to alter VIF objects, to pass the information in case of time out. Although it\u0027s rather a hack I guess.","commit_id":"9084663b8021a7e8351c7b7980a44208cef20a60"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"447854a6d57cd13ee29563510a675095d5ae3b54","unresolved":true,"context_lines":[{"line_number":99,"context_line":"                                                        retry_info\u003dretry_info)"},{"line_number":100,"context_line":"                        changed \u003d True"},{"line_number":101,"context_line":"                    except os_exc.ResourceNotFound:"},{"line_number":102,"context_line":"                        self.k8s.add_event(pod, \u0027ActivatePortFailed\u0027,"},{"line_number":103,"context_line":"                                           \u0027Activating Neutron port has \u0027"},{"line_number":104,"context_line":"                                           \u0027faild, possibly deleted\u0027,"},{"line_number":105,"context_line":"                                           type_\u003d\u0027Warning\u0027)"},{"line_number":106,"context_line":"                        LOG.debug(\"Port not found, possibly already deleted. \""},{"line_number":107,"context_line":"                                  \"No need to activate it\")"},{"line_number":108,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":2,"id":"e9f0b2db_7527e74b","line":105,"range":{"start_line":102,"start_character":0,"end_line":105,"end_character":59},"updated":"2021-11-30 16:08:23.000000000","message":"This might be a bit scary for the user, on the other hand it\u0027ll be only added to pods already being deleted, so it\u0027s not that bad.","commit_id":"9084663b8021a7e8351c7b7980a44208cef20a60"},{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"2cb3f786f5f9636a28eb677d5b7378754d14a669","unresolved":true,"context_lines":[{"line_number":99,"context_line":"                                                        retry_info\u003dretry_info)"},{"line_number":100,"context_line":"                        changed \u003d True"},{"line_number":101,"context_line":"                    except os_exc.ResourceNotFound:"},{"line_number":102,"context_line":"                        self.k8s.add_event(pod, \u0027ActivatePortFailed\u0027,"},{"line_number":103,"context_line":"                                           \u0027Activating Neutron port has \u0027"},{"line_number":104,"context_line":"                                           \u0027faild, possibly deleted\u0027,"},{"line_number":105,"context_line":"                                           type_\u003d\u0027Warning\u0027)"},{"line_number":106,"context_line":"                        LOG.debug(\"Port not found, possibly already deleted. \""},{"line_number":107,"context_line":"                                  \"No need to activate it\")"},{"line_number":108,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":2,"id":"da7f8c4e_f0bab354","line":105,"range":{"start_line":102,"start_character":0,"end_line":105,"end_character":59},"in_reply_to":"e9f0b2db_7527e74b","updated":"2021-12-02 11:32:36.000000000","message":"So maybe I\u0027ll change that to type \u0027Info\u0027 and rephrase it to something like: \"Attempt for activating Neutron port has been omitted, since port is gone already\"?","commit_id":"9084663b8021a7e8351c7b7980a44208cef20a60"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"754f231a16887e2329775156e864ab64159904ae","unresolved":true,"context_lines":[{"line_number":112,"context_line":"                try:"},{"line_number":113,"context_line":"                    self._update_kuryrport_crd(kuryrport_crd, vifs)"},{"line_number":114,"context_line":"                except k_exc.K8sResourceNotFound as ex:"},{"line_number":115,"context_line":"                    self.k8s.add_event(pod, \u0027UpdateKuryrPortCRDFailed\u0027,"},{"line_number":116,"context_line":"                                       \u0027Activating Neutron port has failed\u0027,"},{"line_number":117,"context_line":"                                       type_\u003d\u0027Warning\u0027)"},{"line_number":118,"context_line":"                    LOG.exception(\"Failed to update KuryrPort CRD: %s\", ex)"},{"line_number":119,"context_line":"                    security_groups \u003d self._drv_sg.get_security_groups("},{"line_number":120,"context_line":"                        pod, project_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"dc28a013_69e5224e","line":117,"range":{"start_line":115,"start_character":1,"end_line":117,"end_character":55},"updated":"2021-11-26 21:57:38.000000000","message":"It looks the same event as ExceptionOnKPUpdate. It might be safer to include after release VIFs","commit_id":"9084663b8021a7e8351c7b7980a44208cef20a60"},{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"49f00ab4bcec2ac00ce47b80c7638fa134e0be27","unresolved":false,"context_lines":[{"line_number":112,"context_line":"                try:"},{"line_number":113,"context_line":"                    self._update_kuryrport_crd(kuryrport_crd, vifs)"},{"line_number":114,"context_line":"                except k_exc.K8sResourceNotFound as ex:"},{"line_number":115,"context_line":"                    self.k8s.add_event(pod, \u0027UpdateKuryrPortCRDFailed\u0027,"},{"line_number":116,"context_line":"                                       \u0027Activating Neutron port has failed\u0027,"},{"line_number":117,"context_line":"                                       type_\u003d\u0027Warning\u0027)"},{"line_number":118,"context_line":"                    LOG.exception(\"Failed to update KuryrPort CRD: %s\", ex)"},{"line_number":119,"context_line":"                    security_groups \u003d self._drv_sg.get_security_groups("},{"line_number":120,"context_line":"                        pod, project_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"e545bb6f_80474877","line":117,"range":{"start_line":115,"start_character":1,"end_line":117,"end_character":55},"in_reply_to":"dc28a013_69e5224e","updated":"2021-11-29 11:04:08.000000000","message":"Ack","commit_id":"9084663b8021a7e8351c7b7980a44208cef20a60"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"447854a6d57cd13ee29563510a675095d5ae3b54","unresolved":false,"context_lines":[{"line_number":112,"context_line":"                try:"},{"line_number":113,"context_line":"                    self._update_kuryrport_crd(kuryrport_crd, vifs)"},{"line_number":114,"context_line":"                except k_exc.K8sResourceNotFound as ex:"},{"line_number":115,"context_line":"                    self.k8s.add_event(pod, \u0027UpdateKuryrPortCRDFailed\u0027,"},{"line_number":116,"context_line":"                                       \u0027Activating Neutron port has failed\u0027,"},{"line_number":117,"context_line":"                                       type_\u003d\u0027Warning\u0027)"},{"line_number":118,"context_line":"                    LOG.exception(\"Failed to update KuryrPort CRD: %s\", ex)"},{"line_number":119,"context_line":"                    security_groups \u003d self._drv_sg.get_security_groups("},{"line_number":120,"context_line":"                        pod, project_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"41e36e76_760c693d","line":117,"range":{"start_line":115,"start_character":1,"end_line":117,"end_character":55},"in_reply_to":"e545bb6f_80474877","updated":"2021-11-30 16:08:23.000000000","message":"Right, so this can happen when port got deleted in the meanwhile, it\u0027s not really a problematic failure from users standpoint.","commit_id":"9084663b8021a7e8351c7b7980a44208cef20a60"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"447854a6d57cd13ee29563510a675095d5ae3b54","unresolved":true,"context_lines":[{"line_number":123,"context_line":"                                                       project_id,"},{"line_number":124,"context_line":"                                                       security_groups)"},{"line_number":125,"context_line":"                except k_exc.K8sClientException:"},{"line_number":126,"context_line":"                    raise k_exc.ResourceNotReady(pod[\u0027metadata\u0027][\u0027name\u0027])"},{"line_number":127,"context_line":"                try:"},{"line_number":128,"context_line":"                    self._record_pod_creation_metric(pod)"},{"line_number":129,"context_line":"                except Exception:"}],"source_content_type":"text/x-python","patch_set":2,"id":"7f0eb1fc_dcf0e6b5","line":126,"range":{"start_line":126,"start_character":0,"end_line":126,"end_character":73},"updated":"2021-11-30 16:08:23.000000000","message":"And if we\u0027re adding event for 115, then we should definitely add it here too. But I think I\u0027d lean into not doing it.","commit_id":"9084663b8021a7e8351c7b7980a44208cef20a60"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"447854a6d57cd13ee29563510a675095d5ae3b54","unresolved":true,"context_lines":[{"line_number":241,"context_line":"                               \u0027deletion\u0027, type_\u003d\u0027Warning\u0027)"},{"line_number":242,"context_line":"            return False"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"        # Request the default interface of pod"},{"line_number":245,"context_line":"        try:"},{"line_number":246,"context_line":"            main_vif \u003d self._drv_vif_pool.request_vif(pod, project_id,"},{"line_number":247,"context_line":"                                                      subnets,"},{"line_number":248,"context_line":"                                                      security_groups)"},{"line_number":249,"context_line":"        except os_exc.ResourceNotFound:"},{"line_number":250,"context_line":"            # NOTE(gryf): It might happen, that between getting security"},{"line_number":251,"context_line":"            # groups above and requesting VIF, network policy is deleted,"},{"line_number":252,"context_line":"            # hence we will get 404 from OpenStackSDK. Let\u0027s retry, to refresh"},{"line_number":253,"context_line":"            # information regarding SG."},{"line_number":254,"context_line":"            LOG.warning(\"SG not found during VIF requesting. Retrying.\")"},{"line_number":255,"context_line":"            raise k_exc.ResourceNotReady(pod[\u0027metadata\u0027][\u0027name\u0027])"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        if not main_vif:"},{"line_number":258,"context_line":"            pod_name \u003d pod[\u0027metadata\u0027][\u0027name\u0027]"},{"line_number":259,"context_line":"            self.k8s.add_event(pod, \u0027PodNotYetScheduled\u0027, \u0027Ignoring onpresent \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"f3a3c4f9_7ee1280a","line":256,"range":{"start_line":244,"start_character":0,"end_line":256,"end_character":0},"updated":"2021-11-30 16:08:23.000000000","message":"Okay, so this is probably where the most common bad things will happen, i.e. - port quota errors, error responses from Neutron, not enough IPs left in the subnet of a namespace etc. We should have a way to report that. I\u0027m not exactly sure if the errors are raised down to here, I guess we\u0027ll just do ResourceNotReady from VIF pool if it cannot be populated. I\u0027d be fine if we\u0027ll log the errors in the VIFPool driver too, but it\u0027s probably preferred here.","commit_id":"9084663b8021a7e8351c7b7980a44208cef20a60"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"754f231a16887e2329775156e864ab64159904ae","unresolved":true,"context_lines":[{"line_number":278,"context_line":"        try:"},{"line_number":279,"context_line":"            self._update_kuryrport_crd(kuryrport_crd, vifs)"},{"line_number":280,"context_line":"        except k_exc.K8sClientException as ex:"},{"line_number":281,"context_line":"            self.k8s.add_event(pod, \u0027ExceptionOnKPUpdate\u0027, \u0027There was k8s \u0027"},{"line_number":282,"context_line":"                               \u0027client exception on updateting corresponding \u0027"},{"line_number":283,"context_line":"                               \u0027KuryrPort CRD\u0027, type_\u003d\u0027Warning\u0027)"},{"line_number":284,"context_line":"            LOG.exception(\"Kubernetes Client Exception creating \""},{"line_number":285,"context_line":"                          \"KuryrPort CRD: %s\", ex)"},{"line_number":286,"context_line":"            for ifname, data in vifs.items():"}],"source_content_type":"text/x-python","patch_set":2,"id":"add64aa2_226d6427","line":283,"range":{"start_line":281,"start_character":12,"end_line":283,"end_character":64},"updated":"2021-11-26 21:57:38.000000000","message":"maybe this event could be moved to line 289 and also mention that VIFs were released?","commit_id":"9084663b8021a7e8351c7b7980a44208cef20a60"},{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"49f00ab4bcec2ac00ce47b80c7638fa134e0be27","unresolved":true,"context_lines":[{"line_number":278,"context_line":"        try:"},{"line_number":279,"context_line":"            self._update_kuryrport_crd(kuryrport_crd, vifs)"},{"line_number":280,"context_line":"        except k_exc.K8sClientException as ex:"},{"line_number":281,"context_line":"            self.k8s.add_event(pod, \u0027ExceptionOnKPUpdate\u0027, \u0027There was k8s \u0027"},{"line_number":282,"context_line":"                               \u0027client exception on updateting corresponding \u0027"},{"line_number":283,"context_line":"                               \u0027KuryrPort CRD\u0027, type_\u003d\u0027Warning\u0027)"},{"line_number":284,"context_line":"            LOG.exception(\"Kubernetes Client Exception creating \""},{"line_number":285,"context_line":"                          \"KuryrPort CRD: %s\", ex)"},{"line_number":286,"context_line":"            for ifname, data in vifs.items():"}],"source_content_type":"text/x-python","patch_set":2,"id":"89cd7703_836a640d","line":283,"range":{"start_line":281,"start_character":12,"end_line":283,"end_character":64},"in_reply_to":"add64aa2_226d6427","updated":"2021-11-29 11:04:08.000000000","message":"Right.","commit_id":"9084663b8021a7e8351c7b7980a44208cef20a60"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"5ddd011b661e2032b73d3ccfd63d6331eddd6b2e","unresolved":true,"context_lines":[{"line_number":92,"context_line":"                    driver_utils.update_port_pci_info(pod_node, data[\u0027vif\u0027])"},{"line_number":93,"context_line":"                if not data[\u0027vif\u0027].active:"},{"line_number":94,"context_line":"                    try:"},{"line_number":95,"context_line":"                        self._drv_vif_pool.activate_vif(data[\u0027vif\u0027], pod\u003dpod,"},{"line_number":96,"context_line":"                                                        retry_info\u003dretry_info)"},{"line_number":97,"context_line":"                        changed \u003d True"},{"line_number":98,"context_line":"                    except os_exc.ResourceNotFound:"},{"line_number":99,"context_line":"                        self.k8s.add_event(pod, \u0027ActivatePortFailed\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"cfd1197a_e19be946","line":96,"range":{"start_line":95,"start_character":0,"end_line":96,"end_character":78},"updated":"2021-12-09 18:15:44.000000000","message":"This raises ResourceNotReady when port is not ACTIVE. This is worth an event. You can even use retry_info to only create an event after a few retries - take a look at [1] to see how.\n\n[1] https://github.com/openstack/kuryr-kubernetes/blob/5dac72143b6f3a0b4c12a746af147bb3835f3197/kuryr_kubernetes/controller/drivers/nested_vlan_vif.py#L132","commit_id":"88bcfeb191b7b6e5982260b009123341493ad8f8"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"5ddd011b661e2032b73d3ccfd63d6331eddd6b2e","unresolved":true,"context_lines":[{"line_number":98,"context_line":"                    except os_exc.ResourceNotFound:"},{"line_number":99,"context_line":"                        self.k8s.add_event(pod, \u0027ActivatePortFailed\u0027,"},{"line_number":100,"context_line":"                                           \u0027Activating Neutron port has \u0027"},{"line_number":101,"context_line":"                                           \u0027faild, possibly deleted\u0027,"},{"line_number":102,"context_line":"                                           type_\u003d\u0027Warning\u0027)"},{"line_number":103,"context_line":"                        LOG.debug(\"Port not found, possibly already deleted. \""},{"line_number":104,"context_line":"                                  \"No need to activate it\")"}],"source_content_type":"text/x-python","patch_set":7,"id":"4f6e89e0_f35853e8","line":101,"range":{"start_line":101,"start_character":44,"end_line":101,"end_character":49},"updated":"2021-12-09 18:15:44.000000000","message":"failed","commit_id":"88bcfeb191b7b6e5982260b009123341493ad8f8"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"5ddd011b661e2032b73d3ccfd63d6331eddd6b2e","unresolved":true,"context_lines":[{"line_number":117,"context_line":"                                                       project_id,"},{"line_number":118,"context_line":"                                                       security_groups)"},{"line_number":119,"context_line":"                    self.k8s.add_event(pod, \u0027UpdateKuryrPortCRDFailed\u0027,"},{"line_number":120,"context_line":"                                       \u0027Activating Neutron port has failed\u0027,"},{"line_number":121,"context_line":"                                       type_\u003d\u0027Warning\u0027)"},{"line_number":122,"context_line":"                except k_exc.K8sClientException:"},{"line_number":123,"context_line":"                    raise k_exc.ResourceNotReady(pod[\u0027metadata\u0027][\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"44681204_e18c5ec6","line":120,"range":{"start_line":120,"start_character":40,"end_line":120,"end_character":74},"updated":"2021-12-09 18:15:44.000000000","message":"Uhm, this is probably not a problem, if KuryrPort got deleted we just clean up. I\u0027d move it to line 123 and phrase it a bit differently:\n\n Marking ports are ACTIVE in the KuryrPort failed: \u003cexception\u003e","commit_id":"88bcfeb191b7b6e5982260b009123341493ad8f8"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"5ddd011b661e2032b73d3ccfd63d6331eddd6b2e","unresolved":true,"context_lines":[{"line_number":120,"context_line":"                                       \u0027Activating Neutron port has failed\u0027,"},{"line_number":121,"context_line":"                                       type_\u003d\u0027Warning\u0027)"},{"line_number":122,"context_line":"                except k_exc.K8sClientException:"},{"line_number":123,"context_line":"                    raise k_exc.ResourceNotReady(pod[\u0027metadata\u0027][\u0027name\u0027])"},{"line_number":124,"context_line":"                try:"},{"line_number":125,"context_line":"                    self._record_pod_creation_metric(pod)"},{"line_number":126,"context_line":"                except Exception:"}],"source_content_type":"text/x-python","patch_set":7,"id":"4f56eb8d_d79edb70","line":123,"range":{"start_line":123,"start_character":32,"end_line":123,"end_character":48},"updated":"2021-12-09 18:15:44.000000000","message":"In case you wonder - we probably raise this on K8s API error to fight some transient issues it may have. With current mechanisms we have it\u0027s probably unnecessary, but it\u0027s a material for another patch.","commit_id":"88bcfeb191b7b6e5982260b009123341493ad8f8"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"5ddd011b661e2032b73d3ccfd63d6331eddd6b2e","unresolved":true,"context_lines":[{"line_number":161,"context_line":"            LOG.warning(\u0027Manually triggered KuryrPort %s removal. This \u0027"},{"line_number":162,"context_line":"                        \u0027action should be avoided, since KuryrPort CRDs are \u0027"},{"line_number":163,"context_line":"                        \u0027internal to Kuryr.\u0027, name)"},{"line_number":164,"context_line":"            self.k8s.add_event(pod, \u0027NoKuryrPort\u0027, \u0027Kuryr Port was not found \u0027"},{"line_number":165,"context_line":"                               \u0027during pod removal\u0027, type_\u003d\u0027Warning\u0027)"},{"line_number":166,"context_line":"            return"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"        project_id \u003d self._drv_project.get_project(pod)"}],"source_content_type":"text/x-python","patch_set":7,"id":"2a1bde04_b05812e0","line":165,"range":{"start_line":164,"start_character":52,"end_line":165,"end_character":50},"updated":"2021-12-09 18:15:44.000000000","message":"This is not true, this is a situation when KuryrPort got deleted manually, but Pod wasn\u0027t.","commit_id":"88bcfeb191b7b6e5982260b009123341493ad8f8"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"5ddd011b661e2032b73d3ccfd63d6331eddd6b2e","unresolved":true,"context_lines":[{"line_number":234,"context_line":"                        \"get a port as it will be deleted too. If the \""},{"line_number":235,"context_line":"                        \"default subnet driver is used, then you must \""},{"line_number":236,"context_line":"                        \"select an existing subnet to be used by Kuryr.\")"},{"line_number":237,"context_line":"            self.k8s.add_event(pod, \u0027NoKuryrPort\u0027, \u0027Skipping SG rules \u0027"},{"line_number":238,"context_line":"                               \u0027deletion\u0027, type_\u003d\u0027Warning\u0027)"},{"line_number":239,"context_line":"            return False"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"        # Request the default interface of pod"}],"source_content_type":"text/x-python","patch_set":7,"id":"53168d99_bb7d14da","line":238,"range":{"start_line":237,"start_character":52,"end_line":238,"end_character":40},"updated":"2021-12-09 18:15:44.000000000","message":"This seems not true…?","commit_id":"88bcfeb191b7b6e5982260b009123341493ad8f8"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"5ddd011b661e2032b73d3ccfd63d6331eddd6b2e","unresolved":true,"context_lines":[{"line_number":253,"context_line":""},{"line_number":254,"context_line":"        if not main_vif:"},{"line_number":255,"context_line":"            pod_name \u003d pod[\u0027metadata\u0027][\u0027name\u0027]"},{"line_number":256,"context_line":"            self.k8s.add_event(pod, \u0027PodNotYetScheduled\u0027, \u0027Ignoring onpresent \u0027"},{"line_number":257,"context_line":"                               \u0027event, since pod not being scheduled yet.\u0027,"},{"line_number":258,"context_line":"                               type_\u003d\u0027Warning\u0027)"},{"line_number":259,"context_line":"            LOG.warning(\"Ignoring event due to pod %s not being \""},{"line_number":260,"context_line":"                        \"scheduled yet.\", pod_name)"},{"line_number":261,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":7,"id":"7713e906_94ba8c23","line":258,"range":{"start_line":256,"start_character":0,"end_line":258,"end_character":47},"updated":"2021-12-09 18:15:44.000000000","message":"I don\u0027t really understand why this codepath means that pod wasn\u0027t scheduled… Maybe it\u0027s better to skip this event.","commit_id":"88bcfeb191b7b6e5982260b009123341493ad8f8"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"5ddd011b661e2032b73d3ccfd63d6331eddd6b2e","unresolved":true,"context_lines":[{"line_number":282,"context_line":"                                               project_id,"},{"line_number":283,"context_line":"                                               security_groups)"},{"line_number":284,"context_line":"            self.k8s.add_event(pod, \u0027ExceptionOnKPUpdate\u0027, \u0027There was k8s \u0027"},{"line_number":285,"context_line":"                               \u0027client exception on updateting corresponding \u0027"},{"line_number":286,"context_line":"                               \u0027KuryrPort CRD\u0027, type_\u003d\u0027Warning\u0027)"},{"line_number":287,"context_line":"        return True"},{"line_number":288,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"24933d55_05c06ead","line":285,"range":{"start_line":285,"start_character":52,"end_line":285,"end_character":62},"updated":"2021-12-09 18:15:44.000000000","message":"updating\n\nMaybe worth to add the exception too.","commit_id":"88bcfeb191b7b6e5982260b009123341493ad8f8"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"5ddd011b661e2032b73d3ccfd63d6331eddd6b2e","unresolved":true,"context_lines":[{"line_number":325,"context_line":"                                f\"/{namespace}/pods/{name}\")"},{"line_number":326,"context_line":"        except k_exc.K8sResourceNotFound as ex:"},{"line_number":327,"context_line":"            self.k8s.add_event(kuryrport_crd,"},{"line_number":328,"context_line":"                               \u0027Failed to get corresponding pod:\u0027,"},{"line_number":329,"context_line":"                               type_\u003d\u0027Warning\u0027)"},{"line_number":330,"context_line":"            LOG.exception(\"Failed to get pod: %s\", ex)"},{"line_number":331,"context_line":"            raise"}],"source_content_type":"text/x-python","patch_set":7,"id":"16bb1d2e_9a8a93c7","line":328,"range":{"start_line":328,"start_character":31,"end_line":328,"end_character":66},"updated":"2021-12-09 18:15:44.000000000","message":"Worth to add the exception.","commit_id":"88bcfeb191b7b6e5982260b009123341493ad8f8"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"56877881029274e2888753792efc9e484104823f","unresolved":true,"context_lines":[{"line_number":126,"context_line":"                                                       project_id,"},{"line_number":127,"context_line":"                                                       security_groups)"},{"line_number":128,"context_line":"                    self.k8s.add_event(pod, \u0027UpdateKuryrPortCRDFailed\u0027,"},{"line_number":129,"context_line":"                                       f\u0027Marking ports are ACTIVE in the \u0027"},{"line_number":130,"context_line":"                                       f\u0027KuryrPort failed: {ex}\u0027, \u0027Warning\u0027)"},{"line_number":131,"context_line":"                except k_exc.K8sClientException:"},{"line_number":132,"context_line":"                    raise k_exc.ResourceNotReady(pod[\u0027metadata\u0027][\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"648d4d2f_4ccf9516","line":129,"range":{"start_line":129,"start_character":55,"end_line":129,"end_character":58},"updated":"2021-12-14 13:21:19.000000000","message":"as","commit_id":"4403c5b6990045d1f04dc102a2fb6df6b8b315da"}],"kuryr_kubernetes/controller/handlers/vif.py":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"447854a6d57cd13ee29563510a675095d5ae3b54","unresolved":true,"context_lines":[{"line_number":115,"context_line":"                return"},{"line_number":116,"context_line":"            except k_exc.K8sClientException as ex:"},{"line_number":117,"context_line":"                self.k8s.add_event(pod, \u0027FailedAddingKuryrPortCRD\u0027,"},{"line_number":118,"context_line":"                                   \u0027Adding corresponding KuryrPort CRD has \u0027"},{"line_number":119,"context_line":"                                   \u0027failed\u0027, type_\u003d\u0027Warning\u0027)"},{"line_number":120,"context_line":"                LOG.exception(\"Kubernetes Client Exception creating \""},{"line_number":121,"context_line":"                              \"KuryrPort CRD: %s\", ex)"}],"source_content_type":"text/x-python","patch_set":2,"id":"543e23c2_a422ffad","line":118,"range":{"start_line":118,"start_character":36,"end_line":118,"end_character":42},"updated":"2021-11-30 16:08:23.000000000","message":"It\u0027s more of a Creating to me. Same for the ID of the event.","commit_id":"9084663b8021a7e8351c7b7980a44208cef20a60"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"447854a6d57cd13ee29563510a675095d5ae3b54","unresolved":true,"context_lines":[{"line_number":147,"context_line":"            except k_exc.K8sResourceNotFound:"},{"line_number":148,"context_line":"                self.k8s.add_event(pod, \u0027KuryrPortCRDAnnotationFailed\u0027,"},{"line_number":149,"context_line":"                                   \"Cannot annotate corresponding KuryrPort \""},{"line_number":150,"context_line":"                                   \"CRD since it doesn\u0027t exists.\","},{"line_number":151,"context_line":"                                   type_\u003d\u0027Warning\u0027)"},{"line_number":152,"context_line":"                LOG.error(\u0027Cannot annotate existing KuryrPort %s.\u0027,"},{"line_number":153,"context_line":"                          kp[\u0027metadata\u0027][\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"d189effb_dd92f341","line":150,"range":{"start_line":150,"start_character":57,"end_line":150,"end_character":63},"updated":"2021-11-30 16:08:23.000000000","message":"exist","commit_id":"9084663b8021a7e8351c7b7980a44208cef20a60"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"447854a6d57cd13ee29563510a675095d5ae3b54","unresolved":true,"context_lines":[{"line_number":164,"context_line":"                                        crd\u003dpod[\"metadata\"][\"name\"]))"},{"line_number":165,"context_line":"            except k_exc.K8sResourceNotFound:"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"                self.k8s.add_event(pod, \u0027KuryrPortCRDDoesntExists\u0027,"},{"line_number":168,"context_line":"                                   \"Failed removing corresponding KuryrPort \""},{"line_number":169,"context_line":"                                   \"CRD, it doesn\u0027t exists\", type_\u003d\u0027Warning\u0027)"},{"line_number":170,"context_line":"                self.k8s.remove_finalizer(pod, constants.POD_FINALIZER)"}],"source_content_type":"text/x-python","patch_set":2,"id":"65db07b0_22fc4f9b","line":167,"range":{"start_line":167,"start_character":59,"end_line":167,"end_character":65},"updated":"2021-11-30 16:08:23.000000000","message":"Exist","commit_id":"9084663b8021a7e8351c7b7980a44208cef20a60"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"447854a6d57cd13ee29563510a675095d5ae3b54","unresolved":true,"context_lines":[{"line_number":166,"context_line":""},{"line_number":167,"context_line":"                self.k8s.add_event(pod, \u0027KuryrPortCRDDoesntExists\u0027,"},{"line_number":168,"context_line":"                                   \"Failed removing corresponding KuryrPort \""},{"line_number":169,"context_line":"                                   \"CRD, it doesn\u0027t exists\", type_\u003d\u0027Warning\u0027)"},{"line_number":170,"context_line":"                self.k8s.remove_finalizer(pod, constants.POD_FINALIZER)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"            except k_exc.K8sClientException:"}],"source_content_type":"text/x-python","patch_set":2,"id":"53d0a38e_c7151e11","line":169,"range":{"start_line":169,"start_character":52,"end_line":169,"end_character":58},"updated":"2021-11-30 16:08:23.000000000","message":"exist","commit_id":"9084663b8021a7e8351c7b7980a44208cef20a60"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"5ddd011b661e2032b73d3ccfd63d6331eddd6b2e","unresolved":true,"context_lines":[{"line_number":94,"context_line":"                # before we got here."},{"line_number":95,"context_line":"                return"},{"line_number":96,"context_line":"        except k_exc.K8sClientException as ex:"},{"line_number":97,"context_line":"            self.k8s.add_event(pod, \u0027FailedToAddFinalizerToPod\u0027,"},{"line_number":98,"context_line":"                               \u0027Adding finalizer to pod has failed\u0027,"},{"line_number":99,"context_line":"                               type_\u003d\u0027Warning\u0027)"},{"line_number":100,"context_line":"            LOG.exception(\"Failed to add finalizer to pod object: %s\", ex)"},{"line_number":101,"context_line":"            raise"},{"line_number":102,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5fa581b3_62e80f0e","line":99,"range":{"start_line":97,"start_character":0,"end_line":99,"end_character":47},"updated":"2021-12-09 18:15:44.000000000","message":"Should we include exception…? I do that in LB patch, looks fairly okay.","commit_id":"88bcfeb191b7b6e5982260b009123341493ad8f8"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"5ddd011b661e2032b73d3ccfd63d6331eddd6b2e","unresolved":true,"context_lines":[{"line_number":114,"context_line":"                            pod_name)"},{"line_number":115,"context_line":"                return"},{"line_number":116,"context_line":"            except k_exc.K8sClientException as ex:"},{"line_number":117,"context_line":"                self.k8s.add_event(pod, \u0027FailedToCreateKuryrPortCRD\u0027,"},{"line_number":118,"context_line":"                                   \u0027Creating corresponding KuryrPort CRD has \u0027"},{"line_number":119,"context_line":"                                   \u0027failed\u0027, type_\u003d\u0027Warning\u0027)"},{"line_number":120,"context_line":"                LOG.exception(\"Kubernetes Client ExcepToCreatetion creating \""},{"line_number":121,"context_line":"                              \"KuryrPort CRD: %s\", ex)"},{"line_number":122,"context_line":"                raise k_exc.ResourceNotReady(pod)"}],"source_content_type":"text/x-python","patch_set":7,"id":"aaf549a0_4437b482","line":119,"range":{"start_line":117,"start_character":0,"end_line":119,"end_character":61},"updated":"2021-12-09 18:15:44.000000000","message":"ditto","commit_id":"88bcfeb191b7b6e5982260b009123341493ad8f8"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"5ddd011b661e2032b73d3ccfd63d6331eddd6b2e","unresolved":true,"context_lines":[{"line_number":117,"context_line":"                self.k8s.add_event(pod, \u0027FailedToCreateKuryrPortCRD\u0027,"},{"line_number":118,"context_line":"                                   \u0027Creating corresponding KuryrPort CRD has \u0027"},{"line_number":119,"context_line":"                                   \u0027failed\u0027, type_\u003d\u0027Warning\u0027)"},{"line_number":120,"context_line":"                LOG.exception(\"Kubernetes Client ExcepToCreatetion creating \""},{"line_number":121,"context_line":"                              \"KuryrPort CRD: %s\", ex)"},{"line_number":122,"context_line":"                raise k_exc.ResourceNotReady(pod)"},{"line_number":123,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"81e2897f_d92ae82b","line":120,"range":{"start_line":120,"start_character":49,"end_line":120,"end_character":66},"updated":"2021-12-09 18:15:44.000000000","message":"Something\u0027s wrong.","commit_id":"88bcfeb191b7b6e5982260b009123341493ad8f8"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"5ddd011b661e2032b73d3ccfd63d6331eddd6b2e","unresolved":true,"context_lines":[{"line_number":131,"context_line":"                self.k8s.remove_finalizer(pod, constants.POD_FINALIZER)"},{"line_number":132,"context_line":"            except k_exc.K8sClientException as ex:"},{"line_number":133,"context_line":"                self.k8s.add_event(pod, \u0027FailedRemovingFinalizerFromPod\u0027,"},{"line_number":134,"context_line":"                                   \u0027Removing finalizer form pod has failed\u0027,"},{"line_number":135,"context_line":"                                   type_\u003d\u0027Warning\u0027)"},{"line_number":136,"context_line":"                LOG.exception(\u0027Failed to remove finalizer from pod: %s\u0027, ex)"},{"line_number":137,"context_line":"                raise"}],"source_content_type":"text/x-python","patch_set":7,"id":"01d31ca4_57ef9da4","line":134,"range":{"start_line":134,"start_character":55,"end_line":134,"end_character":59},"updated":"2021-12-09 18:15:44.000000000","message":"from\n\nAnd include exception text?","commit_id":"88bcfeb191b7b6e5982260b009123341493ad8f8"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"5ddd011b661e2032b73d3ccfd63d6331eddd6b2e","unresolved":true,"context_lines":[{"line_number":154,"context_line":"                self.k8s.remove_finalizer(pod, constants.POD_FINALIZER)"},{"line_number":155,"context_line":"            except k_exc.K8sClientException:"},{"line_number":156,"context_line":"                self.k8s.add_event(pod, \u0027FailedRemovingPodFinalzier\u0027,"},{"line_number":157,"context_line":"                                   \u0027Failed removing finalizer from pod\u0027,"},{"line_number":158,"context_line":"                                   type_\u003d\u0027Warning\u0027)"},{"line_number":159,"context_line":"                raise k_exc.ResourceNotReady(pod[\u0027metadata\u0027][\u0027name\u0027])"},{"line_number":160,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":7,"id":"2afad898_539fea4a","line":157,"range":{"start_line":157,"start_character":52,"end_line":157,"end_character":61},"updated":"2021-12-09 18:15:44.000000000","message":"Exception text?","commit_id":"88bcfeb191b7b6e5982260b009123341493ad8f8"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"5ddd011b661e2032b73d3ccfd63d6331eddd6b2e","unresolved":true,"context_lines":[{"line_number":164,"context_line":"                                        crd\u003dpod[\"metadata\"][\"name\"]))"},{"line_number":165,"context_line":"            except k_exc.K8sResourceNotFound:"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"                self.k8s.add_event(pod, \u0027KuryrPortCRDDoesntExist\u0027,"},{"line_number":168,"context_line":"                                   \"Failed removing corresponding KuryrPort \""},{"line_number":169,"context_line":"                                   \"CRD, it doesn\u0027t exist.\", type_\u003d\u0027Warning\u0027)"},{"line_number":170,"context_line":"                self.k8s.remove_finalizer(pod, constants.POD_FINALIZER)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"            except k_exc.K8sClientException:"}],"source_content_type":"text/x-python","patch_set":7,"id":"c00ee9a4_901c621f","line":169,"range":{"start_line":167,"start_character":0,"end_line":169,"end_character":77},"updated":"2021-12-09 18:15:44.000000000","message":"I think this one can be omitted. We\u0027re in the process of deleting, but someone deleted KuryrPort forcefully, so most likely the pod is gone too.","commit_id":"88bcfeb191b7b6e5982260b009123341493ad8f8"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"5ddd011b661e2032b73d3ccfd63d6331eddd6b2e","unresolved":true,"context_lines":[{"line_number":170,"context_line":"                self.k8s.remove_finalizer(pod, constants.POD_FINALIZER)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"            except k_exc.K8sClientException:"},{"line_number":173,"context_line":"                self.k8s.add_event(pod, \u0027FailedRemovingKuryrPortCRD\u0027,"},{"line_number":174,"context_line":"                                   \u0027Failed removing corresponding KuryrPort \u0027"},{"line_number":175,"context_line":"                                   \u0027CRD\u0027, type_\u003d\u0027Warning\u0027)"},{"line_number":176,"context_line":"                LOG.exception(\"Could not remove KuryrPort CRD for pod %s.\","},{"line_number":177,"context_line":"                              pod[\u0027metadata\u0027][\u0027name\u0027])"},{"line_number":178,"context_line":"                raise k_exc.ResourceNotReady(pod[\u0027metadata\u0027][\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"2f8d5daa_ee80d3a8","line":175,"range":{"start_line":173,"start_character":0,"end_line":175,"end_character":58},"updated":"2021-12-09 18:15:44.000000000","message":"Exception text?","commit_id":"88bcfeb191b7b6e5982260b009123341493ad8f8"}],"kuryr_kubernetes/k8s_client.py":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"5ddd011b661e2032b73d3ccfd63d6331eddd6b2e","unresolved":true,"context_lines":[{"line_number":455,"context_line":"            return {}"},{"line_number":456,"context_line":""},{"line_number":457,"context_line":"        if \u0027apiVersion\u0027 not in resource:"},{"line_number":458,"context_line":"            # in case there is no valid resource, just use mandatory fields:"},{"line_number":459,"context_line":"            # - type (i.e. pods)"},{"line_number":460,"context_line":"            # - namespace"},{"line_number":461,"context_line":"            # - name"},{"line_number":462,"context_line":"            # to get it from kubernetes."},{"line_number":463,"context_line":"            url \u003d f\u0027{constants.K8S_API_BASE}\u0027"},{"line_number":464,"context_line":"            if \u0027namespace\u0027 in resource:"},{"line_number":465,"context_line":"                url \u003d f\u0027{url}/namespaces/{resource[\"namespace\"]}\u0027"},{"line_number":466,"context_line":"            url \u003d f\u0027{url}/{resource[\"type\"]}/{resource[\"name\"]}\u0027"},{"line_number":467,"context_line":"            resource \u003d self.get(url)"},{"line_number":468,"context_line":""},{"line_number":469,"context_line":"        involved_object \u003d {\u0027apiVersion\u0027: resource[\u0027apiVersion\u0027],"},{"line_number":470,"context_line":"                           \u0027kind\u0027: resource[\u0027kind\u0027],"}],"source_content_type":"text/x-python","patch_set":7,"id":"1b7da1a1_6ca76344","line":467,"range":{"start_line":458,"start_character":0,"end_line":467,"end_character":36},"updated":"2021-12-09 18:15:44.000000000","message":"Okay, handy.","commit_id":"88bcfeb191b7b6e5982260b009123341493ad8f8"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"56877881029274e2888753792efc9e484104823f","unresolved":true,"context_lines":[{"line_number":451,"context_line":""},{"line_number":452,"context_line":"    def add_event(self, resource, reason, message, type_\u003d\u0027Normal\u0027):"},{"line_number":453,"context_line":"        \"\"\"Create an Event object for the provided resource.\"\"\""},{"line_number":454,"context_line":"        if not self.are_events_enabled:"},{"line_number":455,"context_line":"            return {}"},{"line_number":456,"context_line":""},{"line_number":457,"context_line":"        if not resource:"},{"line_number":458,"context_line":"            return {}"},{"line_number":459,"context_line":""},{"line_number":460,"context_line":"        involved_object \u003d {\u0027apiVersion\u0027: resource[\u0027apiVersion\u0027],"},{"line_number":461,"context_line":"                           \u0027kind\u0027: resource[\u0027kind\u0027],"}],"source_content_type":"text/x-python","patch_set":10,"id":"a0acd939_d4581fb5","line":458,"range":{"start_line":454,"start_character":0,"end_line":458,"end_character":21},"updated":"2021-12-14 13:21:19.000000000","message":"You could probably combine the two, I guess it\u0027s a matter of preference.","commit_id":"4403c5b6990045d1f04dc102a2fb6df6b8b315da"}],"kuryr_kubernetes/utils.py":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"56877881029274e2888753792efc9e484104823f","unresolved":true,"context_lines":[{"line_number":674,"context_line":"    \"\"\""},{"line_number":675,"context_line":"    for ref in obj[\u0027metadata\u0027].get(\u0027ownerReferences\u0027, []):"},{"line_number":676,"context_line":"        try:"},{"line_number":677,"context_line":"            return {\u0027kind\u0027: kind,"},{"line_number":678,"context_line":"                    \u0027apiVersion\u0027: ref[\u0027apiVersion\u0027],"},{"line_number":679,"context_line":"                    \u0027metadata\u0027: {\u0027namespace\u0027: obj[\u0027metadata\u0027][\u0027namespace\u0027],"},{"line_number":680,"context_line":"                                 \u0027name\u0027: ref[\u0027name\u0027],"},{"line_number":681,"context_line":"                                 \u0027uid\u0027: ref[\u0027uid\u0027]}}"},{"line_number":682,"context_line":"        except KeyError:"},{"line_number":683,"context_line":"            LOG.debug(\"Not all needed keys was found in ownerReferences \""},{"line_number":684,"context_line":"                      \"list: %s\", ref)"}],"source_content_type":"text/x-python","patch_set":10,"id":"4435d320_7c64ce52","line":681,"range":{"start_line":677,"start_character":0,"end_line":681,"end_character":52},"updated":"2021-12-14 13:21:19.000000000","message":"User can modify ownerReferences on his own (yes, pretty unlikely), so we should probably look it up using provided kind.","commit_id":"4403c5b6990045d1f04dc102a2fb6df6b8b315da"}]}
