)]}'
{"kuryr_kubernetes/controller/drivers/lbaasv2.py":[{"author":{"_account_id":30963,"name":"Sarka Scavnicka","display_name":"sscavnic","email":"scavnicka.sarka@gmail.com","username":"sarka_scavnicka"},"change_message_id":"788577f186cabc71c883aa04d6705a956ff9c743","unresolved":false,"context_lines":[{"line_number":755,"context_line":"                      \"%s as the LB resources are not present\", lbaas_name)"},{"line_number":756,"context_line":"            return"},{"line_number":757,"context_line":""},{"line_number":758,"context_line":"        try:"},{"line_number":759,"context_line":"            klb \u003d k8s.get(f\u0027{k_const.K8S_API_CRD_NAMESPACES}/{svc_namespace}/\u0027"},{"line_number":760,"context_line":"                          f\u0027kuryrloadbalancers/{svc_name}\u0027)"},{"line_number":761,"context_line":"        except k_exc.K8sResourceNotFound:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_55ecadf2","side":"PARENT","line":758,"range":{"start_line":758,"start_character":8,"end_line":758,"end_character":11},"updated":"2020-08-12 21:36:57.000000000","message":"I am talking about this part.","commit_id":"31770d7adac3146d625d8b34aa3978e7f76ef00d"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"c52fb686e37ae3c97142028b4c34d4116e529f76","unresolved":false,"context_lines":[{"line_number":360,"context_line":"    def release_listener(self, loadbalancer, listener):"},{"line_number":361,"context_line":"        os_net \u003d clients.get_network_client()"},{"line_number":362,"context_line":"        lbaas \u003d clients.get_loadbalancer_client()"},{"line_number":363,"context_line":"        self._release(loadbalancer, listener,"},{"line_number":364,"context_line":"                      lbaas.delete_listener,"},{"line_number":365,"context_line":"                      listener[\u0027id\u0027])"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"        # NOTE(maysams): since lbs created with ovn-octavia provider"},{"line_number":368,"context_line":"        # does not have a sg in place, only need to delete sg rules"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_6510e8a9","line":365,"range":{"start_line":363,"start_character":0,"end_line":365,"end_character":37},"updated":"2020-08-18 07:15:45.000000000","message":"won\u0027t this fail if there is no loadbalancer? same for release_pool and release_member? Sync load balancer is executed after release of listeners/pools/members","commit_id":"6fb5e3d5b8eb4004cc0a46cb8a708a0b58674a05"},{"author":{"_account_id":30963,"name":"Sarka Scavnicka","display_name":"sscavnic","email":"scavnicka.sarka@gmail.com","username":"sarka_scavnicka"},"change_message_id":"9e1b1f85743330917ed1addec3eeca1e40ffde21","unresolved":false,"context_lines":[{"line_number":360,"context_line":"    def release_listener(self, loadbalancer, listener):"},{"line_number":361,"context_line":"        os_net \u003d clients.get_network_client()"},{"line_number":362,"context_line":"        lbaas \u003d clients.get_loadbalancer_client()"},{"line_number":363,"context_line":"        self._release(loadbalancer, listener,"},{"line_number":364,"context_line":"                      lbaas.delete_listener,"},{"line_number":365,"context_line":"                      listener[\u0027id\u0027])"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"        # NOTE(maysams): since lbs created with ovn-octavia provider"},{"line_number":368,"context_line":"        # does not have a sg in place, only need to delete sg rules"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_1ea16daa","line":365,"range":{"start_line":363,"start_character":0,"end_line":365,"end_character":37},"in_reply_to":"9f560f44_138ccd7d","updated":"2020-08-18 19:04:30.000000000","message":"I think the same as Maysa, but I can always change that.","commit_id":"6fb5e3d5b8eb4004cc0a46cb8a708a0b58674a05"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"7ffe8f5c3fd59e6ad4e218755c6ada77c8e0875f","unresolved":false,"context_lines":[{"line_number":360,"context_line":"    def release_listener(self, loadbalancer, listener):"},{"line_number":361,"context_line":"        os_net \u003d clients.get_network_client()"},{"line_number":362,"context_line":"        lbaas \u003d clients.get_loadbalancer_client()"},{"line_number":363,"context_line":"        self._release(loadbalancer, listener,"},{"line_number":364,"context_line":"                      lbaas.delete_listener,"},{"line_number":365,"context_line":"                      listener[\u0027id\u0027])"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"        # NOTE(maysams): since lbs created with ovn-octavia provider"},{"line_number":368,"context_line":"        # does not have a sg in place, only need to delete sg rules"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_44b673fc","line":365,"range":{"start_line":363,"start_character":0,"end_line":365,"end_character":37},"in_reply_to":"9f560f44_1ea16daa","updated":"2020-08-19 06:59:44.000000000","message":"ooh, right","commit_id":"6fb5e3d5b8eb4004cc0a46cb8a708a0b58674a05"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"a817ad9a1cc815bd4d84d16fb39fe974aa9d23f4","unresolved":false,"context_lines":[{"line_number":360,"context_line":"    def release_listener(self, loadbalancer, listener):"},{"line_number":361,"context_line":"        os_net \u003d clients.get_network_client()"},{"line_number":362,"context_line":"        lbaas \u003d clients.get_loadbalancer_client()"},{"line_number":363,"context_line":"        self._release(loadbalancer, listener,"},{"line_number":364,"context_line":"                      lbaas.delete_listener,"},{"line_number":365,"context_line":"                      listener[\u0027id\u0027])"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"        # NOTE(maysams): since lbs created with ovn-octavia provider"},{"line_number":368,"context_line":"        # does not have a sg in place, only need to delete sg rules"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_138ccd7d","line":365,"range":{"start_line":363,"start_character":0,"end_line":365,"end_character":37},"in_reply_to":"9f560f44_6510e8a9","updated":"2020-08-18 13:42:45.000000000","message":"Seems the removal is just ignored in case of Not Found \n\nhttps://review.opendev.org/#/c/745968/2/kuryr_kubernetes/controller/drivers/lbaasv2.py@691","commit_id":"6fb5e3d5b8eb4004cc0a46cb8a708a0b58674a05"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"52392ad4e17b8beabe7fda6c23ecc8e48d73162d","unresolved":false,"context_lines":[{"line_number":369,"context_line":"        # when enforcing sg rules on the lb sg, meaning octavia"},{"line_number":370,"context_line":"        # Amphora provider is configured."},{"line_number":371,"context_line":"        if CONF.octavia_defaults.enforce_sg_rules:"},{"line_number":372,"context_line":"            try:"},{"line_number":373,"context_line":"                sg_id \u003d self._get_vip_port(loadbalancer).security_group_ids[0]"},{"line_number":374,"context_line":"            except AttributeError:"},{"line_number":375,"context_line":"                sg_id \u003d None"},{"line_number":376,"context_line":"            if sg_id:"},{"line_number":377,"context_line":"                rules \u003d os_net.security_group_rules(security_group_id\u003dsg_id,"},{"line_number":378,"context_line":"                                                    description\u003dlistener["}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_6ccdbfb6","line":375,"range":{"start_line":372,"start_character":0,"end_line":375,"end_character":28},"updated":"2020-09-14 12:14:52.000000000","message":"This is still needed.","commit_id":"6fb5e3d5b8eb4004cc0a46cb8a708a0b58674a05"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"a817ad9a1cc815bd4d84d16fb39fe974aa9d23f4","unresolved":false,"context_lines":[{"line_number":698,"context_line":"        lbaas \u003d clients.get_loadbalancer_client()"},{"line_number":699,"context_line":""},{"line_number":700,"context_line":"        for remaining in self._provisioning_timer(timeout, interval):"},{"line_number":701,"context_line":"            response \u003d lbaas.get_load_balancer(loadbalancer[\u0027id\u0027])"},{"line_number":702,"context_line":"            status \u003d response.provisioning_status"},{"line_number":703,"context_line":"            if status \u003d\u003d \u0027ACTIVE\u0027:"},{"line_number":704,"context_line":"                LOG.debug(\"Provisioning complete for %(lb)s\", {"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_730429c7","line":701,"range":{"start_line":701,"start_character":12,"end_line":701,"end_character":66},"updated":"2020-08-18 13:42:45.000000000","message":"If you cacth a (openstack.exceptions.ResourceNotFound) exception here and patch the CRD with empty status Field, you\u0027ll most probably be handling the case for when the LB doesn\u0027t exist and thus not needing the extra OpenStack call added on the handler.\n\nNote that this wait_for_provisioning is executed prior to every ensure of lb resources.","commit_id":"6fb5e3d5b8eb4004cc0a46cb8a708a0b58674a05"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"784b19a1a433922e7120d167f39d3f168e561aa6","unresolved":false,"context_lines":[{"line_number":698,"context_line":"        lbaas \u003d clients.get_loadbalancer_client()"},{"line_number":699,"context_line":""},{"line_number":700,"context_line":"        for remaining in self._provisioning_timer(timeout, interval):"},{"line_number":701,"context_line":"            response \u003d lbaas.get_load_balancer(loadbalancer[\u0027id\u0027])"},{"line_number":702,"context_line":"            status \u003d response.provisioning_status"},{"line_number":703,"context_line":"            if status \u003d\u003d \u0027ACTIVE\u0027:"},{"line_number":704,"context_line":"                LOG.debug(\"Provisioning complete for %(lb)s\", {"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_9ad580e8","line":701,"range":{"start_line":701,"start_character":12,"end_line":701,"end_character":66},"in_reply_to":"9f560f44_730429c7","updated":"2020-08-19 09:23:21.000000000","message":"umm, only problem is if this function gets executed before the actual loadbalancer being created is there... it make take a few seconds to have it created and we can break the wait_for_provisionning too soon","commit_id":"6fb5e3d5b8eb4004cc0a46cb8a708a0b58674a05"}],"kuryr_kubernetes/controller/handlers/loadbalancer.py":[{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"c52fb686e37ae3c97142028b4c34d4116e529f76","unresolved":false,"context_lines":[{"line_number":660,"context_line":"    def _sync_lbaas_loadbalancer(self, loadbalancer_crd):"},{"line_number":661,"context_line":"        changed \u003d False"},{"line_number":662,"context_line":"        lb \u003d loadbalancer_crd[\u0027status\u0027].get(\u0027loadbalancer\u0027)"},{"line_number":663,"context_line":"        lbaas \u003d clients.get_loadbalancer_client()"},{"line_number":664,"context_line":"        if lb:"},{"line_number":665,"context_line":"            try:"},{"line_number":666,"context_line":"                lbaas.get_load_balancer(lb.get(\u0027id\u0027))"},{"line_number":667,"context_line":"            except os_exc.NotFoundException:"},{"line_number":668,"context_line":"                loadbalancer_crd[\u0027status\u0027][\u0027loadbalancer\u0027] \u003d {}"},{"line_number":669,"context_line":"                if loadbalancer_crd[\u0027spec\u0027].get(\u0027ip\u0027):"},{"line_number":670,"context_line":"                    lb_name \u003d self._drv_lbaas.get_service_loadbalancer_name("},{"line_number":671,"context_line":"                        loadbalancer_crd[\u0027metadata\u0027][\u0027namespace\u0027],"},{"line_number":672,"context_line":"                        loadbalancer_crd[\u0027metadata\u0027][\u0027name\u0027])"},{"line_number":673,"context_line":"                    lb \u003d self._drv_lbaas.ensure_loadbalancer("},{"line_number":674,"context_line":"                        name\u003dlb_name,"},{"line_number":675,"context_line":"                        project_id\u003dloadbalancer_crd[\u0027spec\u0027].get(\u0027project_id\u0027),"},{"line_number":676,"context_line":"                        subnet_id\u003dloadbalancer_crd[\u0027spec\u0027].get(\u0027subnet_id\u0027),"},{"line_number":677,"context_line":"                        ip\u003dloadbalancer_crd[\u0027spec\u0027].get(\u0027ip\u0027),"},{"line_number":678,"context_line":"                        security_groups_ids\u003dloadbalancer_crd[\u0027spec\u0027].get("},{"line_number":679,"context_line":"                            \u0027security_groups_ids\u0027),"},{"line_number":680,"context_line":"                        service_type\u003dloadbalancer_crd[\u0027spec\u0027].get(\u0027type\u0027),"},{"line_number":681,"context_line":"                        provider\u003dself._lb_provider)"},{"line_number":682,"context_line":"                    loadbalancer_crd[\u0027status\u0027][\u0027loadbalancer\u0027] \u003d lb"},{"line_number":683,"context_line":"                    changed \u003d True"},{"line_number":684,"context_line":"                elif loadbalancer_crd[\u0027status\u0027].get(\u0027service_pub_ip_info\u0027):"},{"line_number":685,"context_line":"                    self._drv_service_pub_ip.release_pub_ip("},{"line_number":686,"context_line":"                        loadbalancer_crd[\u0027status\u0027][\u0027service_pub_ip_info\u0027])"},{"line_number":687,"context_line":"                    loadbalancer_crd[\u0027status\u0027][\u0027service_pub_ip_info\u0027] \u003d None"},{"line_number":688,"context_line":"                    changed \u003d True"},{"line_number":689,"context_line":"                k8s \u003d clients.get_kubernetes_client()"},{"line_number":690,"context_line":"                try:"},{"line_number":691,"context_line":"                    k8s.patch_crd(\u0027status\u0027, loadbalancer_crd[\u0027metadata\u0027]["},{"line_number":692,"context_line":"                        \u0027selfLink\u0027], loadbalancer_crd[\u0027status\u0027])"},{"line_number":693,"context_line":"                except k_exc.K8sResourceNotFound:"},{"line_number":694,"context_line":"                    LOG.debug(\u0027KuryrLoadbalancer CRD not found %s\u0027,"},{"line_number":695,"context_line":"                              loadbalancer_crd)"},{"line_number":696,"context_line":"                except k_exc.K8sClientException:"},{"line_number":697,"context_line":"                    LOG.exception(\u0027Error updating KuryrLoadbalancer CRD %s\u0027,"},{"line_number":698,"context_line":"                                  loadbalancer_crd)"},{"line_number":699,"context_line":"                    raise"},{"line_number":700,"context_line":"            lb \u003d loadbalancer_crd[\u0027status\u0027].get(\u0027loadbalancer\u0027)"},{"line_number":701,"context_line":""},{"line_number":702,"context_line":"        if lb and lb[\u0027ip\u0027] !\u003d loadbalancer_crd[\u0027spec\u0027].get(\u0027ip\u0027):"},{"line_number":703,"context_line":"            # if loadbalancerIP was associated to lbaas VIP, disassociate it."}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_05480cca","line":700,"range":{"start_line":663,"start_character":0,"end_line":700,"end_character":63},"updated":"2020-08-18 07:15:45.000000000","message":"umm, do we want to do this for every svc modification? (meaning one extra octavia API call), or should we go for reconciliation of all services/loadbalancer every X mins?","commit_id":"6fb5e3d5b8eb4004cc0a46cb8a708a0b58674a05"},{"author":{"_account_id":30963,"name":"Sarka Scavnicka","display_name":"sscavnic","email":"scavnicka.sarka@gmail.com","username":"sarka_scavnicka"},"change_message_id":"9e1b1f85743330917ed1addec3eeca1e40ffde21","unresolved":false,"context_lines":[{"line_number":660,"context_line":"    def _sync_lbaas_loadbalancer(self, loadbalancer_crd):"},{"line_number":661,"context_line":"        changed \u003d False"},{"line_number":662,"context_line":"        lb \u003d loadbalancer_crd[\u0027status\u0027].get(\u0027loadbalancer\u0027)"},{"line_number":663,"context_line":"        lbaas \u003d clients.get_loadbalancer_client()"},{"line_number":664,"context_line":"        if lb:"},{"line_number":665,"context_line":"            try:"},{"line_number":666,"context_line":"                lbaas.get_load_balancer(lb.get(\u0027id\u0027))"},{"line_number":667,"context_line":"            except os_exc.NotFoundException:"},{"line_number":668,"context_line":"                loadbalancer_crd[\u0027status\u0027][\u0027loadbalancer\u0027] \u003d {}"},{"line_number":669,"context_line":"                if loadbalancer_crd[\u0027spec\u0027].get(\u0027ip\u0027):"},{"line_number":670,"context_line":"                    lb_name \u003d self._drv_lbaas.get_service_loadbalancer_name("},{"line_number":671,"context_line":"                        loadbalancer_crd[\u0027metadata\u0027][\u0027namespace\u0027],"},{"line_number":672,"context_line":"                        loadbalancer_crd[\u0027metadata\u0027][\u0027name\u0027])"},{"line_number":673,"context_line":"                    lb \u003d self._drv_lbaas.ensure_loadbalancer("},{"line_number":674,"context_line":"                        name\u003dlb_name,"},{"line_number":675,"context_line":"                        project_id\u003dloadbalancer_crd[\u0027spec\u0027].get(\u0027project_id\u0027),"},{"line_number":676,"context_line":"                        subnet_id\u003dloadbalancer_crd[\u0027spec\u0027].get(\u0027subnet_id\u0027),"},{"line_number":677,"context_line":"                        ip\u003dloadbalancer_crd[\u0027spec\u0027].get(\u0027ip\u0027),"},{"line_number":678,"context_line":"                        security_groups_ids\u003dloadbalancer_crd[\u0027spec\u0027].get("},{"line_number":679,"context_line":"                            \u0027security_groups_ids\u0027),"},{"line_number":680,"context_line":"                        service_type\u003dloadbalancer_crd[\u0027spec\u0027].get(\u0027type\u0027),"},{"line_number":681,"context_line":"                        provider\u003dself._lb_provider)"},{"line_number":682,"context_line":"                    loadbalancer_crd[\u0027status\u0027][\u0027loadbalancer\u0027] \u003d lb"},{"line_number":683,"context_line":"                    changed \u003d True"},{"line_number":684,"context_line":"                elif loadbalancer_crd[\u0027status\u0027].get(\u0027service_pub_ip_info\u0027):"},{"line_number":685,"context_line":"                    self._drv_service_pub_ip.release_pub_ip("},{"line_number":686,"context_line":"                        loadbalancer_crd[\u0027status\u0027][\u0027service_pub_ip_info\u0027])"},{"line_number":687,"context_line":"                    loadbalancer_crd[\u0027status\u0027][\u0027service_pub_ip_info\u0027] \u003d None"},{"line_number":688,"context_line":"                    changed \u003d True"},{"line_number":689,"context_line":"                k8s \u003d clients.get_kubernetes_client()"},{"line_number":690,"context_line":"                try:"},{"line_number":691,"context_line":"                    k8s.patch_crd(\u0027status\u0027, loadbalancer_crd[\u0027metadata\u0027]["},{"line_number":692,"context_line":"                        \u0027selfLink\u0027], loadbalancer_crd[\u0027status\u0027])"},{"line_number":693,"context_line":"                except k_exc.K8sResourceNotFound:"},{"line_number":694,"context_line":"                    LOG.debug(\u0027KuryrLoadbalancer CRD not found %s\u0027,"},{"line_number":695,"context_line":"                              loadbalancer_crd)"},{"line_number":696,"context_line":"                except k_exc.K8sClientException:"},{"line_number":697,"context_line":"                    LOG.exception(\u0027Error updating KuryrLoadbalancer CRD %s\u0027,"},{"line_number":698,"context_line":"                                  loadbalancer_crd)"},{"line_number":699,"context_line":"                    raise"},{"line_number":700,"context_line":"            lb \u003d loadbalancer_crd[\u0027status\u0027].get(\u0027loadbalancer\u0027)"},{"line_number":701,"context_line":""},{"line_number":702,"context_line":"        if lb and lb[\u0027ip\u0027] !\u003d loadbalancer_crd[\u0027spec\u0027].get(\u0027ip\u0027):"},{"line_number":703,"context_line":"            # if loadbalancerIP was associated to lbaas VIP, disassociate it."}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_7eca296e","line":700,"range":{"start_line":663,"start_character":0,"end_line":700,"end_character":63},"in_reply_to":"9f560f44_05480cca","updated":"2020-08-18 19:04:30.000000000","message":"After releasing the listeners, only field which was left in the CRD was loadbalancer, but without the openstack loadbalancer, so it was tryingto create a new listener, pools, members, but the id of the loadbalancer in the crd is not find in the openstack, so if we check that we have the loadbalancer in the openstack, we can easily find out that something is missing and we do not have to patch just the empty {} because that is not possible because we fields in loadbalancer, members, listeners and pools are required, so when the loadbalancer is missing in the openstack, we recreate it, update the CRD and than everything can be recreated also.","commit_id":"6fb5e3d5b8eb4004cc0a46cb8a708a0b58674a05"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"7ffe8f5c3fd59e6ad4e218755c6ada77c8e0875f","unresolved":false,"context_lines":[{"line_number":660,"context_line":"    def _sync_lbaas_loadbalancer(self, loadbalancer_crd):"},{"line_number":661,"context_line":"        changed \u003d False"},{"line_number":662,"context_line":"        lb \u003d loadbalancer_crd[\u0027status\u0027].get(\u0027loadbalancer\u0027)"},{"line_number":663,"context_line":"        lbaas \u003d clients.get_loadbalancer_client()"},{"line_number":664,"context_line":"        if lb:"},{"line_number":665,"context_line":"            try:"},{"line_number":666,"context_line":"                lbaas.get_load_balancer(lb.get(\u0027id\u0027))"},{"line_number":667,"context_line":"            except os_exc.NotFoundException:"},{"line_number":668,"context_line":"                loadbalancer_crd[\u0027status\u0027][\u0027loadbalancer\u0027] \u003d {}"},{"line_number":669,"context_line":"                if loadbalancer_crd[\u0027spec\u0027].get(\u0027ip\u0027):"},{"line_number":670,"context_line":"                    lb_name \u003d self._drv_lbaas.get_service_loadbalancer_name("},{"line_number":671,"context_line":"                        loadbalancer_crd[\u0027metadata\u0027][\u0027namespace\u0027],"},{"line_number":672,"context_line":"                        loadbalancer_crd[\u0027metadata\u0027][\u0027name\u0027])"},{"line_number":673,"context_line":"                    lb \u003d self._drv_lbaas.ensure_loadbalancer("},{"line_number":674,"context_line":"                        name\u003dlb_name,"},{"line_number":675,"context_line":"                        project_id\u003dloadbalancer_crd[\u0027spec\u0027].get(\u0027project_id\u0027),"},{"line_number":676,"context_line":"                        subnet_id\u003dloadbalancer_crd[\u0027spec\u0027].get(\u0027subnet_id\u0027),"},{"line_number":677,"context_line":"                        ip\u003dloadbalancer_crd[\u0027spec\u0027].get(\u0027ip\u0027),"},{"line_number":678,"context_line":"                        security_groups_ids\u003dloadbalancer_crd[\u0027spec\u0027].get("},{"line_number":679,"context_line":"                            \u0027security_groups_ids\u0027),"},{"line_number":680,"context_line":"                        service_type\u003dloadbalancer_crd[\u0027spec\u0027].get(\u0027type\u0027),"},{"line_number":681,"context_line":"                        provider\u003dself._lb_provider)"},{"line_number":682,"context_line":"                    loadbalancer_crd[\u0027status\u0027][\u0027loadbalancer\u0027] \u003d lb"},{"line_number":683,"context_line":"                    changed \u003d True"},{"line_number":684,"context_line":"                elif loadbalancer_crd[\u0027status\u0027].get(\u0027service_pub_ip_info\u0027):"},{"line_number":685,"context_line":"                    self._drv_service_pub_ip.release_pub_ip("},{"line_number":686,"context_line":"                        loadbalancer_crd[\u0027status\u0027][\u0027service_pub_ip_info\u0027])"},{"line_number":687,"context_line":"                    loadbalancer_crd[\u0027status\u0027][\u0027service_pub_ip_info\u0027] \u003d None"},{"line_number":688,"context_line":"                    changed \u003d True"},{"line_number":689,"context_line":"                k8s \u003d clients.get_kubernetes_client()"},{"line_number":690,"context_line":"                try:"},{"line_number":691,"context_line":"                    k8s.patch_crd(\u0027status\u0027, loadbalancer_crd[\u0027metadata\u0027]["},{"line_number":692,"context_line":"                        \u0027selfLink\u0027], loadbalancer_crd[\u0027status\u0027])"},{"line_number":693,"context_line":"                except k_exc.K8sResourceNotFound:"},{"line_number":694,"context_line":"                    LOG.debug(\u0027KuryrLoadbalancer CRD not found %s\u0027,"},{"line_number":695,"context_line":"                              loadbalancer_crd)"},{"line_number":696,"context_line":"                except k_exc.K8sClientException:"},{"line_number":697,"context_line":"                    LOG.exception(\u0027Error updating KuryrLoadbalancer CRD %s\u0027,"},{"line_number":698,"context_line":"                                  loadbalancer_crd)"},{"line_number":699,"context_line":"                    raise"},{"line_number":700,"context_line":"            lb \u003d loadbalancer_crd[\u0027status\u0027].get(\u0027loadbalancer\u0027)"},{"line_number":701,"context_line":""},{"line_number":702,"context_line":"        if lb and lb[\u0027ip\u0027] !\u003d loadbalancer_crd[\u0027spec\u0027].get(\u0027ip\u0027):"},{"line_number":703,"context_line":"            # if loadbalancerIP was associated to lbaas VIP, disassociate it."}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_c49e0362","line":700,"range":{"start_line":663,"start_character":0,"end_line":700,"end_character":63},"in_reply_to":"9f560f44_7eca296e","updated":"2020-08-19 06:59:44.000000000","message":"yeah, I agree this should work perfectly fine. My only concern is the extra calls needed to Octavia API while most of the time the loadbalancer is going to be there. So I was wondering if we can perhaps execute this block only when we hit the problem of loadbalancer not being there (when creating the listeners for instance) or regularly executing this every, lets say, 5-10 mins, and allow the kuryr-controller to fail during that time due to missing loadbalancer","commit_id":"6fb5e3d5b8eb4004cc0a46cb8a708a0b58674a05"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"0fa4b7dc1b5e159617c074cfa17a88bda2b832c5","unresolved":false,"context_lines":[{"line_number":671,"context_line":"    def _sync_lbaas_loadbalancer(self, loadbalancer_crd):"},{"line_number":672,"context_line":"        changed \u003d False"},{"line_number":673,"context_line":"        lb \u003d loadbalancer_crd[\u0027status\u0027].get(\u0027loadbalancer\u0027)"},{"line_number":674,"context_line":"        lbaas \u003d clients.get_loadbalancer_client()"},{"line_number":675,"context_line":"        if lb:"},{"line_number":676,"context_line":"            try:"},{"line_number":677,"context_line":"                lbaas.get_load_balancer(lb.get(\u0027id\u0027))"},{"line_number":678,"context_line":"            except os_exc.NotFoundException:"},{"line_number":679,"context_line":"                loadbalancer_crd[\u0027status\u0027][\u0027loadbalancer\u0027] \u003d {}"},{"line_number":680,"context_line":"                if loadbalancer_crd[\u0027spec\u0027].get(\u0027ip\u0027):"},{"line_number":681,"context_line":"                    lb_name \u003d self._drv_lbaas.get_service_loadbalancer_name("},{"line_number":682,"context_line":"                        loadbalancer_crd[\u0027metadata\u0027][\u0027namespace\u0027],"},{"line_number":683,"context_line":"                        loadbalancer_crd[\u0027metadata\u0027][\u0027name\u0027])"},{"line_number":684,"context_line":"                    lb \u003d self._drv_lbaas.ensure_loadbalancer("},{"line_number":685,"context_line":"                        name\u003dlb_name,"},{"line_number":686,"context_line":"                        project_id\u003dloadbalancer_crd[\u0027spec\u0027].get(\u0027project_id\u0027),"},{"line_number":687,"context_line":"                        subnet_id\u003dloadbalancer_crd[\u0027spec\u0027].get(\u0027subnet_id\u0027),"},{"line_number":688,"context_line":"                        ip\u003dloadbalancer_crd[\u0027spec\u0027].get(\u0027ip\u0027),"},{"line_number":689,"context_line":"                        security_groups_ids\u003dloadbalancer_crd[\u0027spec\u0027].get("},{"line_number":690,"context_line":"                            \u0027security_groups_ids\u0027),"},{"line_number":691,"context_line":"                        service_type\u003dloadbalancer_crd[\u0027spec\u0027].get(\u0027type\u0027),"},{"line_number":692,"context_line":"                        provider\u003dself._lb_provider)"},{"line_number":693,"context_line":"                    loadbalancer_crd[\u0027status\u0027][\u0027loadbalancer\u0027] \u003d lb"},{"line_number":694,"context_line":"                    changed \u003d True"},{"line_number":695,"context_line":"                elif loadbalancer_crd[\u0027status\u0027].get(\u0027service_pub_ip_info\u0027):"},{"line_number":696,"context_line":"                    self._drv_service_pub_ip.release_pub_ip("},{"line_number":697,"context_line":"                        loadbalancer_crd[\u0027status\u0027][\u0027service_pub_ip_info\u0027])"},{"line_number":698,"context_line":"                    loadbalancer_crd[\u0027status\u0027][\u0027service_pub_ip_info\u0027] \u003d None"},{"line_number":699,"context_line":"                    changed \u003d True"},{"line_number":700,"context_line":"                k8s \u003d clients.get_kubernetes_client()"},{"line_number":701,"context_line":"                try:"},{"line_number":702,"context_line":"                    k8s.patch_crd(\u0027status\u0027, loadbalancer_crd[\u0027metadata\u0027]["},{"line_number":703,"context_line":"                        \u0027selfLink\u0027], loadbalancer_crd[\u0027status\u0027])"},{"line_number":704,"context_line":"                except k_exc.K8sResourceNotFound:"},{"line_number":705,"context_line":"                    LOG.debug(\u0027KuryrLoadbalancer CRD not found %s\u0027,"},{"line_number":706,"context_line":"                              loadbalancer_crd)"},{"line_number":707,"context_line":"                except k_exc.K8sClientException:"},{"line_number":708,"context_line":"                    LOG.exception(\u0027Error updating KuryrLoadbalancer CRD %s\u0027,"},{"line_number":709,"context_line":"                                  loadbalancer_crd)"},{"line_number":710,"context_line":"                    raise"},{"line_number":711,"context_line":"            lb \u003d loadbalancer_crd[\u0027status\u0027].get(\u0027loadbalancer\u0027)"},{"line_number":712,"context_line":""},{"line_number":713,"context_line":"        if lb and lb[\u0027ip\u0027] !\u003d loadbalancer_crd[\u0027spec\u0027].get(\u0027ip\u0027):"},{"line_number":714,"context_line":"            # if loadbalancerIP was associated to lbaas VIP, disassociate it."}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_9c4c3740","line":711,"range":{"start_line":674,"start_character":0,"end_line":711,"end_character":63},"updated":"2020-09-22 09:30:28.000000000","message":"As the Custom Resource status is cleaned up upon NotFound of a load balancer resource[1], this wouldn\u0027t be needed anymore, right?\n\n[1] https://github.com/openstack/kuryr-kubernetes/blob/master/kuryr_kubernetes/controller/drivers/lbaasv2.py#L712","commit_id":"1ff08e26ae494ea192a6750db3a265f77e8e2028"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"ebc1e71d275d1eb812fb413770359aba52cf8541","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import time"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from openstack import exceptions as os_exc"},{"line_number":19,"context_line":"from oslo_log import log as logging"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from kuryr_kubernetes import clients"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_64451815","line":18,"range":{"start_line":18,"start_character":0,"end_line":18,"end_character":42},"updated":"2020-09-24 10:20:07.000000000","message":"not needed, right?","commit_id":"4022041d65a94638c6c743c747b1528557cd8b49"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"72295e0fed7483c68c2b2dca8785c8de738ad931","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import time"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from openstack import exceptions as os_exc"},{"line_number":19,"context_line":"from oslo_log import log as logging"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from kuryr_kubernetes import clients"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_5bb26e07","line":18,"updated":"2020-09-24 11:52:33.000000000","message":"pep8: F401 \u0027openstack.exceptions as os_exc\u0027 imported but unused","commit_id":"4022041d65a94638c6c743c747b1528557cd8b49"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"3e349aacbc9f9c0e59e7e83302397f316ee6a169","unresolved":false,"context_lines":[{"line_number":628,"context_line":"    def _remove_unused_listeners(self, loadbalancer_crd):"},{"line_number":629,"context_line":"        current_listeners \u003d {p[\u0027listener_id\u0027] for p in loadbalancer_crd["},{"line_number":630,"context_line":"            \u0027status\u0027].get(\u0027pools\u0027, [])}"},{"line_number":631,"context_line":""},{"line_number":632,"context_line":"        removed_ids \u003d set()"},{"line_number":633,"context_line":"        for listener in loadbalancer_crd[\u0027status\u0027].get(\u0027listeners\u0027, []):"},{"line_number":634,"context_line":"            if listener[\u0027id\u0027] in current_listeners:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_d268f4ba","line":631,"updated":"2020-09-27 19:44:23.000000000","message":"Trailing space.","commit_id":"f5c9aa6f179c9db36280fbe2cb1ed65b2c4fd177"},{"author":{"_account_id":30963,"name":"Sarka Scavnicka","display_name":"sscavnic","email":"scavnicka.sarka@gmail.com","username":"sarka_scavnicka"},"change_message_id":"f816f4bc92d86cacfdb7abe6e92d361e946ba551","unresolved":false,"context_lines":[{"line_number":628,"context_line":"    def _remove_unused_listeners(self, loadbalancer_crd):"},{"line_number":629,"context_line":"        current_listeners \u003d {p[\u0027listener_id\u0027] for p in loadbalancer_crd["},{"line_number":630,"context_line":"            \u0027status\u0027].get(\u0027pools\u0027, [])}"},{"line_number":631,"context_line":""},{"line_number":632,"context_line":"        removed_ids \u003d set()"},{"line_number":633,"context_line":"        for listener in loadbalancer_crd[\u0027status\u0027].get(\u0027listeners\u0027, []):"},{"line_number":634,"context_line":"            if listener[\u0027id\u0027] in current_listeners:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_78156b4c","line":631,"in_reply_to":"9f560f44_947015a7","updated":"2020-09-29 15:13:19.000000000","message":"Done","commit_id":"f5c9aa6f179c9db36280fbe2cb1ed65b2c4fd177"},{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"527fe9d604d82e2da15a29770c3f73266b5216e4","unresolved":false,"context_lines":[{"line_number":628,"context_line":"    def _remove_unused_listeners(self, loadbalancer_crd):"},{"line_number":629,"context_line":"        current_listeners \u003d {p[\u0027listener_id\u0027] for p in loadbalancer_crd["},{"line_number":630,"context_line":"            \u0027status\u0027].get(\u0027pools\u0027, [])}"},{"line_number":631,"context_line":""},{"line_number":632,"context_line":"        removed_ids \u003d set()"},{"line_number":633,"context_line":"        for listener in loadbalancer_crd[\u0027status\u0027].get(\u0027listeners\u0027, []):"},{"line_number":634,"context_line":"            if listener[\u0027id\u0027] in current_listeners:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_947015a7","line":631,"in_reply_to":"9f560f44_d268f4ba","updated":"2020-09-29 04:03:42.000000000","message":"*new line.","commit_id":"f5c9aa6f179c9db36280fbe2cb1ed65b2c4fd177"},{"author":{"_account_id":30963,"name":"Sarka Scavnicka","display_name":"sscavnic","email":"scavnicka.sarka@gmail.com","username":"sarka_scavnicka"},"change_message_id":"f816f4bc92d86cacfdb7abe6e92d361e946ba551","unresolved":false,"context_lines":[{"line_number":628,"context_line":"    def _remove_unused_listeners(self, loadbalancer_crd):"},{"line_number":629,"context_line":"        current_listeners \u003d {p[\u0027listener_id\u0027] for p in loadbalancer_crd["},{"line_number":630,"context_line":"            \u0027status\u0027].get(\u0027pools\u0027, [])}"},{"line_number":631,"context_line":""},{"line_number":632,"context_line":"        removed_ids \u003d set()"},{"line_number":633,"context_line":"        for listener in loadbalancer_crd[\u0027status\u0027].get(\u0027listeners\u0027, []):"},{"line_number":634,"context_line":"            if listener[\u0027id\u0027] in current_listeners:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_1800af02","line":631,"in_reply_to":"9f560f44_d268f4ba","updated":"2020-09-29 15:13:19.000000000","message":"Done","commit_id":"f5c9aa6f179c9db36280fbe2cb1ed65b2c4fd177"}],"kuryr_kubernetes/tests/unit/controller/handlers/test_loadbalancer.py":[{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"3e349aacbc9f9c0e59e7e83302397f316ee6a169","unresolved":false,"context_lines":[{"line_number":436,"context_line":"            \u00271.1.1.1\u0027: (1, 2),"},{"line_number":437,"context_line":"            \u00271.1.1.1\u0027: (1, 2)}"},{"line_number":438,"context_line":"        crd \u003d get_lb_crd()"},{"line_number":439,"context_line":"        lbaas \u003d self.useFixture(k_fix.MockLBaaSClient()).client"},{"line_number":440,"context_line":"        resp \u003d o_lb.LoadBalancer(provisioning_status\u003d\u0027ACTIVE\u0027)"},{"line_number":441,"context_line":"        lbaas.get_load_balancer.return_value \u003d resp"},{"line_number":442,"context_line":""},{"line_number":443,"context_line":"        observed_targets \u003d self._sync_lbaas_members_impl("},{"line_number":444,"context_line":"            m_get_drv_lbaas, m_get_drv_project, m_get_drv_subnets,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_52750497","line":441,"range":{"start_line":439,"start_character":0,"end_line":441,"end_character":51},"updated":"2020-09-27 19:44:23.000000000","message":"Is this mock still needed even without any modification on the loadbalancer handler?","commit_id":"f5c9aa6f179c9db36280fbe2cb1ed65b2c4fd177"},{"author":{"_account_id":30963,"name":"Sarka Scavnicka","display_name":"sscavnic","email":"scavnicka.sarka@gmail.com","username":"sarka_scavnicka"},"change_message_id":"f816f4bc92d86cacfdb7abe6e92d361e946ba551","unresolved":false,"context_lines":[{"line_number":436,"context_line":"            \u00271.1.1.1\u0027: (1, 2),"},{"line_number":437,"context_line":"            \u00271.1.1.1\u0027: (1, 2)}"},{"line_number":438,"context_line":"        crd \u003d get_lb_crd()"},{"line_number":439,"context_line":"        lbaas \u003d self.useFixture(k_fix.MockLBaaSClient()).client"},{"line_number":440,"context_line":"        resp \u003d o_lb.LoadBalancer(provisioning_status\u003d\u0027ACTIVE\u0027)"},{"line_number":441,"context_line":"        lbaas.get_load_balancer.return_value \u003d resp"},{"line_number":442,"context_line":""},{"line_number":443,"context_line":"        observed_targets \u003d self._sync_lbaas_members_impl("},{"line_number":444,"context_line":"            m_get_drv_lbaas, m_get_drv_project, m_get_drv_subnets,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_83fa940e","line":441,"range":{"start_line":439,"start_character":0,"end_line":441,"end_character":51},"in_reply_to":"9f560f44_52750497","updated":"2020-09-29 15:13:19.000000000","message":"Done","commit_id":"f5c9aa6f179c9db36280fbe2cb1ed65b2c4fd177"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"3e349aacbc9f9c0e59e7e83302397f316ee6a169","unresolved":false,"context_lines":[{"line_number":508,"context_line":"        m_get_drv_lbaas.return_value \u003d m_drv_lbaas"},{"line_number":509,"context_line":"        m_get_drv_project.return_value \u003d m_drv_project"},{"line_number":510,"context_line":"        m_get_drv_subnets.return_value \u003d m_drv_subnets"},{"line_number":511,"context_line":"        lbaas \u003d self.useFixture(k_fix.MockLBaaSClient()).client"},{"line_number":512,"context_line":"        resp \u003d o_lb.LoadBalancer(provisioning_status\u003d\u0027ACTIVE\u0027)"},{"line_number":513,"context_line":"        lbaas.get_load_balancer.return_value \u003d resp"},{"line_number":514,"context_line":""},{"line_number":515,"context_line":"        handler \u003d h_lb.KuryrLoadBalancerHandler()"},{"line_number":516,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_3278508d","line":513,"range":{"start_line":511,"start_character":0,"end_line":513,"end_character":51},"updated":"2020-09-27 19:44:23.000000000","message":"ditto","commit_id":"f5c9aa6f179c9db36280fbe2cb1ed65b2c4fd177"},{"author":{"_account_id":30963,"name":"Sarka Scavnicka","display_name":"sscavnic","email":"scavnicka.sarka@gmail.com","username":"sarka_scavnicka"},"change_message_id":"f816f4bc92d86cacfdb7abe6e92d361e946ba551","unresolved":false,"context_lines":[{"line_number":508,"context_line":"        m_get_drv_lbaas.return_value \u003d m_drv_lbaas"},{"line_number":509,"context_line":"        m_get_drv_project.return_value \u003d m_drv_project"},{"line_number":510,"context_line":"        m_get_drv_subnets.return_value \u003d m_drv_subnets"},{"line_number":511,"context_line":"        lbaas \u003d self.useFixture(k_fix.MockLBaaSClient()).client"},{"line_number":512,"context_line":"        resp \u003d o_lb.LoadBalancer(provisioning_status\u003d\u0027ACTIVE\u0027)"},{"line_number":513,"context_line":"        lbaas.get_load_balancer.return_value \u003d resp"},{"line_number":514,"context_line":""},{"line_number":515,"context_line":"        handler \u003d h_lb.KuryrLoadBalancerHandler()"},{"line_number":516,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_63ff8000","line":513,"range":{"start_line":511,"start_character":0,"end_line":513,"end_character":51},"in_reply_to":"9f560f44_3278508d","updated":"2020-09-29 15:13:19.000000000","message":"Done","commit_id":"f5c9aa6f179c9db36280fbe2cb1ed65b2c4fd177"}]}
