)]}'
{"doc/source/devref/service_support.rst":[{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"a4a201165673eb5de44823ab4eab8df43f955e77","unresolved":true,"context_lines":[{"line_number":92,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":93,"context_line":"What happen when a service gets created by Kubernetes?"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"When a service is created on Kubernetes, the lbaas.py handler is called."},{"line_number":96,"context_line":"If the ServiceHandler on_present function is called first, then the handler creates"},{"line_number":97,"context_line":"the KuryrLoadbalancer CRD with empty status. With empty status field, the loadbalancer"},{"line_number":98,"context_line":"handler gets called but does nothing. But if the EndpointsHandler is called first,"}],"source_content_type":"text/x-rst","patch_set":2,"id":"f061bc00_9725abd4","line":95,"range":{"start_line":95,"start_character":40,"end_line":95,"end_character":72},"updated":"2021-06-09 06:56:43.000000000","message":"not the lbaas.py handler, but the handlers (ServiceHandler, EndpointHandler) that are on the lbaas.py module","commit_id":"dff7e13d64ba18bf498704f69e711cfe0f6b4c57"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"a4a201165673eb5de44823ab4eab8df43f955e77","unresolved":true,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"When a service is created on Kubernetes, the lbaas.py handler is called."},{"line_number":96,"context_line":"If the ServiceHandler on_present function is called first, then the handler creates"},{"line_number":97,"context_line":"the KuryrLoadbalancer CRD with empty status. With empty status field, the loadbalancer"},{"line_number":98,"context_line":"handler gets called but does nothing. But if the EndpointsHandler is called first,"},{"line_number":99,"context_line":"the on_present function creates the KuryrLoadbalancer CRD and also the endpoints subsets."},{"line_number":100,"context_line":"Otherwise, it will update the existing CRD."}],"source_content_type":"text/x-rst","patch_set":2,"id":"f217e272_e6847360","line":97,"range":{"start_line":97,"start_character":74,"end_line":97,"end_character":86},"updated":"2021-06-09 06:56:43.000000000","message":"use the actual class name on that loadbalancer.py file instead","commit_id":"dff7e13d64ba18bf498704f69e711cfe0f6b4c57"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"1aadebe59a5515fd6a955f519106a27d797fa8a9","unresolved":true,"context_lines":[{"line_number":96,"context_line":"If the ServiceHandler on_present function is called first, then the handler creates"},{"line_number":97,"context_line":"the KuryrLoadbalancer CRD with empty status. With empty status field, the loadbalancer"},{"line_number":98,"context_line":"handler gets called but does nothing. But if the EndpointsHandler is called first,"},{"line_number":99,"context_line":"the on_present function creates the KuryrLoadbalancer CRD and also the endpoints subsets."},{"line_number":100,"context_line":"Otherwise, it will update the existing CRD."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"The loadbalancer handler upon noticing the updates of the KuryrLoadbalancer CRD"}],"source_content_type":"text/x-rst","patch_set":2,"id":"21cd348b_d8bf4d01","line":99,"range":{"start_line":99,"start_character":58,"end_line":99,"end_character":66},"updated":"2021-06-09 10:44:46.000000000","message":"better to use \"with\"","commit_id":"dff7e13d64ba18bf498704f69e711cfe0f6b4c57"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"1aadebe59a5515fd6a955f519106a27d797fa8a9","unresolved":true,"context_lines":[{"line_number":99,"context_line":"the on_present function creates the KuryrLoadbalancer CRD and also the endpoints subsets."},{"line_number":100,"context_line":"Otherwise, it will update the existing CRD."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"The loadbalancer handler upon noticing the updates of the KuryrLoadbalancer CRD"},{"line_number":103,"context_line":"using the spec data on the status, begins to create the openstack resources such as Loadbalancer,"},{"line_number":104,"context_line":"LoadBalancerListener, LoadBalancerPool and LoadBalancerMembers. It uses the _sync_lbaas_members"},{"line_number":105,"context_line":"function to constantly check if Openstack Loadbalancers are in sync with the kubernetes counterparts."}],"source_content_type":"text/x-rst","patch_set":2,"id":"cd9c1f5c_882ba8f1","line":102,"range":{"start_line":102,"start_character":39,"end_line":102,"end_character":57},"updated":"2021-06-09 10:44:46.000000000","message":"this might be a better fit: \"the KuryrLoadbalancer CRD  with the specification\"","commit_id":"dff7e13d64ba18bf498704f69e711cfe0f6b4c57"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"1aadebe59a5515fd6a955f519106a27d797fa8a9","unresolved":true,"context_lines":[{"line_number":100,"context_line":"Otherwise, it will update the existing CRD."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"The loadbalancer handler upon noticing the updates of the KuryrLoadbalancer CRD"},{"line_number":103,"context_line":"using the spec data on the status, begins to create the openstack resources such as Loadbalancer,"},{"line_number":104,"context_line":"LoadBalancerListener, LoadBalancerPool and LoadBalancerMembers. It uses the _sync_lbaas_members"},{"line_number":105,"context_line":"function to constantly check if Openstack Loadbalancers are in sync with the kubernetes counterparts."},{"line_number":106,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"f4b9627a_fad03f48","line":103,"range":{"start_line":103,"start_character":35,"end_line":103,"end_character":55},"updated":"2021-06-09 10:44:46.000000000","message":"calls the appropriate Drivers to handle the openstack resources","commit_id":"dff7e13d64ba18bf498704f69e711cfe0f6b4c57"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"a4a201165673eb5de44823ab4eab8df43f955e77","unresolved":true,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"The loadbalancer handler upon noticing the updates of the KuryrLoadbalancer CRD"},{"line_number":103,"context_line":"using the spec data on the status, begins to create the openstack resources such as Loadbalancer,"},{"line_number":104,"context_line":"LoadBalancerListener, LoadBalancerPool and LoadBalancerMembers. It uses the _sync_lbaas_members"},{"line_number":105,"context_line":"function to constantly check if Openstack Loadbalancers are in sync with the kubernetes counterparts."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"5e9412c0_081529e5","line":104,"range":{"start_line":104,"start_character":0,"end_line":104,"end_character":63},"updated":"2021-06-09 06:56:43.000000000","message":"Load Balancer Listeners, LoadBalancer Pools, and LoadBalancer Members","commit_id":"dff7e13d64ba18bf498704f69e711cfe0f6b4c57"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"a4a201165673eb5de44823ab4eab8df43f955e77","unresolved":true,"context_lines":[{"line_number":105,"context_line":"function to constantly check if Openstack Loadbalancers are in sync with the kubernetes counterparts."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"What happens if a member of the KuryKubernetes CRD is deleted?"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"If say the status field is deleted on the KuryKubernetes CRD such as setting the status member to empty,"},{"line_number":111,"context_line":"the Loadbalancer detects this change and confirms that the Openstack resources is no longer in sync"}],"source_content_type":"text/x-rst","patch_set":2,"id":"d7bcf23d_9fe8912c","line":108,"range":{"start_line":108,"start_character":0,"end_line":108,"end_character":62},"updated":"2021-06-09 06:56:43.000000000","message":"The text below is not answering this question. Perhaps the subsection tittle should make referece to the CRD status updates and syncs with OpenStack resources","commit_id":"dff7e13d64ba18bf498704f69e711cfe0f6b4c57"},{"author":{"_account_id":33240,"name":"Sunday Mgbogu","email":"digitalsimboja@gmail.com","username":"digitalsimboja"},"change_message_id":"13b261be971e4e31e18e1e3a3b5f26d4f8f950b8","unresolved":true,"context_lines":[{"line_number":105,"context_line":"function to constantly check if Openstack Loadbalancers are in sync with the kubernetes counterparts."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"What happens if a member of the KuryKubernetes CRD is deleted?"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"If say the status field is deleted on the KuryKubernetes CRD such as setting the status member to empty,"},{"line_number":111,"context_line":"the Loadbalancer detects this change and confirms that the Openstack resources is no longer in sync"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9bcc37ea_b75718dc","line":108,"range":{"start_line":108,"start_character":0,"end_line":108,"end_character":62},"in_reply_to":"d7bcf23d_9fe8912c","updated":"2021-06-09 07:55:49.000000000","message":"Got it!","commit_id":"dff7e13d64ba18bf498704f69e711cfe0f6b4c57"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"a4a201165673eb5de44823ab4eab8df43f955e77","unresolved":true,"context_lines":[{"line_number":107,"context_line":""},{"line_number":108,"context_line":"What happens if a member of the KuryKubernetes CRD is deleted?"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"If say the status field is deleted on the KuryKubernetes CRD such as setting the status member to empty,"},{"line_number":111,"context_line":"the Loadbalancer detects this change and confirms that the Openstack resources is no longer in sync"},{"line_number":112,"context_line":"with the KuryrKubernetes CRD. It therefore, uses the Provisioned OpenStack resources to update the Kuryr-"},{"line_number":113,"context_line":"Loadbalancer CRD with the spec data."}],"source_content_type":"text/x-rst","patch_set":2,"id":"3971c44e_f01565ef","line":110,"range":{"start_line":110,"start_character":42,"end_line":110,"end_character":61},"updated":"2021-06-09 06:56:43.000000000","message":"KuryrLoadBalancer CRD?","commit_id":"dff7e13d64ba18bf498704f69e711cfe0f6b4c57"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"a4a201165673eb5de44823ab4eab8df43f955e77","unresolved":true,"context_lines":[{"line_number":108,"context_line":"What happens if a member of the KuryKubernetes CRD is deleted?"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"If say the status field is deleted on the KuryKubernetes CRD such as setting the status member to empty,"},{"line_number":111,"context_line":"the Loadbalancer detects this change and confirms that the Openstack resources is no longer in sync"},{"line_number":112,"context_line":"with the KuryrKubernetes CRD. It therefore, uses the Provisioned OpenStack resources to update the Kuryr-"},{"line_number":113,"context_line":"Loadbalancer CRD with the spec data."},{"line_number":114,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"6d846cb3_c827ffff","line":111,"range":{"start_line":111,"start_character":4,"end_line":111,"end_character":25},"updated":"2021-06-09 06:56:43.000000000","message":"The LoadBalancer Handler that is watching these CRD objects detects","commit_id":"dff7e13d64ba18bf498704f69e711cfe0f6b4c57"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"a4a201165673eb5de44823ab4eab8df43f955e77","unresolved":true,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"If say the status field is deleted on the KuryKubernetes CRD such as setting the status member to empty,"},{"line_number":111,"context_line":"the Loadbalancer detects this change and confirms that the Openstack resources is no longer in sync"},{"line_number":112,"context_line":"with the KuryrKubernetes CRD. It therefore, uses the Provisioned OpenStack resources to update the Kuryr-"},{"line_number":113,"context_line":"Loadbalancer CRD with the spec data."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":".. _Kubernetes service: http://kubernetes.io/docs/user-guide/services/"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1e0a15d7_708fb907","line":112,"range":{"start_line":112,"start_character":9,"end_line":112,"end_character":28},"updated":"2021-06-09 06:56:43.000000000","message":"KuryrLoadBalancer CRD","commit_id":"dff7e13d64ba18bf498704f69e711cfe0f6b4c57"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"e32e0d1a561c6424f99dfaa88137aa1bf7dac101","unresolved":true,"context_lines":[{"line_number":88,"context_line":"It abstracts all the details of service translation to Load Balancer."},{"line_number":89,"context_line":"LBaaSv2Driver supports this interface by mapping to neutron LBaaSv2 constructs."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"Service Creation Process"},{"line_number":92,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":93,"context_line":"What happens when a service gets created by Kubernetes?"},{"line_number":94,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"24953f28_2fd602df","line":91,"range":{"start_line":91,"start_character":8,"end_line":91,"end_character":16},"updated":"2021-06-11 15:57:02.000000000","message":"It would be nice to also include a section about service deletion process where you mention how the finalize work","commit_id":"7094b09a9ad48cf02e6b7b46e3d37f6cbb92e0c4"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"79afc1d71992cc0f52bfb375c4ed1387e88ae30c","unresolved":true,"context_lines":[{"line_number":88,"context_line":"It abstracts all the details of service translation to Load Balancer."},{"line_number":89,"context_line":"LBaaSv2Driver supports this interface by mapping to neutron LBaaSv2 constructs."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"Service Creation Process"},{"line_number":92,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":93,"context_line":"What happens when a service gets created by Kubernetes?"},{"line_number":94,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"0f7933f0_e790da94","line":91,"range":{"start_line":91,"start_character":8,"end_line":91,"end_character":16},"in_reply_to":"24953f28_2fd602df","updated":"2021-06-11 16:02:48.000000000","message":"or improve what we already have above (line 82-86)","commit_id":"7094b09a9ad48cf02e6b7b46e3d37f6cbb92e0c4"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"ecf18636a1cd1e4a5b6e2cdb44bd905c6682008d","unresolved":true,"context_lines":[{"line_number":92,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":93,"context_line":"What happens when a service gets created by Kubernetes?"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"When a service is created on Kubernetes, the lbaas.py ServiceHandler and EndpointsHandler"},{"line_number":96,"context_line":"handlers are called. If the ServiceHandler on_present function is called first, then the handler"},{"line_number":97,"context_line":"creates the KuryrLoadbalancer CRD with empty status. With empty status field, the loadbalancer"},{"line_number":98,"context_line":"KuryrLoadBalancerHandler gets called but does nothing. But if the EndpointsHandler is called first,"}],"source_content_type":"text/x-rst","patch_set":3,"id":"deb8f20e_ad71fb42","line":95,"range":{"start_line":95,"start_character":0,"end_line":95,"end_character":39},"updated":"2021-06-11 10:00:44.000000000","message":"Maybe it can be rephrased with the following: \"When a Kubernetes Service and Endpoints are created...\"","commit_id":"7094b09a9ad48cf02e6b7b46e3d37f6cbb92e0c4"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"ecf18636a1cd1e4a5b6e2cdb44bd905c6682008d","unresolved":true,"context_lines":[{"line_number":93,"context_line":"What happens when a service gets created by Kubernetes?"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"When a service is created on Kubernetes, the lbaas.py ServiceHandler and EndpointsHandler"},{"line_number":96,"context_line":"handlers are called. If the ServiceHandler on_present function is called first, then the handler"},{"line_number":97,"context_line":"creates the KuryrLoadbalancer CRD with empty status. With empty status field, the loadbalancer"},{"line_number":98,"context_line":"KuryrLoadBalancerHandler gets called but does nothing. But if the EndpointsHandler is called first,"},{"line_number":99,"context_line":"the on_present function creates the KuryrLoadbalancer CRD with the endpoints subsets."}],"source_content_type":"text/x-rst","patch_set":3,"id":"9118f82e_4fd28733","line":96,"range":{"start_line":96,"start_character":21,"end_line":96,"end_character":78},"updated":"2021-06-11 10:00:44.000000000","message":"When the ServiceHandler first starts handling the on_present event, it creates...","commit_id":"7094b09a9ad48cf02e6b7b46e3d37f6cbb92e0c4"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"ecf18636a1cd1e4a5b6e2cdb44bd905c6682008d","unresolved":true,"context_lines":[{"line_number":93,"context_line":"What happens when a service gets created by Kubernetes?"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"When a service is created on Kubernetes, the lbaas.py ServiceHandler and EndpointsHandler"},{"line_number":96,"context_line":"handlers are called. If the ServiceHandler on_present function is called first, then the handler"},{"line_number":97,"context_line":"creates the KuryrLoadbalancer CRD with empty status. With empty status field, the loadbalancer"},{"line_number":98,"context_line":"KuryrLoadBalancerHandler gets called but does nothing. But if the EndpointsHandler is called first,"},{"line_number":99,"context_line":"the on_present function creates the KuryrLoadbalancer CRD with the endpoints subsets."}],"source_content_type":"text/x-rst","patch_set":3,"id":"6fb5ee3c_891298bf","line":96,"range":{"start_line":96,"start_character":0,"end_line":96,"end_character":8},"updated":"2021-06-11 10:00:44.000000000","message":"no need to mention handler again as the name of the handlers already contains it","commit_id":"7094b09a9ad48cf02e6b7b46e3d37f6cbb92e0c4"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"ecf18636a1cd1e4a5b6e2cdb44bd905c6682008d","unresolved":true,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"When a service is created on Kubernetes, the lbaas.py ServiceHandler and EndpointsHandler"},{"line_number":96,"context_line":"handlers are called. If the ServiceHandler on_present function is called first, then the handler"},{"line_number":97,"context_line":"creates the KuryrLoadbalancer CRD with empty status. With empty status field, the loadbalancer"},{"line_number":98,"context_line":"KuryrLoadBalancerHandler gets called but does nothing. But if the EndpointsHandler is called first,"},{"line_number":99,"context_line":"the on_present function creates the KuryrLoadbalancer CRD with the endpoints subsets."},{"line_number":100,"context_line":"Otherwise, it will update the existing CRD."},{"line_number":101,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"457c3e92_0d45b2e2","line":98,"range":{"start_line":97,"start_character":78,"end_line":98,"end_character":54},"updated":"2021-06-11 10:00:44.000000000","message":"the event reaching KuryrLoadBalancerHandler is skipped","commit_id":"7094b09a9ad48cf02e6b7b46e3d37f6cbb92e0c4"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"ecf18636a1cd1e4a5b6e2cdb44bd905c6682008d","unresolved":true,"context_lines":[{"line_number":95,"context_line":"When a service is created on Kubernetes, the lbaas.py ServiceHandler and EndpointsHandler"},{"line_number":96,"context_line":"handlers are called. If the ServiceHandler on_present function is called first, then the handler"},{"line_number":97,"context_line":"creates the KuryrLoadbalancer CRD with empty status. With empty status field, the loadbalancer"},{"line_number":98,"context_line":"KuryrLoadBalancerHandler gets called but does nothing. But if the EndpointsHandler is called first,"},{"line_number":99,"context_line":"the on_present function creates the KuryrLoadbalancer CRD with the endpoints subsets."},{"line_number":100,"context_line":"Otherwise, it will update the existing CRD."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"The loadbalancer.py KuryrLoadBalancerHandler upon noticing the KuryrLoadbalancer CRD with the specification,"}],"source_content_type":"text/x-rst","patch_set":3,"id":"e971149d_4f027af4","line":99,"range":{"start_line":98,"start_character":66,"end_line":99,"end_character":24},"updated":"2021-06-11 10:00:44.000000000","message":"EndpointsHandler starts handling the on_present event, the KuryrLoadbalancer CRD is created...","commit_id":"7094b09a9ad48cf02e6b7b46e3d37f6cbb92e0c4"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"ecf18636a1cd1e4a5b6e2cdb44bd905c6682008d","unresolved":true,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"The loadbalancer.py KuryrLoadBalancerHandler upon noticing the KuryrLoadbalancer CRD with the specification,"},{"line_number":103,"context_line":"calls the appropriate Drivers to handle the openstack resources such as Loadbalancer,"},{"line_number":104,"context_line":"Load Balancer Listeners, LoadBalancer Pools, and LoadBalancer Members. It uses the _sync_lbaas_members"},{"line_number":105,"context_line":"function to constantly check if Openstack Loadbalancers are in sync with the kubernetes counterparts."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"cfc99653_4b14b8be","line":104,"range":{"start_line":104,"start_character":25,"end_line":104,"end_character":37},"updated":"2021-06-11 10:00:44.000000000","message":"Load Balancer","commit_id":"7094b09a9ad48cf02e6b7b46e3d37f6cbb92e0c4"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"ecf18636a1cd1e4a5b6e2cdb44bd905c6682008d","unresolved":true,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"The loadbalancer.py KuryrLoadBalancerHandler upon noticing the KuryrLoadbalancer CRD with the specification,"},{"line_number":103,"context_line":"calls the appropriate Drivers to handle the openstack resources such as Loadbalancer,"},{"line_number":104,"context_line":"Load Balancer Listeners, LoadBalancer Pools, and LoadBalancer Members. It uses the _sync_lbaas_members"},{"line_number":105,"context_line":"function to constantly check if Openstack Loadbalancers are in sync with the kubernetes counterparts."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"c243e66c_ac5eb945","line":104,"range":{"start_line":104,"start_character":49,"end_line":104,"end_character":61},"updated":"2021-06-11 10:00:44.000000000","message":"ditto","commit_id":"7094b09a9ad48cf02e6b7b46e3d37f6cbb92e0c4"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"ecf18636a1cd1e4a5b6e2cdb44bd905c6682008d","unresolved":true,"context_lines":[{"line_number":104,"context_line":"Load Balancer Listeners, LoadBalancer Pools, and LoadBalancer Members. It uses the _sync_lbaas_members"},{"line_number":105,"context_line":"function to constantly check if Openstack Loadbalancers are in sync with the kubernetes counterparts."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"What happens if the KuryrLoadBalancer CRD  status changes?"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"If say the status field is deleted on the KuryrLoadBalancer CRD such as setting the status member to empty,"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fbfc24a2_3e2fa825","line":107,"updated":"2021-06-11 10:00:44.000000000","message":"multiple lines","commit_id":"7094b09a9ad48cf02e6b7b46e3d37f6cbb92e0c4"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"ecf18636a1cd1e4a5b6e2cdb44bd905c6682008d","unresolved":true,"context_lines":[{"line_number":105,"context_line":"function to constantly check if Openstack Loadbalancers are in sync with the kubernetes counterparts."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"What happens if the KuryrLoadBalancer CRD  status changes?"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"If say the status field is deleted on the KuryrLoadBalancer CRD such as setting the status member to empty,"},{"line_number":111,"context_line":"the LoadBalancer Handler that is watching these CRD objects detects this change and confirms that the OpenStack resources"}],"source_content_type":"text/x-rst","patch_set":3,"id":"b75df21b_852db2c1","line":108,"range":{"start_line":108,"start_character":41,"end_line":108,"end_character":43},"updated":"2021-06-11 10:00:44.000000000","message":"double space","commit_id":"7094b09a9ad48cf02e6b7b46e3d37f6cbb92e0c4"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"ecf18636a1cd1e4a5b6e2cdb44bd905c6682008d","unresolved":true,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"If say the status field is deleted on the KuryrLoadBalancer CRD such as setting the status member to empty,"},{"line_number":111,"context_line":"the LoadBalancer Handler that is watching these CRD objects detects this change and confirms that the OpenStack resources"},{"line_number":112,"context_line":"are no longer in sync with the KuryrLoadBalancer CRD. It therefore, uses the Provisioned OpenStack resources to update the Kuryr-"},{"line_number":113,"context_line":"Loadbalancer CRD with the spec data."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":".. _Kubernetes service: http://kubernetes.io/docs/user-guide/services/"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3bf29df0_ba5e8bb5","line":112,"range":{"start_line":112,"start_character":128,"end_line":112,"end_character":129},"updated":"2021-06-11 10:00:44.000000000","message":"no need for the dash","commit_id":"7094b09a9ad48cf02e6b7b46e3d37f6cbb92e0c4"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"ecf18636a1cd1e4a5b6e2cdb44bd905c6682008d","unresolved":true,"context_lines":[{"line_number":110,"context_line":"If say the status field is deleted on the KuryrLoadBalancer CRD such as setting the status member to empty,"},{"line_number":111,"context_line":"the LoadBalancer Handler that is watching these CRD objects detects this change and confirms that the OpenStack resources"},{"line_number":112,"context_line":"are no longer in sync with the KuryrLoadBalancer CRD. It therefore, uses the Provisioned OpenStack resources to update the Kuryr-"},{"line_number":113,"context_line":"Loadbalancer CRD with the spec data."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":".. _Kubernetes service: http://kubernetes.io/docs/user-guide/services/"},{"line_number":116,"context_line":".. _Kube-Proxy: http://kubernetes.io/docs/admin/kube-proxy/"}],"source_content_type":"text/x-rst","patch_set":3,"id":"c1fdfa1d_1ff3dfdb","line":113,"range":{"start_line":113,"start_character":26,"end_line":113,"end_character":30},"updated":"2021-06-11 10:00:44.000000000","message":"recovered status","commit_id":"7094b09a9ad48cf02e6b7b46e3d37f6cbb92e0c4"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"8f7c4881dcd3e06e25a4270bfff3952068f0d108","unresolved":true,"context_lines":[{"line_number":93,"context_line":"What happens when a service gets created by Kubernetes?"},{"line_number":94,"context_line":"++++++++++++++++++++++++++++++++++++++++++++++++++++++++"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"When a Kubernetes Service and Endpoints are created, the lbaas.py ServiceHandler and"},{"line_number":97,"context_line":"EndpointsHandler are called. When the ServiceHandler first starts handling the on_present"},{"line_number":98,"context_line":"event, it creates the KuryrLoadbalancer CRD with empty status. With empty status field,"},{"line_number":99,"context_line":"the event reaching KuryrLoadBalancerHandler is skipped. But if the EndpointsHandler starts"},{"line_number":100,"context_line":"handling the on_present event, the KuryrLoadbalancer CRD is created with the endpoints"}],"source_content_type":"text/x-rst","patch_set":4,"id":"202edd85_a594da2d","line":97,"range":{"start_line":96,"start_character":53,"end_line":97,"end_character":27},"updated":"2021-06-16 06:54:23.000000000","message":"perhaps better to put it like: the ServiceHandler and EndpointHandler (at controller/handlers/lbaas.py) are called","commit_id":"d429886b58ed08f25f28c4d37463e9ba2c5ed741"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"8f7c4881dcd3e06e25a4270bfff3952068f0d108","unresolved":true,"context_lines":[{"line_number":100,"context_line":"handling the on_present event, the KuryrLoadbalancer CRD is created with the endpoints"},{"line_number":101,"context_line":"subsets. Otherwise, it will update the existing CRD."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"The loadbalancer.py KuryrLoadBalancerHandler upon noticing the KuryrLoadbalancer CRD with"},{"line_number":104,"context_line":"the specification, calls the appropriate Drivers to handle the openstack resources such"},{"line_number":105,"context_line":"as Loadbalancer, Load Balancer Listeners, Load Balancer Pools, and Load Balancer Members."},{"line_number":106,"context_line":"It uses the _sync_lbaas_members function to constantly check if Openstack Loadbalancers"}],"source_content_type":"text/x-rst","patch_set":4,"id":"02ce7df2_2a7916e2","line":103,"range":{"start_line":103,"start_character":0,"end_line":103,"end_character":45},"updated":"2021-06-16 06:54:23.000000000","message":"The KuryrLoadBalancerHandler (at controller/handlers/loadbalancer.py)","commit_id":"d429886b58ed08f25f28c4d37463e9ba2c5ed741"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"8f7c4881dcd3e06e25a4270bfff3952068f0d108","unresolved":true,"context_lines":[{"line_number":103,"context_line":"The loadbalancer.py KuryrLoadBalancerHandler upon noticing the KuryrLoadbalancer CRD with"},{"line_number":104,"context_line":"the specification, calls the appropriate Drivers to handle the openstack resources such"},{"line_number":105,"context_line":"as Loadbalancer, Load Balancer Listeners, Load Balancer Pools, and Load Balancer Members."},{"line_number":106,"context_line":"It uses the _sync_lbaas_members function to constantly check if Openstack Loadbalancers"},{"line_number":107,"context_line":"are in sync with the kubernetes counterparts."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"10a94c6f_5072c0a5","line":106,"range":{"start_line":106,"start_character":43,"end_line":106,"end_character":54},"updated":"2021-06-16 06:54:23.000000000","message":"not constantly, it just execute this upon KuryrLoadBalancer CRD update/modification","commit_id":"d429886b58ed08f25f28c4d37463e9ba2c5ed741"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"8f7c4881dcd3e06e25a4270bfff3952068f0d108","unresolved":true,"context_lines":[{"line_number":114,"context_line":""},{"line_number":115,"context_line":"When a Kubernetes Service and Endpoints are deleted, finalizers are defined to ensure the"},{"line_number":116,"context_line":"OpenStack resources are cleaned first before being removed by Kubernetes. A Kubernetes"},{"line_number":117,"context_line":"delete event is handled by the on_finalize function in the ServiceHandler. It deletes"},{"line_number":118,"context_line":"the OpenStack load balancers and pass control to the Kubernetes client which eventually"},{"line_number":119,"context_line":"removes the associated service. "},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"What happens if the KuryrLoadBalancer CRD status changes?"},{"line_number":122,"context_line":"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"}],"source_content_type":"text/x-rst","patch_set":4,"id":"eb44de6f_15643d6e","line":119,"range":{"start_line":117,"start_character":74,"end_line":119,"end_character":32},"updated":"2021-06-16 06:54:23.000000000","message":"this is not the case, many steps are missing here. The ServiceHandler triggers the deletion of the KuryrLoadBalancer CRD, and it does not remove the OpenStack loadbalancer. When doing that, the KuryrLoadBalancerHandler executes the on_finalize and triggers the deletion of the OpenStack resources (cascade deleting the loadbalancer) and remove the finalizer from the CRD object and the service object","commit_id":"d429886b58ed08f25f28c4d37463e9ba2c5ed741"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"05e68f7ac8447c17c632af6e521da5cbb6207a7a","unresolved":true,"context_lines":[{"line_number":96,"context_line":"When a Kubernetes Service and Endpoints are created,the ServiceHandler and"},{"line_number":97,"context_line":"EndpointHandler (at controller/handlers/lbaas.py) are called. When the"},{"line_number":98,"context_line":"ServiceHandler first starts handling the on_present event, it creates the"},{"line_number":99,"context_line":"KuryrLoadbalancer CRD with empty status. With empty status field,the event"},{"line_number":100,"context_line":"reaching KuryrLoadBalancerHandler is skipped. But if the EndpointsHandler"},{"line_number":101,"context_line":"starts handling the on_present event, the KuryrLoadbalancer CRD is created"},{"line_number":102,"context_line":"with the endpoints subsets. Otherwise, it will update the existing CRD."}],"source_content_type":"text/x-rst","patch_set":5,"id":"5288b366_b060f155","line":99,"range":{"start_line":99,"start_character":59,"end_line":99,"end_character":68},"updated":"2021-06-21 07:06:35.000000000","message":"missing space","commit_id":"1f225261d0ebdb21e3f1d980078276d357c5b7e5"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"05e68f7ac8447c17c632af6e521da5cbb6207a7a","unresolved":true,"context_lines":[{"line_number":97,"context_line":"EndpointHandler (at controller/handlers/lbaas.py) are called. When the"},{"line_number":98,"context_line":"ServiceHandler first starts handling the on_present event, it creates the"},{"line_number":99,"context_line":"KuryrLoadbalancer CRD with empty status. With empty status field,the event"},{"line_number":100,"context_line":"reaching KuryrLoadBalancerHandler is skipped. But if the EndpointsHandler"},{"line_number":101,"context_line":"starts handling the on_present event, the KuryrLoadbalancer CRD is created"},{"line_number":102,"context_line":"with the endpoints subsets. Otherwise, it will update the existing CRD."},{"line_number":103,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"a4050328_856403bb","line":100,"range":{"start_line":100,"start_character":46,"end_line":100,"end_character":56},"updated":"2021-06-21 07:06:35.000000000","message":"Remove \"But\". \"If the EndpointsHandler starts....\"","commit_id":"1f225261d0ebdb21e3f1d980078276d357c5b7e5"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"05e68f7ac8447c17c632af6e521da5cbb6207a7a","unresolved":true,"context_lines":[{"line_number":102,"context_line":"with the endpoints subsets. Otherwise, it will update the existing CRD."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"The KuryrLoadBalancerHandler (at controller/handlers/loadbalancer.py) upon"},{"line_number":105,"context_line":"noticing the KuryrLoadbalancer CRD with the specification, calls the"},{"line_number":106,"context_line":"appropriate Drivers to handle the openstack resources such as Loadbalancer,"},{"line_number":107,"context_line":"Load Balancer Listeners, Load Balancer Pools, and Load Balancer Members."},{"line_number":108,"context_line":"It uses the _sync_lbaas_members function to check if Openstack"}],"source_content_type":"text/x-rst","patch_set":5,"id":"b3a5ccd7_1dd78af2","line":105,"range":{"start_line":105,"start_character":40,"end_line":105,"end_character":57},"updated":"2021-06-21 07:06:35.000000000","message":"with the full specification","commit_id":"1f225261d0ebdb21e3f1d980078276d357c5b7e5"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"75856fc1194a656b0212b7324479f5d3df95d4c2","unresolved":true,"context_lines":[{"line_number":114,"context_line":"What happens when a service gets deleted by Kubernetes?"},{"line_number":115,"context_line":"+++++++++++++++++++++++++++++++++++++++++++++++++++++++"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"When a Kubernetes Service and Endpoints are deleted, finalizers are defined to ensure the"},{"line_number":118,"context_line":"OpenStack resources are cleaned first before being removed by Kubernetes. A"},{"line_number":119,"context_line":"Kubernetes delete event is handled by the on_finalize function in the"},{"line_number":120,"context_line":"ServiceHandler.The ServiceHandler triggers the deletion of the"}],"source_content_type":"text/x-rst","patch_set":5,"id":"f73fbcaf_91175e9b","line":117,"range":{"start_line":117,"start_character":53,"end_line":117,"end_character":75},"updated":"2021-06-21 09:17:15.000000000","message":"Finalizers are defined during CRD creation[1], not when service/endpoints are deleted.\n\n[1] https://github.com/openstack/kuryr-kubernetes/blob/fca917d9794387019d54b5acfcbc57f507958040/kuryr_kubernetes/controller/handlers/lbaas.py#L161","commit_id":"1f225261d0ebdb21e3f1d980078276d357c5b7e5"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"75856fc1194a656b0212b7324479f5d3df95d4c2","unresolved":true,"context_lines":[{"line_number":117,"context_line":"When a Kubernetes Service and Endpoints are deleted, finalizers are defined to ensure the"},{"line_number":118,"context_line":"OpenStack resources are cleaned first before being removed by Kubernetes. A"},{"line_number":119,"context_line":"Kubernetes delete event is handled by the on_finalize function in the"},{"line_number":120,"context_line":"ServiceHandler.The ServiceHandler triggers the deletion of the"},{"line_number":121,"context_line":"KuryrLoadBalancer CRD. But this does not remove the OpenStack loadbalancer. "},{"line_number":122,"context_line":"When doing that, the KuryrLoadBalancerHandler executes the on_finalize and"},{"line_number":123,"context_line":"triggers the deletion of the OpenStack resources (cascade deleting the"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ebea395f_2d814017","line":120,"range":{"start_line":120,"start_character":15,"end_line":120,"end_character":18},"updated":"2021-06-21 09:17:15.000000000","message":"missing space before \"The\"","commit_id":"1f225261d0ebdb21e3f1d980078276d357c5b7e5"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"05e68f7ac8447c17c632af6e521da5cbb6207a7a","unresolved":true,"context_lines":[{"line_number":119,"context_line":"Kubernetes delete event is handled by the on_finalize function in the"},{"line_number":120,"context_line":"ServiceHandler.The ServiceHandler triggers the deletion of the"},{"line_number":121,"context_line":"KuryrLoadBalancer CRD. But this does not remove the OpenStack loadbalancer. "},{"line_number":122,"context_line":"When doing that, the KuryrLoadBalancerHandler executes the on_finalize and"},{"line_number":123,"context_line":"triggers the deletion of the OpenStack resources (cascade deleting the"},{"line_number":124,"context_line":"loadbalancer) and remove the finalizer from the CRD object and the service"},{"line_number":125,"context_line":"object. "},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"What happens if the KuryrLoadBalancer CRD status changes?"},{"line_number":128,"context_line":"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"}],"source_content_type":"text/x-rst","patch_set":5,"id":"4a8f1310_276a111e","line":125,"range":{"start_line":122,"start_character":0,"end_line":125,"end_character":8},"updated":"2021-06-21 07:06:35.000000000","message":"missing the second part. When those finalizers are removed, k8s is able to remove the objects (CRD and service) and complete the service removal action","commit_id":"1f225261d0ebdb21e3f1d980078276d357c5b7e5"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"75856fc1194a656b0212b7324479f5d3df95d4c2","unresolved":true,"context_lines":[{"line_number":127,"context_line":"What happens if the KuryrLoadBalancer CRD status changes?"},{"line_number":128,"context_line":"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"If say the status field is deleted on the KuryrLoadBalancer CRD such as setting the status"},{"line_number":131,"context_line":"member to empty, the LoadBalancer Handler that is watching these CRD objects detects this"},{"line_number":132,"context_line":"change and confirms that the OpenStack resources are no longer in sync with the"},{"line_number":133,"context_line":"KuryrLoadBalancer CRD. It therefore, uses the Provisioned OpenStack resources to update"}],"source_content_type":"text/x-rst","patch_set":5,"id":"6cc126dc_1e443939","line":130,"range":{"start_line":130,"start_character":0,"end_line":130,"end_character":83},"updated":"2021-06-21 09:17:15.000000000","message":"It could rephrased to: If the members field on the status is manually removed...","commit_id":"1f225261d0ebdb21e3f1d980078276d357c5b7e5"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"75856fc1194a656b0212b7324479f5d3df95d4c2","unresolved":true,"context_lines":[{"line_number":128,"context_line":"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"If say the status field is deleted on the KuryrLoadBalancer CRD such as setting the status"},{"line_number":131,"context_line":"member to empty, the LoadBalancer Handler that is watching these CRD objects detects this"},{"line_number":132,"context_line":"change and confirms that the OpenStack resources are no longer in sync with the"},{"line_number":133,"context_line":"KuryrLoadBalancer CRD. It therefore, uses the Provisioned OpenStack resources to update"},{"line_number":134,"context_line":"the KuryrLoadbalancer CRD with the recovered status data."}],"source_content_type":"text/x-rst","patch_set":5,"id":"450f796d_60e3de9d","line":131,"range":{"start_line":131,"start_character":21,"end_line":131,"end_character":33},"updated":"2021-06-21 09:17:15.000000000","message":"KuryrLoadBalancer","commit_id":"1f225261d0ebdb21e3f1d980078276d357c5b7e5"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"074e1d555d15fe165b4fcad3316bfde7f53be8f6","unresolved":true,"context_lines":[{"line_number":96,"context_line":"When a Kubernetes Service and Endpoints are created,the ServiceHandler and"},{"line_number":97,"context_line":"EndpointHandler (at controller/handlers/lbaas.py) are called. When the"},{"line_number":98,"context_line":"ServiceHandler first starts handling the on_present event, it creates the"},{"line_number":99,"context_line":"KuryrLoadbalancer CRD with empty status. With empty status field, the event"},{"line_number":100,"context_line":"reaching KuryrLoadBalancerHandler is skipped. If the EndpointsHandler"},{"line_number":101,"context_line":"starts handling the on_present event, the KuryrLoadbalancer CRD is created"},{"line_number":102,"context_line":"with the endpoints subsets. Otherwise, it will update the existing CRD."},{"line_number":103,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"d4299e03_d6885107","line":100,"range":{"start_line":99,"start_character":41,"end_line":100,"end_character":45},"updated":"2021-06-22 07:03:02.000000000","message":"it is not skipped due to having empty status field. It is skipped since the spec field does not have the whole information, i.e., it misses the information that will be added by the EndpointsHandler","commit_id":"7dc6bf5a7fb40e09688b8e40acb5231b5ae73cfa"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"074e1d555d15fe165b4fcad3316bfde7f53be8f6","unresolved":true,"context_lines":[{"line_number":114,"context_line":"What happens when a service gets deleted by Kubernetes?"},{"line_number":115,"context_line":"+++++++++++++++++++++++++++++++++++++++++++++++++++++++"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"When a Kubernetes Service and Endpoints are deleted, the finalizers which are"},{"line_number":118,"context_line":"defined during the CRD creation, ensures that the OpenStack resources are"},{"line_number":119,"context_line":"cleaned first before being removed by Kubernetes. The finalizers removes the"},{"line_number":120,"context_line":"associated OpenStack resources before being removed. When the finalizers"},{"line_number":121,"context_line":"are removed, Kubernetes is able to remove the CRD and the service, hence"}],"source_content_type":"text/x-rst","patch_set":6,"id":"90bbbf26_b70f9087","line":118,"range":{"start_line":117,"start_character":53,"end_line":118,"end_character":32},"updated":"2021-06-22 07:03:02.000000000","message":"the finalizers which are added to the service object and defined during the KuryrLoadBalancer CRD creationg ensure that the OpenStack resources ...","commit_id":"7dc6bf5a7fb40e09688b8e40acb5231b5ae73cfa"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"074e1d555d15fe165b4fcad3316bfde7f53be8f6","unresolved":true,"context_lines":[{"line_number":116,"context_line":""},{"line_number":117,"context_line":"When a Kubernetes Service and Endpoints are deleted, the finalizers which are"},{"line_number":118,"context_line":"defined during the CRD creation, ensures that the OpenStack resources are"},{"line_number":119,"context_line":"cleaned first before being removed by Kubernetes. The finalizers removes the"},{"line_number":120,"context_line":"associated OpenStack resources before being removed. When the finalizers"},{"line_number":121,"context_line":"are removed, Kubernetes is able to remove the CRD and the service, hence"},{"line_number":122,"context_line":"completing the service removal action."},{"line_number":123,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"f4f3c231_226f93a1","line":120,"range":{"start_line":119,"start_character":50,"end_line":120,"end_character":52},"updated":"2021-06-22 07:03:02.000000000","message":"The finalizers block the removal of the kubernetes object until the associated OpenStack resources are removed","commit_id":"7dc6bf5a7fb40e09688b8e40acb5231b5ae73cfa"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"074e1d555d15fe165b4fcad3316bfde7f53be8f6","unresolved":true,"context_lines":[{"line_number":117,"context_line":"When a Kubernetes Service and Endpoints are deleted, the finalizers which are"},{"line_number":118,"context_line":"defined during the CRD creation, ensures that the OpenStack resources are"},{"line_number":119,"context_line":"cleaned first before being removed by Kubernetes. The finalizers removes the"},{"line_number":120,"context_line":"associated OpenStack resources before being removed. When the finalizers"},{"line_number":121,"context_line":"are removed, Kubernetes is able to remove the CRD and the service, hence"},{"line_number":122,"context_line":"completing the service removal action."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"b83c8705_c212a394","line":121,"range":{"start_line":120,"start_character":53,"end_line":121,"end_character":12},"updated":"2021-06-22 07:03:02.000000000","message":"Once the OpenStack resources are removed, the KuryrLoadBalancerHandler removes the finalizers, and kubernetes is able to remove the...","commit_id":"7dc6bf5a7fb40e09688b8e40acb5231b5ae73cfa"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"074e1d555d15fe165b4fcad3316bfde7f53be8f6","unresolved":true,"context_lines":[{"line_number":128,"context_line":"If the members field on the status is manually removed or the status is completely"},{"line_number":129,"context_line":"set to an empty object, the KuryrLoadBalancerHandler that is watching these CRD"},{"line_number":130,"context_line":"objects detects this change and confirms that the OpenStack resources are no longer"},{"line_number":131,"context_line":"in sync with the KuryrLoadBalancer CRD. It therefore, uses the Provisioned OpenStack"},{"line_number":132,"context_line":"resources to update the KuryrLoadbalancer CRD with the recovered status data."},{"line_number":133,"context_line":""},{"line_number":134,"context_line":".. _Kubernetes service: http://kubernetes.io/docs/user-guide/services/"},{"line_number":135,"context_line":".. _Kube-Proxy: http://kubernetes.io/docs/admin/kube-proxy/"}],"source_content_type":"text/x-rst","patch_set":6,"id":"f46fadf7_e707198e","line":132,"range":{"start_line":131,"start_character":39,"end_line":132,"end_character":77},"updated":"2021-06-22 07:03:02.000000000","message":"perhaps it can be rephrased to highlight that it check if there are provisioned OpenStack resources (in this case loadbalancers, listeners, pools, and members) for the service/endpoints defined on the KuryrLoadBalancer CRD spec. And if that is the case, it retrieves their information and put it back on the CRD status field. If that is not the case (due to someone/something deleting those resources on the OpenStack side), it will recreate the resources and write the new information about them on the CRD status field.","commit_id":"7dc6bf5a7fb40e09688b8e40acb5231b5ae73cfa"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"56a9077eaa2e30f2c6cd7fd15d55c4258a86aabd","unresolved":true,"context_lines":[{"line_number":117,"context_line":"+++++++++++++++++++++++++++++++++++++++++++++++++++++++"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"When a Kubernetes Service and Endpoints are deleted, the finalizers which are"},{"line_number":120,"context_line":"added to the service object and defined during the KuryrLoadBalancer CRD creation"},{"line_number":121,"context_line":"ensure that the OpenStack resources are cleaned first before being removed by Kubernetes."},{"line_number":122,"context_line":"The finalizers block the removal of the kubernetes object until the associated OpenStack"},{"line_number":123,"context_line":"resources are removed, Kubernetes is able to remove the CRD and the service, hence"}],"source_content_type":"text/x-rst","patch_set":8,"id":"570b933f_2c948f1f","line":120,"range":{"start_line":120,"start_character":13,"end_line":120,"end_character":28},"updated":"2021-06-23 06:41:30.000000000","message":"perhaps also worth to mention that the KLB CRD object also has a finalizer, something like: ...which are added to the service object (and the KLB CRD object too)","commit_id":"ffd16ea751a462d0e5c15db9d58fa083d8117e21"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"56a9077eaa2e30f2c6cd7fd15d55c4258a86aabd","unresolved":true,"context_lines":[{"line_number":120,"context_line":"added to the service object and defined during the KuryrLoadBalancer CRD creation"},{"line_number":121,"context_line":"ensure that the OpenStack resources are cleaned first before being removed by Kubernetes."},{"line_number":122,"context_line":"The finalizers block the removal of the kubernetes object until the associated OpenStack"},{"line_number":123,"context_line":"resources are removed, Kubernetes is able to remove the CRD and the service, hence"},{"line_number":124,"context_line":"completing the service removal action."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"83a6b96d_3b29ff58","line":123,"range":{"start_line":123,"start_character":23,"end_line":123,"end_character":76},"updated":"2021-06-23 06:41:30.000000000","message":". When they are removed, Kubernetes is able to....","commit_id":"ffd16ea751a462d0e5c15db9d58fa083d8117e21"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"56a9077eaa2e30f2c6cd7fd15d55c4258a86aabd","unresolved":true,"context_lines":[{"line_number":129,"context_line":""},{"line_number":130,"context_line":"If the members field on the status of the CRD is manually removed or the status is"},{"line_number":131,"context_line":"completely set to an empty object, the KuryrLoadBalancerHandler that is watching these"},{"line_number":132,"context_line":"CRD objects detects this change and confirms that the OpenStack resources are no longer"},{"line_number":133,"context_line":"in sync with the KuryrLoadBalancer CRD. It checks if there are provisioned OpenStack"},{"line_number":134,"context_line":"resources (in this case loadbalancers, listeners, pools, and members) for the service/"},{"line_number":135,"context_line":"endpoints defined on the KuryrLoadBalancer CRD spec. If that is the case, it retrieves"},{"line_number":136,"context_line":"their information and put it back on the CRD status field. If that is not the case"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5ac1616d_60d988b4","line":133,"range":{"start_line":132,"start_character":37,"end_line":133,"end_character":38},"updated":"2021-06-23 06:41:30.000000000","message":"it actually confirms that there is no information about the OpenStack resources on the status, so it needs to discover them or recreate them","commit_id":"ffd16ea751a462d0e5c15db9d58fa083d8117e21"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"038f669a470db8babc2f75d1f695c23a53d75efb","unresolved":true,"context_lines":[{"line_number":89,"context_line":"LBaaSv2Driver supports this interface by mapping to neutron LBaaSv2 constructs."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"Service Creation Process"},{"line_number":92,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":93,"context_line":"What happens when a service gets created by Kubernetes?"},{"line_number":94,"context_line":"++++++++++++++++++++++++++++++++++++++++++++++++++++++++"},{"line_number":95,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"acc110d4_6560374a","line":92,"range":{"start_line":92,"start_character":0,"end_line":92,"end_character":26},"updated":"2021-06-23 09:43:51.000000000","message":"Those lines should have the same length as the heading.","commit_id":"8fb8b238db6609a5b2fa61f41307ee17dd3e52a5"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"038f669a470db8babc2f75d1f695c23a53d75efb","unresolved":true,"context_lines":[{"line_number":96,"context_line":"When a Kubernetes Service and Endpoints are created,the ServiceHandler and"},{"line_number":97,"context_line":"EndpointHandler (at controller/handlers/lbaas.py) are called. When the"},{"line_number":98,"context_line":"ServiceHandler first starts handling the on_present event, it creates the"},{"line_number":99,"context_line":"KuryrLoadbalancer CRD with empty status. Due to the spec information is not"},{"line_number":100,"context_line":"yet added by the EndpointHandler on the status field, the event"},{"line_number":101,"context_line":"reaching KuryrLoadBalancerHandler is skipped. If the EndpointsHandler"},{"line_number":102,"context_line":"starts handling the on_present event first, the KuryrLoadbalancer CRD is created"}],"source_content_type":"text/x-rst","patch_set":9,"id":"4cb017c1_6feb473d","line":99,"range":{"start_line":99,"start_character":9,"end_line":99,"end_character":10},"updated":"2021-06-23 09:43:51.000000000","message":"It should be capital \"B\" everywhere, I think.","commit_id":"8fb8b238db6609a5b2fa61f41307ee17dd3e52a5"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"d3dda93267234b34987f5991e5407df77040da8e","unresolved":true,"context_lines":[{"line_number":96,"context_line":"When a Kubernetes Service and Endpoints are created,the ServiceHandler and"},{"line_number":97,"context_line":"EndpointHandler (at controller/handlers/lbaas.py) are called. When the"},{"line_number":98,"context_line":"ServiceHandler first starts handling the on_present event, it creates the"},{"line_number":99,"context_line":"KuryrLoadbalancer CRD with empty status. Due to the spec information is not"},{"line_number":100,"context_line":"yet added by the EndpointHandler on the status field, the event"},{"line_number":101,"context_line":"reaching KuryrLoadBalancerHandler is skipped. If the EndpointsHandler"},{"line_number":102,"context_line":"starts handling the on_present event first, the KuryrLoadbalancer CRD is created"}],"source_content_type":"text/x-rst","patch_set":9,"id":"426a1bdc_ff66e98b","line":99,"range":{"start_line":99,"start_character":41,"end_line":99,"end_character":51},"updated":"2021-06-23 09:43:45.000000000","message":"When the Endpoints information[1] is not yet added on the spec by...\n\n[1] https://github.com/openstack/kuryr-kubernetes/blob/5d2ac1c691ab305b4039e734d86fe13876333fd0/kuryr_kubernetes/controller/handlers/lbaas.py#L369-L380","commit_id":"8fb8b238db6609a5b2fa61f41307ee17dd3e52a5"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"d3dda93267234b34987f5991e5407df77040da8e","unresolved":true,"context_lines":[{"line_number":96,"context_line":"When a Kubernetes Service and Endpoints are created,the ServiceHandler and"},{"line_number":97,"context_line":"EndpointHandler (at controller/handlers/lbaas.py) are called. When the"},{"line_number":98,"context_line":"ServiceHandler first starts handling the on_present event, it creates the"},{"line_number":99,"context_line":"KuryrLoadbalancer CRD with empty status. Due to the spec information is not"},{"line_number":100,"context_line":"yet added by the EndpointHandler on the status field, the event"},{"line_number":101,"context_line":"reaching KuryrLoadBalancerHandler is skipped. If the EndpointsHandler"},{"line_number":102,"context_line":"starts handling the on_present event first, the KuryrLoadbalancer CRD is created"}],"source_content_type":"text/x-rst","patch_set":9,"id":"c79ed055_41f65b8d","line":99,"range":{"start_line":99,"start_character":27,"end_line":99,"end_character":39},"updated":"2021-06-23 09:43:45.000000000","message":"with the Service spec[1] and empty status\n\n[1] https://github.com/openstack/kuryr-kubernetes/blob/5d2ac1c691ab305b4039e734d86fe13876333fd0/kuryr_kubernetes/controller/handlers/lbaas.py#L226-L234","commit_id":"8fb8b238db6609a5b2fa61f41307ee17dd3e52a5"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"d3dda93267234b34987f5991e5407df77040da8e","unresolved":true,"context_lines":[{"line_number":97,"context_line":"EndpointHandler (at controller/handlers/lbaas.py) are called. When the"},{"line_number":98,"context_line":"ServiceHandler first starts handling the on_present event, it creates the"},{"line_number":99,"context_line":"KuryrLoadbalancer CRD with empty status. Due to the spec information is not"},{"line_number":100,"context_line":"yet added by the EndpointHandler on the status field, the event"},{"line_number":101,"context_line":"reaching KuryrLoadBalancerHandler is skipped. If the EndpointsHandler"},{"line_number":102,"context_line":"starts handling the on_present event first, the KuryrLoadbalancer CRD is created"},{"line_number":103,"context_line":"with the endpoints subsets. Otherwise, it will update the existing CRD created"}],"source_content_type":"text/x-rst","patch_set":9,"id":"abf4563a_cd5305a3","line":100,"range":{"start_line":100,"start_character":33,"end_line":100,"end_character":52},"updated":"2021-06-23 09:43:45.000000000","message":"this part can be removed as the previous sentence I suggested already mentions the correct field","commit_id":"8fb8b238db6609a5b2fa61f41307ee17dd3e52a5"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"d3dda93267234b34987f5991e5407df77040da8e","unresolved":true,"context_lines":[{"line_number":118,"context_line":""},{"line_number":119,"context_line":"When a Kubernetes Service and Endpoints are deleted, the finalizers which are"},{"line_number":120,"context_line":"added to the service object (and the KLB CRD Object too) and defined during the"},{"line_number":121,"context_line":"KuryrLoadBalancer CRD creation ensure that the OpenStack resources are cleaned"},{"line_number":122,"context_line":"first before being removed by Kubernetes. The finalizers block the removal of the"},{"line_number":123,"context_line":"kubernetes object until the associated OpenStack"},{"line_number":124,"context_line":"resources are removed. When they are removed, Kubernetes is able to remove the CRD"},{"line_number":125,"context_line":"and the service, hence completing the service removal action."}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa362f88_bffae182","line":122,"range":{"start_line":121,"start_character":31,"end_line":122,"end_character":41},"updated":"2021-06-23 09:43:45.000000000","message":"this fragment feels quite similar to the next fragment \"The finalizers block the removal of the kubernetes object until the associated OpenStack resources are removed\"\n\nperhaps can be removed?","commit_id":"8fb8b238db6609a5b2fa61f41307ee17dd3e52a5"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"d3dda93267234b34987f5991e5407df77040da8e","unresolved":true,"context_lines":[{"line_number":121,"context_line":"KuryrLoadBalancer CRD creation ensure that the OpenStack resources are cleaned"},{"line_number":122,"context_line":"first before being removed by Kubernetes. The finalizers block the removal of the"},{"line_number":123,"context_line":"kubernetes object until the associated OpenStack"},{"line_number":124,"context_line":"resources are removed. When they are removed, Kubernetes is able to remove the CRD"},{"line_number":125,"context_line":"and the service, hence completing the service removal action."},{"line_number":126,"context_line":""},{"line_number":127,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"eca57631_1441aa2b","line":124,"range":{"start_line":124,"start_character":14,"end_line":124,"end_character":21},"updated":"2021-06-23 09:43:45.000000000","message":"maybe the following can be included:\n\", which avoids leftovers\"","commit_id":"8fb8b238db6609a5b2fa61f41307ee17dd3e52a5"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"d3dda93267234b34987f5991e5407df77040da8e","unresolved":true,"context_lines":[{"line_number":122,"context_line":"first before being removed by Kubernetes. The finalizers block the removal of the"},{"line_number":123,"context_line":"kubernetes object until the associated OpenStack"},{"line_number":124,"context_line":"resources are removed. When they are removed, Kubernetes is able to remove the CRD"},{"line_number":125,"context_line":"and the service, hence completing the service removal action."},{"line_number":126,"context_line":""},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"What happens if the KuryrLoadBalancer CRD status changes?"}],"source_content_type":"text/x-rst","patch_set":9,"id":"93a87a3f_a74bf1ef","line":125,"range":{"start_line":125,"start_character":4,"end_line":125,"end_character":16},"updated":"2021-06-23 09:43:45.000000000","message":"also the Endpoints","commit_id":"8fb8b238db6609a5b2fa61f41307ee17dd3e52a5"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"038f669a470db8babc2f75d1f695c23a53d75efb","unresolved":true,"context_lines":[{"line_number":134,"context_line":"OpenStack resources on the status and so needs to rediscover or recreate them. It checks"},{"line_number":135,"context_line":"if there are provisioned OpenStack resources (in this case loadbalancers, listeners, pools,"},{"line_number":136,"context_line":"and members) for the service/endpoints defined on the KuryrLoadBalancer CRD spec. If that"},{"line_number":137,"context_line":"is the case, it retrieves their information and put it back on the CRD status field. If that"},{"line_number":138,"context_line":"is not the case (due to the resources being deleted on the OpenStack side), it will recreate"},{"line_number":139,"context_line":"the resources and write the new information about them on the CRD status field."},{"line_number":140,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"aeb6bbf5_0f10e487","line":137,"range":{"start_line":137,"start_character":48,"end_line":137,"end_character":51},"updated":"2021-06-23 09:43:51.000000000","message":"puts","commit_id":"8fb8b238db6609a5b2fa61f41307ee17dd3e52a5"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"df504a496fa6ed69dd4be44c9e27b76e5e988da3","unresolved":true,"context_lines":[{"line_number":91,"context_line":"Service Creation Process"},{"line_number":92,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":93,"context_line":"What happens when a service gets created by Kubernetes?"},{"line_number":94,"context_line":"++++++++++++++++++++++++++++++++++++++++++++++++++++++++"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"When a Kubernetes Service and Endpoints are created,the ServiceHandler and"},{"line_number":97,"context_line":"EndpointHandler (at controller/handlers/lbaas.py) are called. When the"}],"source_content_type":"text/x-rst","patch_set":11,"id":"95668661_682fa5c8","line":94,"range":{"start_line":94,"start_character":0,"end_line":94,"end_character":56},"updated":"2021-06-23 14:30:48.000000000","message":"Seem like you haven\u0027t fixed the lengths of the other ones?","commit_id":"aa594f2aa4398bcb7c07594418301e241efecdf8"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"6be72fcceb9912219f9a87b0dab15c05500e972e","unresolved":true,"context_lines":[{"line_number":91,"context_line":"Service Creation Process"},{"line_number":92,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":93,"context_line":"What happens when a service gets created by Kubernetes?"},{"line_number":94,"context_line":"++++++++++++++++++++++++++++++++++++++++++++++++++++++++"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"When a Kubernetes Service and Endpoints are created,the ServiceHandler and"},{"line_number":97,"context_line":"EndpointHandler (at controller/handlers/lbaas.py) are called. When the"}],"source_content_type":"text/x-rst","patch_set":11,"id":"54cd6360_073db015","line":94,"range":{"start_line":94,"start_character":0,"end_line":94,"end_character":56},"in_reply_to":"92e78085_4e4360ec","updated":"2021-06-23 17:54:58.000000000","message":"besides this nit, the patch lgtm","commit_id":"aa594f2aa4398bcb7c07594418301e241efecdf8"},{"author":{"_account_id":33240,"name":"Sunday Mgbogu","email":"digitalsimboja@gmail.com","username":"digitalsimboja"},"change_message_id":"ddf8a65c97f221ddd967d73aaec749cf93056c75","unresolved":true,"context_lines":[{"line_number":91,"context_line":"Service Creation Process"},{"line_number":92,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":93,"context_line":"What happens when a service gets created by Kubernetes?"},{"line_number":94,"context_line":"++++++++++++++++++++++++++++++++++++++++++++++++++++++++"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"When a Kubernetes Service and Endpoints are created,the ServiceHandler and"},{"line_number":97,"context_line":"EndpointHandler (at controller/handlers/lbaas.py) are called. When the"}],"source_content_type":"text/x-rst","patch_set":11,"id":"92e78085_4e4360ec","line":94,"range":{"start_line":94,"start_character":0,"end_line":94,"end_character":56},"in_reply_to":"95668661_682fa5c8","updated":"2021-06-23 14:39:41.000000000","message":"\u003e Seem like you haven\u0027t fixed the lengths of the other ones?\n\nOhh I see.","commit_id":"aa594f2aa4398bcb7c07594418301e241efecdf8"}]}
