)]}'
{"kuryr_kubernetes/controller/drivers/multi_tenant_project.py":[{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"44768cfba82ccae01e5629a94ced6a50a1553379","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    def get_project(self, pod):"},{"line_number":30,"context_line":"        namespace \u003d pod[\u0027metadata\u0027][\u0027namespace\u0027]"},{"line_number":31,"context_line":"        net_crd \u003d driver_utils.get_kuryrnetwork_crds(namespace)"},{"line_number":32,"context_line":"        if net_crd[\u0027spec\u0027].get(\u0027projectId\u0027):"},{"line_number":33,"context_line":"            project_id \u003d net_crd[\u0027spec\u0027].get(\u0027projectId\u0027)"},{"line_number":34,"context_line":"        else:"},{"line_number":35,"context_line":"            project_id \u003d config.CONF.neutron_defaults.project"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        if not project_id:"},{"line_number":38,"context_line":"            raise cfg.RequiredOptError(\u0027project\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f6b1bfe_ccc7a845","line":35,"range":{"start_line":32,"start_character":8,"end_line":35,"end_character":61},"updated":"2020-10-14 05:47:22.000000000","message":"How about:\n\n    project_id \u003d net_crd[\u0027spec\u0027].get(\n        \u0027projectId\u0027, config.CONF.neutron_defaults.project)","commit_id":"d910c25a27a6513aa0a3251442890f8e8284a0f9"},{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"44768cfba82ccae01e5629a94ced6a50a1553379","unresolved":false,"context_lines":[{"line_number":88,"context_line":"    based on annotations or a configuration option."},{"line_number":89,"context_line":"    \"\"\""},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def get_project(self, policy):"},{"line_number":92,"context_line":"        namespace \u003d policy[\u0027metadata\u0027][\u0027namespace\u0027]"},{"line_number":93,"context_line":"        net_crd \u003d driver_utils.get_kuryrnetwork_crds(namespace)"},{"line_number":94,"context_line":"        if net_crd[\u0027spec\u0027].get(\u0027projectId\u0027):"},{"line_number":95,"context_line":"            project_id \u003d net_crd[\u0027spec\u0027].get(\u0027projectId\u0027)"},{"line_number":96,"context_line":"        else:"},{"line_number":97,"context_line":"            project_id \u003d config.CONF.neutron_defaults.project"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        if not project_id:"},{"line_number":100,"context_line":"            raise cfg.RequiredOptError(\u0027project\u0027,"},{"line_number":101,"context_line":"                                       cfg.OptGroup(\u0027neutron_defaults\u0027))"},{"line_number":102,"context_line":"        return project_id"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f6b1bfe_2702b5b5","line":102,"range":{"start_line":91,"start_character":0,"end_line":102,"end_character":25},"updated":"2020-10-14 05:47:22.000000000","message":"I see the same code in 2 classes above (except MultiTenantNamespaceProjectDriver). Perhaps it could be extracted as a function which returns project_id. Like:\n\n    NEUTRON_PID \u003d config.CONF.neutron_defaults.project\n\n    def get_project(obj):\n        np \u003d obj[\u0027metadata\u0027][\u0027namespace\u0027]\n        net_crd \u003d driver_utils.get_kuryrnetwork_crd(np)\n        project_id \u003d net_crd[\u0027spec\u0027].get(\u0027projectId\u0027, NEUTRON_PID)\n\n        if not project_id:\n            raise cfg.RequiredOptError(\u0027project\u0027, cfg.OptGroup(\u0027neutron_defaults\u0027))\n\n        return project_id\n\nand than use it like:\n\n    class MultiTenantNetworkPolicyProjectDriver(base.NetworkPolicyProjectDriver):\n\n        def get_project(self, policy):\n            return get_project(policy)","commit_id":"d910c25a27a6513aa0a3251442890f8e8284a0f9"}]}
