)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"a5e2204d4f7f4bba665873385e83cda4624c04cd","unresolved":true,"context_lines":[{"line_number":19,"context_line":"this change."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Closes-Bug: #1307491"},{"line_number":22,"context_line":"Change-Id: Ie09028279bd399772ada72411de96ff72626224c"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"e1ffad62_c780a36b","line":22,"updated":"2021-04-09 12:02:26.000000000","message":"Please add:\n\nCloses-Bug: #1620511","commit_id":"6160ff8dbdaac8a510cf3eb2c7bbe906eea66bf3"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"8e143dce749da8bebe72711b8eaacb34217aaec1","unresolved":false,"context_lines":[{"line_number":19,"context_line":"this change."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Closes-Bug: #1307491"},{"line_number":22,"context_line":"Change-Id: Ie09028279bd399772ada72411de96ff72626224c"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"4f0f8dfd_3052ca0c","line":22,"in_reply_to":"41610033_ed82c2bd","updated":"2021-07-16 10:56:53.000000000","message":"Done","commit_id":"6160ff8dbdaac8a510cf3eb2c7bbe906eea66bf3"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"323f112a6a25dd1d578168594961622a1fcc578a","unresolved":true,"context_lines":[{"line_number":19,"context_line":"this change."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Closes-Bug: #1307491"},{"line_number":22,"context_line":"Change-Id: Ie09028279bd399772ada72411de96ff72626224c"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"41610033_ed82c2bd","line":22,"in_reply_to":"e1ffad62_c780a36b","updated":"2021-04-09 12:05:26.000000000","message":"Aaaaand https://bugs.launchpad.net/cinder/+bug/1620512","commit_id":"6160ff8dbdaac8a510cf3eb2c7bbe906eea66bf3"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"27cc53e7e4e2cc0a88534caadc6ab6ad48d82230","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"c885a2fc_57453bdd","updated":"2021-12-09 11:00:49.000000000","message":"\u003e Patch Set 7:\n\u003e \n\u003e Thanks Brian for the review.\n\u003e \n\u003e \u003e Patch Set 7: Code-Review-1\n\u003e \u003e \n\u003e \u003e This definitely makes sense for update (which is also create).  But for show and delete, suppose that an operator\u0027s workflow for deleting a user from their cloud is: (1) remove them from keystone so they aren\u0027t authorized to do anything anymore, and then (2) go to each service and remove quotas.  The operator won\u0027t be able to see if there are any quotas for that project and won\u0027t be able to delete them if there are.  So these would just accumulate in the database, which doesn\u0027t seem to be ideal.\n\u003e \n\u003e The delete problem is fixed by the followup patch[1] which can remove quota records with invalid project id (removed recently or exists before this change). I separated both patches because of a pep8 failure which is blocking this patch for a long time, this change is important without that too so hence split it up.\n\u003e The problem with the show command is it shows records for non-existent project ids which is really confusing. It is a double ended problem but i feel it\u0027s better to not show information rather than showing wrong information. Also if an operator removes a project from keystone, they don\u0027t need to show it and can directly remove its quota records via the cinder-manage command added in the followup patch.\n\u003e \n\u003e [1] https://review.opendev.org/c/openstack/cinder/+/801048/\n\nI think I prefer either leaving the backward compatible option of allowing deletion of non existing projects (consider it an idempotent operation).\nWe could also make it more complicated, though I don\u0027t think it\u0027s worth it:\nIf there are quota records we clean them regardless, if there aren\u0027t we fail if the project doesn\u0027t exist.\nOr we could even add a microversion so the check on delete only happens on the new microversion.","commit_id":"da5922d3df67ad82e95c6222cd1a50f585ab920f"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"1d94d0083d61d26bac2e88ca7756c1b136c0aba9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"a28bab94_0aaaa50c","updated":"2021-12-07 17:15:11.000000000","message":"\u003e Patch Set 7: Code-Review-1\n\u003e \n\u003e This definitely makes sense for update (which is also create).  But for show and delete, suppose that an operator\u0027s workflow for deleting a user from their cloud is: (1) remove them from keystone so they aren\u0027t authorized to do anything anymore, and then (2) go to each service and remove quotas.  The operator won\u0027t be able to see if there are any quotas for that project and won\u0027t be able to delete them if there are.  So these would just accumulate in the database, which doesn\u0027t seem to be ideal.\n\nI agree with most of what you say, but I think we should only remove the check on the delete operation, because leaving it in the show or update makes no practical sense; after all there is no way to know using cinder api\u0027s if the returned values are coming from the global quota limit defaults or the per project overrides, which is one of the reasons why people go crazy, because you ask cinder to show you the quota for FAKEPROJECT and it will return valid values to you, even if there are no records for it in the database.","commit_id":"da5922d3df67ad82e95c6222cd1a50f585ab920f"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"4dd493eab2c8c73fad0a58bf44a24966f1ae3f77","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"58301aea_cf08cdad","updated":"2025-04-11 14:30:24.000000000","message":"Revision looks good to me!  This plus the cinder-manage command to cleanup residual quota records will go a long way to improve the lives of operators.","commit_id":"da5922d3df67ad82e95c6222cd1a50f585ab920f"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"e68397df00455213c470d38c2066093277460dcc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"fe29ccc4_44be5a1d","updated":"2025-04-13 16:56:06.000000000","message":"Code change looks fine, but looks like we need to mock api_utils.get_project() in the cinder.tests.unit.policies.test_quotas.QuotasPolicySecureRbacTest and cinder.tests.unit.policies.test_quotas.QuotasPolicyTest classes","commit_id":"c26f14c7c86c6c05090498f03443b6c076651a09"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"e1464b7286487fbde248c5f7753e243edada9661","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"ce0ecc2c_5f9b8a20","updated":"2025-04-11 13:58:45.000000000","message":"Hi Brian and Gorka,\nBased on the concerns of leftover quota records for deleted projects, I\u0027ve removed the project_id validation from delete API.","commit_id":"c26f14c7c86c6c05090498f03443b6c076651a09"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"a1f57e1d90c36c4dad42dad74d1f72dc97bd191e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"7c948fb0_96b5a92e","in_reply_to":"fe29ccc4_44be5a1d","updated":"2025-04-15 08:43:17.000000000","message":"Thanks Brian, I\u0027ve fixed the unit tests.","commit_id":"c26f14c7c86c6c05090498f03443b6c076651a09"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"6438c56a0dc2a3ff9c1e312fddafb6d3aafc186f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"379001f3_b711f50c","updated":"2025-04-15 18:01:22.000000000","message":"Nice work fixing the policies tests.  LGTM.","commit_id":"0133fe41f08c7475a65e2e04beffc52efdecb920"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"a1f57e1d90c36c4dad42dad74d1f72dc97bd191e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"9928fd8a_05b75968","updated":"2025-04-15 08:43:17.000000000","message":"This patch uncovered an issue with the openstacksdk URL for quota defaults which is now fixed here https://review.opendev.org/c/openstack/openstacksdk/+/947193","commit_id":"0133fe41f08c7475a65e2e04beffc52efdecb920"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"d68b8bf60e06bda36713f5d4b60853bb661ba12a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"12119798_1df6b14b","updated":"2025-04-15 13:46:32.000000000","message":"recheck dependency passed zuul","commit_id":"0133fe41f08c7475a65e2e04beffc52efdecb920"}],"cinder/api/contrib/quotas.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"1db1c0793d8ea8dcfa1ea1b6cc612241d1f3b03b","unresolved":true,"context_lines":[{"line_number":160,"context_line":"        :param id: target project id that needs to be deleted"},{"line_number":161,"context_line":"        \"\"\""},{"line_number":162,"context_line":"        context \u003d req.environ[\u0027cinder.context\u0027]"},{"line_number":163,"context_line":"        api_utils.validate_project_and_authorize(context, id,"},{"line_number":164,"context_line":"                                                 policy.DELETE_POLICY)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        db.quota_destroy_by_project(context, id)"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"90085d0e_2f73d10d","line":164,"range":{"start_line":163,"start_character":0,"end_line":164,"end_character":70},"updated":"2021-04-05 11:44:56.000000000","message":"-1: We could have \"garbage\" records in the DB, so we need some way to delete them.  One way would be to add a \"cinder-manage quota\" command.","commit_id":"9d7b2aadc75f90aa49e9c2a6556c0617ddfbf89b"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"a1f57e1d90c36c4dad42dad74d1f72dc97bd191e","unresolved":false,"context_lines":[{"line_number":160,"context_line":"        :param id: target project id that needs to be deleted"},{"line_number":161,"context_line":"        \"\"\""},{"line_number":162,"context_line":"        context \u003d req.environ[\u0027cinder.context\u0027]"},{"line_number":163,"context_line":"        api_utils.validate_project_and_authorize(context, id,"},{"line_number":164,"context_line":"                                                 policy.DELETE_POLICY)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        db.quota_destroy_by_project(context, id)"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5726b223_382c0db6","line":164,"range":{"start_line":163,"start_character":0,"end_line":164,"end_character":70},"in_reply_to":"90085d0e_2f73d10d","updated":"2025-04-15 08:43:17.000000000","message":"Done","commit_id":"9d7b2aadc75f90aa49e9c2a6556c0617ddfbf89b"}],"cinder/cmd/manage.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"99c26ff15dd166bc97d77dc8424bd291bd2a558c","unresolved":true,"context_lines":[{"line_number":556,"context_line":"    @args(\u0027--project-name\u0027, default\u003dNone,"},{"line_number":557,"context_line":"          help\u003d(\u0027The project name to which the admin user belongs.\u0027))"},{"line_number":558,"context_line":"    def remove_non_existent_projects(self, username, password, project_name):"},{"line_number":559,"context_line":"        \"\"\"Remove non-existent project records from DB"},{"line_number":560,"context_line":""},{"line_number":561,"context_line":"        This action checks for any project that doesn\u0027t exist in the"},{"line_number":562,"context_line":"        keystone DB and removes it from quotas DB."}],"source_content_type":"text/x-python","patch_set":3,"id":"bac8b795_ad7d7133","line":559,"range":{"start_line":559,"start_character":31,"end_line":559,"end_character":38},"updated":"2021-04-06 11:13:41.000000000","message":"nit: quota project","commit_id":"25058cdedfea2cf9e8706cd1f46dc075b64b5ba5"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"1a279ba2fa0753f991409fe9c93ff47274f88903","unresolved":false,"context_lines":[{"line_number":556,"context_line":"    @args(\u0027--project-name\u0027, default\u003dNone,"},{"line_number":557,"context_line":"          help\u003d(\u0027The project name to which the admin user belongs.\u0027))"},{"line_number":558,"context_line":"    def remove_non_existent_projects(self, username, password, project_name):"},{"line_number":559,"context_line":"        \"\"\"Remove non-existent project records from DB"},{"line_number":560,"context_line":""},{"line_number":561,"context_line":"        This action checks for any project that doesn\u0027t exist in the"},{"line_number":562,"context_line":"        keystone DB and removes it from quotas DB."}],"source_content_type":"text/x-python","patch_set":3,"id":"1bb609f8_04d86e1c","line":559,"range":{"start_line":559,"start_character":31,"end_line":559,"end_character":38},"in_reply_to":"bac8b795_ad7d7133","updated":"2021-04-06 13:06:47.000000000","message":"Done","commit_id":"25058cdedfea2cf9e8706cd1f46dc075b64b5ba5"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"99c26ff15dd166bc97d77dc8424bd291bd2a558c","unresolved":true,"context_lines":[{"line_number":562,"context_line":"        keystone DB and removes it from quotas DB."},{"line_number":563,"context_line":"        \"\"\""},{"line_number":564,"context_line":"        ctxt \u003d context.get_admin_context()"},{"line_number":565,"context_line":"        CONF.register_opt(cfg.IntOpt(\u0027timeout\u0027), group\u003d\u0027keystone_authtoken\u0027)"},{"line_number":566,"context_line":"        CONF.register_opt(cfg.BoolOpt(\u0027collect_timing\u0027),"},{"line_number":567,"context_line":"                          group\u003d\u0027keystone_authtoken\u0027)"},{"line_number":568,"context_line":"        CONF.register_opt(cfg.BoolOpt(\u0027split_loggers\u0027),"},{"line_number":569,"context_line":"                          group\u003d\u0027keystone_authtoken\u0027)"},{"line_number":570,"context_line":"        auth_params \u003d {\u0027username\u0027: username, \u0027password\u0027: password,"},{"line_number":571,"context_line":"                       \u0027project_name\u0027: project_name}"},{"line_number":572,"context_line":"        auth \u003d ks_loading.load_auth_from_conf_options("},{"line_number":573,"context_line":"            CONF, \u0027keystone_authtoken\u0027, **auth_params)"},{"line_number":574,"context_line":"        sess \u003d ks_loading.load_session_from_conf_options("},{"line_number":575,"context_line":"            CONF, \u0027keystone_authtoken\u0027, auth\u003dauth)"},{"line_number":576,"context_line":"        keystone_client \u003d ks_client.Client(session\u003dsess)"},{"line_number":577,"context_line":"        session \u003d db_api.get_session()"},{"line_number":578,"context_line":""},{"line_number":579,"context_line":"        with session.begin():"}],"source_content_type":"text/x-python","patch_set":3,"id":"967f1dbb_4c0dd8ec","line":576,"range":{"start_line":565,"start_character":0,"end_line":576,"end_character":56},"updated":"2021-04-06 11:13:41.000000000","message":"?: I don\u0027t know if it\u0027s possible, but could we import cinder.quota_utils (which loads keystone_authtoken config options), set the username, password, and project_name conf options, and then use cinder.quota_utils._keystone_client method?","commit_id":"25058cdedfea2cf9e8706cd1f46dc075b64b5ba5"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"1a279ba2fa0753f991409fe9c93ff47274f88903","unresolved":true,"context_lines":[{"line_number":562,"context_line":"        keystone DB and removes it from quotas DB."},{"line_number":563,"context_line":"        \"\"\""},{"line_number":564,"context_line":"        ctxt \u003d context.get_admin_context()"},{"line_number":565,"context_line":"        CONF.register_opt(cfg.IntOpt(\u0027timeout\u0027), group\u003d\u0027keystone_authtoken\u0027)"},{"line_number":566,"context_line":"        CONF.register_opt(cfg.BoolOpt(\u0027collect_timing\u0027),"},{"line_number":567,"context_line":"                          group\u003d\u0027keystone_authtoken\u0027)"},{"line_number":568,"context_line":"        CONF.register_opt(cfg.BoolOpt(\u0027split_loggers\u0027),"},{"line_number":569,"context_line":"                          group\u003d\u0027keystone_authtoken\u0027)"},{"line_number":570,"context_line":"        auth_params \u003d {\u0027username\u0027: username, \u0027password\u0027: password,"},{"line_number":571,"context_line":"                       \u0027project_name\u0027: project_name}"},{"line_number":572,"context_line":"        auth \u003d ks_loading.load_auth_from_conf_options("},{"line_number":573,"context_line":"            CONF, \u0027keystone_authtoken\u0027, **auth_params)"},{"line_number":574,"context_line":"        sess \u003d ks_loading.load_session_from_conf_options("},{"line_number":575,"context_line":"            CONF, \u0027keystone_authtoken\u0027, auth\u003dauth)"},{"line_number":576,"context_line":"        keystone_client \u003d ks_client.Client(session\u003dsess)"},{"line_number":577,"context_line":"        session \u003d db_api.get_session()"},{"line_number":578,"context_line":""},{"line_number":579,"context_line":"        with session.begin():"}],"source_content_type":"text/x-python","patch_set":3,"id":"14649555_4c32e346","line":576,"range":{"start_line":565,"start_character":0,"end_line":576,"end_character":56},"in_reply_to":"967f1dbb_4c0dd8ec","updated":"2021-04-06 13:06:47.000000000","message":"I tried it and it doesn\u0027t work since the the _keystone_client method doesn\u0027t take parameters from the conf section but rather gets the token from context (which in this case doesn\u0027t contain and user/project info)\nAlso calling the _keystone_client method uses CONF.keystone_authtoken.auth_url parameter which for some reason isn\u0027t set when called from here.","commit_id":"25058cdedfea2cf9e8706cd1f46dc075b64b5ba5"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"99c26ff15dd166bc97d77dc8424bd291bd2a558c","unresolved":true,"context_lines":[{"line_number":577,"context_line":"        session \u003d db_api.get_session()"},{"line_number":578,"context_line":""},{"line_number":579,"context_line":"        with session.begin():"},{"line_number":580,"context_line":"            projects \u003d db_api.model_query(ctxt, models.Quota,"},{"line_number":581,"context_line":"                                          read_deleted\u003d\"no\","},{"line_number":582,"context_line":"                                          session\u003dsession).\\"},{"line_number":583,"context_line":"                with_for_update().\\"},{"line_number":584,"context_line":"                all()"},{"line_number":585,"context_line":"            for project in projects:"},{"line_number":586,"context_line":"                try:"},{"line_number":587,"context_line":"                    keystone_client.projects.get(project.project_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3ad0a8c2_a9d48d78","line":584,"range":{"start_line":580,"start_character":0,"end_line":584,"end_character":21},"updated":"2021-04-06 11:13:41.000000000","message":"-1: This will block the whole Quota table and probably halt many Cinder operations  :-(\n-1: For a single project we may have multiple Quota rows, so this code, together with the for loop will result in us querying keystone multiple times for the same project.\n\nI think we should just get the unique project_id fields from that table, query keystone once, and then use DB\u0027s quota_destroy_all_by_project instead.","commit_id":"25058cdedfea2cf9e8706cd1f46dc075b64b5ba5"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"1a279ba2fa0753f991409fe9c93ff47274f88903","unresolved":false,"context_lines":[{"line_number":577,"context_line":"        session \u003d db_api.get_session()"},{"line_number":578,"context_line":""},{"line_number":579,"context_line":"        with session.begin():"},{"line_number":580,"context_line":"            projects \u003d db_api.model_query(ctxt, models.Quota,"},{"line_number":581,"context_line":"                                          read_deleted\u003d\"no\","},{"line_number":582,"context_line":"                                          session\u003dsession).\\"},{"line_number":583,"context_line":"                with_for_update().\\"},{"line_number":584,"context_line":"                all()"},{"line_number":585,"context_line":"            for project in projects:"},{"line_number":586,"context_line":"                try:"},{"line_number":587,"context_line":"                    keystone_client.projects.get(project.project_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bc034fbe_12ea11c2","line":584,"range":{"start_line":580,"start_character":0,"end_line":584,"end_character":21},"in_reply_to":"3ad0a8c2_a9d48d78","updated":"2021-04-06 13:06:47.000000000","message":"Done","commit_id":"25058cdedfea2cf9e8706cd1f46dc075b64b5ba5"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"f77d12fe366c677b95a7983170790161fda57520","unresolved":true,"context_lines":[{"line_number":554,"context_line":"    @args(\u0027--password\u0027, default\u003dNone,"},{"line_number":555,"context_line":"          help\u003d(\u0027The password of the admin user.\u0027))"},{"line_number":556,"context_line":"    @args(\u0027--project-name\u0027, default\u003dNone,"},{"line_number":557,"context_line":"          help\u003d(\u0027The project name to which the admin user belongs.\u0027))"},{"line_number":558,"context_line":"    def remove_non_existent_projects(self, username, password, project_name):"},{"line_number":559,"context_line":"        \"\"\"Remove non-existent quota project records from DB"},{"line_number":560,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7a1912e1_e0204235","line":557,"updated":"2021-04-09 13:34:54.000000000","message":"If this is running from cinder manager and cinder manager has access to the cinder.conf file, do we need to have the user specify these options?\n\nWould a reasonable alternative be to just pull the credentials from `cinder.conf [keystone_authtoken]` and use those instead, or is there a case I\u0027m missing?","commit_id":"6160ff8dbdaac8a510cf3eb2c7bbe906eea66bf3"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"c3a5bc9f1d16f04c6fa5a5d7be33f7f23c609ac1","unresolved":true,"context_lines":[{"line_number":568,"context_line":"        CONF.register_opt(cfg.BoolOpt(\u0027split_loggers\u0027),"},{"line_number":569,"context_line":"                          group\u003d\u0027keystone_authtoken\u0027)"},{"line_number":570,"context_line":"        auth_params \u003d {\u0027username\u0027: username, \u0027password\u0027: password,"},{"line_number":571,"context_line":"                       \u0027project_name\u0027: project_name}"},{"line_number":572,"context_line":"        auth \u003d ks_loading.load_auth_from_conf_options("},{"line_number":573,"context_line":"            CONF, \u0027keystone_authtoken\u0027, **auth_params)"},{"line_number":574,"context_line":"        sess \u003d ks_loading.load_session_from_conf_options("}],"source_content_type":"text/x-python","patch_set":4,"id":"24b97ddc_59bdec3a","line":571,"updated":"2021-04-09 13:06:22.000000000","message":"What if you try:\n\n  ks_loading.register_auth_conf_options(CONF, \u0027keystone_authtoken\u0027)\n\nbefore line 572?","commit_id":"6160ff8dbdaac8a510cf3eb2c7bbe906eea66bf3"}],"cinder/opts.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"99c26ff15dd166bc97d77dc8424bd291bd2a558c","unresolved":true,"context_lines":[{"line_number":231,"context_line":"                cinder_backup_drivers_swift.swiftbackup_service_opts,"},{"line_number":232,"context_line":"                cinder_backup_manager.backup_manager_opts,"},{"line_number":233,"context_line":"                cinder_cmd_backup.backup_cmd_opts,"},{"line_number":234,"context_line":"                cinder_cmd_manage.cfg.BoolOpt(\u0027collect_timing\u0027),"},{"line_number":235,"context_line":"                cinder_cmd_manage.cfg.BoolOpt(\u0027split_loggers\u0027),"},{"line_number":236,"context_line":"                [cinder_cmd_volume.cluster_opt],"},{"line_number":237,"context_line":"                cinder_common_config.api_opts,"},{"line_number":238,"context_line":"                cinder_common_config.core_opts,"}],"source_content_type":"text/x-python","patch_set":3,"id":"da7fae12_6296d659","line":235,"range":{"start_line":234,"start_character":0,"end_line":235,"end_character":63},"updated":"2021-04-06 11:13:41.000000000","message":"-1: Aren\u0027t these already defined in the keystoneauth project?","commit_id":"25058cdedfea2cf9e8706cd1f46dc075b64b5ba5"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"1a279ba2fa0753f991409fe9c93ff47274f88903","unresolved":true,"context_lines":[{"line_number":231,"context_line":"                cinder_backup_drivers_swift.swiftbackup_service_opts,"},{"line_number":232,"context_line":"                cinder_backup_manager.backup_manager_opts,"},{"line_number":233,"context_line":"                cinder_cmd_backup.backup_cmd_opts,"},{"line_number":234,"context_line":"                cinder_cmd_manage.cfg.BoolOpt(\u0027collect_timing\u0027),"},{"line_number":235,"context_line":"                cinder_cmd_manage.cfg.BoolOpt(\u0027split_loggers\u0027),"},{"line_number":236,"context_line":"                [cinder_cmd_volume.cluster_opt],"},{"line_number":237,"context_line":"                cinder_common_config.api_opts,"},{"line_number":238,"context_line":"                cinder_common_config.core_opts,"}],"source_content_type":"text/x-python","patch_set":3,"id":"dfb829b4_79a52cf2","line":235,"range":{"start_line":234,"start_character":0,"end_line":235,"end_character":63},"in_reply_to":"da7fae12_6296d659","updated":"2021-04-06 13:06:47.000000000","message":"i think so but pep8 gave me an error when these were not defined. but you\u0027re right, this seems wrong and we should handle the error another way.","commit_id":"25058cdedfea2cf9e8706cd1f46dc075b64b5ba5"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"99c26ff15dd166bc97d77dc8424bd291bd2a558c","unresolved":true,"context_lines":[{"line_number":299,"context_line":"                cinder_zonemanager_drivers_cisco_ciscofczonedriver.cisco_opts,"},{"line_number":300,"context_line":"                cinder_zonemanager_fczonemanager.zone_manager_opts,"},{"line_number":301,"context_line":"            )),"},{"line_number":302,"context_line":"        (\u0027keystone_authtoken\u0027,"},{"line_number":303,"context_line":"            itertools.chain("},{"line_number":304,"context_line":"                cinder_cmd_manage.cfg.IntOpt(\u0027timeout\u0027),"},{"line_number":305,"context_line":"            )),"},{"line_number":306,"context_line":"        (\u0027key_manager\u0027,"},{"line_number":307,"context_line":"            itertools.chain("},{"line_number":308,"context_line":"                cinder_keymgr_confkeymgr.key_mgr_opts,"}],"source_content_type":"text/x-python","patch_set":3,"id":"990a91a4_5dd66495","line":305,"range":{"start_line":302,"start_character":0,"end_line":305,"end_character":15},"updated":"2021-04-06 11:13:41.000000000","message":"ditto","commit_id":"25058cdedfea2cf9e8706cd1f46dc075b64b5ba5"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"1a279ba2fa0753f991409fe9c93ff47274f88903","unresolved":false,"context_lines":[{"line_number":299,"context_line":"                cinder_zonemanager_drivers_cisco_ciscofczonedriver.cisco_opts,"},{"line_number":300,"context_line":"                cinder_zonemanager_fczonemanager.zone_manager_opts,"},{"line_number":301,"context_line":"            )),"},{"line_number":302,"context_line":"        (\u0027keystone_authtoken\u0027,"},{"line_number":303,"context_line":"            itertools.chain("},{"line_number":304,"context_line":"                cinder_cmd_manage.cfg.IntOpt(\u0027timeout\u0027),"},{"line_number":305,"context_line":"            )),"},{"line_number":306,"context_line":"        (\u0027key_manager\u0027,"},{"line_number":307,"context_line":"            itertools.chain("},{"line_number":308,"context_line":"                cinder_keymgr_confkeymgr.key_mgr_opts,"}],"source_content_type":"text/x-python","patch_set":3,"id":"08a47434_a45670dc","line":305,"range":{"start_line":302,"start_character":0,"end_line":305,"end_character":15},"in_reply_to":"990a91a4_5dd66495","updated":"2021-04-06 13:06:47.000000000","message":"Done","commit_id":"25058cdedfea2cf9e8706cd1f46dc075b64b5ba5"}],"cinder/tests/unit/api/contrib/test_quotas.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"1db1c0793d8ea8dcfa1ea1b6cc612241d1f3b03b","unresolved":true,"context_lines":[{"line_number":83,"context_line":"        self.controller \u003d quotas.QuotaSetsController()"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        self.req \u003d mock.Mock()"},{"line_number":86,"context_line":"        self.req.environ \u003d {\u0027cinder.context\u0027: context.get_admin_context()}"},{"line_number":87,"context_line":"        self.req.environ[\u0027cinder.context\u0027].is_admin \u003d True"},{"line_number":88,"context_line":"        self.req.params \u003d {}"},{"line_number":89,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"11c67aca_f9138068","line":86,"updated":"2021-04-05 11:44:56.000000000","message":"-1: There are no tests for the new 404 behavior.","commit_id":"9d7b2aadc75f90aa49e9c2a6556c0617ddfbf89b"}],"releasenotes/notes/quota-project-validation-e37db64211e26d52.yaml":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"a5e2204d4f7f4bba665873385e83cda4624c04cd","unresolved":true,"context_lines":[{"line_number":4,"context_line":"    `Bug #1307491 \u003chttps://bugs.launchpad.net/cinder/+bug/1307491\u003e`_: Add"},{"line_number":5,"context_line":"    project validation support for quota operations. Previously the quota"},{"line_number":6,"context_line":"    operations which used to pass for non-existent project ids will fail now"},{"line_number":7,"context_line":"    with a 404 NotFound error."},{"line_number":8,"context_line":"features:"},{"line_number":9,"context_line":"  - |"},{"line_number":10,"context_line":"    Added ``remove_non_existent_projects`` command to cinder quota utilities"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"46e2c4e5_9daf14bc","line":7,"updated":"2021-04-09 12:02:26.000000000","message":"Mention that it also fixes bug #1620511","commit_id":"6160ff8dbdaac8a510cf3eb2c7bbe906eea66bf3"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"323f112a6a25dd1d578168594961622a1fcc578a","unresolved":true,"context_lines":[{"line_number":4,"context_line":"    `Bug #1307491 \u003chttps://bugs.launchpad.net/cinder/+bug/1307491\u003e`_: Add"},{"line_number":5,"context_line":"    project validation support for quota operations. Previously the quota"},{"line_number":6,"context_line":"    operations which used to pass for non-existent project ids will fail now"},{"line_number":7,"context_line":"    with a 404 NotFound error."},{"line_number":8,"context_line":"features:"},{"line_number":9,"context_line":"  - |"},{"line_number":10,"context_line":"    Added ``remove_non_existent_projects`` command to cinder quota utilities"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"ed9c8774_30aa0dc0","line":7,"in_reply_to":"46e2c4e5_9daf14bc","updated":"2021-04-09 12:05:26.000000000","message":"And https://bugs.launchpad.net/cinder/+bug/1620512","commit_id":"6160ff8dbdaac8a510cf3eb2c7bbe906eea66bf3"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"8e143dce749da8bebe72711b8eaacb34217aaec1","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    `Bug #1307491 \u003chttps://bugs.launchpad.net/cinder/+bug/1307491\u003e`_: Add"},{"line_number":5,"context_line":"    project validation support for quota operations. Previously the quota"},{"line_number":6,"context_line":"    operations which used to pass for non-existent project ids will fail now"},{"line_number":7,"context_line":"    with a 404 NotFound error."},{"line_number":8,"context_line":"features:"},{"line_number":9,"context_line":"  - |"},{"line_number":10,"context_line":"    Added ``remove_non_existent_projects`` command to cinder quota utilities"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"eac72389_1d4256d4","line":7,"in_reply_to":"ed9c8774_30aa0dc0","updated":"2021-07-16 10:56:53.000000000","message":"Done","commit_id":"6160ff8dbdaac8a510cf3eb2c7bbe906eea66bf3"}]}
