)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14352,"name":"Antoni Segura Puimedon","email":"celebdor@gmail.com","username":"toni"},"change_message_id":"d6144dbd21ecfa63d661216b554c7ae4f44a034e","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Seems like there\u0027s a race condition or bug in K8s that on DELETE events"},{"line_number":10,"context_line":"we can end up with annotated pod that doesn\u0027t have `status.hostIP` field"},{"line_number":11,"context_line":"set. This is problematic for NestedVIFPool driver that used it as one of"},{"line_number":12,"context_line":"the pool key elements."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"This patch solves that by looking up host IP through Neutron and trunks"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3fa7e38b_0430799e","line":11,"range":{"start_line":11,"start_character":5,"end_line":11,"end_character":50},"updated":"2019-10-17 10:14:35.000000000","message":"\"This is problematic for NestedVifPool driver pod removal as it used status.hostIP as one of the pool key components\"","commit_id":"e888cb262cb6b82aa21317c5135a2a03e72e8c01"}],"kuryr_kubernetes/controller/drivers/vif_pool.py":[{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"9f0d0f4fa68a673be32bba6775a9c96f186a8f8b","unresolved":false,"context_lines":[{"line_number":691,"context_line":""},{"line_number":692,"context_line":"    def _get_parent_port_id(self, vif):"},{"line_number":693,"context_line":"        neutron \u003d clients.get_neutron_client()"},{"line_number":694,"context_line":"        trunks \u003d neutron.list_trunks("},{"line_number":695,"context_line":"            tags\u003dconfig.CONF.neutron_defaults.resource_tags)"},{"line_number":696,"context_line":"        for trunk in trunks[\u0027trunks\u0027]:"},{"line_number":697,"context_line":"            for sp in trunk[\u0027sub_ports\u0027]:"},{"line_number":698,"context_line":"                if sp[\u0027port_id\u0027] \u003d\u003d vif.id:"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_12a426a5","line":695,"range":{"start_line":694,"start_character":0,"end_line":695,"end_character":60},"updated":"2019-10-16 15:17:42.000000000","message":"what if tags are not configured?","commit_id":"e888cb262cb6b82aa21317c5135a2a03e72e8c01"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"ade76d79619de2af8067dbf8631ee9a87a346756","unresolved":false,"context_lines":[{"line_number":691,"context_line":""},{"line_number":692,"context_line":"    def _get_parent_port_id(self, vif):"},{"line_number":693,"context_line":"        neutron \u003d clients.get_neutron_client()"},{"line_number":694,"context_line":"        trunks \u003d neutron.list_trunks("},{"line_number":695,"context_line":"            tags\u003dconfig.CONF.neutron_defaults.resource_tags)"},{"line_number":696,"context_line":"        for trunk in trunks[\u0027trunks\u0027]:"},{"line_number":697,"context_line":"            for sp in trunk[\u0027sub_ports\u0027]:"},{"line_number":698,"context_line":"                if sp[\u0027port_id\u0027] \u003d\u003d vif.id:"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_55afe87b","line":695,"range":{"start_line":694,"start_character":0,"end_line":695,"end_character":60},"in_reply_to":"3fa7e38b_12a426a5","updated":"2019-10-16 15:53:00.000000000","message":"Done","commit_id":"e888cb262cb6b82aa21317c5135a2a03e72e8c01"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"9f0d0f4fa68a673be32bba6775a9c96f186a8f8b","unresolved":false,"context_lines":[{"line_number":703,"context_line":"    def release_vif(self, pod, vif, project_id, security_groups):"},{"line_number":704,"context_line":"        host_addr \u003d None"},{"line_number":705,"context_line":"        try:"},{"line_number":706,"context_line":"            self._get_host_addr(pod)"},{"line_number":707,"context_line":"        except KeyError:"},{"line_number":708,"context_line":"            name \u003d pod[\u0027metadata\u0027][\u0027name\u0027]"},{"line_number":709,"context_line":"            LOG.warning(\"Pod %s does not have status.hostIP field set when \""}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_52813efa","line":706,"range":{"start_line":706,"start_character":12,"end_line":706,"end_character":36},"updated":"2019-10-16 15:17:42.000000000","message":"it should not matter, but perhaps this should assign the value return to host_addr (to avoid calling it again on line 251)","commit_id":"e888cb262cb6b82aa21317c5135a2a03e72e8c01"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"ade76d79619de2af8067dbf8631ee9a87a346756","unresolved":false,"context_lines":[{"line_number":703,"context_line":"    def release_vif(self, pod, vif, project_id, security_groups):"},{"line_number":704,"context_line":"        host_addr \u003d None"},{"line_number":705,"context_line":"        try:"},{"line_number":706,"context_line":"            self._get_host_addr(pod)"},{"line_number":707,"context_line":"        except KeyError:"},{"line_number":708,"context_line":"            name \u003d pod[\u0027metadata\u0027][\u0027name\u0027]"},{"line_number":709,"context_line":"            LOG.warning(\"Pod %s does not have status.hostIP field set when \""}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_b5d65c4e","line":706,"range":{"start_line":706,"start_character":12,"end_line":706,"end_character":36},"in_reply_to":"3fa7e38b_52813efa","updated":"2019-10-16 15:53:00.000000000","message":"Yeah, thought about it, I don\u0027t really care too much, so why not.","commit_id":"e888cb262cb6b82aa21317c5135a2a03e72e8c01"}]}
