)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"84c0790fe2842499a39749e25859b904f7d3d92a","unresolved":false,"context_lines":[{"line_number":11,"context_line":"configuration that are now enforced when you enable unified limits."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Note: this will need to be updated again once we add limits to things"},{"line_number":14,"context_line":"that use things like resource_class, etc."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"blueprint unified-limits-nova"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"1fa4df85_03ac7c33","line":14,"updated":"2022-01-21 01:06:55.000000000","message":"What? :) \"add limits to things that use things like resource_class\"","commit_id":"0eff6f2e94f7906e9c27c49f007f704e8f412b3f"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"30342dac73b5768471552c97edff57ccfbc51dfe","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":28,"id":"c3ffd1d5_32cb987a","updated":"2022-01-21 19:51:45.000000000","message":"recheck bug 1957941","commit_id":"f0c00744fe56beeb6968be0ec51c5660457d1af5"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"84c0790fe2842499a39749e25859b904f7d3d92a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":28,"id":"dd6d7071_23cab32a","updated":"2022-01-21 01:06:55.000000000","message":"recheck dep updated","commit_id":"f0c00744fe56beeb6968be0ec51c5660457d1af5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"467c3cd177dee1e84022cce9e8bd1bcb2e2f1983","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":30,"id":"35c14ce9_a4bbaf08","updated":"2022-02-02 14:25:28.000000000","message":"looks good","commit_id":"739043b19337f87f539c39cdc30895b12eccc11e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"87801b3c344fb712dee6ceb93f87b1be10f8e1d2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":30,"id":"847563d4_be9afec8","updated":"2022-02-02 14:24:46.000000000","message":"recheck nova-next was fixed","commit_id":"739043b19337f87f539c39cdc30895b12eccc11e"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d3d262141c2fcbd18eeff32e412e0f9c717aae1f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":33,"id":"73a3f014_f50e2760","updated":"2022-02-10 16:54:45.000000000","message":"Easy patch to review compared to the previous ones :)","commit_id":"fd26ca60155d87890d31f567b20c834c9f1a1b15"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f0d1e032f9c4d91a403e2af7de85b18422d8ca8a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":33,"id":"49c3290e_72c46d70","updated":"2022-02-10 11:20:46.000000000","message":"still looks good","commit_id":"fd26ca60155d87890d31f567b20c834c9f1a1b15"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"b926ef833dbed012fdc5b3b23df9364a7d353827","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":35,"id":"2373ae88_5e934b2c","updated":"2022-02-24 22:04:49.000000000","message":"recheck","commit_id":"94f9e443f2bde7edf63676ad9a8b2eefd9b68692"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"d914705d39338dd7188e85402bee7abc45d578cc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":35,"id":"8c65e36d_e7bdd6fa","updated":"2022-02-25 12:50:17.000000000","message":"recheck","commit_id":"94f9e443f2bde7edf63676ad9a8b2eefd9b68692"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"258a55ec826b644f05989b4f14c063887c526e72","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":35,"id":"b0fc9624_95f663f9","updated":"2022-02-25 23:51:02.000000000","message":"recheck","commit_id":"94f9e443f2bde7edf63676ad9a8b2eefd9b68692"}],"nova/api/openstack/compute/quota_classes.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a315259548f83aa11c64a80150a26f2f4186806a","unresolved":false,"context_lines":[{"line_number":133,"context_line":"        db_updates \u003d body[\u0027quota_class_set\u0027].items()"},{"line_number":134,"context_line":"        if limit.use_unified_limits():"},{"line_number":135,"context_line":"            # unified limits only uses config, so don\u0027t update the DB"},{"line_number":136,"context_line":"            db_updates \u003d []"},{"line_number":137,"context_line":"            # TODO(johngarbutt) eventually cores, ram and instances"},{"line_number":138,"context_line":"            # changes will get sent to keystone"},{"line_number":139,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"df33271e_850fb435","line":136,"updated":"2020-03-31 07:45:38.000000000","message":"Do I understand correctly that we silently ignore the requested update? Is this something the patch series enhances later?","commit_id":"2ecb2abbd24dda92d2a55ceb0ee99a055b5baa26"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"d50cb709c053450b43c9d946d0449644bce36499","unresolved":false,"context_lines":[{"line_number":133,"context_line":"        db_updates \u003d body[\u0027quota_class_set\u0027].items()"},{"line_number":134,"context_line":"        if limit.use_unified_limits():"},{"line_number":135,"context_line":"            # unified limits only uses config, so don\u0027t update the DB"},{"line_number":136,"context_line":"            db_updates \u003d []"},{"line_number":137,"context_line":"            # TODO(johngarbutt) eventually cores, ram and instances"},{"line_number":138,"context_line":"            # changes will get sent to keystone"},{"line_number":139,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"bf51134e_ff8c1337","line":136,"in_reply_to":"df33271e_2e4b8987","updated":"2020-06-24 22:39:52.000000000","message":"yeah that is not best but best for not breaking users. and later with microversion we can get rid of these silent-ignored APIs","commit_id":"2ecb2abbd24dda92d2a55ceb0ee99a055b5baa26"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"b66b2f067d1cd1a1de894cef5ee06f2955679807","unresolved":false,"context_lines":[{"line_number":133,"context_line":"        db_updates \u003d body[\u0027quota_class_set\u0027].items()"},{"line_number":134,"context_line":"        if limit.use_unified_limits():"},{"line_number":135,"context_line":"            # unified limits only uses config, so don\u0027t update the DB"},{"line_number":136,"context_line":"            db_updates \u003d []"},{"line_number":137,"context_line":"            # TODO(johngarbutt) eventually cores, ram and instances"},{"line_number":138,"context_line":"            # changes will get sent to keystone"},{"line_number":139,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"df33271e_dccce56b","line":136,"in_reply_to":"df33271e_850fb435","updated":"2020-03-31 08:50:22.000000000","message":"This is the defined correct behaviour in the spec, for everything except ram, cores and servers (with comes later, actually, its a big TODO at the end right now, I will try look at that tomorrow)","commit_id":"2ecb2abbd24dda92d2a55ceb0ee99a055b5baa26"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"1dc0c952022ca831ef474aa3691c03ed45decbad","unresolved":false,"context_lines":[{"line_number":133,"context_line":"        db_updates \u003d body[\u0027quota_class_set\u0027].items()"},{"line_number":134,"context_line":"        if limit.use_unified_limits():"},{"line_number":135,"context_line":"            # unified limits only uses config, so don\u0027t update the DB"},{"line_number":136,"context_line":"            db_updates \u003d []"},{"line_number":137,"context_line":"            # TODO(johngarbutt) eventually cores, ram and instances"},{"line_number":138,"context_line":"            # changes will get sent to keystone"},{"line_number":139,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"df33271e_2e4b8987","line":136,"in_reply_to":"df33271e_88979248","updated":"2020-04-06 15:45:34.000000000","message":"The problem is keeping horizon working during the transition, and all the scripts used by admins.\n\nWe at least return info to tell people that we ignrored what they just said.","commit_id":"2ecb2abbd24dda92d2a55ceb0ee99a055b5baa26"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"54a6b98bcdeee307a46a835e84c95f5b76561958","unresolved":false,"context_lines":[{"line_number":133,"context_line":"        db_updates \u003d body[\u0027quota_class_set\u0027].items()"},{"line_number":134,"context_line":"        if limit.use_unified_limits():"},{"line_number":135,"context_line":"            # unified limits only uses config, so don\u0027t update the DB"},{"line_number":136,"context_line":"            db_updates \u003d []"},{"line_number":137,"context_line":"            # TODO(johngarbutt) eventually cores, ram and instances"},{"line_number":138,"context_line":"            # changes will get sent to keystone"},{"line_number":139,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"df33271e_88979248","line":136,"in_reply_to":"df33271e_dccce56b","updated":"2020-04-01 13:34:28.000000000","message":"Feels strange to me to ignore a request but you are right this was agreed in the spec so I accept it.","commit_id":"2ecb2abbd24dda92d2a55ceb0ee99a055b5baa26"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5a1172858cd3fd6b6bc9860a744196ef7337eb96","unresolved":false,"context_lines":[{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        quota_class \u003d id"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        db_updates \u003d body[\u0027quota_class_set\u0027].items()"},{"line_number":134,"context_line":"        if limit_utils.use_unified_limits():"},{"line_number":135,"context_line":"            # unified limits only uses config, so don\u0027t update the DB"},{"line_number":136,"context_line":"            db_updates \u003d []"},{"line_number":137,"context_line":"            # TODO(johngarbutt) eventually cores, ram and instances"},{"line_number":138,"context_line":"            # changes will get sent to keystone"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        for key, value in db_updates:"},{"line_number":141,"context_line":"            try:"},{"line_number":142,"context_line":"                objects.Quotas.update_class(context, quota_class, key, value)"},{"line_number":143,"context_line":"            except exception.QuotaClassNotFound:"},{"line_number":144,"context_line":"                objects.Quotas.create_class(context, quota_class, key, value)"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        values \u003d QUOTAS.get_class_quotas(context, quota_class)"},{"line_number":147,"context_line":"        return self._format_quota_set(None, values, filtered_quotas,"}],"source_content_type":"text/x-python","patch_set":9,"id":"ff570b3c_4144cf74","line":144,"range":{"start_line":133,"start_character":0,"end_line":144,"end_character":77},"updated":"2020-06-10 15:55:23.000000000","message":"I haven\u0027t seen how you expand this in the following patches, but I find this a bit weird. Why not put this in a conditional?\n\n  if not limit_utils.use_unified_limits():\n      for key, value in body[\u0027quota_class_set\u0027].items():\n          ...\n\n  values \u003d QUOTAS.get_class_quotas(context, quota_class)","commit_id":"2799fbec9f4c2162a12c4130eeb434f9e2ea3766"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"add5e1d7ef5f2e68319f2f3abdb02b1aa2880c84","unresolved":true,"context_lines":[{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        quota_class \u003d id"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        db_updates \u003d body[\u0027quota_class_set\u0027].items()"},{"line_number":134,"context_line":"        if limit_utils.use_unified_limits():"},{"line_number":135,"context_line":"            # unified limits only uses config, so don\u0027t update the DB"},{"line_number":136,"context_line":"            db_updates \u003d []"},{"line_number":137,"context_line":"            # TODO(johngarbutt) eventually cores, ram and instances"},{"line_number":138,"context_line":"            # changes will get sent to keystone"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        for key, value in db_updates:"},{"line_number":141,"context_line":"            try:"},{"line_number":142,"context_line":"                objects.Quotas.update_class(context, quota_class, key, value)"},{"line_number":143,"context_line":"            except exception.QuotaClassNotFound:"},{"line_number":144,"context_line":"                objects.Quotas.create_class(context, quota_class, key, value)"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        values \u003d QUOTAS.get_class_quotas(context, quota_class)"},{"line_number":147,"context_line":"        return self._format_quota_set(None, values, filtered_quotas,"}],"source_content_type":"text/x-python","patch_set":9,"id":"7aef13c3_d5ba9d03","line":144,"range":{"start_line":133,"start_character":0,"end_line":144,"end_character":77},"in_reply_to":"bf51134e_ffeb730f","updated":"2021-05-04 19:31:05.000000000","message":"I have not yet implemented that bit, as its not required to test this code out in the first release. I would like someone to help me out and implement that bit, if possible.","commit_id":"2799fbec9f4c2162a12c4130eeb434f9e2ea3766"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"d50cb709c053450b43c9d946d0449644bce36499","unresolved":false,"context_lines":[{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        quota_class \u003d id"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        db_updates \u003d body[\u0027quota_class_set\u0027].items()"},{"line_number":134,"context_line":"        if limit_utils.use_unified_limits():"},{"line_number":135,"context_line":"            # unified limits only uses config, so don\u0027t update the DB"},{"line_number":136,"context_line":"            db_updates \u003d []"},{"line_number":137,"context_line":"            # TODO(johngarbutt) eventually cores, ram and instances"},{"line_number":138,"context_line":"            # changes will get sent to keystone"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        for key, value in db_updates:"},{"line_number":141,"context_line":"            try:"},{"line_number":142,"context_line":"                objects.Quotas.update_class(context, quota_class, key, value)"},{"line_number":143,"context_line":"            except exception.QuotaClassNotFound:"},{"line_number":144,"context_line":"                objects.Quotas.create_class(context, quota_class, key, value)"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        values \u003d QUOTAS.get_class_quotas(context, quota_class)"},{"line_number":147,"context_line":"        return self._format_quota_set(None, values, filtered_quotas,"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_ffeb730f","line":144,"range":{"start_line":133,"start_character":0,"end_line":144,"end_character":77},"in_reply_to":"ff570b3c_4144cf74","updated":"2020-06-24 22:39:52.000000000","message":"but we need to support the update for cores, ram and instances via keystone API. I have not checked the final set but i hope john has plan to implement the L137 TODO","commit_id":"2799fbec9f4c2162a12c4130eeb434f9e2ea3766"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"d50cb709c053450b43c9d946d0449644bce36499","unresolved":false,"context_lines":[{"line_number":144,"context_line":"                objects.Quotas.create_class(context, quota_class, key, value)"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        values \u003d QUOTAS.get_class_quotas(context, quota_class)"},{"line_number":147,"context_line":"        return self._format_quota_set(None, values, filtered_quotas,"},{"line_number":148,"context_line":"                                      exclude_server_groups)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_bf01fbb1","line":148,"range":{"start_line":147,"start_character":0,"end_line":148,"end_character":60},"updated":"2020-06-24 22:39:52.000000000","message":"API response is all fine in term of what all fields we return. those are kept same because of no truncation of fields in get_class_quotas() implementation in new driver.","commit_id":"2799fbec9f4c2162a12c4130eeb434f9e2ea3766"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"74099a566130092d30675ec55cf3cea9aa235f4b","unresolved":true,"context_lines":[{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        quota_updates \u003d body[\u0027quota_class_set\u0027].items()"},{"line_number":134,"context_line":"        # TODO(johngarbutt) eventually cores, ram and instances"},{"line_number":135,"context_line":"        #  changes will get sent to keystone when using unified limits,"},{"line_number":136,"context_line":"        #  but only when the quota_class \u003d\u003d \"default\"."},{"line_number":137,"context_line":"        if not limit_utils.use_unified_limits():"},{"line_number":138,"context_line":"            # When not unified limits, keep updating the database,"}],"source_content_type":"text/x-python","patch_set":10,"id":"6a3a068e_1213f54b","line":135,"range":{"start_line":135,"start_character":10,"end_line":135,"end_character":11},"updated":"2021-05-11 14:01:34.000000000","message":"nit","commit_id":"fd5cef0a902b351478a13900706fd498c129434f"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"87801b3c344fb712dee6ceb93f87b1be10f8e1d2","unresolved":true,"context_lines":[{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        quota_updates \u003d body[\u0027quota_class_set\u0027].items()"},{"line_number":134,"context_line":"        # TODO(johngarbutt) eventually cores, ram and instances"},{"line_number":135,"context_line":"        #  changes will get sent to keystone when using unified limits,"},{"line_number":136,"context_line":"        #  but only when the quota_class \u003d\u003d \"default\"."},{"line_number":137,"context_line":"        if not limit_utils.use_unified_limits():"},{"line_number":138,"context_line":"            # When not unified limits, keep updating the database,"}],"source_content_type":"text/x-python","patch_set":10,"id":"ae4c0b16_ccd02774","line":135,"range":{"start_line":135,"start_character":10,"end_line":135,"end_character":11},"updated":"2022-02-02 14:24:46.000000000","message":"nit: extra spec (from PS10)","commit_id":"fd5cef0a902b351478a13900706fd498c129434f"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"7cfc21433f9307365d988ea4e34504e759c81b48","unresolved":false,"context_lines":[{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        quota_updates \u003d body[\u0027quota_class_set\u0027].items()"},{"line_number":134,"context_line":"        # TODO(johngarbutt) eventually cores, ram and instances"},{"line_number":135,"context_line":"        #  changes will get sent to keystone when using unified limits,"},{"line_number":136,"context_line":"        #  but only when the quota_class \u003d\u003d \"default\"."},{"line_number":137,"context_line":"        if not limit_utils.use_unified_limits():"},{"line_number":138,"context_line":"            # When not unified limits, keep updating the database,"}],"source_content_type":"text/x-python","patch_set":10,"id":"8222f0f5_15a9acf8","line":135,"range":{"start_line":135,"start_character":10,"end_line":135,"end_character":11},"in_reply_to":"6223e35f_a3f54da1","updated":"2022-02-11 03:12:15.000000000","message":"Done","commit_id":"fd5cef0a902b351478a13900706fd498c129434f"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"790779d793dae1782516cc068e707cdce7b01e36","unresolved":true,"context_lines":[{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        quota_updates \u003d body[\u0027quota_class_set\u0027].items()"},{"line_number":134,"context_line":"        # TODO(johngarbutt) eventually cores, ram and instances"},{"line_number":135,"context_line":"        #  changes will get sent to keystone when using unified limits,"},{"line_number":136,"context_line":"        #  but only when the quota_class \u003d\u003d \"default\"."},{"line_number":137,"context_line":"        if not limit_utils.use_unified_limits():"},{"line_number":138,"context_line":"            # When not unified limits, keep updating the database,"}],"source_content_type":"text/x-python","patch_set":10,"id":"6223e35f_a3f54da1","line":135,"range":{"start_line":135,"start_character":10,"end_line":135,"end_character":11},"in_reply_to":"6a3a068e_1213f54b","updated":"2021-06-07 14:27:21.000000000","message":"Can you tell I started using pycharm? oops.","commit_id":"fd5cef0a902b351478a13900706fd498c129434f"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"7cfc21433f9307365d988ea4e34504e759c81b48","unresolved":false,"context_lines":[{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        quota_updates \u003d body[\u0027quota_class_set\u0027].items()"},{"line_number":134,"context_line":"        # TODO(johngarbutt) eventually cores, ram and instances"},{"line_number":135,"context_line":"        #  changes will get sent to keystone when using unified limits,"},{"line_number":136,"context_line":"        #  but only when the quota_class \u003d\u003d \"default\"."},{"line_number":137,"context_line":"        if not limit_utils.use_unified_limits():"},{"line_number":138,"context_line":"            # When not unified limits, keep updating the database,"}],"source_content_type":"text/x-python","patch_set":10,"id":"73323431_1f4644ef","line":135,"range":{"start_line":135,"start_character":10,"end_line":135,"end_character":11},"in_reply_to":"ae4c0b16_ccd02774","updated":"2022-02-11 03:12:15.000000000","message":"Done","commit_id":"fd5cef0a902b351478a13900706fd498c129434f"}],"nova/limit/__init__.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5a514e82339abb3b4ac0872d932a202696529094","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"df33271e_3fc4fa90","updated":"2020-03-30 14:48:45.000000000","message":"Any chance this could go into \u0027nova.limit.utils\u0027? I guess we are aiming to remove this at some point but I have an aversion to putting anything that isn\u0027t \u0027__version__\u0027 into \u0027__init__.py\u0027","commit_id":"2ecb2abbd24dda92d2a55ceb0ee99a055b5baa26"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"b66b2f067d1cd1a1de894cef5ee06f2955679807","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"df33271e_1cd80d1c","in_reply_to":"df33271e_3fc4fa90","updated":"2020-03-31 08:50:22.000000000","message":"Yeah, utils can work. I am happy either way.","commit_id":"2ecb2abbd24dda92d2a55ceb0ee99a055b5baa26"}],"nova/limit/local.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5a1172858cd3fd6b6bc9860a744196ef7337eb96","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"def get_local_limits():"},{"line_number":44,"context_line":"    \"\"\"Get all db and api related local limits."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    Note none of these limits are project specific. The limits are set"},{"line_number":47,"context_line":"    globally in configuration options."}],"source_content_type":"text/x-python","patch_set":9,"id":"ff570b3c_815d474a","line":44,"range":{"start_line":44,"start_character":15,"end_line":44,"end_character":25},"updated":"2020-06-10 15:55:23.000000000","message":"nit: DB and API","commit_id":"2799fbec9f4c2162a12c4130eeb434f9e2ea3766"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5a1172858cd3fd6b6bc9860a744196ef7337eb96","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    globally in configuration options."},{"line_number":48,"context_line":"    \"\"\""},{"line_number":49,"context_line":"    all_limits \u003d {}"},{"line_number":50,"context_line":"    for entity_type in API_LIMITS:"},{"line_number":51,"context_line":"        all_limits[entity_type] \u003d getattr(CONF.quota, entity_type)"},{"line_number":52,"context_line":"    for entity_type in DB_COUNT_FUNCTION.keys():"},{"line_number":53,"context_line":"        all_limits[entity_type] \u003d getattr(CONF.quota, entity_type)"},{"line_number":54,"context_line":"    return all_limits"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"ff570b3c_843ef5b6","line":53,"range":{"start_line":50,"start_character":0,"end_line":53,"end_character":66},"updated":"2020-06-10 15:55:23.000000000","message":"Can we not do this? It\u0027s a bit magical and makes it look like we\u0027re not using the config option to the casual observer. I\u0027ve tried dropping this kind of pattern elsewhere Idf08adca1e3a0d19e20bca2447c83f7372516cb7. There\u0027s a lot to be said for a dumb if-else :)\n\n...and now I\u0027ve seen it done below too. Time to go back and comment on those past reviews","commit_id":"2799fbec9f4c2162a12c4130eeb434f9e2ea3766"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5f114d544ec9c0015213e6f10c41225012f59b75","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    globally in configuration options."},{"line_number":48,"context_line":"    \"\"\""},{"line_number":49,"context_line":"    all_limits \u003d {}"},{"line_number":50,"context_line":"    for entity_type in API_LIMITS:"},{"line_number":51,"context_line":"        all_limits[entity_type] \u003d getattr(CONF.quota, entity_type)"},{"line_number":52,"context_line":"    for entity_type in DB_COUNT_FUNCTION.keys():"},{"line_number":53,"context_line":"        all_limits[entity_type] \u003d getattr(CONF.quota, entity_type)"},{"line_number":54,"context_line":"    return all_limits"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"ff570b3c_e486d165","line":53,"range":{"start_line":50,"start_character":0,"end_line":53,"end_character":66},"in_reply_to":"ff570b3c_843ef5b6","updated":"2020-06-10 15:59:47.000000000","message":"Actually those below usages are necessary. Let\u0027s not change those :) This one should go though.\n\n  all_limits \u003d {\n      \u0027metadata_items\u0027: CONF.quota.metadata_items,\n      ...\n      \u0027server_group_members\u0027: CONF.quota.server_group_members,\n  }","commit_id":"2799fbec9f4c2162a12c4130eeb434f9e2ea3766"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"add5e1d7ef5f2e68319f2f3abdb02b1aa2880c84","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    globally in configuration options."},{"line_number":48,"context_line":"    \"\"\""},{"line_number":49,"context_line":"    all_limits \u003d {}"},{"line_number":50,"context_line":"    for entity_type in API_LIMITS:"},{"line_number":51,"context_line":"        all_limits[entity_type] \u003d getattr(CONF.quota, entity_type)"},{"line_number":52,"context_line":"    for entity_type in DB_COUNT_FUNCTION.keys():"},{"line_number":53,"context_line":"        all_limits[entity_type] \u003d getattr(CONF.quota, entity_type)"},{"line_number":54,"context_line":"    return all_limits"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1baaf76f_8d718128","line":53,"range":{"start_line":50,"start_character":0,"end_line":53,"end_character":66},"in_reply_to":"ff570b3c_e486d165","updated":"2021-05-04 19:31:05.000000000","message":"I think I was trying to keep the list of keys DRY, but granted this is over complicated now.","commit_id":"2799fbec9f4c2162a12c4130eeb434f9e2ea3766"}],"nova/quota.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"cf8867cb86db5119e188ab9d9041ec7be84ddfaa","unresolved":false,"context_lines":[{"line_number":786,"context_line":""},{"line_number":787,"context_line":"        :param context: The request context, for access checks."},{"line_number":788,"context_line":"        :param resources: A dictionary of the registered resources."},{"line_number":789,"context_line":"        :param quota_class: The name of the quota class to return"},{"line_number":790,"context_line":"                            quotas for."},{"line_number":791,"context_line":"        \"\"\""},{"line_number":792,"context_line":""},{"line_number":793,"context_line":"        local_limits \u003d local_limit.get_local_limits()"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_ead7334a","line":790,"range":{"start_line":789,"start_character":28,"end_line":790,"end_character":39},"updated":"2020-06-24 23:45:57.000000000","message":"we should update this \u0027This is just a placeholder args and not being used.\u0027","commit_id":"2799fbec9f4c2162a12c4130eeb434f9e2ea3766"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"d50cb709c053450b43c9d946d0449644bce36499","unresolved":false,"context_lines":[{"line_number":791,"context_line":"        \"\"\""},{"line_number":792,"context_line":""},{"line_number":793,"context_line":"        local_limits \u003d local_limit.get_local_limits()"},{"line_number":794,"context_line":"        # Default to unlimited, as per no-op for everything that isn\u0027t"},{"line_number":795,"context_line":"        # a local limit"},{"line_number":796,"context_line":"        quotas \u003d {}"},{"line_number":797,"context_line":"        for resource in resources.values():"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_1f110705","line":794,"range":{"start_line":794,"start_character":10,"end_line":794,"end_character":31},"updated":"2020-06-24 22:39:52.000000000","message":"yeah, this is not changing anything what this driver started with as noop.","commit_id":"2799fbec9f4c2162a12c4130eeb434f9e2ea3766"}],"nova/tests/unit/api/openstack/compute/test_quota_classes.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5a514e82339abb3b4ac0872d932a202696529094","unresolved":false,"context_lines":[{"line_number":235,"context_line":"                                            \"default\", \"ram\", 51200)"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"class UnifiedLimitsQuotaClassesTest(NoopLimitsQuotaClassesTest):"},{"line_number":239,"context_line":"    quota_driver \u003d \"nova.quota.UnifiedLimitsDriver\""},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"df33271e_3f499a30","line":238,"range":{"start_line":238,"start_character":36,"end_line":238,"end_character":62},"updated":"2020-03-30 14:48:45.000000000","message":"At this point I think it would be better use the \u0027NoDBTestCase\u0027 parent of this class and copy \u0027test_update_still_rejects_badrequests\u0027 here. Trying to figure out what we\u0027re *not* overriding will get tough as we bulk this up","commit_id":"2ecb2abbd24dda92d2a55ceb0ee99a055b5baa26"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"b66b2f067d1cd1a1de894cef5ee06f2955679807","unresolved":false,"context_lines":[{"line_number":235,"context_line":"                                            \"default\", \"ram\", 51200)"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"class UnifiedLimitsQuotaClassesTest(NoopLimitsQuotaClassesTest):"},{"line_number":239,"context_line":"    quota_driver \u003d \"nova.quota.UnifiedLimitsDriver\""},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"df33271e_3c0cf1a3","line":238,"range":{"start_line":238,"start_character":36,"end_line":238,"end_character":62},"in_reply_to":"df33271e_3f499a30","updated":"2020-03-31 08:50:22.000000000","message":"I was thinking about that too, good call. I just wasn\u0027t quite sure on when to do the cut over for each of these.\n\nI went for convincing myself that the Noop driver will stay as long as the unified limits driver says. But agreed with your point.","commit_id":"2ecb2abbd24dda92d2a55ceb0ee99a055b5baa26"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"d50cb709c053450b43c9d946d0449644bce36499","unresolved":false,"context_lines":[{"line_number":269,"context_line":"        expected_response \u003d {"},{"line_number":270,"context_line":"            \u0027quota_class_set\u0027: {"},{"line_number":271,"context_line":"                \u0027id\u0027: \u0027default\u0027,"},{"line_number":272,"context_line":"                \u0027cores\u0027: -1,"},{"line_number":273,"context_line":"                \u0027instances\u0027: -1,"},{"line_number":274,"context_line":"                \u0027ram\u0027: -1,"},{"line_number":275,"context_line":"                \u0027key_pairs\u0027: 100,"},{"line_number":276,"context_line":"                \u0027metadata_items\u0027: 128,"},{"line_number":277,"context_line":"                \u0027server_group_members\u0027: 10,"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_1fdf473a","line":274,"range":{"start_line":272,"start_character":0,"end_line":274,"end_character":26},"updated":"2020-06-24 22:39:52.000000000","message":"+1 on keeping them as it is until we start keystone call for them","commit_id":"2799fbec9f4c2162a12c4130eeb434f9e2ea3766"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"d50cb709c053450b43c9d946d0449644bce36499","unresolved":false,"context_lines":[{"line_number":289,"context_line":""},{"line_number":290,"context_line":"    @mock.patch.object(objects.Quotas, \"update_class\")"},{"line_number":291,"context_line":"    def test_update_v257(self, mock_update):"},{"line_number":292,"context_line":"        req \u003d fakes.HTTPRequest.blank(\"\", version\u003d\u00272.57\u0027)"},{"line_number":293,"context_line":"        body \u003d {\u0027quota_class_set\u0027: {\u0027ram\u0027: 51200}}"},{"line_number":294,"context_line":"        response \u003d self.controller.update(req, \u0027default\u0027, body\u003dbody)"},{"line_number":295,"context_line":"        expected_response \u003d {"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_3fb5ebee","line":292,"range":{"start_line":292,"start_character":8,"end_line":292,"end_character":57},"updated":"2020-06-24 22:39:52.000000000","message":"also can we add test for v21 so make sure we still return the network related quotas with -1","commit_id":"2799fbec9f4c2162a12c4130eeb434f9e2ea3766"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"add5e1d7ef5f2e68319f2f3abdb02b1aa2880c84","unresolved":false,"context_lines":[{"line_number":289,"context_line":""},{"line_number":290,"context_line":"    @mock.patch.object(objects.Quotas, \"update_class\")"},{"line_number":291,"context_line":"    def test_update_v257(self, mock_update):"},{"line_number":292,"context_line":"        req \u003d fakes.HTTPRequest.blank(\"\", version\u003d\u00272.57\u0027)"},{"line_number":293,"context_line":"        body \u003d {\u0027quota_class_set\u0027: {\u0027ram\u0027: 51200}}"},{"line_number":294,"context_line":"        response \u003d self.controller.update(req, \u0027default\u0027, body\u003dbody)"},{"line_number":295,"context_line":"        expected_response \u003d {"}],"source_content_type":"text/x-python","patch_set":9,"id":"a4d0fa63_5970134d","line":292,"range":{"start_line":292,"start_character":8,"end_line":292,"end_character":57},"in_reply_to":"bf51134e_3fb5ebee","updated":"2021-05-04 19:31:05.000000000","message":"added","commit_id":"2799fbec9f4c2162a12c4130eeb434f9e2ea3766"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"d50cb709c053450b43c9d946d0449644bce36499","unresolved":false,"context_lines":[{"line_number":286,"context_line":"                                    \u0027ram\u0027: 51200, \u0027unsupported\u0027: 12}}"},{"line_number":287,"context_line":"        self.assertRaises(exception.ValidationError, self.controller.update,"},{"line_number":288,"context_line":"                          req, \u0027test_class\u0027, body\u003dbody)"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"    @mock.patch.object(objects.Quotas, \"update_class\")"},{"line_number":291,"context_line":"    def test_update_v257(self, mock_update):"},{"line_number":292,"context_line":"        req \u003d fakes.HTTPRequest.blank(\"\", version\u003d\u00272.57\u0027)"},{"line_number":293,"context_line":"        body \u003d {\u0027quota_class_set\u0027: {\u0027ram\u0027: 51200}}"},{"line_number":294,"context_line":"        response \u003d self.controller.update(req, \u0027default\u0027, body\u003dbody)"},{"line_number":295,"context_line":"        expected_response \u003d {"},{"line_number":296,"context_line":"            \u0027quota_class_set\u0027: {"},{"line_number":297,"context_line":"                \u0027cores\u0027: -1,"},{"line_number":298,"context_line":"                \u0027instances\u0027: -1,"},{"line_number":299,"context_line":"                \u0027ram\u0027: -1,"},{"line_number":300,"context_line":"                \u0027key_pairs\u0027: 100,"},{"line_number":301,"context_line":"                \u0027metadata_items\u0027: 128,"},{"line_number":302,"context_line":"                \u0027server_group_members\u0027: 10,"},{"line_number":303,"context_line":"                \u0027server_groups\u0027: 12,"},{"line_number":304,"context_line":"            }"},{"line_number":305,"context_line":"        }"},{"line_number":306,"context_line":"        self.assertEqual(expected_response, response)"},{"line_number":307,"context_line":"        self.assertEqual(0, mock_update.call_count)"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"class QuotaClassesPolicyEnforcementV21(test.NoDBTestCase):"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_5fe41f0d","line":307,"range":{"start_line":289,"start_character":0,"end_line":307,"end_character":51},"updated":"2020-06-24 22:39:52.000000000","message":"can we add one more test to update some config value via self.flag and see if that updated value is return in update/show request then config default.","commit_id":"2799fbec9f4c2162a12c4130eeb434f9e2ea3766"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"add5e1d7ef5f2e68319f2f3abdb02b1aa2880c84","unresolved":false,"context_lines":[{"line_number":286,"context_line":"                                    \u0027ram\u0027: 51200, \u0027unsupported\u0027: 12}}"},{"line_number":287,"context_line":"        self.assertRaises(exception.ValidationError, self.controller.update,"},{"line_number":288,"context_line":"                          req, \u0027test_class\u0027, body\u003dbody)"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"    @mock.patch.object(objects.Quotas, \"update_class\")"},{"line_number":291,"context_line":"    def test_update_v257(self, mock_update):"},{"line_number":292,"context_line":"        req \u003d fakes.HTTPRequest.blank(\"\", version\u003d\u00272.57\u0027)"},{"line_number":293,"context_line":"        body \u003d {\u0027quota_class_set\u0027: {\u0027ram\u0027: 51200}}"},{"line_number":294,"context_line":"        response \u003d self.controller.update(req, \u0027default\u0027, body\u003dbody)"},{"line_number":295,"context_line":"        expected_response \u003d {"},{"line_number":296,"context_line":"            \u0027quota_class_set\u0027: {"},{"line_number":297,"context_line":"                \u0027cores\u0027: -1,"},{"line_number":298,"context_line":"                \u0027instances\u0027: -1,"},{"line_number":299,"context_line":"                \u0027ram\u0027: -1,"},{"line_number":300,"context_line":"                \u0027key_pairs\u0027: 100,"},{"line_number":301,"context_line":"                \u0027metadata_items\u0027: 128,"},{"line_number":302,"context_line":"                \u0027server_group_members\u0027: 10,"},{"line_number":303,"context_line":"                \u0027server_groups\u0027: 12,"},{"line_number":304,"context_line":"            }"},{"line_number":305,"context_line":"        }"},{"line_number":306,"context_line":"        self.assertEqual(expected_response, response)"},{"line_number":307,"context_line":"        self.assertEqual(0, mock_update.call_count)"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"class QuotaClassesPolicyEnforcementV21(test.NoDBTestCase):"}],"source_content_type":"text/x-python","patch_set":9,"id":"0ad0b68b_edc36048","line":307,"range":{"start_line":289,"start_character":0,"end_line":307,"end_character":51},"in_reply_to":"bf51134e_5fe41f0d","updated":"2021-05-04 19:31:05.000000000","message":"Yes, although I added that in test_show_v21","commit_id":"2799fbec9f4c2162a12c4130eeb434f9e2ea3766"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5a1172858cd3fd6b6bc9860a744196ef7337eb96","unresolved":false,"context_lines":[{"line_number":305,"context_line":"        }"},{"line_number":306,"context_line":"        self.assertEqual(expected_response, response)"},{"line_number":307,"context_line":"        self.assertEqual(0, mock_update.call_count)"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"class QuotaClassesPolicyEnforcementV21(test.NoDBTestCase):"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"    def setUp(self):"},{"line_number":313,"context_line":"        super(QuotaClassesPolicyEnforcementV21, self).setUp()"},{"line_number":314,"context_line":"        self.controller \u003d quota_classes_v21.QuotaClassSetsController()"},{"line_number":315,"context_line":"        self.req \u003d fakes.HTTPRequest.blank(\u0027\u0027)"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"    def test_show_policy_failed(self):"},{"line_number":318,"context_line":"        rule_name \u003d \"os_compute_api:os-quota-class-sets:show\""},{"line_number":319,"context_line":"        self.policy.set_rules({rule_name: \"quota_class:non_fake\"})"},{"line_number":320,"context_line":"        exc \u003d self.assertRaises("},{"line_number":321,"context_line":"            exception.PolicyNotAuthorized,"},{"line_number":322,"context_line":"            self.controller.show, self.req, fakes.FAKE_UUID)"},{"line_number":323,"context_line":"        self.assertEqual("},{"line_number":324,"context_line":"            \"Policy doesn\u0027t allow %s to be performed.\" % rule_name,"},{"line_number":325,"context_line":"            exc.format_message())"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"    def test_update_policy_failed(self):"},{"line_number":328,"context_line":"        rule_name \u003d \"os_compute_api:os-quota-class-sets:update\""},{"line_number":329,"context_line":"        self.policy.set_rules({rule_name: \"quota_class:non_fake\"})"},{"line_number":330,"context_line":"        exc \u003d self.assertRaises("},{"line_number":331,"context_line":"            exception.PolicyNotAuthorized,"},{"line_number":332,"context_line":"            self.controller.update, self.req, fakes.FAKE_UUID,"},{"line_number":333,"context_line":"            body\u003d{\u0027quota_class_set\u0027: {}})"},{"line_number":334,"context_line":"        self.assertEqual("},{"line_number":335,"context_line":"            \"Policy doesn\u0027t allow %s to be performed.\" % rule_name,"},{"line_number":336,"context_line":"            exc.format_message())"}],"source_content_type":"text/x-python","patch_set":9,"id":"ff570b3c_41120f64","line":336,"range":{"start_line":308,"start_character":0,"end_line":336,"end_character":33},"updated":"2020-06-10 15:55:23.000000000","message":"Looks like a merge conflict since this stuff was all moved to nova.tests.unit.policy by gmann, right?","commit_id":"2799fbec9f4c2162a12c4130eeb434f9e2ea3766"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"add5e1d7ef5f2e68319f2f3abdb02b1aa2880c84","unresolved":false,"context_lines":[{"line_number":305,"context_line":"        }"},{"line_number":306,"context_line":"        self.assertEqual(expected_response, response)"},{"line_number":307,"context_line":"        self.assertEqual(0, mock_update.call_count)"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"class QuotaClassesPolicyEnforcementV21(test.NoDBTestCase):"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"    def setUp(self):"},{"line_number":313,"context_line":"        super(QuotaClassesPolicyEnforcementV21, self).setUp()"},{"line_number":314,"context_line":"        self.controller \u003d quota_classes_v21.QuotaClassSetsController()"},{"line_number":315,"context_line":"        self.req \u003d fakes.HTTPRequest.blank(\u0027\u0027)"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"    def test_show_policy_failed(self):"},{"line_number":318,"context_line":"        rule_name \u003d \"os_compute_api:os-quota-class-sets:show\""},{"line_number":319,"context_line":"        self.policy.set_rules({rule_name: \"quota_class:non_fake\"})"},{"line_number":320,"context_line":"        exc \u003d self.assertRaises("},{"line_number":321,"context_line":"            exception.PolicyNotAuthorized,"},{"line_number":322,"context_line":"            self.controller.show, self.req, fakes.FAKE_UUID)"},{"line_number":323,"context_line":"        self.assertEqual("},{"line_number":324,"context_line":"            \"Policy doesn\u0027t allow %s to be performed.\" % rule_name,"},{"line_number":325,"context_line":"            exc.format_message())"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"    def test_update_policy_failed(self):"},{"line_number":328,"context_line":"        rule_name \u003d \"os_compute_api:os-quota-class-sets:update\""},{"line_number":329,"context_line":"        self.policy.set_rules({rule_name: \"quota_class:non_fake\"})"},{"line_number":330,"context_line":"        exc \u003d self.assertRaises("},{"line_number":331,"context_line":"            exception.PolicyNotAuthorized,"},{"line_number":332,"context_line":"            self.controller.update, self.req, fakes.FAKE_UUID,"},{"line_number":333,"context_line":"            body\u003d{\u0027quota_class_set\u0027: {}})"},{"line_number":334,"context_line":"        self.assertEqual("},{"line_number":335,"context_line":"            \"Policy doesn\u0027t allow %s to be performed.\" % rule_name,"},{"line_number":336,"context_line":"            exc.format_message())"}],"source_content_type":"text/x-python","patch_set":9,"id":"f506b3d0_d875f828","line":336,"range":{"start_line":308,"start_character":0,"end_line":336,"end_character":33},"in_reply_to":"ff570b3c_41120f64","updated":"2021-05-04 19:31:05.000000000","message":"ack, removed.","commit_id":"2799fbec9f4c2162a12c4130eeb434f9e2ea3766"}],"nova/tests/unit/limit/test_local.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5a1172858cd3fd6b6bc9860a744196ef7337eb96","unresolved":false,"context_lines":[{"line_number":145,"context_line":"                          uuids.server_group, 11)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    def test_get_local_limits(self):"},{"line_number":148,"context_line":"        self.flags(server_groups\u003d12, group\u003d\u0027quota\u0027)"},{"line_number":149,"context_line":"        limits \u003d local_limit.get_local_limits()"},{"line_number":150,"context_line":"        expected_limits \u003d {"},{"line_number":151,"context_line":"            \u0027key_pairs\u0027: 100,"}],"source_content_type":"text/x-python","patch_set":9,"id":"ff570b3c_04fdc507","line":148,"range":{"start_line":148,"start_character":0,"end_line":148,"end_character":51},"updated":"2020-06-10 15:55:23.000000000","message":"Wouldn\u0027t it be better override all the config options? Also, docstring would be nice","commit_id":"2799fbec9f4c2162a12c4130eeb434f9e2ea3766"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"add5e1d7ef5f2e68319f2f3abdb02b1aa2880c84","unresolved":false,"context_lines":[{"line_number":145,"context_line":"                          uuids.server_group, 11)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    def test_get_local_limits(self):"},{"line_number":148,"context_line":"        self.flags(server_groups\u003d12, group\u003d\u0027quota\u0027)"},{"line_number":149,"context_line":"        limits \u003d local_limit.get_local_limits()"},{"line_number":150,"context_line":"        expected_limits \u003d {"},{"line_number":151,"context_line":"            \u0027key_pairs\u0027: 100,"}],"source_content_type":"text/x-python","patch_set":9,"id":"1955a37a_786724d9","line":148,"range":{"start_line":148,"start_character":0,"end_line":148,"end_character":51},"in_reply_to":"ff570b3c_04fdc507","updated":"2021-05-04 19:31:05.000000000","message":"yes, it would.","commit_id":"2799fbec9f4c2162a12c4130eeb434f9e2ea3766"}],"nova/tests/unit/test_quota.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5a1172858cd3fd6b6bc9860a744196ef7337eb96","unresolved":false,"context_lines":[{"line_number":1929,"context_line":"    def setUp(self):"},{"line_number":1930,"context_line":"        super(UnifiedLimitsDriverTestCase, self).setUp()"},{"line_number":1931,"context_line":"        self.driver \u003d quota.UnifiedLimitsDriver()"},{"line_number":1932,"context_line":"        self.flags(server_groups\u003d12, group\u003d\u0027quota\u0027)"},{"line_number":1933,"context_line":""},{"line_number":1934,"context_line":"    def test_get_class_quotas(self):"},{"line_number":1935,"context_line":"        result \u003d self.driver.get_class_quotas(None,"}],"source_content_type":"text/x-python","patch_set":9,"id":"ff570b3c_a43059ea","line":1932,"updated":"2020-06-10 15:55:23.000000000","message":"Would it be worth setting all the flags?","commit_id":"2799fbec9f4c2162a12c4130eeb434f9e2ea3766"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"add5e1d7ef5f2e68319f2f3abdb02b1aa2880c84","unresolved":false,"context_lines":[{"line_number":1929,"context_line":"    def setUp(self):"},{"line_number":1930,"context_line":"        super(UnifiedLimitsDriverTestCase, self).setUp()"},{"line_number":1931,"context_line":"        self.driver \u003d quota.UnifiedLimitsDriver()"},{"line_number":1932,"context_line":"        self.flags(server_groups\u003d12, group\u003d\u0027quota\u0027)"},{"line_number":1933,"context_line":""},{"line_number":1934,"context_line":"    def test_get_class_quotas(self):"},{"line_number":1935,"context_line":"        result \u003d self.driver.get_class_quotas(None,"}],"source_content_type":"text/x-python","patch_set":9,"id":"86292212_445d874c","line":1932,"in_reply_to":"ff570b3c_a43059ea","updated":"2021-05-04 19:31:05.000000000","message":"I like us testing the default flags here. Changing them kinda does change the API, so it keeps us honest? The only reason to set one is so sever_groups and server_group_members are both different in the response.","commit_id":"2799fbec9f4c2162a12c4130eeb434f9e2ea3766"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5a1172858cd3fd6b6bc9860a744196ef7337eb96","unresolved":false,"context_lines":[{"line_number":1931,"context_line":"        self.driver \u003d quota.UnifiedLimitsDriver()"},{"line_number":1932,"context_line":"        self.flags(server_groups\u003d12, group\u003d\u0027quota\u0027)"},{"line_number":1933,"context_line":""},{"line_number":1934,"context_line":"    def test_get_class_quotas(self):"},{"line_number":1935,"context_line":"        result \u003d self.driver.get_class_quotas(None,"},{"line_number":1936,"context_line":"                                              quota.QUOTAS._resources,"},{"line_number":1937,"context_line":"                                              \u0027default\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"ff570b3c_c433cdf5","line":1934,"updated":"2020-06-10 15:55:23.000000000","message":"A docstring explaining how this is impacted by the config options would be nice.","commit_id":"2799fbec9f4c2162a12c4130eeb434f9e2ea3766"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"add5e1d7ef5f2e68319f2f3abdb02b1aa2880c84","unresolved":false,"context_lines":[{"line_number":1931,"context_line":"        self.driver \u003d quota.UnifiedLimitsDriver()"},{"line_number":1932,"context_line":"        self.flags(server_groups\u003d12, group\u003d\u0027quota\u0027)"},{"line_number":1933,"context_line":""},{"line_number":1934,"context_line":"    def test_get_class_quotas(self):"},{"line_number":1935,"context_line":"        result \u003d self.driver.get_class_quotas(None,"},{"line_number":1936,"context_line":"                                              quota.QUOTAS._resources,"},{"line_number":1937,"context_line":"                                              \u0027default\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"932532a6_fcfd9306","line":1934,"in_reply_to":"ff570b3c_c433cdf5","updated":"2021-05-04 19:31:05.000000000","message":"added one next to where I set the config value","commit_id":"2799fbec9f4c2162a12c4130eeb434f9e2ea3766"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5a1172858cd3fd6b6bc9860a744196ef7337eb96","unresolved":false,"context_lines":[{"line_number":1933,"context_line":""},{"line_number":1934,"context_line":"    def test_get_class_quotas(self):"},{"line_number":1935,"context_line":"        result \u003d self.driver.get_class_quotas(None,"},{"line_number":1936,"context_line":"                                              quota.QUOTAS._resources,"},{"line_number":1937,"context_line":"                                              \u0027default\u0027)"},{"line_number":1938,"context_line":"        expected_limits \u003d {"},{"line_number":1939,"context_line":"            \u0027cores\u0027: -1,"}],"source_content_type":"text/x-python","patch_set":9,"id":"ff570b3c_242569ac","line":1936,"updated":"2020-06-10 15:55:23.000000000","message":"style nit: wrapping :(","commit_id":"2799fbec9f4c2162a12c4130eeb434f9e2ea3766"}]}
