)]}'
{"keystone/limit/backends/sql.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"b531f3d8db9b2a16e82ca107a386e44dea46a3bb","unresolved":false,"context_lines":[{"line_number":344,"context_line":"                        LimitModel.project_id \u003d\u003d project_filter[\u0027value\u0027])"},{"line_number":345,"context_line":"                elif domain_filter:"},{"line_number":346,"context_line":"                    limits \u003d limits.filter("},{"line_number":347,"context_line":"                        LimitModel.domain_id \u003d\u003d domain_filter[\u0027value\u0027])"},{"line_number":348,"context_line":"                new_format_data \u003d [s.to_dict() for s in limits]"},{"line_number":349,"context_line":"            return old_format_data + new_format_data"},{"line_number":350,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"bfdaf3ff_779badc8","line":347,"updated":"2019-01-15 21:30:30.000000000","message":"If I\u0027m reading this correctly, the if/elif here is strictly for limiting the returned set by a project id or a domain id.\n\nI wonder if that\u0027s something we could just build into the query and have the database do for us?","commit_id":"13ab5201be0a7a1910b9ca106905c5db76f5d98a"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"fa4f34004d7ccbc5b288699869d62c84cbe70a89","unresolved":false,"context_lines":[{"line_number":344,"context_line":"                        LimitModel.project_id \u003d\u003d project_filter[\u0027value\u0027])"},{"line_number":345,"context_line":"                elif domain_filter:"},{"line_number":346,"context_line":"                    limits \u003d limits.filter("},{"line_number":347,"context_line":"                        LimitModel.domain_id \u003d\u003d domain_filter[\u0027value\u0027])"},{"line_number":348,"context_line":"                new_format_data \u003d [s.to_dict() for s in limits]"},{"line_number":349,"context_line":"            return old_format_data + new_format_data"},{"line_number":350,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_2b363e05","line":347,"in_reply_to":"bfdaf3ff_779badc8","updated":"2019-01-23 07:13:23.000000000","message":"project_filter and domain_filter are mutually exclusive filters, not sure how to do it in SQL way.","commit_id":"13ab5201be0a7a1910b9ca106905c5db76f5d98a"}],"keystone/limit/core.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"b531f3d8db9b2a16e82ca107a386e44dea46a3bb","unresolved":false,"context_lines":[{"line_number":55,"context_line":"            project_id \u003d unified_limit.get(\u0027project_id\u0027)"},{"line_number":56,"context_line":"            if project_id is not None:"},{"line_number":57,"context_line":"                project \u003d PROVIDERS.resource_api.get_project(project_id)"},{"line_number":58,"context_line":"                if project[\u0027is_domain\u0027]:"},{"line_number":59,"context_line":"                    raise exception.ProjectNotFound(project_id\u003dproject_id)"},{"line_number":60,"context_line":"            domain_id \u003d unified_limit.get(\u0027domain_id\u0027)"},{"line_number":61,"context_line":"            if domain_id is not None:"},{"line_number":62,"context_line":"                PROVIDERS.resource_api.get_domain(domain_id)"}],"source_content_type":"text/x-python","patch_set":7,"id":"bfdaf3ff_17aa61d1","line":59,"range":{"start_line":58,"start_character":16,"end_line":59,"end_character":74},"updated":"2019-01-15 21:30:30.000000000","message":"Is this still valid or should we be handling this different now?","commit_id":"13ab5201be0a7a1910b9ca106905c5db76f5d98a"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"fa4f34004d7ccbc5b288699869d62c84cbe70a89","unresolved":false,"context_lines":[{"line_number":55,"context_line":"            project_id \u003d unified_limit.get(\u0027project_id\u0027)"},{"line_number":56,"context_line":"            if project_id is not None:"},{"line_number":57,"context_line":"                project \u003d PROVIDERS.resource_api.get_project(project_id)"},{"line_number":58,"context_line":"                if project[\u0027is_domain\u0027]:"},{"line_number":59,"context_line":"                    raise exception.ProjectNotFound(project_id\u003dproject_id)"},{"line_number":60,"context_line":"            domain_id \u003d unified_limit.get(\u0027domain_id\u0027)"},{"line_number":61,"context_line":"            if domain_id is not None:"},{"line_number":62,"context_line":"                PROVIDERS.resource_api.get_domain(domain_id)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_4bf3829f","line":59,"range":{"start_line":58,"start_character":16,"end_line":59,"end_character":74},"in_reply_to":"bfdaf3ff_17aa61d1","updated":"2019-01-23 07:13:23.000000000","message":"if the project is_domain\u003dTrue, we can create a domain level limit.","commit_id":"13ab5201be0a7a1910b9ca106905c5db76f5d98a"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"6104807dff77708b993fd800ab2c7a25e19a19b2","unresolved":false,"context_lines":[{"line_number":52,"context_line":"            region_id \u003d unified_limit.get(\u0027region_id\u0027)"},{"line_number":53,"context_line":"            if region_id is not None:"},{"line_number":54,"context_line":"                PROVIDERS.catalog_api.get_region(region_id)"},{"line_number":55,"context_line":"            project_id \u003d unified_limit.get(\u0027project_id\u0027)"},{"line_number":56,"context_line":"            if project_id is not None:"},{"line_number":57,"context_line":"                project \u003d PROVIDERS.resource_api.get_project(project_id)"},{"line_number":58,"context_line":"                if project[\u0027is_domain\u0027]:"}],"source_content_type":"text/x-python","patch_set":14,"id":"9fdfeff1_445e4c77","line":55,"range":{"start_line":55,"start_character":12,"end_line":55,"end_character":56},"updated":"2019-02-18 20:48:51.000000000","message":"I wonder if we want to overload the project_id in this API. We could keep the project ID specific to projects and look for `domain_id` in the request body for domain-level limits. The two would be a mutually exclusive set.\n\nI\u0027m curious what others think about overloading the project id.","commit_id":"0b8713f56e093b42cf946b9cb87b989fadace8c2"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"a3e3f6f73c0098e9f2f0214a89af1679e41be9b6","unresolved":false,"context_lines":[{"line_number":52,"context_line":"            region_id \u003d unified_limit.get(\u0027region_id\u0027)"},{"line_number":53,"context_line":"            if region_id is not None:"},{"line_number":54,"context_line":"                PROVIDERS.catalog_api.get_region(region_id)"},{"line_number":55,"context_line":"            project_id \u003d unified_limit.get(\u0027project_id\u0027)"},{"line_number":56,"context_line":"            if project_id is not None:"},{"line_number":57,"context_line":"                project \u003d PROVIDERS.resource_api.get_project(project_id)"},{"line_number":58,"context_line":"                if project[\u0027is_domain\u0027]:"}],"source_content_type":"text/x-python","patch_set":14,"id":"9fdfeff1_b064d622","line":55,"range":{"start_line":55,"start_character":12,"end_line":55,"end_character":56},"in_reply_to":"9fdfeff1_445e4c77","updated":"2019-02-21 08:04:52.000000000","message":"emm, I make \"project_id\" and \"domain_id\" mutually exclusive at API layer: https://review.openstack.org/#/c/622773/16/keystone/limit/schema.py@94\n\nI assume _assert_resource_exist is a common function for both \"project\" and \"domain\" limit.","commit_id":"0b8713f56e093b42cf946b9cb87b989fadace8c2"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"7f4f35335d42fe49d2d9735a052ff5f7eea7ab96","unresolved":false,"context_lines":[{"line_number":52,"context_line":"            region_id \u003d unified_limit.get(\u0027region_id\u0027)"},{"line_number":53,"context_line":"            if region_id is not None:"},{"line_number":54,"context_line":"                PROVIDERS.catalog_api.get_region(region_id)"},{"line_number":55,"context_line":"            project_id \u003d unified_limit.get(\u0027project_id\u0027)"},{"line_number":56,"context_line":"            if project_id is not None:"},{"line_number":57,"context_line":"                project \u003d PROVIDERS.resource_api.get_project(project_id)"},{"line_number":58,"context_line":"                if project[\u0027is_domain\u0027]:"}],"source_content_type":"text/x-python","patch_set":14,"id":"9fdfeff1_1429c835","line":55,"range":{"start_line":55,"start_character":12,"end_line":55,"end_character":56},"in_reply_to":"9fdfeff1_b064d622","updated":"2019-02-25 22:17:16.000000000","message":"Oh - nevermind. I misread something. Thanks for the pointer.","commit_id":"0b8713f56e093b42cf946b9cb87b989fadace8c2"}],"keystone/tests/unit/limit/test_backends.py":[{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"437a36c9b3f6c93f23b0c596f446b9d104723f79","unresolved":false,"context_lines":[{"line_number":416,"context_line":"            region_id\u003dself.region_one[\u0027id\u0027],"},{"line_number":417,"context_line":"            resource_name\u003d\u0027volume\u0027, resource_limit\u003d10, id\u003duuid.uuid4().hex,"},{"line_number":418,"context_line":"            description\u003d\u0027test description\u0027,"},{"line_number":419,"context_line":"            domain_id\u003dNone)"},{"line_number":420,"context_line":"        limits \u003d PROVIDERS.unified_limit_api.create_limits([limit_1])"},{"line_number":421,"context_line":"        self.assertDictEqual(limit_1, limits[0])"},{"line_number":422,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"9fdfeff1_df192b88","line":419,"updated":"2019-02-25 10:29:12.000000000","message":"Is it necessary to specify the domain value here? Would be better if the helper function defaulted to None if no domain_id is provided.","commit_id":"347269184edf6cb4dd949a6e3a61c0c370f69ee7"}]}
