)]}'
{"devstack/plugin.sh":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"017e967d4453a6fea3801297136240e0377e6288","unresolved":false,"context_lines":[{"line_number":1079,"context_line":"    fi"},{"line_number":1080,"context_line":""},{"line_number":1081,"context_line":"    if is_service_enabled kuryr-kubernetes; then"},{"line_number":1082,"context_line":"        /usr/local/bin/kubectl apply -f ${KURYR_HOME}/kubernetes_crds/kuryrnet.yaml"},{"line_number":1083,"context_line":"        /usr/local/bin/kubectl apply -f ${KURYR_HOME}/kubernetes_crds/kuryrnetwork.yaml"},{"line_number":1084,"context_line":"        /usr/local/bin/kubectl apply -f ${KURYR_HOME}/kubernetes_crds/kuryrnetpolicy.yaml"},{"line_number":1085,"context_line":"        /usr/local/bin/kubectl apply -f ${KURYR_HOME}/kubernetes_crds/kuryrloadbalancer.yaml"},{"line_number":1086,"context_line":"        if [ \"$KURYR_K8S_CONTAINERIZED_DEPLOYMENT\" \u003d\u003d \"True\" ]; then"},{"line_number":1087,"context_line":"            generate_containerized_kuryr_resources"},{"line_number":1088,"context_line":"        fi"}],"source_content_type":"text/x-sh","patch_set":35,"id":"1fa4df85_aa580bfa","line":1085,"range":{"start_line":1082,"start_character":0,"end_line":1085,"end_character":92},"updated":"2020-03-12 17:57:50.000000000","message":"At this point we should probably just use wildcard here, but no worries, I\u0027ll be doing the same. ;)","commit_id":"f1fd730bc9624a604760cdbe34d7ea70baf80282"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"1f232b28b38684d42634256b1a3944fcd13126ef","unresolved":false,"context_lines":[{"line_number":1079,"context_line":"    fi"},{"line_number":1080,"context_line":""},{"line_number":1081,"context_line":"    if is_service_enabled kuryr-kubernetes; then"},{"line_number":1082,"context_line":"        /usr/local/bin/kubectl apply -f ${KURYR_HOME}/kubernetes_crds/kuryrnet.yaml"},{"line_number":1083,"context_line":"        /usr/local/bin/kubectl apply -f ${KURYR_HOME}/kubernetes_crds/kuryrnetwork.yaml"},{"line_number":1084,"context_line":"        /usr/local/bin/kubectl apply -f ${KURYR_HOME}/kubernetes_crds/kuryrnetpolicy.yaml"},{"line_number":1085,"context_line":"        /usr/local/bin/kubectl apply -f ${KURYR_HOME}/kubernetes_crds/kuryrloadbalancer.yaml"},{"line_number":1086,"context_line":"        if [ \"$KURYR_K8S_CONTAINERIZED_DEPLOYMENT\" \u003d\u003d \"True\" ]; then"},{"line_number":1087,"context_line":"            generate_containerized_kuryr_resources"},{"line_number":1088,"context_line":"        fi"}],"source_content_type":"text/x-sh","patch_set":35,"id":"1fa4df85_a90c903b","line":1085,"range":{"start_line":1082,"start_character":0,"end_line":1085,"end_character":92},"in_reply_to":"1fa4df85_aa580bfa","updated":"2020-03-13 09:37:41.000000000","message":"Done","commit_id":"f1fd730bc9624a604760cdbe34d7ea70baf80282"}],"doc/source/installation/network_namespace.rst":[{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"3a27b93d73d56b0e78925234a179514821514228","unresolved":false,"context_lines":[{"line_number":16,"context_line":"      enabled_handlers\u003dvif,lb,lbaasspec,namespace,kuryrnetwork"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"   Note that if you also want to enable prepopulation of ports pools upon new"},{"line_number":19,"context_line":"   namespace creation, you need to add the kuryrnetwork handler (more"},{"line_number":20,"context_line":"   details on :doc:`./ports-pool`):"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"   .. code-block:: ini"}],"source_content_type":"text/x-rst","patch_set":26,"id":"1fa4df85_4668d9b7","line":19,"range":{"start_line":19,"start_character":43,"end_line":19,"end_character":55},"updated":"2020-03-05 22:38:24.000000000","message":"and the kuryrnetwork_population?","commit_id":"57039dd8881336e11734185b641b0b4a55cf1e9f"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"b5e91292e3af54620c9b417761b2ff3015fdf32d","unresolved":false,"context_lines":[{"line_number":16,"context_line":"      enabled_handlers\u003dvif,lb,lbaasspec,namespace,kuryrnetwork"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"   Note that if you also want to enable prepopulation of ports pools upon new"},{"line_number":19,"context_line":"   namespace creation, you need to add the kuryrnetwork handler (more"},{"line_number":20,"context_line":"   details on :doc:`./ports-pool`):"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"   .. code-block:: ini"}],"source_content_type":"text/x-rst","patch_set":26,"id":"1fa4df85_bee42d0e","line":19,"range":{"start_line":19,"start_character":43,"end_line":19,"end_character":55},"in_reply_to":"1fa4df85_4668d9b7","updated":"2020-03-06 08:25:06.000000000","message":"ups... right!","commit_id":"57039dd8881336e11734185b641b0b4a55cf1e9f"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"8c00be2ec3919009b48f6e718a267fc62a5f1e57","unresolved":false,"context_lines":[{"line_number":103,"context_line":"      test2       Active        5s"},{"line_number":104,"context_line":"      ...         ...           ..."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"      $ kubectl get kuryrnetwork -A"},{"line_number":107,"context_line":"      NAME      AGE"},{"line_number":108,"context_line":"      ns-test1  1m"},{"line_number":109,"context_line":"      ns-test2  1m"}],"source_content_type":"text/x-rst","patch_set":31,"id":"1fa4df85_002e25fa","line":106,"range":{"start_line":106,"start_character":20,"end_line":106,"end_character":32},"updated":"2020-03-09 13:40:38.000000000","message":"should it be kuryrnetworks ?","commit_id":"984b72fe0190f936a83e54a73f6caf9df783f9c5"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"14f584a62db93fd1cdc4e0b9d1fec316c0f34ae4","unresolved":false,"context_lines":[{"line_number":103,"context_line":"      test2       Active        5s"},{"line_number":104,"context_line":"      ...         ...           ..."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"      $ kubectl get kuryrnetwork -A"},{"line_number":107,"context_line":"      NAME      AGE"},{"line_number":108,"context_line":"      ns-test1  1m"},{"line_number":109,"context_line":"      ns-test2  1m"}],"source_content_type":"text/x-rst","patch_set":31,"id":"1fa4df85_c5ba5abf","line":106,"range":{"start_line":106,"start_character":20,"end_line":106,"end_character":32},"in_reply_to":"1fa4df85_002e25fa","updated":"2020-03-09 16:15:22.000000000","message":"Done","commit_id":"984b72fe0190f936a83e54a73f6caf9df783f9c5"}],"doc/source/installation/network_policy.rst":[{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"3a27b93d73d56b0e78925234a179514821514228","unresolved":false,"context_lines":[{"line_number":10,"context_line":".. code-block:: ini"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"   [kubernetes]"},{"line_number":13,"context_line":"   enabled_handlers\u003dvif,lb,lbaasspec,policy,pod_label,namespace,kuryrnetpolicy"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Note that if you also want to enable prepopulation of ports pools upon new"},{"line_number":16,"context_line":"namespace creation, you need to add the kuryrnetwork handler (more"}],"source_content_type":"text/x-rst","patch_set":26,"id":"1fa4df85_a6850d5c","line":13,"range":{"start_line":13,"start_character":3,"end_line":13,"end_character":19},"updated":"2020-03-05 22:38:24.000000000","message":"Shouldn\u0027t the kuryrnetwork also be enabled?","commit_id":"57039dd8881336e11734185b641b0b4a55cf1e9f"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"b5e91292e3af54620c9b417761b2ff3015fdf32d","unresolved":false,"context_lines":[{"line_number":10,"context_line":".. code-block:: ini"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"   [kubernetes]"},{"line_number":13,"context_line":"   enabled_handlers\u003dvif,lb,lbaasspec,policy,pod_label,namespace,kuryrnetpolicy"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Note that if you also want to enable prepopulation of ports pools upon new"},{"line_number":16,"context_line":"namespace creation, you need to add the kuryrnetwork handler (more"}],"source_content_type":"text/x-rst","patch_set":26,"id":"1fa4df85_5eef39e8","line":13,"range":{"start_line":13,"start_character":3,"end_line":13,"end_character":19},"in_reply_to":"1fa4df85_a6850d5c","updated":"2020-03-06 08:25:06.000000000","message":"right","commit_id":"57039dd8881336e11734185b641b0b4a55cf1e9f"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"3a27b93d73d56b0e78925234a179514821514228","unresolved":false,"context_lines":[{"line_number":19,"context_line":".. code-block:: ini"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"   [kubernetes]"},{"line_number":22,"context_line":"   enabled_handlers\u003dvif,lb,lbaasspec,policy,pod_label,namespace,kuryrnetpolicy,kuryrnetwork"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"After that, enable also the security group drivers for policies:"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-rst","patch_set":26,"id":"1fa4df85_666dd5ca","line":22,"range":{"start_line":22,"start_character":3,"end_line":22,"end_character":19},"updated":"2020-03-05 22:38:24.000000000","message":"missing kuryrnetwork_population handler?","commit_id":"57039dd8881336e11734185b641b0b4a55cf1e9f"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"b5e91292e3af54620c9b417761b2ff3015fdf32d","unresolved":false,"context_lines":[{"line_number":19,"context_line":".. code-block:: ini"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"   [kubernetes]"},{"line_number":22,"context_line":"   enabled_handlers\u003dvif,lb,lbaasspec,policy,pod_label,namespace,kuryrnetpolicy,kuryrnetwork"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"After that, enable also the security group drivers for policies:"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-rst","patch_set":26,"id":"1fa4df85_1ebf81d1","line":22,"range":{"start_line":22,"start_character":3,"end_line":22,"end_character":19},"in_reply_to":"1fa4df85_666dd5ca","updated":"2020-03-06 08:25:06.000000000","message":"Done","commit_id":"57039dd8881336e11734185b641b0b4a55cf1e9f"}],"kubernetes_crds/kuryrnet.yaml":[{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"a3de7a0083021261d88458ea3af60d541ba8798b","unresolved":false,"context_lines":[{"line_number":25,"context_line":"        jsonPath: .metadata.creationTimestamp"},{"line_number":26,"context_line":"    schema:"},{"line_number":27,"context_line":"      openAPIV3Schema:"},{"line_number":28,"context_line":"        type: \"object\""},{"line_number":29,"context_line":"        properties:"},{"line_number":30,"context_line":"          spec:"},{"line_number":31,"context_line":"            type: object"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"3fa7e38b_bf388e9d","line":28,"range":{"start_line":28,"start_character":14,"end_line":28,"end_character":22},"updated":"2020-02-13 16:51:57.000000000","message":"Better to remove the string to be consistent with the other objects definitions.","commit_id":"d4cdf9f3afa35d7a21a09df18347e46d588d99d2"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"f613294d3be4d44ddeb115d3975c5a7c554f6561","unresolved":false,"context_lines":[{"line_number":1,"context_line":"apiVersion: apiextensions.k8s.io/v1"},{"line_number":2,"context_line":"kind: CustomResourceDefinition"},{"line_number":3,"context_line":"metadata:"},{"line_number":4,"context_line":"  name: kuryrnets.openstack.org"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"1fa4df85_44407a08","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":35},"updated":"2020-02-24 22:48:18.000000000","message":"Looks like this apiVersion is not supported on ocp 3.11[1] as I see this on the logs: \"no matches for kind \"CustomResourceDefinition\" in version \"apiextensions.k8s.io/v1\".\nWe need to either attempt newer ocp versions or maintain the old way.\n[1] https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/#before-you-begin","commit_id":"3400fbea21565ad936b0faa4ffb97d3b52002dcb"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"cecd1f75a9f31ada38925f880861d8ba4b4c6eed","unresolved":false,"context_lines":[{"line_number":1,"context_line":"apiVersion: apiextensions.k8s.io/v1"},{"line_number":2,"context_line":"kind: CustomResourceDefinition"},{"line_number":3,"context_line":"metadata:"},{"line_number":4,"context_line":"  name: kuryrnets.openstack.org"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"1fa4df85_577345e8","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":35},"in_reply_to":"1fa4df85_44407a08","updated":"2020-02-25 08:50:49.000000000","message":"I would go for updating 3.11 but not sure if that is possible :(","commit_id":"3400fbea21565ad936b0faa4ffb97d3b52002dcb"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"f613294d3be4d44ddeb115d3975c5a7c554f6561","unresolved":false,"context_lines":[{"line_number":25,"context_line":"        jsonPath: .metadata.creationTimestamp"},{"line_number":26,"context_line":"    schema:"},{"line_number":27,"context_line":"      openAPIV3Schema:"},{"line_number":28,"context_line":"        type: \"object\""},{"line_number":29,"context_line":"        properties:"},{"line_number":30,"context_line":"          spec:"},{"line_number":31,"context_line":"            type: object"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"1fa4df85_04f842c2","line":28,"range":{"start_line":28,"start_character":14,"end_line":28,"end_character":22},"updated":"2020-02-24 22:48:18.000000000","message":"I guess this quotation can be removed, just out of consistency.","commit_id":"3400fbea21565ad936b0faa4ffb97d3b52002dcb"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"cecd1f75a9f31ada38925f880861d8ba4b4c6eed","unresolved":false,"context_lines":[{"line_number":25,"context_line":"        jsonPath: .metadata.creationTimestamp"},{"line_number":26,"context_line":"    schema:"},{"line_number":27,"context_line":"      openAPIV3Schema:"},{"line_number":28,"context_line":"        type: \"object\""},{"line_number":29,"context_line":"        properties:"},{"line_number":30,"context_line":"          spec:"},{"line_number":31,"context_line":"            type: object"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"1fa4df85_9771bde3","line":28,"range":{"start_line":28,"start_character":14,"end_line":28,"end_character":22},"in_reply_to":"1fa4df85_04f842c2","updated":"2020-02-25 08:50:49.000000000","message":"Done","commit_id":"3400fbea21565ad936b0faa4ffb97d3b52002dcb"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"1c52ffe927dc4cf2d5322c661c71b6e5f43ab42a","unresolved":false,"context_lines":[{"line_number":4,"context_line":"  name: kuryrnets.openstack.org"},{"line_number":5,"context_line":"spec:"},{"line_number":6,"context_line":"  group: openstack.org"},{"line_number":7,"context_line":"  scope: Namespaced"},{"line_number":8,"context_line":"  names:"},{"line_number":9,"context_line":"    plural: kuryrnets"},{"line_number":10,"context_line":"    singular: kuryrnet"}],"source_content_type":"text/x-yaml","patch_set":17,"id":"1fa4df85_5503fd73","line":7,"range":{"start_line":7,"start_character":9,"end_line":7,"end_character":19},"updated":"2020-02-28 17:02:04.000000000","message":"Wow, that might be really painful to migrate. At this point it might be easier to just create a new CRD and migrate data from the old one.","commit_id":"28b59044652436c732c8f0f62a7f60ddb0e48f4c"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"ad7dc9d5be6c1926deb7529d2a0d8166a9e36857","unresolved":false,"context_lines":[{"line_number":4,"context_line":"  name: kuryrnets.openstack.org"},{"line_number":5,"context_line":"spec:"},{"line_number":6,"context_line":"  group: openstack.org"},{"line_number":7,"context_line":"  scope: Namespaced"},{"line_number":8,"context_line":"  names:"},{"line_number":9,"context_line":"    plural: kuryrnets"},{"line_number":10,"context_line":"    singular: kuryrnet"}],"source_content_type":"text/x-yaml","patch_set":17,"id":"1fa4df85_d045bb44","line":7,"range":{"start_line":7,"start_character":9,"end_line":7,"end_character":19},"in_reply_to":"1fa4df85_5503fd73","updated":"2020-02-28 17:10:56.000000000","message":"yep... to be honest...I\u0027m not sure how to handle upgrades to this","commit_id":"28b59044652436c732c8f0f62a7f60ddb0e48f4c"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"b243a74cfb098612b0b85aa869767701e613f33f","unresolved":false,"context_lines":[{"line_number":4,"context_line":"  name: kuryrnets.openstack.org"},{"line_number":5,"context_line":"spec:"},{"line_number":6,"context_line":"  group: openstack.org"},{"line_number":7,"context_line":"  scope: Namespaced"},{"line_number":8,"context_line":"  names:"},{"line_number":9,"context_line":"    plural: kuryrnets"},{"line_number":10,"context_line":"    singular: kuryrnet"}],"source_content_type":"text/x-yaml","patch_set":17,"id":"1fa4df85_e2d1ffce","line":7,"range":{"start_line":7,"start_character":9,"end_line":7,"end_character":19},"in_reply_to":"1fa4df85_d045bb44","updated":"2020-03-02 09:18:35.000000000","message":"We\u0027ve discussed that on Slack, basically we need a new CRD as this won\u0027t be supported:\n\n stack@devstack:~$ kubectl apply -f kn.yaml\n The CustomResourceDefinition \"kuryrnets.openstack.org\" is invalid: spec.scope: Invalid value: \"Namespaced\": field is immutable","commit_id":"28b59044652436c732c8f0f62a7f60ddb0e48f4c"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"1c52ffe927dc4cf2d5322c661c71b6e5f43ab42a","unresolved":false,"context_lines":[{"line_number":41,"context_line":"              nsLabels:"},{"line_number":42,"context_line":"                x-kubernetes-preserve-unknown-fields: true"},{"line_number":43,"context_line":"                type: object"},{"line_number":44,"context_line":"          status:"},{"line_number":45,"context_line":"            type: object"},{"line_number":46,"context_line":"            properties:"},{"line_number":47,"context_line":"              netId:"},{"line_number":48,"context_line":"                type: string"},{"line_number":49,"context_line":"              populated:"},{"line_number":50,"context_line":"                type: boolean"},{"line_number":51,"context_line":"              routerId:"},{"line_number":52,"context_line":"                type: string"},{"line_number":53,"context_line":"              subnetCIDR:"},{"line_number":54,"context_line":"                type: string"},{"line_number":55,"context_line":"              subnetId:"},{"line_number":56,"context_line":"                type: string"},{"line_number":57,"context_line":"              nsLabels:"},{"line_number":58,"context_line":"                x-kubernetes-preserve-unknown-fields: true"},{"line_number":59,"context_line":"                type: object"}],"source_content_type":"text/x-yaml","patch_set":17,"id":"1fa4df85_1a7292e4","line":59,"range":{"start_line":44,"start_character":0,"end_line":59,"end_character":28},"updated":"2020-02-28 17:02:04.000000000","message":"We\u0027ll need transition strategy here, won\u0027t we? Meaning that this might be the \"v1\" version of our CRD?","commit_id":"28b59044652436c732c8f0f62a7f60ddb0e48f4c"}],"kuryr_kubernetes/controller/drivers/namespace_subnet.py":[{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"a3de7a0083021261d88458ea3af60d541ba8798b","unresolved":false,"context_lines":[{"line_number":163,"context_line":"        else:"},{"line_number":164,"context_line":"            networks \u003d os_net.networks(name\u003dnet_name)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        try:"},{"line_number":167,"context_line":"            # NOTE(ltomasbo): only one network must exists"},{"line_number":168,"context_line":"            return next(networks).id"},{"line_number":169,"context_line":"        except StopIteration:"},{"line_number":170,"context_line":"            LOG.debug(\u0027Network does not exist. Creating.\u0027)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        # create network with namespace as name"},{"line_number":173,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_1fd1a256","line":170,"range":{"start_line":166,"start_character":0,"end_line":170,"end_character":58},"updated":"2020-02-13 16:51:57.000000000","message":"How didn\u0027t we need this before?","commit_id":"d4cdf9f3afa35d7a21a09df18347e46d588d99d2"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"cffe62baacb7f0f794c4738ba66f6d02fae13d9e","unresolved":false,"context_lines":[{"line_number":163,"context_line":"        else:"},{"line_number":164,"context_line":"            networks \u003d os_net.networks(name\u003dnet_name)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        try:"},{"line_number":167,"context_line":"            # NOTE(ltomasbo): only one network must exists"},{"line_number":168,"context_line":"            return next(networks).id"},{"line_number":169,"context_line":"        except StopIteration:"},{"line_number":170,"context_line":"            LOG.debug(\u0027Network does not exist. Creating.\u0027)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        # create network with namespace as name"},{"line_number":173,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_9a1e00ba","line":170,"range":{"start_line":166,"start_character":0,"end_line":170,"end_character":58},"in_reply_to":"3fa7e38b_1fd1a256","updated":"2020-02-13 17:29:41.000000000","message":"we were iterating with `for` instead","commit_id":"d4cdf9f3afa35d7a21a09df18347e46d588d99d2"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"1c52ffe927dc4cf2d5322c661c71b6e5f43ab42a","unresolved":false,"context_lines":[{"line_number":186,"context_line":"        os_net \u003d clients.get_network_client()"},{"line_number":187,"context_line":"        subnet_name \u003d \"ns/\" + ns_name + \"-subnet\""},{"line_number":188,"context_line":"        tags \u003d oslo_cfg.CONF.neutron_defaults.resource_tags"},{"line_number":189,"context_line":"        if tags:"},{"line_number":190,"context_line":"            subnets \u003d os_net.subnets(name\u003dsubnet_name, tags\u003dtags)"},{"line_number":191,"context_line":"        else:"},{"line_number":192,"context_line":"            subnets \u003d os_net.subnets(name\u003dsubnet_name)"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        try:"},{"line_number":195,"context_line":"            # NOTE(ltomasbo): only one subnet must exists"},{"line_number":196,"context_line":"            subnet \u003d next(subnets)"},{"line_number":197,"context_line":"            return subnet.id, subnet.cidr"},{"line_number":198,"context_line":"        except StopIteration:"},{"line_number":199,"context_line":"            LOG.debug(\u0027Subnet does not exist. Creating.\u0027)"},{"line_number":200,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1fa4df85_55a21d4d","line":197,"range":{"start_line":189,"start_character":0,"end_line":197,"end_character":41},"updated":"2020-02-28 17:02:04.000000000","message":"Probably worth to check the number of returned subnets, though I\u0027m not sure how to react if there are multiple. Same for network.","commit_id":"28b59044652436c732c8f0f62a7f60ddb0e48f4c"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"b243a74cfb098612b0b85aa869767701e613f33f","unresolved":false,"context_lines":[{"line_number":186,"context_line":"        os_net \u003d clients.get_network_client()"},{"line_number":187,"context_line":"        subnet_name \u003d \"ns/\" + ns_name + \"-subnet\""},{"line_number":188,"context_line":"        tags \u003d oslo_cfg.CONF.neutron_defaults.resource_tags"},{"line_number":189,"context_line":"        if tags:"},{"line_number":190,"context_line":"            subnets \u003d os_net.subnets(name\u003dsubnet_name, tags\u003dtags)"},{"line_number":191,"context_line":"        else:"},{"line_number":192,"context_line":"            subnets \u003d os_net.subnets(name\u003dsubnet_name)"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        try:"},{"line_number":195,"context_line":"            # NOTE(ltomasbo): only one subnet must exists"},{"line_number":196,"context_line":"            subnet \u003d next(subnets)"},{"line_number":197,"context_line":"            return subnet.id, subnet.cidr"},{"line_number":198,"context_line":"        except StopIteration:"},{"line_number":199,"context_line":"            LOG.debug(\u0027Subnet does not exist. Creating.\u0027)"},{"line_number":200,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1fa4df85_c2d643c4","line":197,"range":{"start_line":189,"start_character":0,"end_line":197,"end_character":41},"in_reply_to":"1fa4df85_106593e1","updated":"2020-03-02 09:18:35.000000000","message":"Alright.","commit_id":"28b59044652436c732c8f0f62a7f60ddb0e48f4c"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"ad7dc9d5be6c1926deb7529d2a0d8166a9e36857","unresolved":false,"context_lines":[{"line_number":186,"context_line":"        os_net \u003d clients.get_network_client()"},{"line_number":187,"context_line":"        subnet_name \u003d \"ns/\" + ns_name + \"-subnet\""},{"line_number":188,"context_line":"        tags \u003d oslo_cfg.CONF.neutron_defaults.resource_tags"},{"line_number":189,"context_line":"        if tags:"},{"line_number":190,"context_line":"            subnets \u003d os_net.subnets(name\u003dsubnet_name, tags\u003dtags)"},{"line_number":191,"context_line":"        else:"},{"line_number":192,"context_line":"            subnets \u003d os_net.subnets(name\u003dsubnet_name)"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        try:"},{"line_number":195,"context_line":"            # NOTE(ltomasbo): only one subnet must exists"},{"line_number":196,"context_line":"            subnet \u003d next(subnets)"},{"line_number":197,"context_line":"            return subnet.id, subnet.cidr"},{"line_number":198,"context_line":"        except StopIteration:"},{"line_number":199,"context_line":"            LOG.debug(\u0027Subnet does not exist. Creating.\u0027)"},{"line_number":200,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1fa4df85_106593e1","line":197,"range":{"start_line":189,"start_character":0,"end_line":197,"end_character":41},"in_reply_to":"1fa4df85_55a21d4d","updated":"2020-02-28 17:10:56.000000000","message":"before we were simply getting the first one. Plus this networks are created by kuryr... so only one should be there...specially only one with the kuryr tags","commit_id":"28b59044652436c732c8f0f62a7f60ddb0e48f4c"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"1c52ffe927dc4cf2d5322c661c71b6e5f43ab42a","unresolved":false,"context_lines":[{"line_number":208,"context_line":"                                             enable_dhcp\u003dFalse,"},{"line_number":209,"context_line":"                                             subnetpool_id\u003dsubnet_pool_id,"},{"line_number":210,"context_line":"                                             project_id\u003dproject_id))"},{"line_number":211,"context_line":"        except os_exc.ConflictException:"},{"line_number":212,"context_line":"            LOG.debug(\"Max number of retries on neutron side achieved, \""},{"line_number":213,"context_line":"                      \"raising ResourceNotReady to retry subnet creation \""},{"line_number":214,"context_line":"                      \"for %s\", subnet_name)"},{"line_number":215,"context_line":"            raise exceptions.ResourceNotReady(subnet_name)"},{"line_number":216,"context_line":"        c_utils.tag_neutron_resources([neutron_subnet])"},{"line_number":217,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1fa4df85_95f3b573","line":214,"range":{"start_line":211,"start_character":0,"end_line":214,"end_character":44},"updated":"2020-02-28 17:02:04.000000000","message":"Does this match? I\u0027m not sure what max number of retries is here.","commit_id":"28b59044652436c732c8f0f62a7f60ddb0e48f4c"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"ad7dc9d5be6c1926deb7529d2a0d8166a9e36857","unresolved":false,"context_lines":[{"line_number":208,"context_line":"                                             enable_dhcp\u003dFalse,"},{"line_number":209,"context_line":"                                             subnetpool_id\u003dsubnet_pool_id,"},{"line_number":210,"context_line":"                                             project_id\u003dproject_id))"},{"line_number":211,"context_line":"        except os_exc.ConflictException:"},{"line_number":212,"context_line":"            LOG.debug(\"Max number of retries on neutron side achieved, \""},{"line_number":213,"context_line":"                      \"raising ResourceNotReady to retry subnet creation \""},{"line_number":214,"context_line":"                      \"for %s\", subnet_name)"},{"line_number":215,"context_line":"            raise exceptions.ResourceNotReady(subnet_name)"},{"line_number":216,"context_line":"        c_utils.tag_neutron_resources([neutron_subnet])"},{"line_number":217,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1fa4df85_b0635fdc","line":214,"range":{"start_line":211,"start_character":0,"end_line":214,"end_character":44},"in_reply_to":"1fa4df85_95f3b573","updated":"2020-02-28 17:10:56.000000000","message":"retries to get a range from the subnetpool. That was the problem we hit with neutron colliding when doing parallel request to the subnetpool","commit_id":"28b59044652436c732c8f0f62a7f60ddb0e48f4c"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"b243a74cfb098612b0b85aa869767701e613f33f","unresolved":false,"context_lines":[{"line_number":208,"context_line":"                                             enable_dhcp\u003dFalse,"},{"line_number":209,"context_line":"                                             subnetpool_id\u003dsubnet_pool_id,"},{"line_number":210,"context_line":"                                             project_id\u003dproject_id))"},{"line_number":211,"context_line":"        except os_exc.ConflictException:"},{"line_number":212,"context_line":"            LOG.debug(\"Max number of retries on neutron side achieved, \""},{"line_number":213,"context_line":"                      \"raising ResourceNotReady to retry subnet creation \""},{"line_number":214,"context_line":"                      \"for %s\", subnet_name)"},{"line_number":215,"context_line":"            raise exceptions.ResourceNotReady(subnet_name)"},{"line_number":216,"context_line":"        c_utils.tag_neutron_resources([neutron_subnet])"},{"line_number":217,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1fa4df85_62e50fa8","line":214,"range":{"start_line":211,"start_character":0,"end_line":214,"end_character":44},"in_reply_to":"1fa4df85_b0635fdc","updated":"2020-03-02 09:18:35.000000000","message":"Okay!","commit_id":"28b59044652436c732c8f0f62a7f60ddb0e48f4c"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"8c00be2ec3919009b48f6e718a267fc62a5f1e57","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        try:"},{"line_number":85,"context_line":"            subnet_id \u003d net_crd[\u0027status\u0027][\u0027subnetId\u0027]"},{"line_number":86,"context_line":"        except KeyError:"},{"line_number":87,"context_line":"            LOG.debug(\"Subnet for namespace %s yet created, retrying.\","},{"line_number":88,"context_line":"                      namespace)"},{"line_number":89,"context_line":"            raise exceptions.ResourceNotReady(namespace)"},{"line_number":90,"context_line":"        return subnet_id"}],"source_content_type":"text/x-python","patch_set":31,"id":"1fa4df85_201a41cb","line":87,"range":{"start_line":87,"start_character":47,"end_line":87,"end_character":50},"updated":"2020-03-09 13:40:38.000000000","message":"not yet?","commit_id":"984b72fe0190f936a83e54a73f6caf9df783f9c5"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"14f584a62db93fd1cdc4e0b9d1fec316c0f34ae4","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        try:"},{"line_number":85,"context_line":"            subnet_id \u003d net_crd[\u0027status\u0027][\u0027subnetId\u0027]"},{"line_number":86,"context_line":"        except KeyError:"},{"line_number":87,"context_line":"            LOG.debug(\"Subnet for namespace %s yet created, retrying.\","},{"line_number":88,"context_line":"                      namespace)"},{"line_number":89,"context_line":"            raise exceptions.ResourceNotReady(namespace)"},{"line_number":90,"context_line":"        return subnet_id"}],"source_content_type":"text/x-python","patch_set":31,"id":"1fa4df85_45ce6a63","line":87,"range":{"start_line":87,"start_character":47,"end_line":87,"end_character":50},"in_reply_to":"1fa4df85_201a41cb","updated":"2020-03-09 16:15:22.000000000","message":"Done","commit_id":"984b72fe0190f936a83e54a73f6caf9df783f9c5"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"8c00be2ec3919009b48f6e718a267fc62a5f1e57","unresolved":false,"context_lines":[{"line_number":175,"context_line":"                                                project_id\u003dproject_id)"},{"line_number":176,"context_line":"            c_utils.tag_neutron_resources([neutron_net])"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"            # create a subnet within that network"},{"line_number":179,"context_line":"        except os_exc.SDKException:"},{"line_number":180,"context_line":"            LOG.exception(\"Error creating neutron resources for the namespace \""},{"line_number":181,"context_line":"                          \"%s\", ns_name)"}],"source_content_type":"text/x-python","patch_set":31,"id":"1fa4df85_e05d0979","line":178,"range":{"start_line":178,"start_character":12,"end_line":178,"end_character":49},"updated":"2020-03-09 13:40:38.000000000","message":"should this be removed?","commit_id":"984b72fe0190f936a83e54a73f6caf9df783f9c5"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"14f584a62db93fd1cdc4e0b9d1fec316c0f34ae4","unresolved":false,"context_lines":[{"line_number":175,"context_line":"                                                project_id\u003dproject_id)"},{"line_number":176,"context_line":"            c_utils.tag_neutron_resources([neutron_net])"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"            # create a subnet within that network"},{"line_number":179,"context_line":"        except os_exc.SDKException:"},{"line_number":180,"context_line":"            LOG.exception(\"Error creating neutron resources for the namespace \""},{"line_number":181,"context_line":"                          \"%s\", ns_name)"}],"source_content_type":"text/x-python","patch_set":31,"id":"1fa4df85_c5dfba0a","line":178,"range":{"start_line":178,"start_character":12,"end_line":178,"end_character":49},"in_reply_to":"1fa4df85_e05d0979","updated":"2020-03-09 16:15:22.000000000","message":"Done","commit_id":"984b72fe0190f936a83e54a73f6caf9df783f9c5"},{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"f33b04d1b9aea1f562deb24b28e6a1c6211562a4","unresolved":false,"context_lines":[{"line_number":191,"context_line":""},{"line_number":192,"context_line":"        try:"},{"line_number":193,"context_line":"            # NOTE(ltomasbo): only one subnet must exists"},{"line_number":194,"context_line":"            subnet \u003d next(subnets)"},{"line_number":195,"context_line":"            return subnet.id, subnet.cidr"},{"line_number":196,"context_line":"        except StopIteration:"},{"line_number":197,"context_line":"            LOG.debug(\u0027Subnet does not exist. Creating.\u0027)"},{"line_number":198,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"1fa4df85_3f29dc35","line":195,"range":{"start_line":194,"start_character":0,"end_line":195,"end_character":41},"updated":"2020-03-11 07:31:07.000000000","message":"is it possible, that for some reason (race condition) we have two or more subnets?","commit_id":"1493fdc5e1bff49de067e55d829a5dc2a2632d39"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"2d1586524f8fb1ad312ac5a7e4a36c9c87f00134","unresolved":false,"context_lines":[{"line_number":191,"context_line":""},{"line_number":192,"context_line":"        try:"},{"line_number":193,"context_line":"            # NOTE(ltomasbo): only one subnet must exists"},{"line_number":194,"context_line":"            subnet \u003d next(subnets)"},{"line_number":195,"context_line":"            return subnet.id, subnet.cidr"},{"line_number":196,"context_line":"        except StopIteration:"},{"line_number":197,"context_line":"            LOG.debug(\u0027Subnet does not exist. Creating.\u0027)"},{"line_number":198,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"1fa4df85_a3eb7ada","line":195,"range":{"start_line":194,"start_character":0,"end_line":195,"end_character":41},"in_reply_to":"1fa4df85_3f29dc35","updated":"2020-03-11 09:07:30.000000000","message":"it should not happen, but...","commit_id":"1493fdc5e1bff49de067e55d829a5dc2a2632d39"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"017e967d4453a6fea3801297136240e0377e6288","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        try:"},{"line_number":67,"context_line":"            annotations \u003d ns[\u0027metadata\u0027][\u0027annotations\u0027]"},{"line_number":68,"context_line":"            net_crd_name \u003d annotations[constants.K8S_ANNOTATION_NETWORK_CRD]"},{"line_number":69,"context_line":"        except KeyError:"},{"line_number":70,"context_line":"            LOG.debug(\"Namespace missing CRD annotations for selecting \""},{"line_number":71,"context_line":"                      \"the corresponding subnet.\")"}],"source_content_type":"text/x-python","patch_set":35,"id":"1fa4df85_2a917bf2","line":68,"range":{"start_line":68,"start_character":0,"end_line":68,"end_character":76},"updated":"2020-03-12 17:57:50.000000000","message":"Do we really need this?","commit_id":"f1fd730bc9624a604760cdbe34d7ea70baf80282"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"017e967d4453a6fea3801297136240e0377e6288","unresolved":false,"context_lines":[{"line_number":163,"context_line":"        else:"},{"line_number":164,"context_line":"            networks \u003d os_net.networks(name\u003dnet_name)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        try:"},{"line_number":167,"context_line":"            # NOTE(ltomasbo): only one network must exists"},{"line_number":168,"context_line":"            return next(networks).id"},{"line_number":169,"context_line":"        except StopIteration:"},{"line_number":170,"context_line":"            LOG.debug(\u0027Network does not exist. Creating.\u0027)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        # create network with namespace as name"},{"line_number":173,"context_line":"        try:"},{"line_number":174,"context_line":"            neutron_net \u003d os_net.create_network(name\u003dnet_name,"},{"line_number":175,"context_line":"                                                project_id\u003dproject_id)"},{"line_number":176,"context_line":"            c_utils.tag_neutron_resources([neutron_net])"},{"line_number":177,"context_line":"        except os_exc.SDKException:"},{"line_number":178,"context_line":"            LOG.exception(\"Error creating neutron resources for the namespace \""}],"source_content_type":"text/x-python","patch_set":35,"id":"1fa4df85_4a7cf7b4","line":175,"range":{"start_line":166,"start_character":0,"end_line":175,"end_character":70},"updated":"2020-03-12 17:57:50.000000000","message":"Potentially there\u0027s a race condition between checking the existence and creating it, but I guess we can neglect it.","commit_id":"f1fd730bc9624a604760cdbe34d7ea70baf80282"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"1f232b28b38684d42634256b1a3944fcd13126ef","unresolved":false,"context_lines":[{"line_number":163,"context_line":"        else:"},{"line_number":164,"context_line":"            networks \u003d os_net.networks(name\u003dnet_name)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        try:"},{"line_number":167,"context_line":"            # NOTE(ltomasbo): only one network must exists"},{"line_number":168,"context_line":"            return next(networks).id"},{"line_number":169,"context_line":"        except StopIteration:"},{"line_number":170,"context_line":"            LOG.debug(\u0027Network does not exist. Creating.\u0027)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        # create network with namespace as name"},{"line_number":173,"context_line":"        try:"},{"line_number":174,"context_line":"            neutron_net \u003d os_net.create_network(name\u003dnet_name,"},{"line_number":175,"context_line":"                                                project_id\u003dproject_id)"},{"line_number":176,"context_line":"            c_utils.tag_neutron_resources([neutron_net])"},{"line_number":177,"context_line":"        except os_exc.SDKException:"},{"line_number":178,"context_line":"            LOG.exception(\"Error creating neutron resources for the namespace \""}],"source_content_type":"text/x-python","patch_set":35,"id":"1fa4df85_c9746c9f","line":175,"range":{"start_line":166,"start_character":0,"end_line":175,"end_character":70},"in_reply_to":"1fa4df85_4a7cf7b4","updated":"2020-03-13 09:37:41.000000000","message":"how? if creation takes long?","commit_id":"f1fd730bc9624a604760cdbe34d7ea70baf80282"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"d87beb83c660d2f605dfc3fbeb080f220e26f0cb","unresolved":false,"context_lines":[{"line_number":163,"context_line":"        else:"},{"line_number":164,"context_line":"            networks \u003d os_net.networks(name\u003dnet_name)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        try:"},{"line_number":167,"context_line":"            # NOTE(ltomasbo): only one network must exists"},{"line_number":168,"context_line":"            return next(networks).id"},{"line_number":169,"context_line":"        except StopIteration:"},{"line_number":170,"context_line":"            LOG.debug(\u0027Network does not exist. Creating.\u0027)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        # create network with namespace as name"},{"line_number":173,"context_line":"        try:"},{"line_number":174,"context_line":"            neutron_net \u003d os_net.create_network(name\u003dnet_name,"},{"line_number":175,"context_line":"                                                project_id\u003dproject_id)"},{"line_number":176,"context_line":"            c_utils.tag_neutron_resources([neutron_net])"},{"line_number":177,"context_line":"        except os_exc.SDKException:"},{"line_number":178,"context_line":"            LOG.exception(\"Error creating neutron resources for the namespace \""}],"source_content_type":"text/x-python","patch_set":35,"id":"1fa4df85_04882b6f","line":175,"range":{"start_line":166,"start_character":0,"end_line":175,"end_character":70},"in_reply_to":"1fa4df85_c9746c9f","updated":"2020-03-13 09:59:12.000000000","message":"Probably only if there would be another instance of kuryr-controller running, which would break us anyway.","commit_id":"f1fd730bc9624a604760cdbe34d7ea70baf80282"}],"kuryr_kubernetes/controller/drivers/utils.py":[{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"3a27b93d73d56b0e78925234a179514821514228","unresolved":false,"context_lines":[{"line_number":399,"context_line":"    except KeyError:"},{"line_number":400,"context_line":"        LOG.exception(\u0027Namespace not yet ready\u0027)"},{"line_number":401,"context_line":"        raise k_exc.ResourceNotReady(namespace)"},{"line_number":402,"context_line":"    subnet_cidr"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"def tag_neutron_resources(resources):"}],"source_content_type":"text/x-python","patch_set":26,"id":"1fa4df85_c6d8497c","line":402,"range":{"start_line":402,"start_character":4,"end_line":402,"end_character":15},"updated":"2020-03-05 22:38:24.000000000","message":"missing the return","commit_id":"57039dd8881336e11734185b641b0b4a55cf1e9f"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"b5e91292e3af54620c9b417761b2ff3015fdf32d","unresolved":false,"context_lines":[{"line_number":399,"context_line":"    except KeyError:"},{"line_number":400,"context_line":"        LOG.exception(\u0027Namespace not yet ready\u0027)"},{"line_number":401,"context_line":"        raise k_exc.ResourceNotReady(namespace)"},{"line_number":402,"context_line":"    subnet_cidr"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"def tag_neutron_resources(resources):"}],"source_content_type":"text/x-python","patch_set":26,"id":"1fa4df85_3ec27d5a","line":402,"range":{"start_line":402,"start_character":4,"end_line":402,"end_character":15},"in_reply_to":"1fa4df85_c6d8497c","updated":"2020-03-06 08:25:06.000000000","message":"Done","commit_id":"57039dd8881336e11734185b641b0b4a55cf1e9f"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"017e967d4453a6fea3801297136240e0377e6288","unresolved":false,"context_lines":[{"line_number":389,"context_line":"                      \u0027Network Policies with namespaceSelector\u0027)"},{"line_number":390,"context_line":"        raise k_exc.ResourceNotReady(namespace)"},{"line_number":391,"context_line":"    try:"},{"line_number":392,"context_line":"        net_crd \u003d kubernetes.get(\u0027{}/{}/kuryrnetworks/{}\u0027.format("},{"line_number":393,"context_line":"            constants.K8S_API_CRD_NAMESPACES, namespace[\u0027metadata\u0027][\u0027name\u0027],"},{"line_number":394,"context_line":"            ns_name))"},{"line_number":395,"context_line":"    except k_exc.K8sClientException:"},{"line_number":396,"context_line":"        LOG.exception(\"Kubernetes Client Exception.\")"},{"line_number":397,"context_line":"        raise"}],"source_content_type":"text/x-python","patch_set":35,"id":"1fa4df85_8a9e6f52","line":394,"range":{"start_line":392,"start_character":0,"end_line":394,"end_character":21},"updated":"2020-03-12 17:57:50.000000000","message":"If there\u0027s exactly one KuryrNetwork per namespace and it is namespaced, why don\u0027t we just have a constant as a name - e.g kuryrnet? Or for easiness of `kubectl get kuryrnetworks -A` just a namespace name?\n\nI\u0027m trying to follow that pattern with in KuryrNetworkPolicy CRD.","commit_id":"f1fd730bc9624a604760cdbe34d7ea70baf80282"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"1f232b28b38684d42634256b1a3944fcd13126ef","unresolved":false,"context_lines":[{"line_number":389,"context_line":"                      \u0027Network Policies with namespaceSelector\u0027)"},{"line_number":390,"context_line":"        raise k_exc.ResourceNotReady(namespace)"},{"line_number":391,"context_line":"    try:"},{"line_number":392,"context_line":"        net_crd \u003d kubernetes.get(\u0027{}/{}/kuryrnetworks/{}\u0027.format("},{"line_number":393,"context_line":"            constants.K8S_API_CRD_NAMESPACES, namespace[\u0027metadata\u0027][\u0027name\u0027],"},{"line_number":394,"context_line":"            ns_name))"},{"line_number":395,"context_line":"    except k_exc.K8sClientException:"},{"line_number":396,"context_line":"        LOG.exception(\"Kubernetes Client Exception.\")"},{"line_number":397,"context_line":"        raise"}],"source_content_type":"text/x-python","patch_set":35,"id":"1fa4df85_c9822c53","line":394,"range":{"start_line":392,"start_character":0,"end_line":394,"end_character":21},"in_reply_to":"1fa4df85_8a9e6f52","updated":"2020-03-13 09:37:41.000000000","message":"yep, that should work for kuryrnetworks. Note though, that for kuryrrNetworkPolicy that is not the case, and there may be different policies on the same namespace","commit_id":"f1fd730bc9624a604760cdbe34d7ea70baf80282"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"d87beb83c660d2f605dfc3fbeb080f220e26f0cb","unresolved":false,"context_lines":[{"line_number":389,"context_line":"                      \u0027Network Policies with namespaceSelector\u0027)"},{"line_number":390,"context_line":"        raise k_exc.ResourceNotReady(namespace)"},{"line_number":391,"context_line":"    try:"},{"line_number":392,"context_line":"        net_crd \u003d kubernetes.get(\u0027{}/{}/kuryrnetworks/{}\u0027.format("},{"line_number":393,"context_line":"            constants.K8S_API_CRD_NAMESPACES, namespace[\u0027metadata\u0027][\u0027name\u0027],"},{"line_number":394,"context_line":"            ns_name))"},{"line_number":395,"context_line":"    except k_exc.K8sClientException:"},{"line_number":396,"context_line":"        LOG.exception(\"Kubernetes Client Exception.\")"},{"line_number":397,"context_line":"        raise"}],"source_content_type":"text/x-python","patch_set":35,"id":"1fa4df85_448dc379","line":394,"range":{"start_line":392,"start_character":0,"end_line":394,"end_character":21},"in_reply_to":"1fa4df85_c9822c53","updated":"2020-03-13 09:59:12.000000000","message":"True, I was planning to just bind them together by name.","commit_id":"f1fd730bc9624a604760cdbe34d7ea70baf80282"}],"kuryr_kubernetes/controller/handlers/kuryrnet.py":[{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"a3de7a0083021261d88458ea3af60d541ba8798b","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        # check labels to create sg rules"},{"line_number":81,"context_line":"        ns_labels \u003d kns_status.get(\u0027nsLabels\u0027, {})"},{"line_number":82,"context_line":"        if (crd_creation or"},{"line_number":83,"context_line":"                ns_labels !\u003d kuryrnet_crd[\u0027spec\u0027].get(\u0027nsLabels\u0027, {})):"},{"line_number":84,"context_line":"            # update SG and svc SGs"},{"line_number":85,"context_line":"            namespace \u003d driver_utils.get_namespace("}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_c4dee10d","line":82,"range":{"start_line":82,"start_character":12,"end_line":82,"end_character":24},"updated":"2020-02-13 16:51:57.000000000","message":"What is the reasoning behind this flag?\nDon\u0027t you need to check just the difference on the labels?","commit_id":"d4cdf9f3afa35d7a21a09df18347e46d588d99d2"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"cffe62baacb7f0f794c4738ba66f6d02fae13d9e","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        # check labels to create sg rules"},{"line_number":81,"context_line":"        ns_labels \u003d kns_status.get(\u0027nsLabels\u0027, {})"},{"line_number":82,"context_line":"        if (crd_creation or"},{"line_number":83,"context_line":"                ns_labels !\u003d kuryrnet_crd[\u0027spec\u0027].get(\u0027nsLabels\u0027, {})):"},{"line_number":84,"context_line":"            # update SG and svc SGs"},{"line_number":85,"context_line":"            namespace \u003d driver_utils.get_namespace("}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_7a51c462","line":82,"range":{"start_line":82,"start_character":12,"end_line":82,"end_character":24},"in_reply_to":"3fa7e38b_c4dee10d","updated":"2020-02-13 17:29:41.000000000","message":"if the namespace just changes some annotations (like adding the CRD) we don\u0027t need to recompute this. So only checking the SGs in case it is a new creation or the labels has changed","commit_id":"d4cdf9f3afa35d7a21a09df18347e46d588d99d2"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"f613294d3be4d44ddeb115d3975c5a7c554f6561","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    def on_present(self, kuryrnet_crd):"},{"line_number":51,"context_line":"        # Check if the CRD is mark for deletion"},{"line_number":52,"context_line":"        if kuryrnet_crd[\u0027metadata\u0027].get(\u0027deletionTimestamp\u0027):"},{"line_number":53,"context_line":"            self.delete_namespace_resources(kuryrnet_crd)"},{"line_number":54,"context_line":"            return"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        ns_name \u003d kuryrnet_crd[\u0027spec\u0027][\u0027nsName\u0027]"}],"source_content_type":"text/x-python","patch_set":12,"id":"1fa4df85_6f39cf3f","line":53,"range":{"start_line":53,"start_character":12,"end_line":53,"end_character":57},"updated":"2020-02-24 22:48:18.000000000","message":"Instead of calling this function here, should we just return and rename it to on_deleted so we maintain the pattern?","commit_id":"3400fbea21565ad936b0faa4ffb97d3b52002dcb"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"060d4623a202808d933480d13bf374c430779f1e","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    def on_present(self, kuryrnet_crd):"},{"line_number":51,"context_line":"        # Check if the CRD is mark for deletion"},{"line_number":52,"context_line":"        if kuryrnet_crd[\u0027metadata\u0027].get(\u0027deletionTimestamp\u0027):"},{"line_number":53,"context_line":"            self.delete_namespace_resources(kuryrnet_crd)"},{"line_number":54,"context_line":"            return"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        ns_name \u003d kuryrnet_crd[\u0027spec\u0027][\u0027nsName\u0027]"}],"source_content_type":"text/x-python","patch_set":12,"id":"1fa4df85_6acbf352","line":53,"range":{"start_line":53,"start_character":12,"end_line":53,"end_character":57},"in_reply_to":"1fa4df85_375fa942","updated":"2020-02-25 13:27:07.000000000","message":"Right, but if we skip when it\u0027s annotated, without directly calling the on_delete, won\u0027t kuryr detect that the CRD deletion event was triggered as the namespace deletion was triggered and run the on_delete method?","commit_id":"3400fbea21565ad936b0faa4ffb97d3b52002dcb"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"6ed2e60ab4535c170dea1cd701f03cab37a70f45","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    def on_present(self, kuryrnet_crd):"},{"line_number":51,"context_line":"        # Check if the CRD is mark for deletion"},{"line_number":52,"context_line":"        if kuryrnet_crd[\u0027metadata\u0027].get(\u0027deletionTimestamp\u0027):"},{"line_number":53,"context_line":"            self.delete_namespace_resources(kuryrnet_crd)"},{"line_number":54,"context_line":"            return"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        ns_name \u003d kuryrnet_crd[\u0027spec\u0027][\u0027nsName\u0027]"}],"source_content_type":"text/x-python","patch_set":12,"id":"1fa4df85_8dd769c0","line":53,"range":{"start_line":53,"start_character":12,"end_line":53,"end_character":57},"in_reply_to":"1fa4df85_6acbf352","updated":"2020-02-25 14:13:33.000000000","message":"no, the deletion event is not triggered until the finalizer is removed. I actually used to have it as on_delete method, until I tested and saw there was no deletion being triggered","commit_id":"3400fbea21565ad936b0faa4ffb97d3b52002dcb"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"cecd1f75a9f31ada38925f880861d8ba4b4c6eed","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    def on_present(self, kuryrnet_crd):"},{"line_number":51,"context_line":"        # Check if the CRD is mark for deletion"},{"line_number":52,"context_line":"        if kuryrnet_crd[\u0027metadata\u0027].get(\u0027deletionTimestamp\u0027):"},{"line_number":53,"context_line":"            self.delete_namespace_resources(kuryrnet_crd)"},{"line_number":54,"context_line":"            return"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        ns_name \u003d kuryrnet_crd[\u0027spec\u0027][\u0027nsName\u0027]"}],"source_content_type":"text/x-python","patch_set":12,"id":"1fa4df85_375fa942","line":53,"range":{"start_line":53,"start_character":12,"end_line":53,"end_character":57},"in_reply_to":"1fa4df85_6f39cf3f","updated":"2020-02-25 08:50:49.000000000","message":"I have it like that before... but then it gets call twice (or none). When the namespace is deleted, the kuryrnet crd is annotated (so on_present is triggered), then, if this calls on_deleted, the resources and the finalizer gets removed. Then, the crd gets deleted and the on_delete function gets called again","commit_id":"3400fbea21565ad936b0faa4ffb97d3b52002dcb"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"eb013095a280b798fb10c0f95b97c33b4d0827c0","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    def on_present(self, kuryrnet_crd):"},{"line_number":51,"context_line":"        # Check if the CRD is mark for deletion"},{"line_number":52,"context_line":"        if kuryrnet_crd[\u0027metadata\u0027].get(\u0027deletionTimestamp\u0027):"},{"line_number":53,"context_line":"            self.delete_namespace_resources(kuryrnet_crd)"},{"line_number":54,"context_line":"            return"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        ns_name \u003d kuryrnet_crd[\u0027spec\u0027][\u0027nsName\u0027]"}],"source_content_type":"text/x-python","patch_set":12,"id":"1fa4df85_10f389a0","line":53,"range":{"start_line":53,"start_character":12,"end_line":53,"end_character":57},"in_reply_to":"1fa4df85_8dd769c0","updated":"2020-02-25 19:11:19.000000000","message":"okay.","commit_id":"3400fbea21565ad936b0faa4ffb97d3b52002dcb"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"060d4623a202808d933480d13bf374c430779f1e","unresolved":false,"context_lines":[{"line_number":65,"context_line":"            self._patch_kuryrnet_crd(kuryrnet_crd, status)"},{"line_number":66,"context_line":"            crd_creation \u003d True"},{"line_number":67,"context_line":"        subnet_id \u003d kns_status.get(\u0027subnetId\u0027)"},{"line_number":68,"context_line":"        if not subnet_id or crd_creation:"},{"line_number":69,"context_line":"            subnet_id, subnet_cidr \u003d self._drv_subnets.create_subnet("},{"line_number":70,"context_line":"                ns_name, project_id, net_id)"},{"line_number":71,"context_line":"            status \u003d {\u0027subnetId\u0027: subnet_id, \u0027subnetCIDR\u0027: subnet_cidr}"}],"source_content_type":"text/x-python","patch_set":12,"id":"1fa4df85_ea30430a","line":68,"range":{"start_line":68,"start_character":8,"end_line":68,"end_character":41},"updated":"2020-02-25 13:27:07.000000000","message":"If there\u0027s no subnet_id isn\u0027t implied that the crd creation is happening and the crd_creation check wouldn\u0027t be needed? Same goes for router_id.","commit_id":"3400fbea21565ad936b0faa4ffb97d3b52002dcb"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"eb013095a280b798fb10c0f95b97c33b4d0827c0","unresolved":false,"context_lines":[{"line_number":65,"context_line":"            self._patch_kuryrnet_crd(kuryrnet_crd, status)"},{"line_number":66,"context_line":"            crd_creation \u003d True"},{"line_number":67,"context_line":"        subnet_id \u003d kns_status.get(\u0027subnetId\u0027)"},{"line_number":68,"context_line":"        if not subnet_id or crd_creation:"},{"line_number":69,"context_line":"            subnet_id, subnet_cidr \u003d self._drv_subnets.create_subnet("},{"line_number":70,"context_line":"                ns_name, project_id, net_id)"},{"line_number":71,"context_line":"            status \u003d {\u0027subnetId\u0027: subnet_id, \u0027subnetCIDR\u0027: subnet_cidr}"}],"source_content_type":"text/x-python","patch_set":12,"id":"1fa4df85_d09411eb","line":68,"range":{"start_line":68,"start_character":8,"end_line":68,"end_character":41},"in_reply_to":"1fa4df85_2dabd51d","updated":"2020-02-25 19:11:19.000000000","message":"right.","commit_id":"3400fbea21565ad936b0faa4ffb97d3b52002dcb"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"6ed2e60ab4535c170dea1cd701f03cab37a70f45","unresolved":false,"context_lines":[{"line_number":65,"context_line":"            self._patch_kuryrnet_crd(kuryrnet_crd, status)"},{"line_number":66,"context_line":"            crd_creation \u003d True"},{"line_number":67,"context_line":"        subnet_id \u003d kns_status.get(\u0027subnetId\u0027)"},{"line_number":68,"context_line":"        if not subnet_id or crd_creation:"},{"line_number":69,"context_line":"            subnet_id, subnet_cidr \u003d self._drv_subnets.create_subnet("},{"line_number":70,"context_line":"                ns_name, project_id, net_id)"},{"line_number":71,"context_line":"            status \u003d {\u0027subnetId\u0027: subnet_id, \u0027subnetCIDR\u0027: subnet_cidr}"}],"source_content_type":"text/x-python","patch_set":12,"id":"1fa4df85_2dabd51d","line":68,"range":{"start_line":68,"start_character":8,"end_line":68,"end_character":41},"in_reply_to":"1fa4df85_ea30430a","updated":"2020-02-25 14:13:33.000000000","message":"Yes, but this is doing the opposite. If there is no subnet_id it does not matter if there is a crd_creation or not. But, if there is a subnet, here we are protecting from the fact that network was created and therefore the subnet_id pointer must be updated. I added it as it could be used to recreate given resources. Just by removing the netId on the status, this would be recheck and it will either recreate the net/subnet/router-attachement or recover the existing ones)","commit_id":"3400fbea21565ad936b0faa4ffb97d3b52002dcb"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"f613294d3be4d44ddeb115d3975c5a7c554f6561","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        # check labels to create sg rules"},{"line_number":81,"context_line":"        ns_labels \u003d kns_status.get(\u0027nsLabels\u0027, {})"},{"line_number":82,"context_line":"        if (crd_creation or"},{"line_number":83,"context_line":"                ns_labels !\u003d kuryrnet_crd[\u0027spec\u0027].get(\u0027nsLabels\u0027, {})):"},{"line_number":84,"context_line":"            # update SG and svc SGs"},{"line_number":85,"context_line":"            namespace \u003d driver_utils.get_namespace("}],"source_content_type":"text/x-python","patch_set":12,"id":"1fa4df85_afcb471c","line":82,"range":{"start_line":82,"start_character":12,"end_line":82,"end_character":24},"updated":"2020-02-24 22:48:18.000000000","message":"I don\u0027t understand the reasoning of this flag. From what I see the update of the sg rules would be needed only when the labels are first added or updated.","commit_id":"3400fbea21565ad936b0faa4ffb97d3b52002dcb"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"060d4623a202808d933480d13bf374c430779f1e","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        # check labels to create sg rules"},{"line_number":81,"context_line":"        ns_labels \u003d kns_status.get(\u0027nsLabels\u0027, {})"},{"line_number":82,"context_line":"        if (crd_creation or"},{"line_number":83,"context_line":"                ns_labels !\u003d kuryrnet_crd[\u0027spec\u0027].get(\u0027nsLabels\u0027, {})):"},{"line_number":84,"context_line":"            # update SG and svc SGs"},{"line_number":85,"context_line":"            namespace \u003d driver_utils.get_namespace("}],"source_content_type":"text/x-python","patch_set":12,"id":"1fa4df85_2a809b8b","line":82,"range":{"start_line":82,"start_character":12,"end_line":82,"end_character":24},"in_reply_to":"1fa4df85_12e39b35","updated":"2020-02-25 13:27:07.000000000","message":"right, now I get it. Thank you! :)","commit_id":"3400fbea21565ad936b0faa4ffb97d3b52002dcb"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"cecd1f75a9f31ada38925f880861d8ba4b4c6eed","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        # check labels to create sg rules"},{"line_number":81,"context_line":"        ns_labels \u003d kns_status.get(\u0027nsLabels\u0027, {})"},{"line_number":82,"context_line":"        if (crd_creation or"},{"line_number":83,"context_line":"                ns_labels !\u003d kuryrnet_crd[\u0027spec\u0027].get(\u0027nsLabels\u0027, {})):"},{"line_number":84,"context_line":"            # update SG and svc SGs"},{"line_number":85,"context_line":"            namespace \u003d driver_utils.get_namespace("}],"source_content_type":"text/x-python","patch_set":12,"id":"1fa4df85_12e39b35","line":82,"range":{"start_line":82,"start_character":12,"end_line":82,"end_character":24},"in_reply_to":"1fa4df85_afcb471c","updated":"2020-02-25 08:50:49.000000000","message":"This is for the first added case, when there is no namespace labels. I added it to handle the case there the NP says something like namespaces that do not contain this label.","commit_id":"3400fbea21565ad936b0faa4ffb97d3b52002dcb"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"f613294d3be4d44ddeb115d3975c5a7c554f6561","unresolved":false,"context_lines":[{"line_number":84,"context_line":"            # update SG and svc SGs"},{"line_number":85,"context_line":"            namespace \u003d driver_utils.get_namespace("},{"line_number":86,"context_line":"                kuryrnet_crd[\u0027metadata\u0027][\u0027namespace\u0027])"},{"line_number":87,"context_line":"            crd_selectors \u003d self._drv_sg.update_namespace_sg_rules(namespace)"},{"line_number":88,"context_line":"            if (self._is_network_policy_enabled() and crd_selectors and"},{"line_number":89,"context_line":"                    oslo_cfg.CONF.octavia_defaults.enforce_sg_rules):"},{"line_number":90,"context_line":"                services \u003d driver_utils.get_services()"}],"source_content_type":"text/x-python","patch_set":12,"id":"1fa4df85_cfe323a4","line":87,"range":{"start_line":87,"start_character":41,"end_line":87,"end_character":66},"updated":"2020-02-24 22:48:18.000000000","message":"should we try both update and creation?","commit_id":"3400fbea21565ad936b0faa4ffb97d3b52002dcb"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"6ed2e60ab4535c170dea1cd701f03cab37a70f45","unresolved":false,"context_lines":[{"line_number":84,"context_line":"            # update SG and svc SGs"},{"line_number":85,"context_line":"            namespace \u003d driver_utils.get_namespace("},{"line_number":86,"context_line":"                kuryrnet_crd[\u0027metadata\u0027][\u0027namespace\u0027])"},{"line_number":87,"context_line":"            crd_selectors \u003d self._drv_sg.update_namespace_sg_rules(namespace)"},{"line_number":88,"context_line":"            if (self._is_network_policy_enabled() and crd_selectors and"},{"line_number":89,"context_line":"                    oslo_cfg.CONF.octavia_defaults.enforce_sg_rules):"},{"line_number":90,"context_line":"                services \u003d driver_utils.get_services()"}],"source_content_type":"text/x-python","patch_set":12,"id":"1fa4df85_2d80b58b","line":87,"range":{"start_line":87,"start_character":41,"end_line":87,"end_character":66},"in_reply_to":"1fa4df85_0a1fdf6c","updated":"2020-02-25 14:13:33.000000000","message":"perhaps I missed something here based on your comment. I executed update as that triggers delete + create. And you are suggesting update (delete + create) plus create? How is that saving computations?","commit_id":"3400fbea21565ad936b0faa4ffb97d3b52002dcb"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"eb013095a280b798fb10c0f95b97c33b4d0827c0","unresolved":false,"context_lines":[{"line_number":84,"context_line":"            # update SG and svc SGs"},{"line_number":85,"context_line":"            namespace \u003d driver_utils.get_namespace("},{"line_number":86,"context_line":"                kuryrnet_crd[\u0027metadata\u0027][\u0027namespace\u0027])"},{"line_number":87,"context_line":"            crd_selectors \u003d self._drv_sg.update_namespace_sg_rules(namespace)"},{"line_number":88,"context_line":"            if (self._is_network_policy_enabled() and crd_selectors and"},{"line_number":89,"context_line":"                    oslo_cfg.CONF.octavia_defaults.enforce_sg_rules):"},{"line_number":90,"context_line":"                services \u003d driver_utils.get_services()"}],"source_content_type":"text/x-python","patch_set":12,"id":"1fa4df85_d04bb184","line":87,"range":{"start_line":87,"start_character":41,"end_line":87,"end_character":66},"in_reply_to":"1fa4df85_2d80b58b","updated":"2020-02-25 19:11:19.000000000","message":"We would be saving on the attempt to delete the sg rules when it\u0027s a namespace creation event, as right now it\u0027s always updating(delete+create).","commit_id":"3400fbea21565ad936b0faa4ffb97d3b52002dcb"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"060d4623a202808d933480d13bf374c430779f1e","unresolved":false,"context_lines":[{"line_number":84,"context_line":"            # update SG and svc SGs"},{"line_number":85,"context_line":"            namespace \u003d driver_utils.get_namespace("},{"line_number":86,"context_line":"                kuryrnet_crd[\u0027metadata\u0027][\u0027namespace\u0027])"},{"line_number":87,"context_line":"            crd_selectors \u003d self._drv_sg.update_namespace_sg_rules(namespace)"},{"line_number":88,"context_line":"            if (self._is_network_policy_enabled() and crd_selectors and"},{"line_number":89,"context_line":"                    oslo_cfg.CONF.octavia_defaults.enforce_sg_rules):"},{"line_number":90,"context_line":"                services \u003d driver_utils.get_services()"}],"source_content_type":"text/x-python","patch_set":12,"id":"1fa4df85_0a1fdf6c","line":87,"range":{"start_line":87,"start_character":41,"end_line":87,"end_character":66},"in_reply_to":"1fa4df85_773a01e8","updated":"2020-02-25 13:27:07.000000000","message":"It might be a few more computations. But, no strong opinions here.","commit_id":"3400fbea21565ad936b0faa4ffb97d3b52002dcb"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"cecd1f75a9f31ada38925f880861d8ba4b4c6eed","unresolved":false,"context_lines":[{"line_number":84,"context_line":"            # update SG and svc SGs"},{"line_number":85,"context_line":"            namespace \u003d driver_utils.get_namespace("},{"line_number":86,"context_line":"                kuryrnet_crd[\u0027metadata\u0027][\u0027namespace\u0027])"},{"line_number":87,"context_line":"            crd_selectors \u003d self._drv_sg.update_namespace_sg_rules(namespace)"},{"line_number":88,"context_line":"            if (self._is_network_policy_enabled() and crd_selectors and"},{"line_number":89,"context_line":"                    oslo_cfg.CONF.octavia_defaults.enforce_sg_rules):"},{"line_number":90,"context_line":"                services \u003d driver_utils.get_services()"}],"source_content_type":"text/x-python","patch_set":12,"id":"1fa4df85_773a01e8","line":87,"range":{"start_line":87,"start_character":41,"end_line":87,"end_character":66},"in_reply_to":"1fa4df85_cfe323a4","updated":"2020-02-25 08:50:49.000000000","message":"update_namespace_sg_rules is calling delete and create.","commit_id":"3400fbea21565ad936b0faa4ffb97d3b52002dcb"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"f613294d3be4d44ddeb115d3975c5a7c554f6561","unresolved":false,"context_lines":[{"line_number":140,"context_line":"            # successful"},{"line_number":141,"context_line":"            raise"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        namespace \u003d driver_utils.get_namespace("},{"line_number":144,"context_line":"            kuryrnet_crd[\u0027metadata\u0027][\u0027namespace\u0027])"},{"line_number":145,"context_line":"        namespace \u003d {"},{"line_number":146,"context_line":"            \u0027metadata\u0027: {\u0027name\u0027: kuryrnet_crd[\u0027metadata\u0027][\u0027namespace\u0027]}}"},{"line_number":147,"context_line":"        crd_selectors \u003d self._drv_sg.delete_namespace_sg_rules(namespace)"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        if (self._is_network_policy_enabled() and crd_selectors and"}],"source_content_type":"text/x-python","patch_set":12,"id":"1fa4df85_4f6f33c5","line":146,"range":{"start_line":143,"start_character":0,"end_line":146,"end_character":72},"updated":"2020-02-24 22:48:18.000000000","message":"we should probably only fetch the namespace from k8s.","commit_id":"3400fbea21565ad936b0faa4ffb97d3b52002dcb"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"cecd1f75a9f31ada38925f880861d8ba4b4c6eed","unresolved":false,"context_lines":[{"line_number":140,"context_line":"            # successful"},{"line_number":141,"context_line":"            raise"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        namespace \u003d driver_utils.get_namespace("},{"line_number":144,"context_line":"            kuryrnet_crd[\u0027metadata\u0027][\u0027namespace\u0027])"},{"line_number":145,"context_line":"        namespace \u003d {"},{"line_number":146,"context_line":"            \u0027metadata\u0027: {\u0027name\u0027: kuryrnet_crd[\u0027metadata\u0027][\u0027namespace\u0027]}}"},{"line_number":147,"context_line":"        crd_selectors \u003d self._drv_sg.delete_namespace_sg_rules(namespace)"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        if (self._is_network_policy_enabled() and crd_selectors and"}],"source_content_type":"text/x-python","patch_set":12,"id":"1fa4df85_7713e167","line":146,"range":{"start_line":143,"start_character":0,"end_line":146,"end_character":72},"in_reply_to":"1fa4df85_4f6f33c5","updated":"2020-02-25 08:50:49.000000000","message":"ups... this got duplicated here, I actually only wanted to do the second, as the only thing needed by the delete_namespace is the namespace name, but it takes it from a namespace object. I wanted to save an unneeded call as the kuryrnet_crd is a namespace object and must be part of the namespace that is being deleted","commit_id":"3400fbea21565ad936b0faa4ffb97d3b52002dcb"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"060d4623a202808d933480d13bf374c430779f1e","unresolved":false,"context_lines":[{"line_number":140,"context_line":"            # successful"},{"line_number":141,"context_line":"            raise"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        namespace \u003d driver_utils.get_namespace("},{"line_number":144,"context_line":"            kuryrnet_crd[\u0027metadata\u0027][\u0027namespace\u0027])"},{"line_number":145,"context_line":"        namespace \u003d {"},{"line_number":146,"context_line":"            \u0027metadata\u0027: {\u0027name\u0027: kuryrnet_crd[\u0027metadata\u0027][\u0027namespace\u0027]}}"},{"line_number":147,"context_line":"        crd_selectors \u003d self._drv_sg.delete_namespace_sg_rules(namespace)"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        if (self._is_network_policy_enabled() and crd_selectors and"}],"source_content_type":"text/x-python","patch_set":12,"id":"1fa4df85_6a0d333d","line":146,"range":{"start_line":143,"start_character":0,"end_line":146,"end_character":72},"in_reply_to":"1fa4df85_7713e167","updated":"2020-02-25 13:27:07.000000000","message":"right.","commit_id":"3400fbea21565ad936b0faa4ffb97d3b52002dcb"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"1c52ffe927dc4cf2d5322c661c71b6e5f43ab42a","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        try:"},{"line_number":113,"context_line":"            if labels:"},{"line_number":114,"context_line":"                kubernetes.patch_crd(\u0027status\u0027,"},{"line_number":115,"context_line":"                                     kuryrnet_crd[\u0027metadata\u0027][\u0027selfLink\u0027],"},{"line_number":116,"context_line":"                                     status)"},{"line_number":117,"context_line":"            else:"},{"line_number":118,"context_line":"                kubernetes.patch(\u0027status\u0027,"}],"source_content_type":"text/x-python","patch_set":17,"id":"1fa4df85_155b4554","line":115,"range":{"start_line":115,"start_character":37,"end_line":115,"end_character":73},"updated":"2020-02-28 17:02:04.000000000","message":"selfLink is so comfy to use, but it\u0027s deprecated and will be disabled in K8s 1.20 and gone in 1.21. We need to build the URLs ourselves. Seeing how many times we do it we probably need a method to do that.","commit_id":"28b59044652436c732c8f0f62a7f60ddb0e48f4c"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"ad7dc9d5be6c1926deb7529d2a0d8166a9e36857","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        try:"},{"line_number":113,"context_line":"            if labels:"},{"line_number":114,"context_line":"                kubernetes.patch_crd(\u0027status\u0027,"},{"line_number":115,"context_line":"                                     kuryrnet_crd[\u0027metadata\u0027][\u0027selfLink\u0027],"},{"line_number":116,"context_line":"                                     status)"},{"line_number":117,"context_line":"            else:"},{"line_number":118,"context_line":"                kubernetes.patch(\u0027status\u0027,"}],"source_content_type":"text/x-python","patch_set":17,"id":"1fa4df85_909e63b6","line":115,"range":{"start_line":115,"start_character":37,"end_line":115,"end_character":73},"in_reply_to":"1fa4df85_155b4554","updated":"2020-02-28 17:10:56.000000000","message":"yep... that could be handle in a follow up patch to remove  them all, right?","commit_id":"28b59044652436c732c8f0f62a7f60ddb0e48f4c"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"b243a74cfb098612b0b85aa869767701e613f33f","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        try:"},{"line_number":113,"context_line":"            if labels:"},{"line_number":114,"context_line":"                kubernetes.patch_crd(\u0027status\u0027,"},{"line_number":115,"context_line":"                                     kuryrnet_crd[\u0027metadata\u0027][\u0027selfLink\u0027],"},{"line_number":116,"context_line":"                                     status)"},{"line_number":117,"context_line":"            else:"},{"line_number":118,"context_line":"                kubernetes.patch(\u0027status\u0027,"}],"source_content_type":"text/x-python","patch_set":17,"id":"1fa4df85_82e04b98","line":115,"range":{"start_line":115,"start_character":37,"end_line":115,"end_character":73},"in_reply_to":"1fa4df85_909e63b6","updated":"2020-03-02 09:18:35.000000000","message":"Sure.","commit_id":"28b59044652436c732c8f0f62a7f60ddb0e48f4c"}],"kuryr_kubernetes/controller/handlers/kuryrnet_population.py":[{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"a3de7a0083021261d88458ea3af60d541ba8798b","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2019 Red Hat, Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"# you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_e4cbdd18","line":1,"range":{"start_line":1,"start_character":12,"end_line":1,"end_character":16},"updated":"2020-02-13 16:51:57.000000000","message":"2020","commit_id":"d4cdf9f3afa35d7a21a09df18347e46d588d99d2"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"cffe62baacb7f0f794c4738ba66f6d02fae13d9e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2019 Red Hat, Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"# you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_3a47cca6","line":1,"range":{"start_line":1,"start_character":12,"end_line":1,"end_character":16},"in_reply_to":"3fa7e38b_e4cbdd18","updated":"2020-02-13 17:29:41.000000000","message":":)","commit_id":"d4cdf9f3afa35d7a21a09df18347e46d588d99d2"}],"kuryr_kubernetes/controller/handlers/kuryrnetwork.py":[{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"3a27b93d73d56b0e78925234a179514821514228","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    \"\"\"Controller side of KuryrNetwork process for Kubernetes pods."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    `KuryrNetworkHandler` runs on the Kuryr-Kubernetes controller and is"},{"line_number":32,"context_line":"    responsible for populating pools for newly created namespaces."},{"line_number":33,"context_line":"    \"\"\""},{"line_number":34,"context_line":"    OBJECT_KIND \u003d constants.K8S_OBJ_KURYRNETWORK"},{"line_number":35,"context_line":"    OBJECT_WATCH_PATH \u003d constants.K8S_API_CRD_KURYRNETWORKS"}],"source_content_type":"text/x-python","patch_set":26,"id":"1fa4df85_c690494d","line":32,"range":{"start_line":32,"start_character":20,"end_line":32,"end_character":36},"updated":"2020-03-05 22:38:24.000000000","message":"Should this refer to the creation of network resources?","commit_id":"57039dd8881336e11734185b641b0b4a55cf1e9f"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"b5e91292e3af54620c9b417761b2ff3015fdf32d","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    \"\"\"Controller side of KuryrNetwork process for Kubernetes pods."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    `KuryrNetworkHandler` runs on the Kuryr-Kubernetes controller and is"},{"line_number":32,"context_line":"    responsible for populating pools for newly created namespaces."},{"line_number":33,"context_line":"    \"\"\""},{"line_number":34,"context_line":"    OBJECT_KIND \u003d constants.K8S_OBJ_KURYRNETWORK"},{"line_number":35,"context_line":"    OBJECT_WATCH_PATH \u003d constants.K8S_API_CRD_KURYRNETWORKS"}],"source_content_type":"text/x-python","patch_set":26,"id":"1fa4df85_5ec89972","line":32,"range":{"start_line":32,"start_character":20,"end_line":32,"end_character":36},"in_reply_to":"1fa4df85_c690494d","updated":"2020-03-06 08:25:06.000000000","message":"yep","commit_id":"57039dd8881336e11734185b641b0b4a55cf1e9f"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"8c00be2ec3919009b48f6e718a267fc62a5f1e57","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2019 Red Hat, Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"# you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":31,"id":"1fa4df85_80069551","line":1,"range":{"start_line":1,"start_character":12,"end_line":1,"end_character":16},"updated":"2020-03-09 13:40:38.000000000","message":"2020","commit_id":"984b72fe0190f936a83e54a73f6caf9df783f9c5"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"14f584a62db93fd1cdc4e0b9d1fec316c0f34ae4","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2019 Red Hat, Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"# you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":31,"id":"1fa4df85_25d48ee8","line":1,"range":{"start_line":1,"start_character":12,"end_line":1,"end_character":16},"in_reply_to":"1fa4df85_80069551","updated":"2020-03-09 16:15:22.000000000","message":"Done","commit_id":"984b72fe0190f936a83e54a73f6caf9df783f9c5"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"543e626bc2dcb8d1b8aff65a2480de869e68c188","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        # check labels to create sg rules"},{"line_number":83,"context_line":"        ns_labels \u003d kns_status.get(\u0027nsLabels\u0027, {})"},{"line_number":84,"context_line":"        if (crd_creation or"},{"line_number":85,"context_line":"                ns_labels !\u003d kuryrnet_crd[\u0027spec\u0027].get(\u0027nsLabels\u0027, {})):"},{"line_number":86,"context_line":"            # update SG and svc SGs"},{"line_number":87,"context_line":"            namespace \u003d driver_utils.get_namespace(ns_name)"},{"line_number":88,"context_line":"            crd_selectors \u003d self._drv_sg.update_namespace_sg_rules(namespace)"}],"source_content_type":"text/x-python","patch_set":34,"id":"1fa4df85_86468cc0","line":85,"range":{"start_line":85,"start_character":49,"end_line":85,"end_character":68},"updated":"2020-03-11 10:06:04.000000000","message":"as the \u0027nsLabels\u0027 is a required field on the spec we could retrieve it with kuryrnet_crd[\u0027spec\u0027][\u0027nsLabels\u0027]","commit_id":"7310796f380329ce87b502636a377cd05d8b93c7"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"281babfad6de960ce4b9ea14e14d384b5d09b810","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        # check labels to create sg rules"},{"line_number":83,"context_line":"        ns_labels \u003d kns_status.get(\u0027nsLabels\u0027, {})"},{"line_number":84,"context_line":"        if (crd_creation or"},{"line_number":85,"context_line":"                ns_labels !\u003d kuryrnet_crd[\u0027spec\u0027].get(\u0027nsLabels\u0027, {})):"},{"line_number":86,"context_line":"            # update SG and svc SGs"},{"line_number":87,"context_line":"            namespace \u003d driver_utils.get_namespace(ns_name)"},{"line_number":88,"context_line":"            crd_selectors \u003d self._drv_sg.update_namespace_sg_rules(namespace)"}],"source_content_type":"text/x-python","patch_set":34,"id":"1fa4df85_3244ae1b","line":85,"range":{"start_line":85,"start_character":49,"end_line":85,"end_character":68},"in_reply_to":"1fa4df85_86468cc0","updated":"2020-03-11 12:58:56.000000000","message":"Done","commit_id":"7310796f380329ce87b502636a377cd05d8b93c7"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"543e626bc2dcb8d1b8aff65a2480de869e68c188","unresolved":false,"context_lines":[{"line_number":91,"context_line":"                services \u003d driver_utils.get_services()"},{"line_number":92,"context_line":"                self._update_services(services, crd_selectors, project_id)"},{"line_number":93,"context_line":"            # update status"},{"line_number":94,"context_line":"            status \u003d {\u0027nsLabels\u0027: kuryrnet_crd[\u0027spec\u0027].get(\u0027nsLabels\u0027, {})}"},{"line_number":95,"context_line":"            self._patch_kuryrnet_crd(kuryrnet_crd, status, labels\u003dTrue)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def _is_network_policy_enabled(self):"}],"source_content_type":"text/x-python","patch_set":34,"id":"1fa4df85_a64388af","line":94,"range":{"start_line":94,"start_character":54,"end_line":94,"end_character":75},"updated":"2020-03-11 10:06:04.000000000","message":"ditto","commit_id":"7310796f380329ce87b502636a377cd05d8b93c7"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"281babfad6de960ce4b9ea14e14d384b5d09b810","unresolved":false,"context_lines":[{"line_number":91,"context_line":"                services \u003d driver_utils.get_services()"},{"line_number":92,"context_line":"                self._update_services(services, crd_selectors, project_id)"},{"line_number":93,"context_line":"            # update status"},{"line_number":94,"context_line":"            status \u003d {\u0027nsLabels\u0027: kuryrnet_crd[\u0027spec\u0027].get(\u0027nsLabels\u0027, {})}"},{"line_number":95,"context_line":"            self._patch_kuryrnet_crd(kuryrnet_crd, status, labels\u003dTrue)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def _is_network_policy_enabled(self):"}],"source_content_type":"text/x-python","patch_set":34,"id":"1fa4df85_f245b616","line":94,"range":{"start_line":94,"start_character":54,"end_line":94,"end_character":75},"in_reply_to":"1fa4df85_a64388af","updated":"2020-03-11 12:58:56.000000000","message":"Done","commit_id":"7310796f380329ce87b502636a377cd05d8b93c7"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"017e967d4453a6fea3801297136240e0377e6288","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                drivers.ServiceSecurityGroupsDriver.get_instance())"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def on_present(self, kuryrnet_crd):"},{"line_number":53,"context_line":"        # Check if the CRD is mark for deletion"},{"line_number":54,"context_line":"        if kuryrnet_crd[\u0027metadata\u0027].get(\u0027deletionTimestamp\u0027):"},{"line_number":55,"context_line":"            self.delete_namespace_resources(kuryrnet_crd)"},{"line_number":56,"context_line":"            return"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        ns_name \u003d kuryrnet_crd[\u0027spec\u0027][\u0027nsName\u0027]"},{"line_number":59,"context_line":"        project_id \u003d kuryrnet_crd[\u0027spec\u0027][\u0027projectId\u0027]"}],"source_content_type":"text/x-python","patch_set":35,"id":"1fa4df85_4d697189","line":56,"range":{"start_line":53,"start_character":0,"end_line":56,"end_character":18},"updated":"2020-03-12 17:57:50.000000000","message":"Check this thing out, way cleaner than this: https://github.com/dulek/kuryr-kubernetes/blob/review/luis_tomas_bolivar/namespace-crds/kuryr_kubernetes/handlers/k8s_base.py#L72-L74","commit_id":"f1fd730bc9624a604760cdbe34d7ea70baf80282"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"1f232b28b38684d42634256b1a3944fcd13126ef","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                drivers.ServiceSecurityGroupsDriver.get_instance())"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def on_present(self, kuryrnet_crd):"},{"line_number":53,"context_line":"        # Check if the CRD is mark for deletion"},{"line_number":54,"context_line":"        if kuryrnet_crd[\u0027metadata\u0027].get(\u0027deletionTimestamp\u0027):"},{"line_number":55,"context_line":"            self.delete_namespace_resources(kuryrnet_crd)"},{"line_number":56,"context_line":"            return"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        ns_name \u003d kuryrnet_crd[\u0027spec\u0027][\u0027nsName\u0027]"},{"line_number":59,"context_line":"        project_id \u003d kuryrnet_crd[\u0027spec\u0027][\u0027projectId\u0027]"}],"source_content_type":"text/x-python","patch_set":35,"id":"1fa4df85_e9ecc82a","line":56,"range":{"start_line":53,"start_character":0,"end_line":56,"end_character":18},"in_reply_to":"1fa4df85_4d697189","updated":"2020-03-13 09:37:41.000000000","message":"ohh, nice!","commit_id":"f1fd730bc9624a604760cdbe34d7ea70baf80282"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"d87beb83c660d2f605dfc3fbeb080f220e26f0cb","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                drivers.ServiceSecurityGroupsDriver.get_instance())"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def on_present(self, kuryrnet_crd):"},{"line_number":53,"context_line":"        # Check if the CRD is mark for deletion"},{"line_number":54,"context_line":"        if kuryrnet_crd[\u0027metadata\u0027].get(\u0027deletionTimestamp\u0027):"},{"line_number":55,"context_line":"            self.delete_namespace_resources(kuryrnet_crd)"},{"line_number":56,"context_line":"            return"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        ns_name \u003d kuryrnet_crd[\u0027spec\u0027][\u0027nsName\u0027]"},{"line_number":59,"context_line":"        project_id \u003d kuryrnet_crd[\u0027spec\u0027][\u0027projectId\u0027]"}],"source_content_type":"text/x-python","patch_set":35,"id":"1fa4df85_84d89b7f","line":56,"range":{"start_line":53,"start_character":0,"end_line":56,"end_character":18},"in_reply_to":"1fa4df85_e9ecc82a","updated":"2020-03-13 09:59:12.000000000","message":"Now that I look at it again - the try-except should not have on_finalize call inside.","commit_id":"f1fd730bc9624a604760cdbe34d7ea70baf80282"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"017e967d4453a6fea3801297136240e0377e6288","unresolved":false,"context_lines":[{"line_number":156,"context_line":"        kubernetes \u003d clients.get_kubernetes_client()"},{"line_number":157,"context_line":"        LOG.debug(\u0027Removing finalizer for KuryrNet CRD %s\u0027, kuryrnet_crd)"},{"line_number":158,"context_line":"        try:"},{"line_number":159,"context_line":"            kubernetes.patch_crd(\u0027metadata\u0027,"},{"line_number":160,"context_line":"                                 kuryrnet_crd[\u0027metadata\u0027][\u0027selfLink\u0027],"},{"line_number":161,"context_line":"                                 \u0027finalizers\u0027,"},{"line_number":162,"context_line":"                                 action\u003d\u0027remove\u0027)"},{"line_number":163,"context_line":"        except k_exc.K8sClientException:"},{"line_number":164,"context_line":"            LOG.exception(\u0027Error removing kuryrnetwork CRD finalizer for %s\u0027,"},{"line_number":165,"context_line":"                          kuryrnet_crd)"}],"source_content_type":"text/x-python","patch_set":35,"id":"1fa4df85_2d9d1566","line":162,"range":{"start_line":159,"start_character":0,"end_line":162,"end_character":49},"updated":"2020-03-12 17:57:50.000000000","message":"Technically you should only remove the one finalizer we added, not all of them, but I understand we assume that KuryrNetwork is only owned by us.","commit_id":"f1fd730bc9624a604760cdbe34d7ea70baf80282"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"f0baca15001981d1495f4e82e0e8c7a76954790e","unresolved":false,"context_lines":[{"line_number":92,"context_line":"    def on_finalize(self, kuryrnet_crd):"},{"line_number":93,"context_line":"        LOG.debug(\"Deleting kuryrnetwork CRD resources: %s\", kuryrnet_crd)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        net_id \u003d kuryrnet_crd[\u0027status\u0027].get(\u0027netId\u0027)"},{"line_number":96,"context_line":"        if net_id:"},{"line_number":97,"context_line":"            self._drv_vif_pool.delete_network_pools("},{"line_number":98,"context_line":"                kuryrnet_crd[\u0027status\u0027][\u0027netId\u0027])"},{"line_number":99,"context_line":"            try:"},{"line_number":100,"context_line":"                self._drv_subnets.delete_namespace_subnet(kuryrnet_crd)"},{"line_number":101,"context_line":"            except k_exc.ResourceNotReady:"},{"line_number":102,"context_line":"                LOG.debug(\"Subnet is not ready to be removed.\")"},{"line_number":103,"context_line":"                # TODO(ltomasbo): Once KuryrPort CRDs is supported, we should"},{"line_number":104,"context_line":"                # execute a delete network ports method here to remove the"},{"line_number":105,"context_line":"                # ports associated to the namespace/subnet, ensuring next"},{"line_number":106,"context_line":"                # retry will be successful"},{"line_number":107,"context_line":"                raise"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        namespace \u003d {"},{"line_number":110,"context_line":"            \u0027metadata\u0027: {\u0027name\u0027: kuryrnet_crd[\u0027spec\u0027][\u0027nsName\u0027]}}"},{"line_number":111,"context_line":"        crd_selectors \u003d self._drv_sg.delete_namespace_sg_rules(namespace)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        if (self._is_network_policy_enabled() and crd_selectors and"},{"line_number":114,"context_line":"                oslo_cfg.CONF.octavia_defaults.enforce_sg_rules):"},{"line_number":115,"context_line":"            project_id \u003d kuryrnet_crd[\u0027spec\u0027][\u0027projectId\u0027]"},{"line_number":116,"context_line":"            services \u003d driver_utils.get_services()"},{"line_number":117,"context_line":"            self._update_services(services, crd_selectors, project_id)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        kubernetes \u003d clients.get_kubernetes_client()"},{"line_number":120,"context_line":"        LOG.debug(\u0027Removing finalizer for KuryrNet CRD %s\u0027, kuryrnet_crd)"},{"line_number":121,"context_line":"        try:"},{"line_number":122,"context_line":"            kubernetes.patch_crd(\u0027metadata\u0027,"},{"line_number":123,"context_line":"                                 kuryrnet_crd[\u0027metadata\u0027][\u0027selfLink\u0027],"},{"line_number":124,"context_line":"                                 \u0027finalizers\u0027,"},{"line_number":125,"context_line":"                                 action\u003d\u0027remove\u0027)"},{"line_number":126,"context_line":"        except k_exc.K8sClientException:"},{"line_number":127,"context_line":"            LOG.exception(\u0027Error removing kuryrnetwork CRD finalizer for %s\u0027,"},{"line_number":128,"context_line":"                          kuryrnet_crd)"}],"source_content_type":"text/x-python","patch_set":36,"id":"1fa4df85_a4cfd727","line":125,"range":{"start_line":95,"start_character":0,"end_line":125,"end_character":49},"updated":"2020-03-13 10:35:57.000000000","message":"Just a minor question - I assume all of this is idempotent, right?","commit_id":"a8f3862fad5ddfd268ce5396e686436808a60bdf"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"46a801678425d4a98f34c660c660bab6d00ab40a","unresolved":false,"context_lines":[{"line_number":92,"context_line":"    def on_finalize(self, kuryrnet_crd):"},{"line_number":93,"context_line":"        LOG.debug(\"Deleting kuryrnetwork CRD resources: %s\", kuryrnet_crd)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        net_id \u003d kuryrnet_crd[\u0027status\u0027].get(\u0027netId\u0027)"},{"line_number":96,"context_line":"        if net_id:"},{"line_number":97,"context_line":"            self._drv_vif_pool.delete_network_pools("},{"line_number":98,"context_line":"                kuryrnet_crd[\u0027status\u0027][\u0027netId\u0027])"},{"line_number":99,"context_line":"            try:"},{"line_number":100,"context_line":"                self._drv_subnets.delete_namespace_subnet(kuryrnet_crd)"},{"line_number":101,"context_line":"            except k_exc.ResourceNotReady:"},{"line_number":102,"context_line":"                LOG.debug(\"Subnet is not ready to be removed.\")"},{"line_number":103,"context_line":"                # TODO(ltomasbo): Once KuryrPort CRDs is supported, we should"},{"line_number":104,"context_line":"                # execute a delete network ports method here to remove the"},{"line_number":105,"context_line":"                # ports associated to the namespace/subnet, ensuring next"},{"line_number":106,"context_line":"                # retry will be successful"},{"line_number":107,"context_line":"                raise"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        namespace \u003d {"},{"line_number":110,"context_line":"            \u0027metadata\u0027: {\u0027name\u0027: kuryrnet_crd[\u0027spec\u0027][\u0027nsName\u0027]}}"},{"line_number":111,"context_line":"        crd_selectors \u003d self._drv_sg.delete_namespace_sg_rules(namespace)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        if (self._is_network_policy_enabled() and crd_selectors and"},{"line_number":114,"context_line":"                oslo_cfg.CONF.octavia_defaults.enforce_sg_rules):"},{"line_number":115,"context_line":"            project_id \u003d kuryrnet_crd[\u0027spec\u0027][\u0027projectId\u0027]"},{"line_number":116,"context_line":"            services \u003d driver_utils.get_services()"},{"line_number":117,"context_line":"            self._update_services(services, crd_selectors, project_id)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        kubernetes \u003d clients.get_kubernetes_client()"},{"line_number":120,"context_line":"        LOG.debug(\u0027Removing finalizer for KuryrNet CRD %s\u0027, kuryrnet_crd)"},{"line_number":121,"context_line":"        try:"},{"line_number":122,"context_line":"            kubernetes.patch_crd(\u0027metadata\u0027,"},{"line_number":123,"context_line":"                                 kuryrnet_crd[\u0027metadata\u0027][\u0027selfLink\u0027],"},{"line_number":124,"context_line":"                                 \u0027finalizers\u0027,"},{"line_number":125,"context_line":"                                 action\u003d\u0027remove\u0027)"},{"line_number":126,"context_line":"        except k_exc.K8sClientException:"},{"line_number":127,"context_line":"            LOG.exception(\u0027Error removing kuryrnetwork CRD finalizer for %s\u0027,"},{"line_number":128,"context_line":"                          kuryrnet_crd)"}],"source_content_type":"text/x-python","patch_set":36,"id":"1fa4df85_0467cb27","line":125,"range":{"start_line":95,"start_character":0,"end_line":125,"end_character":49},"in_reply_to":"1fa4df85_a4cfd727","updated":"2020-03-13 11:29:31.000000000","message":"it should be, yes. All but the last one I suppose. But that will only be executed once","commit_id":"a8f3862fad5ddfd268ce5396e686436808a60bdf"}],"kuryr_kubernetes/controller/handlers/kuryrnetwork_population.py":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"017e967d4453a6fea3801297136240e0377e6288","unresolved":false,"context_lines":[{"line_number":79,"context_line":"                self._patch_kuryrnet_crd(kuryrnet_crd, populated\u003dFalse)"},{"line_number":80,"context_line":"                raise"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def _patch_kuryrnet_crd(self, kns_crd, populated\u003dTrue):"},{"line_number":83,"context_line":"        kubernetes \u003d clients.get_kubernetes_client()"},{"line_number":84,"context_line":"        crd_name \u003d kns_crd[\u0027metadata\u0027][\u0027name\u0027]"},{"line_number":85,"context_line":"        LOG.debug(\u0027Patching KuryrNet CRD %s\u0027 % crd_name)"}],"source_content_type":"text/x-python","patch_set":35,"id":"1fa4df85_aa5a4b80","line":82,"range":{"start_line":82,"start_character":8,"end_line":82,"end_character":27},"updated":"2020-03-12 17:57:50.000000000","message":"kuryrnetwork?","commit_id":"f1fd730bc9624a604760cdbe34d7ea70baf80282"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"1f232b28b38684d42634256b1a3944fcd13126ef","unresolved":false,"context_lines":[{"line_number":79,"context_line":"                self._patch_kuryrnet_crd(kuryrnet_crd, populated\u003dFalse)"},{"line_number":80,"context_line":"                raise"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def _patch_kuryrnet_crd(self, kns_crd, populated\u003dTrue):"},{"line_number":83,"context_line":"        kubernetes \u003d clients.get_kubernetes_client()"},{"line_number":84,"context_line":"        crd_name \u003d kns_crd[\u0027metadata\u0027][\u0027name\u0027]"},{"line_number":85,"context_line":"        LOG.debug(\u0027Patching KuryrNet CRD %s\u0027 % crd_name)"}],"source_content_type":"text/x-python","patch_set":35,"id":"1fa4df85_49207c4a","line":82,"range":{"start_line":82,"start_character":8,"end_line":82,"end_character":27},"in_reply_to":"1fa4df85_aa5a4b80","updated":"2020-03-13 09:37:41.000000000","message":"Done","commit_id":"f1fd730bc9624a604760cdbe34d7ea70baf80282"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"017e967d4453a6fea3801297136240e0377e6288","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    def _patch_kuryrnet_crd(self, kns_crd, populated\u003dTrue):"},{"line_number":83,"context_line":"        kubernetes \u003d clients.get_kubernetes_client()"},{"line_number":84,"context_line":"        crd_name \u003d kns_crd[\u0027metadata\u0027][\u0027name\u0027]"},{"line_number":85,"context_line":"        LOG.debug(\u0027Patching KuryrNet CRD %s\u0027 % crd_name)"},{"line_number":86,"context_line":"        try:"},{"line_number":87,"context_line":"            kubernetes.patch_crd(\u0027status\u0027, kns_crd[\u0027metadata\u0027][\u0027selfLink\u0027],"},{"line_number":88,"context_line":"                                 {\u0027populated\u0027: populated})"}],"source_content_type":"text/x-python","patch_set":35,"id":"1fa4df85_ca5f8770","line":85,"range":{"start_line":85,"start_character":28,"end_line":85,"end_character":36},"updated":"2020-03-12 17:57:50.000000000","message":"Same.","commit_id":"f1fd730bc9624a604760cdbe34d7ea70baf80282"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"1f232b28b38684d42634256b1a3944fcd13126ef","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    def _patch_kuryrnet_crd(self, kns_crd, populated\u003dTrue):"},{"line_number":83,"context_line":"        kubernetes \u003d clients.get_kubernetes_client()"},{"line_number":84,"context_line":"        crd_name \u003d kns_crd[\u0027metadata\u0027][\u0027name\u0027]"},{"line_number":85,"context_line":"        LOG.debug(\u0027Patching KuryrNet CRD %s\u0027 % crd_name)"},{"line_number":86,"context_line":"        try:"},{"line_number":87,"context_line":"            kubernetes.patch_crd(\u0027status\u0027, kns_crd[\u0027metadata\u0027][\u0027selfLink\u0027],"},{"line_number":88,"context_line":"                                 {\u0027populated\u0027: populated})"}],"source_content_type":"text/x-python","patch_set":35,"id":"1fa4df85_691d380e","line":85,"range":{"start_line":85,"start_character":28,"end_line":85,"end_character":36},"in_reply_to":"1fa4df85_ca5f8770","updated":"2020-03-13 09:37:41.000000000","message":"Done","commit_id":"f1fd730bc9624a604760cdbe34d7ea70baf80282"}],"kuryr_kubernetes/controller/handlers/lbaas.py":[{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"f33b04d1b9aea1f562deb24b28e6a1c6211562a4","unresolved":false,"context_lines":[{"line_number":584,"context_line":"        status_data \u003d {\"loadBalancer\": {"},{"line_number":585,"context_line":"            \"ingress\": [{\"ip\": lb_ip_address.format()}]}}"},{"line_number":586,"context_line":"        k8s \u003d clients.get_kubernetes_client()"},{"line_number":587,"context_line":"        svc_link \u003d self._get_service_link(endpoints)"},{"line_number":588,"context_line":"        svc_link \u003d svc_link + \u0027/status\u0027"},{"line_number":589,"context_line":"        try:"},{"line_number":590,"context_line":"            k8s.patch(\"status\", svc_link, status_data)"},{"line_number":591,"context_line":"        except k_exc.K8sClientException:"}],"source_content_type":"text/x-python","patch_set":33,"id":"1fa4df85_ffe34403","line":588,"range":{"start_line":587,"start_character":8,"end_line":588,"end_character":39},"updated":"2020-03-11 07:31:07.000000000","message":"How about:\n\n        svc_link \u003d self._get_service_link(endpoints) + \u0027/status\u0027\n\nAnd probably name `svc_link` will not be exactly this :)","commit_id":"1493fdc5e1bff49de067e55d829a5dc2a2632d39"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"2d1586524f8fb1ad312ac5a7e4a36c9c87f00134","unresolved":false,"context_lines":[{"line_number":584,"context_line":"        status_data \u003d {\"loadBalancer\": {"},{"line_number":585,"context_line":"            \"ingress\": [{\"ip\": lb_ip_address.format()}]}}"},{"line_number":586,"context_line":"        k8s \u003d clients.get_kubernetes_client()"},{"line_number":587,"context_line":"        svc_link \u003d self._get_service_link(endpoints)"},{"line_number":588,"context_line":"        svc_link \u003d svc_link + \u0027/status\u0027"},{"line_number":589,"context_line":"        try:"},{"line_number":590,"context_line":"            k8s.patch(\"status\", svc_link, status_data)"},{"line_number":591,"context_line":"        except k_exc.K8sClientException:"}],"source_content_type":"text/x-python","patch_set":33,"id":"1fa4df85_83c75e65","line":588,"range":{"start_line":587,"start_character":8,"end_line":588,"end_character":39},"in_reply_to":"1fa4df85_ffe34403","updated":"2020-03-11 09:07:30.000000000","message":"Done","commit_id":"1493fdc5e1bff49de067e55d829a5dc2a2632d39"}],"kuryr_kubernetes/controller/handlers/namespace.py":[{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"a3de7a0083021261d88458ea3af60d541ba8798b","unresolved":false,"context_lines":[{"line_number":141,"context_line":"            \u0027kind\u0027: \u0027KuryrNet\u0027,"},{"line_number":142,"context_line":"            \u0027metadata\u0027: {"},{"line_number":143,"context_line":"                \u0027name\u0027: kns_name,"},{"line_number":144,"context_line":"                \u0027finalizers\u0027: [\u0027kuryrnet_handler\u0027]"},{"line_number":145,"context_line":"            },"},{"line_number":146,"context_line":"            \u0027spec\u0027: {"},{"line_number":147,"context_line":"                \u0027nsName\u0027: namespace,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_9f8ef277","line":144,"range":{"start_line":144,"start_character":16,"end_line":144,"end_character":50},"updated":"2020-02-13 16:51:57.000000000","message":"Shouldn\u0027t we also add the ownerReference to block the deletion of the namespace while the kuryrnet deletion is being handled?","commit_id":"d4cdf9f3afa35d7a21a09df18347e46d588d99d2"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"cffe62baacb7f0f794c4738ba66f6d02fae13d9e","unresolved":false,"context_lines":[{"line_number":141,"context_line":"            \u0027kind\u0027: \u0027KuryrNet\u0027,"},{"line_number":142,"context_line":"            \u0027metadata\u0027: {"},{"line_number":143,"context_line":"                \u0027name\u0027: kns_name,"},{"line_number":144,"context_line":"                \u0027finalizers\u0027: [\u0027kuryrnet_handler\u0027]"},{"line_number":145,"context_line":"            },"},{"line_number":146,"context_line":"            \u0027spec\u0027: {"},{"line_number":147,"context_line":"                \u0027nsName\u0027: namespace,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_fa9054f5","line":144,"range":{"start_line":144,"start_character":16,"end_line":144,"end_character":50},"in_reply_to":"3fa7e38b_9f8ef277","updated":"2020-02-13 17:29:41.000000000","message":"it is not needed. When you delete the namespace it will try to delete its associated objects. And this object has the finalizer, so it cannot be deleted until that is removed. And that in turns blocks the namespace object deletion as it is now namespaced instead of cluster scope.","commit_id":"d4cdf9f3afa35d7a21a09df18347e46d588d99d2"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"f613294d3be4d44ddeb115d3975c5a7c554f6561","unresolved":false,"context_lines":[{"line_number":141,"context_line":"            \u0027kind\u0027: \u0027KuryrNet\u0027,"},{"line_number":142,"context_line":"            \u0027metadata\u0027: {"},{"line_number":143,"context_line":"                \u0027name\u0027: kns_name,"},{"line_number":144,"context_line":"                \u0027finalizers\u0027: [\u0027kuryrnet_handler\u0027]"},{"line_number":145,"context_line":"            },"},{"line_number":146,"context_line":"            \u0027spec\u0027: {"},{"line_number":147,"context_line":"                \u0027nsName\u0027: namespace,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_d688c521","line":144,"range":{"start_line":144,"start_character":16,"end_line":144,"end_character":50},"in_reply_to":"3fa7e38b_fa9054f5","updated":"2020-02-24 22:48:18.000000000","message":"oooh got it. Nice!","commit_id":"d4cdf9f3afa35d7a21a09df18347e46d588d99d2"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"f613294d3be4d44ddeb115d3975c5a7c554f6561","unresolved":false,"context_lines":[{"line_number":67,"context_line":"            LOG.debug(\u0027KuryrNet CRD associated to namespace is %s\u0027,"},{"line_number":68,"context_line":"                      net_crd_id)"},{"line_number":69,"context_line":"        except KeyError:"},{"line_number":70,"context_line":"            self._set_net_crd(namespace, kns_name)"},{"line_number":71,"context_line":"        try:"},{"line_number":72,"context_line":"            self._add_kuryrnet_crd(ns_name, kns_name, ns_labels)"},{"line_number":73,"context_line":"        except exceptions.K8sClientException:"}],"source_content_type":"text/x-python","patch_set":12,"id":"1fa4df85_04b12290","line":70,"range":{"start_line":70,"start_character":11,"end_line":70,"end_character":50},"updated":"2020-02-24 22:48:18.000000000","message":"Perhaps it\u0027s worth to add protection here to ignore when Not found and retry on any other k8s exception.","commit_id":"3400fbea21565ad936b0faa4ffb97d3b52002dcb"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"cecd1f75a9f31ada38925f880861d8ba4b4c6eed","unresolved":false,"context_lines":[{"line_number":67,"context_line":"            LOG.debug(\u0027KuryrNet CRD associated to namespace is %s\u0027,"},{"line_number":68,"context_line":"                      net_crd_id)"},{"line_number":69,"context_line":"        except KeyError:"},{"line_number":70,"context_line":"            self._set_net_crd(namespace, kns_name)"},{"line_number":71,"context_line":"        try:"},{"line_number":72,"context_line":"            self._add_kuryrnet_crd(ns_name, kns_name, ns_labels)"},{"line_number":73,"context_line":"        except exceptions.K8sClientException:"}],"source_content_type":"text/x-python","patch_set":12,"id":"1fa4df85_920d4b39","line":70,"range":{"start_line":70,"start_character":11,"end_line":70,"end_character":50},"in_reply_to":"1fa4df85_04b12290","updated":"2020-02-25 08:50:49.000000000","message":"Done","commit_id":"3400fbea21565ad936b0faa4ffb97d3b52002dcb"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"f613294d3be4d44ddeb115d3975c5a7c554f6561","unresolved":false,"context_lines":[{"line_number":112,"context_line":"            LOG.exception(\u0027Error updating kuryrnet CRD %s\u0027, kns_crd)"},{"line_number":113,"context_line":"            raise"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    def _get_kns_crd(self, net_crd_id, namespace):"},{"line_number":116,"context_line":"        k8s \u003d clients.get_kubernetes_client()"},{"line_number":117,"context_line":"        try:"},{"line_number":118,"context_line":"            kuryrnet_crd \u003d k8s.get(\u0027{}/{}/kuryrnets/{}\u0027.format("}],"source_content_type":"text/x-python","patch_set":12,"id":"1fa4df85_84a0b2a7","line":115,"range":{"start_line":115,"start_character":27,"end_line":115,"end_character":37},"updated":"2020-02-24 22:48:18.000000000","message":"I guess this could be renamed to net_crd_name or kns_name, just for consistency with the parameters naming on this method call.","commit_id":"3400fbea21565ad936b0faa4ffb97d3b52002dcb"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"cecd1f75a9f31ada38925f880861d8ba4b4c6eed","unresolved":false,"context_lines":[{"line_number":112,"context_line":"            LOG.exception(\u0027Error updating kuryrnet CRD %s\u0027, kns_crd)"},{"line_number":113,"context_line":"            raise"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    def _get_kns_crd(self, net_crd_id, namespace):"},{"line_number":116,"context_line":"        k8s \u003d clients.get_kubernetes_client()"},{"line_number":117,"context_line":"        try:"},{"line_number":118,"context_line":"            kuryrnet_crd \u003d k8s.get(\u0027{}/{}/kuryrnets/{}\u0027.format("}],"source_content_type":"text/x-python","patch_set":12,"id":"1fa4df85_523833d2","line":115,"range":{"start_line":115,"start_character":27,"end_line":115,"end_character":37},"in_reply_to":"1fa4df85_84a0b2a7","updated":"2020-02-25 08:50:49.000000000","message":"Done","commit_id":"3400fbea21565ad936b0faa4ffb97d3b52002dcb"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"1c52ffe927dc4cf2d5322c661c71b6e5f43ab42a","unresolved":false,"context_lines":[{"line_number":132,"context_line":"            \u0027kind\u0027: \u0027KuryrNet\u0027,"},{"line_number":133,"context_line":"            \u0027metadata\u0027: {"},{"line_number":134,"context_line":"                \u0027name\u0027: kns_name,"},{"line_number":135,"context_line":"                \u0027finalizers\u0027: [\u0027kuryrnet_handler\u0027]"},{"line_number":136,"context_line":"            },"},{"line_number":137,"context_line":"            \u0027spec\u0027: {"},{"line_number":138,"context_line":"                \u0027nsName\u0027: namespace,"}],"source_content_type":"text/x-python","patch_set":17,"id":"1fa4df85_b5ab511b","line":135,"range":{"start_line":135,"start_character":32,"end_line":135,"end_character":48},"updated":"2020-02-28 17:02:04.000000000","message":"Not really a big thing, but apparently K8s convention is to use URLs here. So something with openstack.org/kuryr, I think. Or finalizer.kuryr.openstack.org. Also we want that as constant.","commit_id":"28b59044652436c732c8f0f62a7f60ddb0e48f4c"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"ad7dc9d5be6c1926deb7529d2a0d8166a9e36857","unresolved":false,"context_lines":[{"line_number":132,"context_line":"            \u0027kind\u0027: \u0027KuryrNet\u0027,"},{"line_number":133,"context_line":"            \u0027metadata\u0027: {"},{"line_number":134,"context_line":"                \u0027name\u0027: kns_name,"},{"line_number":135,"context_line":"                \u0027finalizers\u0027: [\u0027kuryrnet_handler\u0027]"},{"line_number":136,"context_line":"            },"},{"line_number":137,"context_line":"            \u0027spec\u0027: {"},{"line_number":138,"context_line":"                \u0027nsName\u0027: namespace,"}],"source_content_type":"text/x-python","patch_set":17,"id":"1fa4df85_d0b37b4c","line":135,"range":{"start_line":135,"start_character":32,"end_line":135,"end_character":48},"in_reply_to":"1fa4df85_b5ab511b","updated":"2020-02-28 17:10:56.000000000","message":"nice, I\u0027ll update then!","commit_id":"28b59044652436c732c8f0f62a7f60ddb0e48f4c"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"3a27b93d73d56b0e78925234a179514821514228","unresolved":false,"context_lines":[{"line_number":64,"context_line":"                    LOG.debug(\u0027Namespace associated is not annotated: %s\u0027, ns)"},{"line_number":65,"context_line":"                else:"},{"line_number":66,"context_line":"                    LOG.debug(\u0027Removing annotation: %\u0027, ns_net_annotations)"},{"line_number":67,"context_line":"                k8s.remove_annotations(ns[\u0027metadata\u0027][\u0027selfLink\u0027],"},{"line_number":68,"context_line":"                                       constants.K8S_ANNOTATION_NET_CRD)"},{"line_number":69,"context_line":"            k8s.delete(net_crd[\u0027metadata\u0027][\u0027selfLink\u0027])"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def on_present(self, namespace):"}],"source_content_type":"text/x-python","patch_set":26,"id":"1fa4df85_a67aeded","line":68,"range":{"start_line":67,"start_character":0,"end_line":68,"end_character":72},"updated":"2020-03-05 22:38:24.000000000","message":"Should this be inside the else block?","commit_id":"57039dd8881336e11734185b641b0b4a55cf1e9f"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"b5e91292e3af54620c9b417761b2ff3015fdf32d","unresolved":false,"context_lines":[{"line_number":64,"context_line":"                    LOG.debug(\u0027Namespace associated is not annotated: %s\u0027, ns)"},{"line_number":65,"context_line":"                else:"},{"line_number":66,"context_line":"                    LOG.debug(\u0027Removing annotation: %\u0027, ns_net_annotations)"},{"line_number":67,"context_line":"                k8s.remove_annotations(ns[\u0027metadata\u0027][\u0027selfLink\u0027],"},{"line_number":68,"context_line":"                                       constants.K8S_ANNOTATION_NET_CRD)"},{"line_number":69,"context_line":"            k8s.delete(net_crd[\u0027metadata\u0027][\u0027selfLink\u0027])"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def on_present(self, namespace):"}],"source_content_type":"text/x-python","patch_set":26,"id":"1fa4df85_5e9df963","line":68,"range":{"start_line":67,"start_character":0,"end_line":68,"end_character":72},"in_reply_to":"1fa4df85_a67aeded","updated":"2020-03-06 08:25:06.000000000","message":"right!","commit_id":"57039dd8881336e11734185b641b0b4a55cf1e9f"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"3a27b93d73d56b0e78925234a179514821514228","unresolved":false,"context_lines":[{"line_number":66,"context_line":"                    LOG.debug(\u0027Removing annotation: %\u0027, ns_net_annotations)"},{"line_number":67,"context_line":"                k8s.remove_annotations(ns[\u0027metadata\u0027][\u0027selfLink\u0027],"},{"line_number":68,"context_line":"                                       constants.K8S_ANNOTATION_NET_CRD)"},{"line_number":69,"context_line":"            k8s.delete(net_crd[\u0027metadata\u0027][\u0027selfLink\u0027])"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def on_present(self, namespace):"},{"line_number":72,"context_line":"        ns_labels \u003d namespace[\u0027metadata\u0027].get(\u0027labels\u0027, {})"}],"source_content_type":"text/x-python","patch_set":26,"id":"1fa4df85_466bf91c","line":69,"range":{"start_line":69,"start_character":12,"end_line":69,"end_character":55},"updated":"2020-03-05 22:38:24.000000000","message":"It might be good to add some protection here for the NotFound exception.","commit_id":"57039dd8881336e11734185b641b0b4a55cf1e9f"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"b5e91292e3af54620c9b417761b2ff3015fdf32d","unresolved":false,"context_lines":[{"line_number":66,"context_line":"                    LOG.debug(\u0027Removing annotation: %\u0027, ns_net_annotations)"},{"line_number":67,"context_line":"                k8s.remove_annotations(ns[\u0027metadata\u0027][\u0027selfLink\u0027],"},{"line_number":68,"context_line":"                                       constants.K8S_ANNOTATION_NET_CRD)"},{"line_number":69,"context_line":"            k8s.delete(net_crd[\u0027metadata\u0027][\u0027selfLink\u0027])"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def on_present(self, namespace):"},{"line_number":72,"context_line":"        ns_labels \u003d namespace[\u0027metadata\u0027].get(\u0027labels\u0027, {})"}],"source_content_type":"text/x-python","patch_set":26,"id":"1fa4df85_5e765940","line":69,"range":{"start_line":69,"start_character":12,"end_line":69,"end_character":55},"in_reply_to":"1fa4df85_466bf91c","updated":"2020-03-06 08:25:06.000000000","message":"we are iterating over the just discovered kuryrnet crds... but yep... I guess someone can try to delete that in between (in large envs)","commit_id":"57039dd8881336e11734185b641b0b4a55cf1e9f"},{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"f33b04d1b9aea1f562deb24b28e6a1c6211562a4","unresolved":false,"context_lines":[{"line_number":56,"context_line":"                # namespace. It must be deleted"},{"line_number":57,"context_line":"                LOG.debug(\u0027No namespace associated, deleting kuryrnet crd: \u0027"},{"line_number":58,"context_line":"                          \u0027%s\u0027, net_crd)"},{"line_number":59,"context_line":"            else:"},{"line_number":60,"context_line":"                try:"},{"line_number":61,"context_line":"                    ns_net_annotations \u003d ns[\u0027metadata\u0027][\u0027annotations\u0027]["},{"line_number":62,"context_line":"                        constants.K8S_ANNOTATION_NET_CRD]"}],"source_content_type":"text/x-python","patch_set":33,"id":"1fa4df85_1f82e000","line":59,"range":{"start_line":59,"start_character":12,"end_line":59,"end_character":16},"updated":"2020-03-11 07:31:07.000000000","message":"Is else statement necessary? It doesn\u0027t increase readability, and implies additional indentation…","commit_id":"1493fdc5e1bff49de067e55d829a5dc2a2632d39"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"2d1586524f8fb1ad312ac5a7e4a36c9c87f00134","unresolved":false,"context_lines":[{"line_number":56,"context_line":"                # namespace. It must be deleted"},{"line_number":57,"context_line":"                LOG.debug(\u0027No namespace associated, deleting kuryrnet crd: \u0027"},{"line_number":58,"context_line":"                          \u0027%s\u0027, net_crd)"},{"line_number":59,"context_line":"            else:"},{"line_number":60,"context_line":"                try:"},{"line_number":61,"context_line":"                    ns_net_annotations \u003d ns[\u0027metadata\u0027][\u0027annotations\u0027]["},{"line_number":62,"context_line":"                        constants.K8S_ANNOTATION_NET_CRD]"}],"source_content_type":"text/x-python","patch_set":33,"id":"1fa4df85_a3729a48","line":59,"range":{"start_line":59,"start_character":12,"end_line":59,"end_character":16},"in_reply_to":"1fa4df85_1f82e000","updated":"2020-03-11 09:07:30.000000000","message":"yes, if there is no associated namespace we don\u0027t want to execute lines 60-68, but we still want to delete the crd (L69-72)","commit_id":"1493fdc5e1bff49de067e55d829a5dc2a2632d39"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"017e967d4453a6fea3801297136240e0377e6288","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        self._drv_project \u003d drivers.NamespaceProjectDriver.get_instance()"},{"line_number":35,"context_line":"        self._upgrade_crds()"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def _upgrade_crds(self):"},{"line_number":38,"context_line":"        k8s \u003d clients.get_kubernetes_client()"},{"line_number":39,"context_line":"        try:"},{"line_number":40,"context_line":"            net_crds \u003d k8s.get(constants.K8S_API_CRD_KURYRNETS)"},{"line_number":41,"context_line":"            namespaces \u003d k8s.get(constants.K8S_API_NAMESPACES)"},{"line_number":42,"context_line":"        except exceptions.K8sResourceNotFound:"},{"line_number":43,"context_line":"            return"},{"line_number":44,"context_line":"        except exceptions.K8sClientException:"},{"line_number":45,"context_line":"            LOG.warning(\"Error retriving namespace information\")"},{"line_number":46,"context_line":"            raise"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        ns_dict \u003d {\u0027ns-\u0027 + ns[\u0027metadata\u0027][\u0027name\u0027]: ns"},{"line_number":49,"context_line":"                   for ns in namespaces.get(\u0027items\u0027)}"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        for net_crd in net_crds.get(\u0027items\u0027):"},{"line_number":52,"context_line":"            try:"},{"line_number":53,"context_line":"                ns \u003d ns_dict[net_crd[\u0027metadata\u0027][\u0027name\u0027]]"},{"line_number":54,"context_line":"            except KeyError:"},{"line_number":55,"context_line":"                # Note(ltomasbo): The CRD does not have an associated"},{"line_number":56,"context_line":"                # namespace. It must be deleted"},{"line_number":57,"context_line":"                LOG.debug(\u0027No namespace associated, deleting kuryrnet crd: \u0027"},{"line_number":58,"context_line":"                          \u0027%s\u0027, net_crd)"},{"line_number":59,"context_line":"            else:"},{"line_number":60,"context_line":"                try:"},{"line_number":61,"context_line":"                    ns_net_annotations \u003d ns[\u0027metadata\u0027][\u0027annotations\u0027]["},{"line_number":62,"context_line":"                        constants.K8S_ANNOTATION_NET_CRD]"},{"line_number":63,"context_line":"                except KeyError:"},{"line_number":64,"context_line":"                    LOG.debug(\u0027Namespace associated is not annotated: %s\u0027, ns)"},{"line_number":65,"context_line":"                else:"},{"line_number":66,"context_line":"                    LOG.debug(\u0027Removing annotation: %\u0027, ns_net_annotations)"},{"line_number":67,"context_line":"                    k8s.remove_annotations(ns[\u0027metadata\u0027][\u0027selfLink\u0027],"},{"line_number":68,"context_line":"                                           constants.K8S_ANNOTATION_NET_CRD)"},{"line_number":69,"context_line":"            try:"},{"line_number":70,"context_line":"                k8s.delete(net_crd[\u0027metadata\u0027][\u0027selfLink\u0027])"},{"line_number":71,"context_line":"            except exceptions.K8sResourceNotFound:"},{"line_number":72,"context_line":"                LOG.debug(\u0027Kuryrnet object already deleted: %s\u0027, net_crd)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def on_present(self, namespace):"},{"line_number":75,"context_line":"        ns_labels \u003d namespace[\u0027metadata\u0027].get(\u0027labels\u0027, {})"}],"source_content_type":"text/x-python","patch_set":35,"id":"1fa4df85_2db7553d","line":72,"range":{"start_line":37,"start_character":0,"end_line":72,"end_character":73},"updated":"2020-03-12 17:57:50.000000000","message":"So this will work only if network and subnet names are the same - i.e. then we won\u0027t get duplication? I feel this might be problematic, but it\u0027s definitely not something blocking here, we can easily improve this later on.","commit_id":"f1fd730bc9624a604760cdbe34d7ea70baf80282"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"1f232b28b38684d42634256b1a3944fcd13126ef","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        self._drv_project \u003d drivers.NamespaceProjectDriver.get_instance()"},{"line_number":35,"context_line":"        self._upgrade_crds()"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def _upgrade_crds(self):"},{"line_number":38,"context_line":"        k8s \u003d clients.get_kubernetes_client()"},{"line_number":39,"context_line":"        try:"},{"line_number":40,"context_line":"            net_crds \u003d k8s.get(constants.K8S_API_CRD_KURYRNETS)"},{"line_number":41,"context_line":"            namespaces \u003d k8s.get(constants.K8S_API_NAMESPACES)"},{"line_number":42,"context_line":"        except exceptions.K8sResourceNotFound:"},{"line_number":43,"context_line":"            return"},{"line_number":44,"context_line":"        except exceptions.K8sClientException:"},{"line_number":45,"context_line":"            LOG.warning(\"Error retriving namespace information\")"},{"line_number":46,"context_line":"            raise"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        ns_dict \u003d {\u0027ns-\u0027 + ns[\u0027metadata\u0027][\u0027name\u0027]: ns"},{"line_number":49,"context_line":"                   for ns in namespaces.get(\u0027items\u0027)}"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        for net_crd in net_crds.get(\u0027items\u0027):"},{"line_number":52,"context_line":"            try:"},{"line_number":53,"context_line":"                ns \u003d ns_dict[net_crd[\u0027metadata\u0027][\u0027name\u0027]]"},{"line_number":54,"context_line":"            except KeyError:"},{"line_number":55,"context_line":"                # Note(ltomasbo): The CRD does not have an associated"},{"line_number":56,"context_line":"                # namespace. It must be deleted"},{"line_number":57,"context_line":"                LOG.debug(\u0027No namespace associated, deleting kuryrnet crd: \u0027"},{"line_number":58,"context_line":"                          \u0027%s\u0027, net_crd)"},{"line_number":59,"context_line":"            else:"},{"line_number":60,"context_line":"                try:"},{"line_number":61,"context_line":"                    ns_net_annotations \u003d ns[\u0027metadata\u0027][\u0027annotations\u0027]["},{"line_number":62,"context_line":"                        constants.K8S_ANNOTATION_NET_CRD]"},{"line_number":63,"context_line":"                except KeyError:"},{"line_number":64,"context_line":"                    LOG.debug(\u0027Namespace associated is not annotated: %s\u0027, ns)"},{"line_number":65,"context_line":"                else:"},{"line_number":66,"context_line":"                    LOG.debug(\u0027Removing annotation: %\u0027, ns_net_annotations)"},{"line_number":67,"context_line":"                    k8s.remove_annotations(ns[\u0027metadata\u0027][\u0027selfLink\u0027],"},{"line_number":68,"context_line":"                                           constants.K8S_ANNOTATION_NET_CRD)"},{"line_number":69,"context_line":"            try:"},{"line_number":70,"context_line":"                k8s.delete(net_crd[\u0027metadata\u0027][\u0027selfLink\u0027])"},{"line_number":71,"context_line":"            except exceptions.K8sResourceNotFound:"},{"line_number":72,"context_line":"                LOG.debug(\u0027Kuryrnet object already deleted: %s\u0027, net_crd)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def on_present(self, namespace):"},{"line_number":75,"context_line":"        ns_labels \u003d namespace[\u0027metadata\u0027].get(\u0027labels\u0027, {})"}],"source_content_type":"text/x-python","patch_set":35,"id":"1fa4df85_496b9c1e","line":72,"range":{"start_line":37,"start_character":0,"end_line":72,"end_character":73},"in_reply_to":"1fa4df85_2db7553d","updated":"2020-03-13 09:37:41.000000000","message":"not sure I follow. We want to keep the same networks as before... as they will have pods running there. We just want to translate the CRDs, and that will happen when we remove the annotation from the ns","commit_id":"f1fd730bc9624a604760cdbe34d7ea70baf80282"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"d87beb83c660d2f605dfc3fbeb080f220e26f0cb","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        self._drv_project \u003d drivers.NamespaceProjectDriver.get_instance()"},{"line_number":35,"context_line":"        self._upgrade_crds()"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def _upgrade_crds(self):"},{"line_number":38,"context_line":"        k8s \u003d clients.get_kubernetes_client()"},{"line_number":39,"context_line":"        try:"},{"line_number":40,"context_line":"            net_crds \u003d k8s.get(constants.K8S_API_CRD_KURYRNETS)"},{"line_number":41,"context_line":"            namespaces \u003d k8s.get(constants.K8S_API_NAMESPACES)"},{"line_number":42,"context_line":"        except exceptions.K8sResourceNotFound:"},{"line_number":43,"context_line":"            return"},{"line_number":44,"context_line":"        except exceptions.K8sClientException:"},{"line_number":45,"context_line":"            LOG.warning(\"Error retriving namespace information\")"},{"line_number":46,"context_line":"            raise"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        ns_dict \u003d {\u0027ns-\u0027 + ns[\u0027metadata\u0027][\u0027name\u0027]: ns"},{"line_number":49,"context_line":"                   for ns in namespaces.get(\u0027items\u0027)}"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        for net_crd in net_crds.get(\u0027items\u0027):"},{"line_number":52,"context_line":"            try:"},{"line_number":53,"context_line":"                ns \u003d ns_dict[net_crd[\u0027metadata\u0027][\u0027name\u0027]]"},{"line_number":54,"context_line":"            except KeyError:"},{"line_number":55,"context_line":"                # Note(ltomasbo): The CRD does not have an associated"},{"line_number":56,"context_line":"                # namespace. It must be deleted"},{"line_number":57,"context_line":"                LOG.debug(\u0027No namespace associated, deleting kuryrnet crd: \u0027"},{"line_number":58,"context_line":"                          \u0027%s\u0027, net_crd)"},{"line_number":59,"context_line":"            else:"},{"line_number":60,"context_line":"                try:"},{"line_number":61,"context_line":"                    ns_net_annotations \u003d ns[\u0027metadata\u0027][\u0027annotations\u0027]["},{"line_number":62,"context_line":"                        constants.K8S_ANNOTATION_NET_CRD]"},{"line_number":63,"context_line":"                except KeyError:"},{"line_number":64,"context_line":"                    LOG.debug(\u0027Namespace associated is not annotated: %s\u0027, ns)"},{"line_number":65,"context_line":"                else:"},{"line_number":66,"context_line":"                    LOG.debug(\u0027Removing annotation: %\u0027, ns_net_annotations)"},{"line_number":67,"context_line":"                    k8s.remove_annotations(ns[\u0027metadata\u0027][\u0027selfLink\u0027],"},{"line_number":68,"context_line":"                                           constants.K8S_ANNOTATION_NET_CRD)"},{"line_number":69,"context_line":"            try:"},{"line_number":70,"context_line":"                k8s.delete(net_crd[\u0027metadata\u0027][\u0027selfLink\u0027])"},{"line_number":71,"context_line":"            except exceptions.K8sResourceNotFound:"},{"line_number":72,"context_line":"                LOG.debug(\u0027Kuryrnet object already deleted: %s\u0027, net_crd)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def on_present(self, namespace):"},{"line_number":75,"context_line":"        ns_labels \u003d namespace[\u0027metadata\u0027].get(\u0027labels\u0027, {})"}],"source_content_type":"text/x-python","patch_set":35,"id":"1fa4df85_c444531e","line":72,"range":{"start_line":37,"start_character":0,"end_line":72,"end_character":73},"in_reply_to":"1fa4df85_496b9c1e","updated":"2020-03-13 09:59:12.000000000","message":"Yes, but then the fact that networks and subnets won\u0027t get recreated is achieved by the fact we look them up by name. While this isn\u0027t too bad, it\u0027s not bulletproof, e.g. if some subnet was created two times due to some bug.\n\nBut it\u0027s probably good enough.","commit_id":"f1fd730bc9624a604760cdbe34d7ea70baf80282"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"017e967d4453a6fea3801297136240e0377e6288","unresolved":false,"context_lines":[{"line_number":81,"context_line":"            self._update_labels(kns_crd, ns_labels)"},{"line_number":82,"context_line":"            return"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        # KuryrNetwork CRD does not exist, needs to be created"},{"line_number":85,"context_line":"        try:"},{"line_number":86,"context_line":"            ns_annotations \u003d namespace[\u0027metadata\u0027][\u0027annotations\u0027]"},{"line_number":87,"context_line":"            net_crd_id \u003d ns_annotations[constants.K8S_ANNOTATION_NETWORK_CRD]"},{"line_number":88,"context_line":"            LOG.debug(\u0027KuryrNetwork CRD associated to namespace is %s\u0027,"},{"line_number":89,"context_line":"                      net_crd_id)"},{"line_number":90,"context_line":"        except KeyError:"},{"line_number":91,"context_line":"            try:"},{"line_number":92,"context_line":"                self._set_net_crd(namespace, kns_name)"},{"line_number":93,"context_line":"            except exceptions.K8sResourceNotFound:"},{"line_number":94,"context_line":"                LOG.debug(\"Namespace not found, it may have been deleted: %s\","},{"line_number":95,"context_line":"                          namespace)"},{"line_number":96,"context_line":"                return"},{"line_number":97,"context_line":"            except exceptions.K8sClientException:"},{"line_number":98,"context_line":"                LOG.exception(\"Kubernetes Client Exception.\")"},{"line_number":99,"context_line":"                raise exceptions.ResourceNotReady(namespace)"},{"line_number":100,"context_line":"        try:"},{"line_number":101,"context_line":"            self._add_kuryrnet_crd(ns_name, kns_name, ns_labels)"},{"line_number":102,"context_line":"        except exceptions.K8sClientException:"},{"line_number":103,"context_line":"            LOG.exception(\"Kuryrnetwork CRD creation failed.\")"}],"source_content_type":"text/x-python","patch_set":35,"id":"1fa4df85_adca659e","line":100,"range":{"start_line":84,"start_character":0,"end_line":100,"end_character":12},"updated":"2020-03-12 17:57:50.000000000","message":"Why do we need this stuff with annotating the namespace? Can\u0027t we lookup by name?","commit_id":"f1fd730bc9624a604760cdbe34d7ea70baf80282"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"1f232b28b38684d42634256b1a3944fcd13126ef","unresolved":false,"context_lines":[{"line_number":81,"context_line":"            self._update_labels(kns_crd, ns_labels)"},{"line_number":82,"context_line":"            return"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        # KuryrNetwork CRD does not exist, needs to be created"},{"line_number":85,"context_line":"        try:"},{"line_number":86,"context_line":"            ns_annotations \u003d namespace[\u0027metadata\u0027][\u0027annotations\u0027]"},{"line_number":87,"context_line":"            net_crd_id \u003d ns_annotations[constants.K8S_ANNOTATION_NETWORK_CRD]"},{"line_number":88,"context_line":"            LOG.debug(\u0027KuryrNetwork CRD associated to namespace is %s\u0027,"},{"line_number":89,"context_line":"                      net_crd_id)"},{"line_number":90,"context_line":"        except KeyError:"},{"line_number":91,"context_line":"            try:"},{"line_number":92,"context_line":"                self._set_net_crd(namespace, kns_name)"},{"line_number":93,"context_line":"            except exceptions.K8sResourceNotFound:"},{"line_number":94,"context_line":"                LOG.debug(\"Namespace not found, it may have been deleted: %s\","},{"line_number":95,"context_line":"                          namespace)"},{"line_number":96,"context_line":"                return"},{"line_number":97,"context_line":"            except exceptions.K8sClientException:"},{"line_number":98,"context_line":"                LOG.exception(\"Kubernetes Client Exception.\")"},{"line_number":99,"context_line":"                raise exceptions.ResourceNotReady(namespace)"},{"line_number":100,"context_line":"        try:"},{"line_number":101,"context_line":"            self._add_kuryrnet_crd(ns_name, kns_name, ns_labels)"},{"line_number":102,"context_line":"        except exceptions.K8sClientException:"},{"line_number":103,"context_line":"            LOG.exception(\"Kuryrnetwork CRD creation failed.\")"}],"source_content_type":"text/x-python","patch_set":35,"id":"1fa4df85_69cc5861","line":100,"range":{"start_line":84,"start_character":0,"end_line":100,"end_character":12},"in_reply_to":"1fa4df85_adca659e","updated":"2020-03-13 09:37:41.000000000","message":"right!","commit_id":"f1fd730bc9624a604760cdbe34d7ea70baf80282"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"017e967d4453a6fea3801297136240e0377e6288","unresolved":false,"context_lines":[{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        kns_name \u003d kns_crd[\u0027metadata\u0027][\u0027name\u0027]"},{"line_number":122,"context_line":"        ns \u003d kns_crd[\u0027metadata\u0027][\u0027namespace\u0027]"},{"line_number":123,"context_line":"        self._del_kuryrnet_crd(kns_name, ns)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    def _update_labels(self, kns_crd, ns_labels):"},{"line_number":126,"context_line":"        kns_status \u003d kns_crd.get(\u0027status\u0027)"}],"source_content_type":"text/x-python","patch_set":35,"id":"1fa4df85_0d3b799c","line":123,"range":{"start_line":123,"start_character":8,"end_line":123,"end_character":44},"updated":"2020-03-12 17:57:50.000000000","message":"I wonder if that doesn\u0027t happen automatically now that kuryrnetworks are namespaced.","commit_id":"f1fd730bc9624a604760cdbe34d7ea70baf80282"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"1f232b28b38684d42634256b1a3944fcd13126ef","unresolved":false,"context_lines":[{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        kns_name \u003d kns_crd[\u0027metadata\u0027][\u0027name\u0027]"},{"line_number":122,"context_line":"        ns \u003d kns_crd[\u0027metadata\u0027][\u0027namespace\u0027]"},{"line_number":123,"context_line":"        self._del_kuryrnet_crd(kns_name, ns)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    def _update_labels(self, kns_crd, ns_labels):"},{"line_number":126,"context_line":"        kns_status \u003d kns_crd.get(\u0027status\u0027)"}],"source_content_type":"text/x-python","patch_set":35,"id":"1fa4df85_c9db0c1f","line":123,"range":{"start_line":123,"start_character":8,"end_line":123,"end_character":44},"in_reply_to":"1fa4df85_0d3b799c","updated":"2020-03-13 09:37:41.000000000","message":"that\u0027s right! I\u0027ll remove this. In fact... we don\u0027t need to do anything on namespace deletion now, right?","commit_id":"f1fd730bc9624a604760cdbe34d7ea70baf80282"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"d87beb83c660d2f605dfc3fbeb080f220e26f0cb","unresolved":false,"context_lines":[{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        kns_name \u003d kns_crd[\u0027metadata\u0027][\u0027name\u0027]"},{"line_number":122,"context_line":"        ns \u003d kns_crd[\u0027metadata\u0027][\u0027namespace\u0027]"},{"line_number":123,"context_line":"        self._del_kuryrnet_crd(kns_name, ns)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    def _update_labels(self, kns_crd, ns_labels):"},{"line_number":126,"context_line":"        kns_status \u003d kns_crd.get(\u0027status\u0027)"}],"source_content_type":"text/x-python","patch_set":35,"id":"1fa4df85_6449df30","line":123,"range":{"start_line":123,"start_character":8,"end_line":123,"end_character":44},"in_reply_to":"1fa4df85_c9db0c1f","updated":"2020-03-13 09:59:12.000000000","message":"Yup.","commit_id":"f1fd730bc9624a604760cdbe34d7ea70baf80282"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"017e967d4453a6fea3801297136240e0377e6288","unresolved":false,"context_lines":[{"line_number":170,"context_line":"            \u0027kind\u0027: \u0027KuryrNetwork\u0027,"},{"line_number":171,"context_line":"            \u0027metadata\u0027: {"},{"line_number":172,"context_line":"                \u0027name\u0027: kns_name,"},{"line_number":173,"context_line":"                \u0027finalizers\u0027: [constants.KURYRNETWORK_FINALIZER]"},{"line_number":174,"context_line":"            },"},{"line_number":175,"context_line":"            \u0027spec\u0027: {"},{"line_number":176,"context_line":"                \u0027nsName\u0027: namespace,"}],"source_content_type":"text/x-python","patch_set":35,"id":"1fa4df85_4d3171ec","line":173,"updated":"2020-03-12 17:57:50.000000000","message":"missing comma","commit_id":"f1fd730bc9624a604760cdbe34d7ea70baf80282"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"1f232b28b38684d42634256b1a3944fcd13126ef","unresolved":false,"context_lines":[{"line_number":170,"context_line":"            \u0027kind\u0027: \u0027KuryrNetwork\u0027,"},{"line_number":171,"context_line":"            \u0027metadata\u0027: {"},{"line_number":172,"context_line":"                \u0027name\u0027: kns_name,"},{"line_number":173,"context_line":"                \u0027finalizers\u0027: [constants.KURYRNETWORK_FINALIZER]"},{"line_number":174,"context_line":"            },"},{"line_number":175,"context_line":"            \u0027spec\u0027: {"},{"line_number":176,"context_line":"                \u0027nsName\u0027: namespace,"}],"source_content_type":"text/x-python","patch_set":35,"id":"1fa4df85_a99c905d","line":173,"in_reply_to":"1fa4df85_4d3171ec","updated":"2020-03-13 09:37:41.000000000","message":"Done","commit_id":"f1fd730bc9624a604760cdbe34d7ea70baf80282"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"017e967d4453a6fea3801297136240e0377e6288","unresolved":false,"context_lines":[{"line_number":186,"context_line":"                          \"CRD.\")"},{"line_number":187,"context_line":"            raise"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    def _del_kuryrnet_crd(self, kns_name, namespace):"},{"line_number":190,"context_line":"        kubernetes \u003d clients.get_kubernetes_client()"},{"line_number":191,"context_line":"        try:"},{"line_number":192,"context_line":"            kubernetes.delete(\u0027{}/{}/kuryrnetworks/{}\u0027.format("}],"source_content_type":"text/x-python","patch_set":35,"id":"1fa4df85_cd44811e","line":189,"range":{"start_line":189,"start_character":18,"end_line":189,"end_character":21},"updated":"2020-03-12 17:57:50.000000000","message":"network","commit_id":"f1fd730bc9624a604760cdbe34d7ea70baf80282"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"1f232b28b38684d42634256b1a3944fcd13126ef","unresolved":false,"context_lines":[{"line_number":186,"context_line":"                          \"CRD.\")"},{"line_number":187,"context_line":"            raise"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    def _del_kuryrnet_crd(self, kns_name, namespace):"},{"line_number":190,"context_line":"        kubernetes \u003d clients.get_kubernetes_client()"},{"line_number":191,"context_line":"        try:"},{"line_number":192,"context_line":"            kubernetes.delete(\u0027{}/{}/kuryrnetworks/{}\u0027.format("}],"source_content_type":"text/x-python","patch_set":35,"id":"1fa4df85_c98d4c2b","line":189,"range":{"start_line":189,"start_character":18,"end_line":189,"end_character":21},"in_reply_to":"1fa4df85_cd44811e","updated":"2020-03-13 09:37:41.000000000","message":"Done","commit_id":"f1fd730bc9624a604760cdbe34d7ea70baf80282"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"d268415ef6832cc4ccb7d26dc5c86daa2b64a2a4","unresolved":false,"context_lines":[{"line_number":45,"context_line":"            LOG.warning(\"Error retriving namespace information\")"},{"line_number":46,"context_line":"            raise"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        ns_dict \u003d {\u0027ns-\u0027 + ns[\u0027metadata\u0027][\u0027name\u0027]: ns"},{"line_number":49,"context_line":"                   for ns in namespaces.get(\u0027items\u0027)}"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        for net_crd in net_crds.get(\u0027items\u0027):"}],"source_content_type":"text/x-python","patch_set":37,"id":"1fa4df85_5fc4aa92","line":48,"range":{"start_line":48,"start_character":19,"end_line":48,"end_character":26},"updated":"2020-03-13 11:10:42.000000000","message":"As the CRD will now have the namespace name, this can be removed right?","commit_id":"3903ae664678dd07f6b942a33d3aa7ae9981caab"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"46a801678425d4a98f34c660c660bab6d00ab40a","unresolved":false,"context_lines":[{"line_number":45,"context_line":"            LOG.warning(\"Error retriving namespace information\")"},{"line_number":46,"context_line":"            raise"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        ns_dict \u003d {\u0027ns-\u0027 + ns[\u0027metadata\u0027][\u0027name\u0027]: ns"},{"line_number":49,"context_line":"                   for ns in namespaces.get(\u0027items\u0027)}"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        for net_crd in net_crds.get(\u0027items\u0027):"}],"source_content_type":"text/x-python","patch_set":37,"id":"1fa4df85_ff09d694","line":48,"range":{"start_line":48,"start_character":19,"end_line":48,"end_character":26},"in_reply_to":"1fa4df85_5fc4aa92","updated":"2020-03-13 11:29:31.000000000","message":"no. this is to get the old kuryrnet ones... which used that format","commit_id":"3903ae664678dd07f6b942a33d3aa7ae9981caab"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"d268415ef6832cc4ccb7d26dc5c86daa2b64a2a4","unresolved":false,"context_lines":[{"line_number":56,"context_line":"                # namespace. It must be deleted"},{"line_number":57,"context_line":"                LOG.debug(\u0027No namespace associated, deleting kuryrnet crd: \u0027"},{"line_number":58,"context_line":"                          \u0027%s\u0027, net_crd)"},{"line_number":59,"context_line":"            else:"},{"line_number":60,"context_line":"                try:"},{"line_number":61,"context_line":"                    ns_net_annotations \u003d ns[\u0027metadata\u0027][\u0027annotations\u0027]["},{"line_number":62,"context_line":"                        constants.K8S_ANNOTATION_NET_CRD]"},{"line_number":63,"context_line":"                except KeyError:"},{"line_number":64,"context_line":"                    LOG.debug(\u0027Namespace associated is not annotated: %s\u0027, ns)"},{"line_number":65,"context_line":"                else:"},{"line_number":66,"context_line":"                    LOG.debug(\u0027Removing annotation: %\u0027, ns_net_annotations)"},{"line_number":67,"context_line":"                    k8s.remove_annotations(ns[\u0027metadata\u0027][\u0027selfLink\u0027],"},{"line_number":68,"context_line":"                                           constants.K8S_ANNOTATION_NET_CRD)"},{"line_number":69,"context_line":"            try:"},{"line_number":70,"context_line":"                k8s.delete(net_crd[\u0027metadata\u0027][\u0027selfLink\u0027])"},{"line_number":71,"context_line":"            except exceptions.K8sResourceNotFound:"}],"source_content_type":"text/x-python","patch_set":37,"id":"1fa4df85_7ff406d0","line":68,"range":{"start_line":59,"start_character":0,"end_line":68,"end_character":76},"updated":"2020-03-13 11:10:42.000000000","message":"Should this also be removed?","commit_id":"3903ae664678dd07f6b942a33d3aa7ae9981caab"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"46a801678425d4a98f34c660c660bab6d00ab40a","unresolved":false,"context_lines":[{"line_number":56,"context_line":"                # namespace. It must be deleted"},{"line_number":57,"context_line":"                LOG.debug(\u0027No namespace associated, deleting kuryrnet crd: \u0027"},{"line_number":58,"context_line":"                          \u0027%s\u0027, net_crd)"},{"line_number":59,"context_line":"            else:"},{"line_number":60,"context_line":"                try:"},{"line_number":61,"context_line":"                    ns_net_annotations \u003d ns[\u0027metadata\u0027][\u0027annotations\u0027]["},{"line_number":62,"context_line":"                        constants.K8S_ANNOTATION_NET_CRD]"},{"line_number":63,"context_line":"                except KeyError:"},{"line_number":64,"context_line":"                    LOG.debug(\u0027Namespace associated is not annotated: %s\u0027, ns)"},{"line_number":65,"context_line":"                else:"},{"line_number":66,"context_line":"                    LOG.debug(\u0027Removing annotation: %\u0027, ns_net_annotations)"},{"line_number":67,"context_line":"                    k8s.remove_annotations(ns[\u0027metadata\u0027][\u0027selfLink\u0027],"},{"line_number":68,"context_line":"                                           constants.K8S_ANNOTATION_NET_CRD)"},{"line_number":69,"context_line":"            try:"},{"line_number":70,"context_line":"                k8s.delete(net_crd[\u0027metadata\u0027][\u0027selfLink\u0027])"},{"line_number":71,"context_line":"            except exceptions.K8sResourceNotFound:"}],"source_content_type":"text/x-python","patch_set":37,"id":"1fa4df85_1ff2b29b","line":68,"range":{"start_line":59,"start_character":0,"end_line":68,"end_character":76},"in_reply_to":"1fa4df85_7ff406d0","updated":"2020-03-13 11:29:31.000000000","message":"same... this applies to kuryrnet, not to kuryrnetworks, so we need to get the previous annotations and remove them.","commit_id":"3903ae664678dd07f6b942a33d3aa7ae9981caab"}],"kuryr_kubernetes/controller/handlers/policy.py":[{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"f33b04d1b9aea1f562deb24b28e6a1c6211562a4","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"        kubernetes \u003d clients.get_kubernetes_client()"},{"line_number":151,"context_line":"        try:"},{"line_number":152,"context_line":"            net_crd \u003d kubernetes.get(\u0027{}/{}/kuryrnetworks/{}\u0027.format("},{"line_number":153,"context_line":"                k_const.K8S_API_CRD_NAMESPACES, policy_ns,"},{"line_number":154,"context_line":"                kuryrnet_name))"},{"line_number":155,"context_line":"        except exceptions.K8sClientException:"}],"source_content_type":"text/x-python","patch_set":33,"id":"1fa4df85_dfa448a8","line":152,"range":{"start_line":152,"start_character":37,"end_line":152,"end_character":69},"updated":"2020-03-11 07:31:07.000000000","message":"how about f strings? :)","commit_id":"1493fdc5e1bff49de067e55d829a5dc2a2632d39"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"d268415ef6832cc4ccb7d26dc5c86daa2b64a2a4","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    def _get_policy_net_id(self, policy):"},{"line_number":147,"context_line":"        policy_ns \u003d policy[\u0027metadata\u0027][\u0027namespace\u0027]"},{"line_number":148,"context_line":"        kuryrnet_name \u003d \u0027ns-\u0027 + str(policy_ns)"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"        kubernetes \u003d clients.get_kubernetes_client()"},{"line_number":151,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":37,"id":"1fa4df85_df2c1a4c","line":148,"range":{"start_line":148,"start_character":24,"end_line":148,"end_character":31},"updated":"2020-03-13 11:10:42.000000000","message":"Should this be removed?","commit_id":"3903ae664678dd07f6b942a33d3aa7ae9981caab"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"46a801678425d4a98f34c660c660bab6d00ab40a","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    def _get_policy_net_id(self, policy):"},{"line_number":147,"context_line":"        policy_ns \u003d policy[\u0027metadata\u0027][\u0027namespace\u0027]"},{"line_number":148,"context_line":"        kuryrnet_name \u003d \u0027ns-\u0027 + str(policy_ns)"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"        kubernetes \u003d clients.get_kubernetes_client()"},{"line_number":151,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":37,"id":"1fa4df85_5fca6a4f","line":148,"range":{"start_line":148,"start_character":24,"end_line":148,"end_character":31},"in_reply_to":"1fa4df85_df2c1a4c","updated":"2020-03-13 11:29:31.000000000","message":"right!","commit_id":"3903ae664678dd07f6b942a33d3aa7ae9981caab"}],"kuryr_kubernetes/exceptions.py":[{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"543e626bc2dcb8d1b8aff65a2480de869e68c188","unresolved":false,"context_lines":[{"line_number":34,"context_line":"                                                  \"found: %r\" % resource)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"class InvalidKuryrNetworkCRD(Exception):"},{"line_number":38,"context_line":"    pass"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"class InvalidKuryrNetworkAnnotation(Exception):"}],"source_content_type":"text/x-python","patch_set":34,"id":"1fa4df85_c6924459","line":38,"range":{"start_line":37,"start_character":0,"end_line":38,"end_character":8},"updated":"2020-03-11 10:06:04.000000000","message":"I don\u0027t see this exception being used anywhere. Perhaps it can be removed?","commit_id":"7310796f380329ce87b502636a377cd05d8b93c7"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"281babfad6de960ce4b9ea14e14d384b5d09b810","unresolved":false,"context_lines":[{"line_number":34,"context_line":"                                                  \"found: %r\" % resource)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"class InvalidKuryrNetworkCRD(Exception):"},{"line_number":38,"context_line":"    pass"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"class InvalidKuryrNetworkAnnotation(Exception):"}],"source_content_type":"text/x-python","patch_set":34,"id":"1fa4df85_32aeee98","line":38,"range":{"start_line":37,"start_character":0,"end_line":38,"end_character":8},"in_reply_to":"1fa4df85_c6924459","updated":"2020-03-11 12:58:56.000000000","message":"Done","commit_id":"7310796f380329ce87b502636a377cd05d8b93c7"}],"kuryr_kubernetes/handlers/k8s_base.py":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"f0baca15001981d1495f4e82e0e8c7a76954790e","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        event_type \u003d event.get(\u0027type\u0027)"},{"line_number":69,"context_line":"        obj \u003d event.get(\u0027object\u0027)"},{"line_number":70,"context_line":"        if \u0027MODIFIED\u0027 \u003d\u003d event_type:"},{"line_number":71,"context_line":"            try:"},{"line_number":72,"context_line":"                if obj[\u0027metadata\u0027][\u0027deletionTimestamp\u0027]:"},{"line_number":73,"context_line":"                    self.on_finalize(obj)"},{"line_number":74,"context_line":"                    return"},{"line_number":75,"context_line":"            except (KeyError, TypeError):"},{"line_number":76,"context_line":"                pass"},{"line_number":77,"context_line":"            self.on_modified(obj)"},{"line_number":78,"context_line":"            self.on_present(obj)"},{"line_number":79,"context_line":"        elif \u0027ADDED\u0027 \u003d\u003d event_type:"}],"source_content_type":"text/x-python","patch_set":36,"id":"1fa4df85_84ff3b33","line":76,"range":{"start_line":71,"start_character":0,"end_line":76,"end_character":20},"updated":"2020-03-13 10:35:57.000000000","message":"I made quite a mistake in my patch, this should be something like:\n\n            deletion_timestamp \u003d None\n            try:\n                deletion_timestamp \u003d obj[\u0027metadata\u0027][\u0027deletionTimestamp\u0027]\n            except (KeyError, TypeError):\n                pass\n            if deletion_timestamp:\n                self.on_finalize(obj)\n                return","commit_id":"a8f3862fad5ddfd268ce5396e686436808a60bdf"}],"kuryr_kubernetes/k8s_client.py":[{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"a3de7a0083021261d88458ea3af60d541ba8798b","unresolved":false,"context_lines":[{"line_number":106,"context_line":"    def patch(self, field, path, data):"},{"line_number":107,"context_line":"        LOG.debug(\"Patch %(path)s: %(data)s\", {"},{"line_number":108,"context_line":"            \u0027path\u0027: path, \u0027data\u0027: data})"},{"line_number":109,"context_line":"        if field \u003d\u003d \u0027status\u0027:"},{"line_number":110,"context_line":"            path \u003d path + \u0027/\u0027 + str(field)"},{"line_number":111,"context_line":"        content_type \u003d \u0027application/merge-patch+json\u0027"},{"line_number":112,"context_line":"        url, header \u003d self._get_url_and_header(path, content_type)"},{"line_number":113,"context_line":"        response \u003d self.session.patch(url, json\u003d{field: data},"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_249495e6","side":"PARENT","line":110,"range":{"start_line":109,"start_character":0,"end_line":110,"end_character":42},"updated":"2020-02-13 16:51:57.000000000","message":"why are you removing this?","commit_id":"911d65fea76945b324f62b371771bacb662d6c27"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"cffe62baacb7f0f794c4738ba66f6d02fae13d9e","unresolved":false,"context_lines":[{"line_number":106,"context_line":"    def patch(self, field, path, data):"},{"line_number":107,"context_line":"        LOG.debug(\"Patch %(path)s: %(data)s\", {"},{"line_number":108,"context_line":"            \u0027path\u0027: path, \u0027data\u0027: data})"},{"line_number":109,"context_line":"        if field \u003d\u003d \u0027status\u0027:"},{"line_number":110,"context_line":"            path \u003d path + \u0027/\u0027 + str(field)"},{"line_number":111,"context_line":"        content_type \u003d \u0027application/merge-patch+json\u0027"},{"line_number":112,"context_line":"        url, header \u003d self._get_url_and_header(path, content_type)"},{"line_number":113,"context_line":"        response \u003d self.session.patch(url, json\u003d{field: data},"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_3a510c32","side":"PARENT","line":110,"range":{"start_line":109,"start_character":0,"end_line":110,"end_character":42},"in_reply_to":"3fa7e38b_249495e6","updated":"2020-02-13 17:29:41.000000000","message":"not sure why this is used here and it was breaking the updates for the status as it was added twice","commit_id":"911d65fea76945b324f62b371771bacb662d6c27"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"f613294d3be4d44ddeb115d3975c5a7c554f6561","unresolved":false,"context_lines":[{"line_number":126,"context_line":"            data \u003d [{\u0027op\u0027: action,"},{"line_number":127,"context_line":"                     \u0027path\u0027: \u0027/{}/{}\u0027.format(field, np_field),"},{"line_number":128,"context_line":"                     \u0027value\u0027: value}"},{"line_number":129,"context_line":"                    for np_field, value in data.items()]"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        LOG.debug(\"Patch %(path)s: %(data)s\", {"},{"line_number":132,"context_line":"            \u0027path\u0027: path, \u0027data\u0027: data})"}],"source_content_type":"text/x-python","patch_set":12,"id":"1fa4df85_a41e0e6e","line":129,"range":{"start_line":129,"start_character":24,"end_line":129,"end_character":32},"updated":"2020-02-24 22:48:18.000000000","message":"this could be renamed to crd_field now as it\u0027s handling not only Network policies anymore.","commit_id":"3400fbea21565ad936b0faa4ffb97d3b52002dcb"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"cecd1f75a9f31ada38925f880861d8ba4b4c6eed","unresolved":false,"context_lines":[{"line_number":126,"context_line":"            data \u003d [{\u0027op\u0027: action,"},{"line_number":127,"context_line":"                     \u0027path\u0027: \u0027/{}/{}\u0027.format(field, np_field),"},{"line_number":128,"context_line":"                     \u0027value\u0027: value}"},{"line_number":129,"context_line":"                    for np_field, value in data.items()]"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        LOG.debug(\"Patch %(path)s: %(data)s\", {"},{"line_number":132,"context_line":"            \u0027path\u0027: path, \u0027data\u0027: data})"}],"source_content_type":"text/x-python","patch_set":12,"id":"1fa4df85_3269f7bd","line":129,"range":{"start_line":129,"start_character":24,"end_line":129,"end_character":32},"in_reply_to":"1fa4df85_a41e0e6e","updated":"2020-02-25 08:50:49.000000000","message":"Done","commit_id":"3400fbea21565ad936b0faa4ffb97d3b52002dcb"},{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"f33b04d1b9aea1f562deb24b28e6a1c6211562a4","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        content_type \u003d \u0027application/json-patch+json\u0027"},{"line_number":122,"context_line":"        url, header \u003d self._get_url_and_header(path, content_type)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        if action \u003d\u003d \u0027remove\u0027:"},{"line_number":125,"context_line":"            data \u003d [{\u0027op\u0027: action,"},{"line_number":126,"context_line":"                     \u0027path\u0027: \u0027/{}/{}\u0027.format(field, data)}]"},{"line_number":127,"context_line":"        else:"},{"line_number":128,"context_line":"            data \u003d [{\u0027op\u0027: action,"},{"line_number":129,"context_line":"                     \u0027path\u0027: \u0027/{}/{}\u0027.format(field, crd_field),"},{"line_number":130,"context_line":"                     \u0027value\u0027: value}"},{"line_number":131,"context_line":"                    for crd_field, value in data.items()]"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        LOG.debug(\"Patch %(path)s: %(data)s\", {"},{"line_number":134,"context_line":"            \u0027path\u0027: path, \u0027data\u0027: data})"}],"source_content_type":"text/x-python","patch_set":33,"id":"1fa4df85_dfcd2866","line":131,"range":{"start_line":124,"start_character":8,"end_line":131,"end_character":57},"updated":"2020-03-11 07:31:07.000000000","message":"fstrings :)","commit_id":"1493fdc5e1bff49de067e55d829a5dc2a2632d39"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"017e967d4453a6fea3801297136240e0377e6288","unresolved":false,"context_lines":[{"line_number":117,"context_line":"        self._raise_from_response(response)"},{"line_number":118,"context_line":"        return response.json().get(\u0027status\u0027)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def patch_crd(self, field, path, data, action\u003d\u0027replace\u0027):"},{"line_number":121,"context_line":"        content_type \u003d \u0027application/json-patch+json\u0027"},{"line_number":122,"context_line":"        url, header \u003d self._get_url_and_header(path, content_type)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        if action \u003d\u003d \u0027remove\u0027:"},{"line_number":125,"context_line":"            data \u003d [{\u0027op\u0027: action,"},{"line_number":126,"context_line":"                     \u0027path\u0027: f\u0027/{field}/{data}\u0027}]"},{"line_number":127,"context_line":"        else:"},{"line_number":128,"context_line":"            data \u003d [{\u0027op\u0027: action,"},{"line_number":129,"context_line":"                     \u0027path\u0027: f\u0027/{field}/{crd_field}\u0027,"},{"line_number":130,"context_line":"                     \u0027value\u0027: value}"},{"line_number":131,"context_line":"                    for crd_field, value in data.items()]"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        LOG.debug(\"Patch %(path)s: %(data)s\", {"},{"line_number":134,"context_line":"            \u0027path\u0027: path, \u0027data\u0027: data})"}],"source_content_type":"text/x-python","patch_set":35,"id":"1fa4df85_4ad637f4","line":131,"range":{"start_line":120,"start_character":0,"end_line":131,"end_character":57},"updated":"2020-03-12 17:57:50.000000000","message":"Way more convenient to use, thanks!","commit_id":"f1fd730bc9624a604760cdbe34d7ea70baf80282"}],"kuryr_kubernetes/tests/unit/controller/handlers/test_kuryrnetwork.py":[{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"543e626bc2dcb8d1b8aff65a2480de869e68c188","unresolved":false,"context_lines":[{"line_number":39,"context_line":"                \u0027selfLink\u0027: \u0027test-selfLink\u0027,"},{"line_number":40,"context_line":"            },"},{"line_number":41,"context_line":"            \u0027spec\u0027: {"},{"line_number":42,"context_line":"                \u0027nsName\u0027: \u0027test-namespace\u0027,"},{"line_number":43,"context_line":"                \u0027projectId\u0027: \u0027test-project\u0027,"},{"line_number":44,"context_line":"            },"},{"line_number":45,"context_line":"            \u0027status\u0027: {"},{"line_number":46,"context_line":"                }"}],"source_content_type":"text/x-python","patch_set":34,"id":"1fa4df85_a61ce8c1","line":43,"range":{"start_line":42,"start_character":0,"end_line":43,"end_character":44},"updated":"2020-03-11 10:06:04.000000000","message":"I know it\u0027s just a mock, but we\u0027re missing nsLabels here.","commit_id":"7310796f380329ce87b502636a377cd05d8b93c7"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"281babfad6de960ce4b9ea14e14d384b5d09b810","unresolved":false,"context_lines":[{"line_number":39,"context_line":"                \u0027selfLink\u0027: \u0027test-selfLink\u0027,"},{"line_number":40,"context_line":"            },"},{"line_number":41,"context_line":"            \u0027spec\u0027: {"},{"line_number":42,"context_line":"                \u0027nsName\u0027: \u0027test-namespace\u0027,"},{"line_number":43,"context_line":"                \u0027projectId\u0027: \u0027test-project\u0027,"},{"line_number":44,"context_line":"            },"},{"line_number":45,"context_line":"            \u0027status\u0027: {"},{"line_number":46,"context_line":"                }"}],"source_content_type":"text/x-python","patch_set":34,"id":"1fa4df85_d2719a79","line":43,"range":{"start_line":42,"start_character":0,"end_line":43,"end_character":44},"in_reply_to":"1fa4df85_a61ce8c1","updated":"2020-03-11 12:58:56.000000000","message":"Done","commit_id":"7310796f380329ce87b502636a377cd05d8b93c7"}],"kuryr_kubernetes/tests/unit/controller/handlers/test_kuryrnetwork_population.py":[{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"543e626bc2dcb8d1b8aff65a2480de869e68c188","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2019, Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"# you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":34,"id":"1fa4df85_86752c35","line":1,"range":{"start_line":1,"start_character":12,"end_line":1,"end_character":16},"updated":"2020-03-11 10:06:04.000000000","message":"2020","commit_id":"7310796f380329ce87b502636a377cd05d8b93c7"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"281babfad6de960ce4b9ea14e14d384b5d09b810","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2019, Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"# you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":34,"id":"1fa4df85_52036abf","line":1,"range":{"start_line":1,"start_character":12,"end_line":1,"end_character":16},"in_reply_to":"1fa4df85_86752c35","updated":"2020-03-11 12:58:56.000000000","message":"Done","commit_id":"7310796f380329ce87b502636a377cd05d8b93c7"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"543e626bc2dcb8d1b8aff65a2480de869e68c188","unresolved":false,"context_lines":[{"line_number":35,"context_line":"                \u0027name\u0027: \u0027test-namespace\u0027,"},{"line_number":36,"context_line":"            },"},{"line_number":37,"context_line":"            \u0027spec\u0027: {"},{"line_number":38,"context_line":"                \u0027nsName\u0027: \u0027test-namespace\u0027,"},{"line_number":39,"context_line":"                \u0027projectId\u0027: \u0027test-project\u0027,"},{"line_number":40,"context_line":"            },"},{"line_number":41,"context_line":"            \u0027status\u0027: {"},{"line_number":42,"context_line":"                \u0027subnetId\u0027: \u0027test-subnet\u0027"}],"source_content_type":"text/x-python","patch_set":34,"id":"1fa4df85_2686b8dd","line":39,"range":{"start_line":38,"start_character":0,"end_line":39,"end_character":44},"updated":"2020-03-11 10:06:04.000000000","message":"also missing nsLabels here.","commit_id":"7310796f380329ce87b502636a377cd05d8b93c7"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"281babfad6de960ce4b9ea14e14d384b5d09b810","unresolved":false,"context_lines":[{"line_number":35,"context_line":"                \u0027name\u0027: \u0027test-namespace\u0027,"},{"line_number":36,"context_line":"            },"},{"line_number":37,"context_line":"            \u0027spec\u0027: {"},{"line_number":38,"context_line":"                \u0027nsName\u0027: \u0027test-namespace\u0027,"},{"line_number":39,"context_line":"                \u0027projectId\u0027: \u0027test-project\u0027,"},{"line_number":40,"context_line":"            },"},{"line_number":41,"context_line":"            \u0027status\u0027: {"},{"line_number":42,"context_line":"                \u0027subnetId\u0027: \u0027test-subnet\u0027"}],"source_content_type":"text/x-python","patch_set":34,"id":"1fa4df85_120df2e7","line":39,"range":{"start_line":38,"start_character":0,"end_line":39,"end_character":44},"in_reply_to":"1fa4df85_2686b8dd","updated":"2020-03-11 12:58:56.000000000","message":"Done","commit_id":"7310796f380329ce87b502636a377cd05d8b93c7"}]}
