)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"22334c81c413ff12b6aafc2085424b2298588e87","unresolved":true,"context_lines":[{"line_number":14,"context_line":"that globally enables and disables the checking, defaulting to"},{"line_number":15,"context_line":"False."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Related to blueprint glance-unified-quotas"},{"line_number":18,"context_line":"Change-Id: I8d8f4aaed465486e80be85bc9a5d2c2be7f1ecad"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"3bb81eb4_e8aa0a3a","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":10},"updated":"2021-06-03 08:19:00.000000000","message":"We can say this as Partially-Implements\n\nIf respin is required.","commit_id":"126f2c63af09fe2d84540e0b6d472713d56afa7e"}],"glance/common/config.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"4948d46f2063a19b17d2cc1d09fad2421b799240","unresolved":true,"context_lines":[{"line_number":459,"context_line":"this on, the limits need to be registered in Keystone or all quotas will be"},{"line_number":460,"context_line":"considered to be zero, and thus reject all new resource requests."},{"line_number":461,"context_line":""},{"line_number":462,"context_line":"These per-tenant resource limits are independent from the static global ones"},{"line_number":463,"context_line":"configured in this config file."},{"line_number":464,"context_line":"\"\"\")),"},{"line_number":465,"context_line":"    cfg.HostAddressOpt(\u0027pydev_worker_debug_host\u0027,"},{"line_number":466,"context_line":"                       sample_default\u003d\u0027localhost\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"b29a33ad_1ae26428","line":463,"range":{"start_line":462,"start_character":0,"end_line":463,"end_character":31},"updated":"2021-06-02 17:28:22.000000000","message":"I think we should disable the global quotas if unified quotas will be used.","commit_id":"755b8239b6df5880e9a2194f4492abdfb902d857"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"5281a2701c69f37559fa53deaaf0073571703401","unresolved":true,"context_lines":[{"line_number":459,"context_line":"this on, the limits need to be registered in Keystone or all quotas will be"},{"line_number":460,"context_line":"considered to be zero, and thus reject all new resource requests."},{"line_number":461,"context_line":""},{"line_number":462,"context_line":"These per-tenant resource limits are independent from the static global ones"},{"line_number":463,"context_line":"configured in this config file."},{"line_number":464,"context_line":"\"\"\")),"},{"line_number":465,"context_line":"    cfg.HostAddressOpt(\u0027pydev_worker_debug_host\u0027,"},{"line_number":466,"context_line":"                       sample_default\u003d\u0027localhost\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"37b7ee2c_1d505900","line":463,"range":{"start_line":462,"start_character":0,"end_line":463,"end_character":31},"in_reply_to":"b29a33ad_1ae26428","updated":"2021-06-02 17:30:37.000000000","message":"Ack, I will put the actual disable-ing in the enforce patches, not here (since this doesn\u0027t yet replace the global ones).","commit_id":"755b8239b6df5880e9a2194f4492abdfb902d857"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"22334c81c413ff12b6aafc2085424b2298588e87","unresolved":true,"context_lines":[{"line_number":441,"context_line":"value and unit. Value ``0`` signifies no quota enforcement. Negative values"},{"line_number":442,"context_line":"are invalid and result in errors."},{"line_number":443,"context_line":""},{"line_number":444,"context_line":"This has no effect if ``use_keystone_limits`` is enabled."},{"line_number":445,"context_line":""},{"line_number":446,"context_line":"Possible values:"},{"line_number":447,"context_line":"    * A string that is a valid concatenation of a non-negative integer"}],"source_content_type":"text/x-python","patch_set":7,"id":"76be4936_f8fd8aa0","line":444,"range":{"start_line":444,"start_character":0,"end_line":444,"end_character":57},"updated":"2021-06-03 08:19:00.000000000","message":"+1 for adding this","commit_id":"126f2c63af09fe2d84540e0b6d472713d56afa7e"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"d9a9de0155995ad3608178a745151871e2fd574d","unresolved":true,"context_lines":[{"line_number":452,"context_line":"    * use_keystone_limits"},{"line_number":453,"context_line":""},{"line_number":454,"context_line":"\"\"\")),"},{"line_number":455,"context_line":"    cfg.BoolOpt(\u0027use_keystone_limits\u0027, default\u003dFalse,"},{"line_number":456,"context_line":"                help\u003d_(\"\"\""},{"line_number":457,"context_line":"Utilize per-tenant resource limits registered in Keystone."},{"line_number":458,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"62dbc851_9dc61d9b","line":455,"range":{"start_line":455,"start_character":0,"end_line":455,"end_character":53},"updated":"2021-06-04 02:04:04.000000000","message":"I think we might want to document that in doc/source/configuration/configuring.rst, and also have an example in etc/glance-api.conf. This could be a follow-up patch though. WDYT?","commit_id":"126f2c63af09fe2d84540e0b6d472713d56afa7e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"aa11a4ba4566ac0e98a44b4f1d2acc1d31cd9218","unresolved":false,"context_lines":[{"line_number":452,"context_line":"    * use_keystone_limits"},{"line_number":453,"context_line":""},{"line_number":454,"context_line":"\"\"\")),"},{"line_number":455,"context_line":"    cfg.BoolOpt(\u0027use_keystone_limits\u0027, default\u003dFalse,"},{"line_number":456,"context_line":"                help\u003d_(\"\"\""},{"line_number":457,"context_line":"Utilize per-tenant resource limits registered in Keystone."},{"line_number":458,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"bd6cde68_47e18beb","line":455,"range":{"start_line":455,"start_character":0,"end_line":455,"end_character":53},"in_reply_to":"4fcdb8ba_db5b0e2d","updated":"2021-06-04 14:15:50.000000000","message":"Hah, don\u0027t apologize. It\u0027s just every dev\u0027s dream to already have a patch up to answer a review comment. I just barely made this, so had to do it :)","commit_id":"126f2c63af09fe2d84540e0b6d472713d56afa7e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"61e8ad06805266c956f5d379c7c11df1eae2e5ec","unresolved":true,"context_lines":[{"line_number":452,"context_line":"    * use_keystone_limits"},{"line_number":453,"context_line":""},{"line_number":454,"context_line":"\"\"\")),"},{"line_number":455,"context_line":"    cfg.BoolOpt(\u0027use_keystone_limits\u0027, default\u003dFalse,"},{"line_number":456,"context_line":"                help\u003d_(\"\"\""},{"line_number":457,"context_line":"Utilize per-tenant resource limits registered in Keystone."},{"line_number":458,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"c6f40f90_3b11640e","line":455,"range":{"start_line":455,"start_character":0,"end_line":455,"end_character":53},"in_reply_to":"62dbc851_9dc61d9b","updated":"2021-06-04 13:27:51.000000000","message":"Like this?\n\nhttps://review.opendev.org/c/openstack/glance/+/794672/3/doc/source/configuration/configuring.rst","commit_id":"126f2c63af09fe2d84540e0b6d472713d56afa7e"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"03aba680ed6a2529b3c607aa9cf749677d9527a4","unresolved":false,"context_lines":[{"line_number":452,"context_line":"    * use_keystone_limits"},{"line_number":453,"context_line":""},{"line_number":454,"context_line":"\"\"\")),"},{"line_number":455,"context_line":"    cfg.BoolOpt(\u0027use_keystone_limits\u0027, default\u003dFalse,"},{"line_number":456,"context_line":"                help\u003d_(\"\"\""},{"line_number":457,"context_line":"Utilize per-tenant resource limits registered in Keystone."},{"line_number":458,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"4fcdb8ba_db5b0e2d","line":455,"range":{"start_line":455,"start_character":0,"end_line":455,"end_character":53},"in_reply_to":"c6f40f90_3b11640e","updated":"2021-06-04 13:53:24.000000000","message":"Exactly like this! Sorry, I should have updated my branch before commenting.","commit_id":"126f2c63af09fe2d84540e0b6d472713d56afa7e"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"22334c81c413ff12b6aafc2085424b2298588e87","unresolved":true,"context_lines":[{"line_number":462,"context_line":"considered to be zero, and thus reject all new resource requests."},{"line_number":463,"context_line":""},{"line_number":464,"context_line":"These per-tenant resource limits are independent from the static"},{"line_number":465,"context_line":"global ones configured in this config file. If this is enabled, the"},{"line_number":466,"context_line":"relevant static global limits will be ignored."},{"line_number":467,"context_line":"\"\"\")),"},{"line_number":468,"context_line":"    cfg.HostAddressOpt(\u0027pydev_worker_debug_host\u0027,"},{"line_number":469,"context_line":"                       sample_default\u003d\u0027localhost\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"64a4a06e_273f428c","line":466,"range":{"start_line":465,"start_character":44,"end_line":466,"end_character":46},"updated":"2021-06-03 08:19:00.000000000","message":"++","commit_id":"126f2c63af09fe2d84540e0b6d472713d56afa7e"}],"glance/quota/keystone.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"a69e14d48f7152545146f2d61675daca6ed98cdb","unresolved":true,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    enforcer \u003d limit.Enforcer(callback)"},{"line_number":52,"context_line":"    try:"},{"line_number":53,"context_line":"        enforcer.enforce(project_id, {quota_name: delta})"},{"line_number":54,"context_line":"    except ol_exc.ProjectOverLimit as e:"},{"line_number":55,"context_line":"        raise exception.LimitExceeded(body\u003dstr(e))"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5d4860c7_346d798e","line":53,"range":{"start_line":53,"start_character":8,"end_line":53,"end_character":57},"updated":"2021-05-05 06:09:15.000000000","message":"what will happen if use_keystone_limits is True but this `quota_name` is not registered yet?\n\nThis is why I want to verify whether it is possible to register these limits from glance on startup itself.","commit_id":"431f4b8b513bf5304b773cbb02ff1bdc67938426"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"925391716b93f86ac0b58197b4579d31eb5f20f6","unresolved":true,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    enforcer \u003d limit.Enforcer(callback)"},{"line_number":52,"context_line":"    try:"},{"line_number":53,"context_line":"        enforcer.enforce(project_id, {quota_name: delta})"},{"line_number":54,"context_line":"    except ol_exc.ProjectOverLimit as e:"},{"line_number":55,"context_line":"        raise exception.LimitExceeded(body\u003dstr(e))"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"b7a812fd_e7bb9f4c","line":53,"range":{"start_line":53,"start_character":8,"end_line":53,"end_character":57},"in_reply_to":"5d4860c7_346d798e","updated":"2021-05-05 13:46:36.000000000","message":"\u003e what will happen if use_keystone_limits is True but this `quota_name` is not registered yet?\n\noslo_limit will consider the limit to be defaulted to zero (i.e. no quota). If you have turned this on, but not configured keystone, I think it\u0027s better to allow nothing to be created (no quota) than go unrestricted (unlimited quota), especially since enabling the option says \"I _want_ to make sure users don\u0027t go over the quota I set.\"\n\n\u003e This is why I want to verify whether it is possible to register these limits from glance on startup itself.\n\nYes, you can register a limit in keystone for whatever you want whenever you want (after service registration). Changes in keystone take effect in glance immediately without restarting either service.\n\nYou might want to look at my devstack patch which shows when I\u0027m doing this limit registration:\n\nhttps://review.opendev.org/c/openstack/devstack/+/788056/4/lib/glance\n\nAs well as the tempest tests, which show me manipulating the limit for a tenant in realtime and testing that the effects are immediate:\n\nhttps://review.opendev.org/c/openstack/tempest/+/788346/8/tempest/api/image/v2/test_images.py","commit_id":"431f4b8b513bf5304b773cbb02ff1bdc67938426"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"19fd5962a492607b2b2e63b75d63bf0bc76eaddf","unresolved":true,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    enforcer \u003d limit.Enforcer(callback)"},{"line_number":52,"context_line":"    try:"},{"line_number":53,"context_line":"        enforcer.enforce(project_id, {quota_name: delta})"},{"line_number":54,"context_line":"    except ol_exc.ProjectOverLimit as e:"},{"line_number":55,"context_line":"        raise exception.LimitExceeded(body\u003dstr(e))"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"14d41fc7_87621567","line":53,"range":{"start_line":53,"start_character":8,"end_line":53,"end_character":57},"in_reply_to":"b7a812fd_e7bb9f4c","updated":"2021-05-05 14:21:03.000000000","message":"Sorry, I missed this:\n\n\u003e This is why I want to verify whether it is possible to register these limits from glance on startup itself.\n\nThis would be problematic in two ways:\n\nFirst, the glance service user would (and should) not have system admin privileges to register new limits.\n\nSecond, we would not know what the default value for each limit should be, which is attached to the registered limit.\n\nThese are keystone admin-level things that you do at deployment (or upgrade) time, similar to registering the service itself, creating service accounts, roles, etc. As in the devstack patch above, you see we do those things while deploying the system.","commit_id":"431f4b8b513bf5304b773cbb02ff1bdc67938426"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"04a19cbddb5ea99b1af17ed9d3a1600e1db5149a","unresolved":true,"context_lines":[{"line_number":63,"context_line":"        LOG.error(_LE(\u0027Failed to initialize oslo_limit, likely due to \u0027"},{"line_number":64,"context_line":"                      \u0027incorrect or insufficient configuration: %(err)s\u0027),"},{"line_number":65,"context_line":"                  {\u0027err\u0027: str(e)})"},{"line_number":66,"context_line":"        raise"},{"line_number":67,"context_line":"        # We could just raise LimitExceeded here, but a 500 is"},{"line_number":68,"context_line":"        # appropriate for incorrect server-side configuration, so we"},{"line_number":69,"context_line":"        # re-raise here after the above error message to make sure we"}],"source_content_type":"text/x-python","patch_set":11,"id":"515d2891_881667c4","line":66,"range":{"start_line":66,"start_character":8,"end_line":66,"end_character":13},"updated":"2021-06-14 14:44:17.000000000","message":"need to remove","commit_id":"3f4e69c7ccdee041a0b7de69c70e5ab1e2dbe553"}]}
