)]}'
{"doc/source/devref/multi_tenant.rst":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"723e1884efb1ddd12de1057c0e3dc0ed4b057fc6","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"Each tenant (projectId) can create multiple VPCs (multiple networks), and each"},{"line_number":31,"context_line":"VPC has at least two subnetId\u0027s, one is the subnetid used by the tenant\u0027s Pod"},{"line_number":32,"context_line":"and the other is the subnetId used by the tenant\u0027s service.The svc segment"},{"line_number":33,"context_line":"under all VPCs is the same cidr, which is the same as the"},{"line_number":34,"context_line":"service-cluster-ip-range configured in api-server."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Proposed Solution"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1f621f24_b9a08ea7","line":34,"range":{"start_line":32,"start_character":59,"end_line":34,"end_character":50},"updated":"2020-10-30 15:43:57.000000000","message":"Well, that\u0027s quite error-prone here, do we have any alternatives to that approach?","commit_id":"85ca89b183cd370dcddefc84be745b77d19789ca"}],"kuryr_kubernetes/constants.py":[{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"76fd5ccaac09b510cb1181f462670995cfd848b6","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"K8S_ANNOTATION_HEADLESS_SERVICE \u003d \u0027service.kubernetes.io/headless\u0027"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"K8S_LABELS_NS_SUBNET_ID \u003d K8S_ANNOTATION_PREFIX + \\"},{"line_number":75,"context_line":"                              \u0027-namespace-subnet-id\u0027"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"POD_FINALIZER \u003d KURYR_FQDN + \u0027/pod-finalizer\u0027"},{"line_number":78,"context_line":"KURYRNETWORK_FINALIZER \u003d \u0027kuryrnetwork.finalizers.kuryr.openstack.org\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"7f6b1bfe_8fff49a9","line":75,"range":{"start_line":74,"start_character":0,"end_line":75,"end_character":52},"updated":"2020-10-15 11:09:03.000000000","message":"Should fit the line just fine.","commit_id":"65b49935589b138b0119aadddb0dbec28848e933"}],"kuryr_kubernetes/controller/drivers/multi_tenant_project.py":[{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"897e1aedf9d89ceb33479c21e4900553084cfcb2","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    \"\"\""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def get_project(self, namespace):"},{"line_number":71,"context_line":"        ns_crd \u003d driver_utils.get_namespace(namespace)"},{"line_number":72,"context_line":"        if ns_crd[\u0027metadata\u0027].get(\u0027labels\u0027) and \\"},{"line_number":73,"context_line":"                ns_crd[\u0027metadata\u0027].get(\u0027labels\u0027).get(\u0027projectId\u0027):"},{"line_number":74,"context_line":"            project_id \u003d ns_crd[\u0027metadata\u0027].get(\u0027labels\u0027).get(\u0027projectId\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f6b1bfe_4af3759f","line":71,"range":{"start_line":71,"start_character":8,"end_line":71,"end_character":54},"updated":"2020-10-14 11:16:47.000000000","message":"Why would you need to retrieve the namespace again if it\u0027s passed as parameter?","commit_id":"22dacbcbc22aabeaefa875d2a6e4fddfd50d86ed"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"163f4d23b0d529a774c855cc55abf5525253ffce","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    \"\"\""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def get_project(self, namespace):"},{"line_number":71,"context_line":"        ns_crd \u003d driver_utils.get_namespace(namespace)"},{"line_number":72,"context_line":"        if ns_crd[\u0027metadata\u0027].get(\u0027labels\u0027) and \\"},{"line_number":73,"context_line":"                ns_crd[\u0027metadata\u0027].get(\u0027labels\u0027).get(\u0027projectId\u0027):"},{"line_number":74,"context_line":"            project_id \u003d ns_crd[\u0027metadata\u0027].get(\u0027labels\u0027).get(\u0027projectId\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f6b1bfe_6d1e4b71","line":71,"range":{"start_line":71,"start_character":8,"end_line":71,"end_character":54},"in_reply_to":"7f6b1bfe_4af3759f","updated":"2020-10-14 13:46:52.000000000","message":"Looks like only name is passed. The patch should change it so that full object gets passed.\n\n[1] https://github.com/openstack/kuryr-kubernetes/blob/d8892d2e727241c5b157b2206101f3b7a738c39f/kuryr_kubernetes/controller/handlers/namespace.py#L84","commit_id":"22dacbcbc22aabeaefa875d2a6e4fddfd50d86ed"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"163f4d23b0d529a774c855cc55abf5525253ffce","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def get_project(self, namespace):"},{"line_number":71,"context_line":"        ns_crd \u003d driver_utils.get_namespace(namespace)"},{"line_number":72,"context_line":"        if ns_crd[\u0027metadata\u0027].get(\u0027labels\u0027) and \\"},{"line_number":73,"context_line":"                ns_crd[\u0027metadata\u0027].get(\u0027labels\u0027).get(\u0027projectId\u0027):"},{"line_number":74,"context_line":"            project_id \u003d ns_crd[\u0027metadata\u0027].get(\u0027labels\u0027).get(\u0027projectId\u0027)"},{"line_number":75,"context_line":"        else:"},{"line_number":76,"context_line":"            project_id \u003d config.CONF.neutron_defaults.project"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f6b1bfe_385493ca","line":73,"range":{"start_line":72,"start_character":0,"end_line":73,"end_character":66},"updated":"2020-10-14 13:46:52.000000000","message":"Hm… I wonder if it wouldn\u0027t fit better into the annotations, but seems like labels make sense too (to be able to use projectId as selector).","commit_id":"22dacbcbc22aabeaefa875d2a6e4fddfd50d86ed"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"163f4d23b0d529a774c855cc55abf5525253ffce","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    def get_project(self, namespace):"},{"line_number":71,"context_line":"        ns_crd \u003d driver_utils.get_namespace(namespace)"},{"line_number":72,"context_line":"        if ns_crd[\u0027metadata\u0027].get(\u0027labels\u0027) and \\"},{"line_number":73,"context_line":"                ns_crd[\u0027metadata\u0027].get(\u0027labels\u0027).get(\u0027projectId\u0027):"},{"line_number":74,"context_line":"            project_id \u003d ns_crd[\u0027metadata\u0027].get(\u0027labels\u0027).get(\u0027projectId\u0027)"},{"line_number":75,"context_line":"        else:"},{"line_number":76,"context_line":"            project_id \u003d config.CONF.neutron_defaults.project"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f6b1bfe_5864efb9","line":73,"range":{"start_line":73,"start_character":54,"end_line":73,"end_character":63},"updated":"2020-10-14 13:46:52.000000000","message":"This has to be bound to Kuryr, so I\u0027d rather use something like openstack.org/kuryr-namespace-project-id. Also please define the constant here: https://github.com/openstack/kuryr-kubernetes/blob/1cee7459fe5ae0703e4f5460d8bce15b5dc26e67/kuryr_kubernetes/constants.py#L59","commit_id":"22dacbcbc22aabeaefa875d2a6e4fddfd50d86ed"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"897e1aedf9d89ceb33479c21e4900553084cfcb2","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def get_project(self, namespace):"},{"line_number":71,"context_line":"        ns_crd \u003d driver_utils.get_namespace(namespace)"},{"line_number":72,"context_line":"        if ns_crd[\u0027metadata\u0027].get(\u0027labels\u0027) and \\"},{"line_number":73,"context_line":"                ns_crd[\u0027metadata\u0027].get(\u0027labels\u0027).get(\u0027projectId\u0027):"},{"line_number":74,"context_line":"            project_id \u003d ns_crd[\u0027metadata\u0027].get(\u0027labels\u0027).get(\u0027projectId\u0027)"},{"line_number":75,"context_line":"        else:"},{"line_number":76,"context_line":"            project_id \u003d config.CONF.neutron_defaults.project"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7f6b1bfe_ea688122","line":74,"range":{"start_line":72,"start_character":0,"end_line":74,"end_character":74},"updated":"2020-10-14 11:16:47.000000000","message":"Can\u0027t we rely on a config option instead of retrieving the info from Kubernetes?\n\nWe try to avoid interacting with k8s api at the drivers level.","commit_id":"22dacbcbc22aabeaefa875d2a6e4fddfd50d86ed"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"163f4d23b0d529a774c855cc55abf5525253ffce","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def get_project(self, namespace):"},{"line_number":71,"context_line":"        ns_crd \u003d driver_utils.get_namespace(namespace)"},{"line_number":72,"context_line":"        if ns_crd[\u0027metadata\u0027].get(\u0027labels\u0027) and \\"},{"line_number":73,"context_line":"                ns_crd[\u0027metadata\u0027].get(\u0027labels\u0027).get(\u0027projectId\u0027):"},{"line_number":74,"context_line":"            project_id \u003d ns_crd[\u0027metadata\u0027].get(\u0027labels\u0027).get(\u0027projectId\u0027)"},{"line_number":75,"context_line":"        else:"},{"line_number":76,"context_line":"            project_id \u003d config.CONF.neutron_defaults.project"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7f6b1bfe_78272bb8","line":74,"range":{"start_line":72,"start_character":0,"end_line":74,"end_character":74},"in_reply_to":"7f6b1bfe_ea688122","updated":"2020-10-14 13:46:52.000000000","message":"I believe the point of the patch is to have OpenStack project configurable per namespace.","commit_id":"22dacbcbc22aabeaefa875d2a6e4fddfd50d86ed"}],"kuryr_kubernetes/controller/handlers/kuryrnetwork.py":[{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"76fd5ccaac09b510cb1181f462670995cfd848b6","unresolved":false,"context_lines":[{"line_number":107,"context_line":"                    # ensuring next retry will be successful"},{"line_number":108,"context_line":"                    raise"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"            namespace \u003d {"},{"line_number":111,"context_line":"                \u0027metadata\u0027: {\u0027name\u0027: kuryrnet_crd[\u0027spec\u0027][\u0027nsName\u0027]}}"},{"line_number":112,"context_line":"            crd_selectors \u003d self._drv_sg.delete_namespace_sg_rules(namespace)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        if (self._is_network_policy_enabled() and crd_selectors and"},{"line_number":115,"context_line":"                oslo_cfg.CONF.octavia_defaults.enforce_sg_rules):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7f6b1bfe_0f897922","line":112,"range":{"start_line":110,"start_character":0,"end_line":112,"end_character":77},"updated":"2020-10-15 11:09:03.000000000","message":"Without crd_selectors, there will be a crash on line 114.","commit_id":"65b49935589b138b0119aadddb0dbec28848e933"}],"kuryr_kubernetes/tests/unit/controller/drivers/test_network_policy_security_groups.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ef3e5c194665359291617a63ce3df265d49e65e9","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        }"},{"line_number":183,"context_line":"    }"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"class TestNetworkPolicySecurityGroupsDriver(test_base.TestCase):"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    def setUp(self):"},{"line_number":188,"context_line":"        super(TestNetworkPolicySecurityGroupsDriver, self).setUp()"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f65232a_d6d6e34f","line":185,"updated":"2020-10-26 13:55:22.000000000","message":"pep8: E302 expected 2 blank lines, found 1","commit_id":"85ca89b183cd370dcddefc84be745b77d19789ca"}]}
