)]}'
{"keystone/common/policies/limit.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a0348c1a654fe459f0e2568cf99ab57febb1302e","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"},{"line_number":52,"context_line":"        scope_types\u003d[\u0027system\u0027],"},{"line_number":53,"context_line":"        description\u003d\u0027Update limit.\u0027,"},{"line_number":54,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v3/limits/{limit_id}\u0027,"},{"line_number":55,"context_line":"                     \u0027method\u0027: \u0027PATCH\u0027}]),"},{"line_number":56,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":57,"context_line":"        name\u003dbase.IDENTITY % \u0027delete_limit\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_ebd9c055","line":54,"range":{"start_line":54,"start_character":40,"end_line":54,"end_character":50},"updated":"2018-04-11 19:27:02.000000000","message":"oops - i think this was wrong before?","commit_id":"c9c4e53c9ee397d8b92dc9959d6f8c0813800ae7"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"2100cce8a025427d875f7c639252968acb27ca35","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"},{"line_number":52,"context_line":"        scope_types\u003d[\u0027system\u0027],"},{"line_number":53,"context_line":"        description\u003d\u0027Update limit.\u0027,"},{"line_number":54,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v3/limits/{limit_id}\u0027,"},{"line_number":55,"context_line":"                     \u0027method\u0027: \u0027PATCH\u0027}]),"},{"line_number":56,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":57,"context_line":"        name\u003dbase.IDENTITY % \u0027delete_limit\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_99cc1336","line":54,"range":{"start_line":54,"start_character":40,"end_line":54,"end_character":50},"in_reply_to":"bf659307_ebd9c055","updated":"2018-04-12 03:40:18.000000000","message":"yep","commit_id":"c9c4e53c9ee397d8b92dc9959d6f8c0813800ae7"}],"keystone/limit/backends/base.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"cfb5841463724f1cc94148d1a02127e651adc232","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        \"\"\"Update existing registered limits."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        :param registered_limit_id: the id of the registered limit."},{"line_number":54,"context_line":"        :param registered_limit: the registered limit to update."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        :returns: the updated registered limit."},{"line_number":57,"context_line":"        :raises keystone.exception.RegisteredLimitNotFound: If registered limit"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_eeab04d3","line":54,"range":{"start_line":54,"start_character":48,"end_line":54,"end_character":53},"updated":"2018-04-12 04:02:32.000000000","message":"nit: \n\n  a dict containing the registered limit attributes to update","commit_id":"27ead2e892df2347162f776c6ec97ba847ebaf5f"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"db06b12bc55b21ff56f7332de4d5403f2764ff3f","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        \"\"\"Update existing registered limits."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        :param registered_limit_id: the id of the registered limit."},{"line_number":54,"context_line":"        :param registered_limit: the registered limit to update."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        :returns: the updated registered limit."},{"line_number":57,"context_line":"        :raises keystone.exception.RegisteredLimitNotFound: If registered limit"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_df97c88f","line":54,"range":{"start_line":54,"start_character":48,"end_line":54,"end_character":53},"in_reply_to":"bf659307_eeab04d3","updated":"2018-04-12 06:54:31.000000000","message":"Done","commit_id":"27ead2e892df2347162f776c6ec97ba847ebaf5f"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"cfb5841463724f1cc94148d1a02127e651adc232","unresolved":false,"context_lines":[{"line_number":119,"context_line":"        \"\"\"Update existing limits."},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        :param limit_id: the id of the limit."},{"line_number":122,"context_line":"        :param limit: the limit to update."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        :returns: the updated limit."},{"line_number":125,"context_line":"        :raises keystone.exception.LimitNotFound: If limit doesn\u0027t"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_6e893473","line":122,"range":{"start_line":122,"start_character":26,"end_line":122,"end_character":31},"updated":"2018-04-12 04:02:32.000000000","message":"same nit here as above.","commit_id":"27ead2e892df2347162f776c6ec97ba847ebaf5f"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"db06b12bc55b21ff56f7332de4d5403f2764ff3f","unresolved":false,"context_lines":[{"line_number":119,"context_line":"        \"\"\"Update existing limits."},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        :param limit_id: the id of the limit."},{"line_number":122,"context_line":"        :param limit: the limit to update."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        :returns: the updated limit."},{"line_number":125,"context_line":"        :raises keystone.exception.LimitNotFound: If limit doesn\u0027t"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_3fcda4b6","line":122,"range":{"start_line":122,"start_character":26,"end_line":122,"end_character":31},"in_reply_to":"bf659307_6e893473","updated":"2018-04-12 06:54:31.000000000","message":"Done","commit_id":"27ead2e892df2347162f776c6ec97ba847ebaf5f"}],"keystone/limit/backends/sql.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a0348c1a654fe459f0e2568cf99ab57febb1302e","unresolved":false,"context_lines":[{"line_number":159,"context_line":"                    if attr !\u003d \u0027id\u0027:"},{"line_number":160,"context_line":"                        setattr(ref, attr, getattr(new_registered_limit,"},{"line_number":161,"context_line":"                                                   attr))"},{"line_number":162,"context_line":"                return ref.to_dict()"},{"line_number":163,"context_line":"        except db_exception.DBReferenceError:"},{"line_number":164,"context_line":"            raise exception.RegisteredLimitError(id\u003dregistered_limit_id)"},{"line_number":165,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_0b867414","line":162,"range":{"start_line":162,"start_character":16,"end_line":162,"end_character":36},"updated":"2018-04-11 19:27:02.000000000","message":"Aha - so we are just returning a single entity.","commit_id":"c9c4e53c9ee397d8b92dc9959d6f8c0813800ae7"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"cfb5841463724f1cc94148d1a02127e651adc232","unresolved":false,"context_lines":[{"line_number":148,"context_line":"    def update_registered_limit(self, registered_limit_id, registered_limit):"},{"line_number":149,"context_line":"        try:"},{"line_number":150,"context_line":"            with sql.session_for_write() as session:"},{"line_number":151,"context_line":"                ref \u003d self._get_registered_limit(session, registered_limit_id)"},{"line_number":152,"context_line":"                if not ref.region_id:"},{"line_number":153,"context_line":"                    self._check_referenced_limit_without_region(ref)"},{"line_number":154,"context_line":"                old_dict \u003d ref.to_dict()"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_2ef49cf0","line":151,"updated":"2018-04-12 04:02:32.000000000","message":"Removing the batch processing from this API really made this implementation easier to understand.","commit_id":"27ead2e892df2347162f776c6ec97ba847ebaf5f"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"cfb5841463724f1cc94148d1a02127e651adc232","unresolved":false,"context_lines":[{"line_number":155,"context_line":"                old_dict.update(registered_limit)"},{"line_number":156,"context_line":"                new_registered_limit \u003d RegisteredLimitModel.from_dict("},{"line_number":157,"context_line":"                    old_dict)"},{"line_number":158,"context_line":"                for attr in RegisteredLimitModel.attributes:"},{"line_number":159,"context_line":"                    if attr !\u003d \u0027id\u0027:"},{"line_number":160,"context_line":"                        setattr(ref, attr, getattr(new_registered_limit,"},{"line_number":161,"context_line":"                                                   attr))"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_ce4ac025","line":158,"range":{"start_line":158,"start_character":28,"end_line":158,"end_character":59},"updated":"2018-04-12 04:02:32.000000000","message":"Instead of traversing every possible attribute of the limit, wouldn\u0027t we be able to just traverse the attributes passed into the method in the registered_limit?\n\n  for attr in registered_limit:\n\nIn fact, can\u0027t we just use the old_dict after we updated it on line 155? I feel like I\u0027ve seen a way to pass a dictionary to sqlalchemy to have it update the record in the database. I can dig around or try it locally. I could be wrong.","commit_id":"27ead2e892df2347162f776c6ec97ba847ebaf5f"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"e72ca5b81998669e787fd112d752ac55181e91ad","unresolved":false,"context_lines":[{"line_number":155,"context_line":"                old_dict.update(registered_limit)"},{"line_number":156,"context_line":"                new_registered_limit \u003d RegisteredLimitModel.from_dict("},{"line_number":157,"context_line":"                    old_dict)"},{"line_number":158,"context_line":"                for attr in RegisteredLimitModel.attributes:"},{"line_number":159,"context_line":"                    if attr !\u003d \u0027id\u0027:"},{"line_number":160,"context_line":"                        setattr(ref, attr, getattr(new_registered_limit,"},{"line_number":161,"context_line":"                                                   attr))"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_6663f7de","line":158,"range":{"start_line":158,"start_character":28,"end_line":158,"end_character":59},"in_reply_to":"bf659307_7fc31cee","updated":"2018-06-06 14:37:57.000000000","message":"++","commit_id":"27ead2e892df2347162f776c6ec97ba847ebaf5f"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"db06b12bc55b21ff56f7332de4d5403f2764ff3f","unresolved":false,"context_lines":[{"line_number":155,"context_line":"                old_dict.update(registered_limit)"},{"line_number":156,"context_line":"                new_registered_limit \u003d RegisteredLimitModel.from_dict("},{"line_number":157,"context_line":"                    old_dict)"},{"line_number":158,"context_line":"                for attr in RegisteredLimitModel.attributes:"},{"line_number":159,"context_line":"                    if attr !\u003d \u0027id\u0027:"},{"line_number":160,"context_line":"                        setattr(ref, attr, getattr(new_registered_limit,"},{"line_number":161,"context_line":"                                                   attr))"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_7fc31cee","line":158,"range":{"start_line":158,"start_character":28,"end_line":158,"end_character":59},"in_reply_to":"bf659307_ce4ac025","updated":"2018-04-12 06:54:31.000000000","message":"yeah, here is something like obj-\u003e dict -\u003e obj,\nif changed to obj.update(dict), it\u0027ll be cool. It can be done in a new refactor patch.","commit_id":"27ead2e892df2347162f776c6ec97ba847ebaf5f"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"cfb5841463724f1cc94148d1a02127e651adc232","unresolved":false,"context_lines":[{"line_number":157,"context_line":"                    old_dict)"},{"line_number":158,"context_line":"                for attr in RegisteredLimitModel.attributes:"},{"line_number":159,"context_line":"                    if attr !\u003d \u0027id\u0027:"},{"line_number":160,"context_line":"                        setattr(ref, attr, getattr(new_registered_limit,"},{"line_number":161,"context_line":"                                                   attr))"},{"line_number":162,"context_line":"                return ref.to_dict()"},{"line_number":163,"context_line":"        except db_exception.DBReferenceError:"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_eec22485","line":160,"range":{"start_line":160,"start_character":24,"end_line":160,"end_character":31},"updated":"2018-04-12 04:02:32.000000000","message":"This is what updates the value in SQL, right?","commit_id":"27ead2e892df2347162f776c6ec97ba847ebaf5f"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"40f26acf667cb64f43dfb9c83cd47a9453302459","unresolved":false,"context_lines":[{"line_number":157,"context_line":"                    old_dict)"},{"line_number":158,"context_line":"                for attr in RegisteredLimitModel.attributes:"},{"line_number":159,"context_line":"                    if attr !\u003d \u0027id\u0027:"},{"line_number":160,"context_line":"                        setattr(ref, attr, getattr(new_registered_limit,"},{"line_number":161,"context_line":"                                                   attr))"},{"line_number":162,"context_line":"                return ref.to_dict()"},{"line_number":163,"context_line":"        except db_exception.DBReferenceError:"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_104206ac","line":160,"range":{"start_line":160,"start_character":24,"end_line":160,"end_character":31},"in_reply_to":"bf659307_5fddf811","updated":"2018-04-12 13:55:14.000000000","message":"Oh that\u0027s right. The context manager should handle that.","commit_id":"27ead2e892df2347162f776c6ec97ba847ebaf5f"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"db06b12bc55b21ff56f7332de4d5403f2764ff3f","unresolved":false,"context_lines":[{"line_number":157,"context_line":"                    old_dict)"},{"line_number":158,"context_line":"                for attr in RegisteredLimitModel.attributes:"},{"line_number":159,"context_line":"                    if attr !\u003d \u0027id\u0027:"},{"line_number":160,"context_line":"                        setattr(ref, attr, getattr(new_registered_limit,"},{"line_number":161,"context_line":"                                                   attr))"},{"line_number":162,"context_line":"                return ref.to_dict()"},{"line_number":163,"context_line":"        except db_exception.DBReferenceError:"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_5fddf811","line":160,"range":{"start_line":160,"start_character":24,"end_line":160,"end_character":31},"in_reply_to":"bf659307_eec22485","updated":"2018-04-12 06:54:31.000000000","message":"yeah, then the new data will be  wrote db after \"with...session\"","commit_id":"27ead2e892df2347162f776c6ec97ba847ebaf5f"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"cfb5841463724f1cc94148d1a02127e651adc232","unresolved":false,"context_lines":[{"line_number":215,"context_line":"        with sql.session_for_write() as session:"},{"line_number":216,"context_line":"            ref \u003d self._get_limit(session, limit_id)"},{"line_number":217,"context_line":"            old_dict \u003d ref.to_dict()"},{"line_number":218,"context_line":"            old_dict[\u0027resource_limit\u0027] \u003d limit[\u0027resource_limit\u0027]"},{"line_number":219,"context_line":"            new_limit \u003d LimitModel.from_dict(old_dict)"},{"line_number":220,"context_line":"            ref.resource_limit \u003d new_limit.resource_limit"},{"line_number":221,"context_line":"            return ref.to_dict()"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_ce21604f","line":218,"range":{"start_line":218,"start_character":48,"end_line":218,"end_character":62},"updated":"2018-04-12 04:02:32.000000000","message":"Is this the only attribute that can be updated in this request? Are all the other attributes of a project limit immutable?","commit_id":"27ead2e892df2347162f776c6ec97ba847ebaf5f"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"db06b12bc55b21ff56f7332de4d5403f2764ff3f","unresolved":false,"context_lines":[{"line_number":215,"context_line":"        with sql.session_for_write() as session:"},{"line_number":216,"context_line":"            ref \u003d self._get_limit(session, limit_id)"},{"line_number":217,"context_line":"            old_dict \u003d ref.to_dict()"},{"line_number":218,"context_line":"            old_dict[\u0027resource_limit\u0027] \u003d limit[\u0027resource_limit\u0027]"},{"line_number":219,"context_line":"            new_limit \u003d LimitModel.from_dict(old_dict)"},{"line_number":220,"context_line":"            ref.resource_limit \u003d new_limit.resource_limit"},{"line_number":221,"context_line":"            return ref.to_dict()"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_1f56a0cf","line":218,"range":{"start_line":218,"start_character":48,"end_line":218,"end_character":62},"in_reply_to":"bf659307_ce21604f","updated":"2018-04-12 06:54:31.000000000","message":"yes, other properties are service_id, project_id, region_id, resource_name, they are all related to registered limits.","commit_id":"27ead2e892df2347162f776c6ec97ba847ebaf5f"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"efb9e563a6d842b90e0620c9b257cb00531afb11","unresolved":false,"context_lines":[{"line_number":221,"context_line":"            old_dict \u003d ref.to_dict()"},{"line_number":222,"context_line":"            old_dict.update(limit)"},{"line_number":223,"context_line":"            new_limit \u003d LimitModel.from_dict(old_dict)"},{"line_number":224,"context_line":"            ref.resource_limit \u003d new_limit.resource_limit"},{"line_number":225,"context_line":"            ref.description \u003d new_limit.description"},{"line_number":226,"context_line":"            return ref.to_dict()"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"    @driver_hints.truncated"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f7c97a3_86cad39e","line":225,"range":{"start_line":224,"start_character":12,"end_line":225,"end_character":51},"updated":"2018-06-06 14:49:11.000000000","message":"We pull these out explicitly because they are the only attributes to update with a project limit?","commit_id":"6db852add7647d029afb8faa475451c499aab1db"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"260f1c20bda5257a41a5a81c558e975ba7f24d06","unresolved":false,"context_lines":[{"line_number":221,"context_line":"            old_dict \u003d ref.to_dict()"},{"line_number":222,"context_line":"            old_dict.update(limit)"},{"line_number":223,"context_line":"            new_limit \u003d LimitModel.from_dict(old_dict)"},{"line_number":224,"context_line":"            ref.resource_limit \u003d new_limit.resource_limit"},{"line_number":225,"context_line":"            ref.description \u003d new_limit.description"},{"line_number":226,"context_line":"            return ref.to_dict()"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"    @driver_hints.truncated"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f7c97a3_001bfa1b","line":225,"range":{"start_line":224,"start_character":12,"end_line":225,"end_character":51},"in_reply_to":"5f7c97a3_86cad39e","updated":"2018-06-07 02:49:13.000000000","message":"yeah, \"resource_limit\" and \"description\" are the attributes can be updated for project limits","commit_id":"6db852add7647d029afb8faa475451c499aab1db"}],"keystone/limit/controllers.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a0348c1a654fe459f0e2568cf99ab57febb1302e","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        validation.lazy_validate(schema.registered_limit_update,"},{"line_number":47,"context_line":"                                 registered_limit)"},{"line_number":48,"context_line":"        self._require_matching_id(registered_limit_id, registered_limit)"},{"line_number":49,"context_line":"        refs \u003d self.unified_limit_api.update_registered_limit("},{"line_number":50,"context_line":"            registered_limit_id, registered_limit)"},{"line_number":51,"context_line":"        return RegisteredLimitV3.wrap_member(request.context_dict, refs)"},{"line_number":52,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_cbcddc85","line":49,"range":{"start_line":49,"start_character":8,"end_line":49,"end_character":12},"updated":"2018-04-11 19:27:02.000000000","message":"Is this returning more than the limit that was updated? Looking at the code in sql.py, this appears to be a single entity. The names `refs` is slightly inaccurate here since it\u0027s no longer plural with the new implementation.","commit_id":"c9c4e53c9ee397d8b92dc9959d6f8c0813800ae7"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a0348c1a654fe459f0e2568cf99ab57febb1302e","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        validation.lazy_validate(schema.registered_limit_update,"},{"line_number":47,"context_line":"                                 registered_limit)"},{"line_number":48,"context_line":"        self._require_matching_id(registered_limit_id, registered_limit)"},{"line_number":49,"context_line":"        refs \u003d self.unified_limit_api.update_registered_limit("},{"line_number":50,"context_line":"            registered_limit_id, registered_limit)"},{"line_number":51,"context_line":"        return RegisteredLimitV3.wrap_member(request.context_dict, refs)"},{"line_number":52,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_4bc22c5b","line":49,"range":{"start_line":49,"start_character":15,"end_line":49,"end_character":19},"updated":"2018-04-11 19:27:02.000000000","message":"This should use the PROVIDERS dictionary:\n\n  refs \u003d PROVIDERS.unified_limit_api.","commit_id":"c9c4e53c9ee397d8b92dc9959d6f8c0813800ae7"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"2100cce8a025427d875f7c639252968acb27ca35","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        validation.lazy_validate(schema.registered_limit_update,"},{"line_number":47,"context_line":"                                 registered_limit)"},{"line_number":48,"context_line":"        self._require_matching_id(registered_limit_id, registered_limit)"},{"line_number":49,"context_line":"        refs \u003d self.unified_limit_api.update_registered_limit("},{"line_number":50,"context_line":"            registered_limit_id, registered_limit)"},{"line_number":51,"context_line":"        return RegisteredLimitV3.wrap_member(request.context_dict, refs)"},{"line_number":52,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_6bd7e64c","line":49,"range":{"start_line":49,"start_character":15,"end_line":49,"end_character":19},"in_reply_to":"bf659307_4bc22c5b","updated":"2018-04-12 03:40:18.000000000","message":"Done","commit_id":"c9c4e53c9ee397d8b92dc9959d6f8c0813800ae7"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"2100cce8a025427d875f7c639252968acb27ca35","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        validation.lazy_validate(schema.registered_limit_update,"},{"line_number":47,"context_line":"                                 registered_limit)"},{"line_number":48,"context_line":"        self._require_matching_id(registered_limit_id, registered_limit)"},{"line_number":49,"context_line":"        refs \u003d self.unified_limit_api.update_registered_limit("},{"line_number":50,"context_line":"            registered_limit_id, registered_limit)"},{"line_number":51,"context_line":"        return RegisteredLimitV3.wrap_member(request.context_dict, refs)"},{"line_number":52,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_ab665eba","line":49,"range":{"start_line":49,"start_character":8,"end_line":49,"end_character":12},"in_reply_to":"bf659307_cbcddc85","updated":"2018-04-12 03:40:18.000000000","message":"I\u0027ll change to a suitable name.","commit_id":"c9c4e53c9ee397d8b92dc9959d6f8c0813800ae7"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a0348c1a654fe459f0e2568cf99ab57febb1302e","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        self._require_matching_id(registered_limit_id, registered_limit)"},{"line_number":49,"context_line":"        refs \u003d self.unified_limit_api.update_registered_limit("},{"line_number":50,"context_line":"            registered_limit_id, registered_limit)"},{"line_number":51,"context_line":"        return RegisteredLimitV3.wrap_member(request.context_dict, refs)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    @controller.filterprotected(\u0027service_id\u0027, \u0027region_id\u0027, \u0027resource_name\u0027)"},{"line_number":54,"context_line":"    def list_registered_limits(self, request, filters):"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_8b984475","line":51,"range":{"start_line":51,"start_character":33,"end_line":51,"end_character":44},"updated":"2018-04-11 19:27:02.000000000","message":"Judging by this, it looks like we\u0027re dealing with a single entry.","commit_id":"c9c4e53c9ee397d8b92dc9959d6f8c0813800ae7"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"2100cce8a025427d875f7c639252968acb27ca35","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        self._require_matching_id(registered_limit_id, registered_limit)"},{"line_number":49,"context_line":"        refs \u003d self.unified_limit_api.update_registered_limit("},{"line_number":50,"context_line":"            registered_limit_id, registered_limit)"},{"line_number":51,"context_line":"        return RegisteredLimitV3.wrap_member(request.context_dict, refs)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    @controller.filterprotected(\u0027service_id\u0027, \u0027region_id\u0027, \u0027resource_name\u0027)"},{"line_number":54,"context_line":"    def list_registered_limits(self, request, filters):"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_0b566acf","line":51,"range":{"start_line":51,"start_character":33,"end_line":51,"end_character":44},"in_reply_to":"bf659307_8b984475","updated":"2018-04-12 03:40:18.000000000","message":"++","commit_id":"c9c4e53c9ee397d8b92dc9959d6f8c0813800ae7"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a0348c1a654fe459f0e2568cf99ab57febb1302e","unresolved":false,"context_lines":[{"line_number":91,"context_line":"    def update_limit(self, request, limit_id, limit):"},{"line_number":92,"context_line":"        validation.lazy_validate(schema.limit_update, limit)"},{"line_number":93,"context_line":"        self._require_matching_id(limit_id, limit)"},{"line_number":94,"context_line":"        refs \u003d self.unified_limit_api.update_limit("},{"line_number":95,"context_line":"            limit_id, limit)"},{"line_number":96,"context_line":"        return LimitV3.wrap_member(request.context_dict, refs)"},{"line_number":97,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_8bc36457","line":94,"range":{"start_line":94,"start_character":15,"end_line":94,"end_character":19},"updated":"2018-04-11 19:27:02.000000000","message":"Same comment here as above.","commit_id":"c9c4e53c9ee397d8b92dc9959d6f8c0813800ae7"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a0348c1a654fe459f0e2568cf99ab57febb1302e","unresolved":false,"context_lines":[{"line_number":91,"context_line":"    def update_limit(self, request, limit_id, limit):"},{"line_number":92,"context_line":"        validation.lazy_validate(schema.limit_update, limit)"},{"line_number":93,"context_line":"        self._require_matching_id(limit_id, limit)"},{"line_number":94,"context_line":"        refs \u003d self.unified_limit_api.update_limit("},{"line_number":95,"context_line":"            limit_id, limit)"},{"line_number":96,"context_line":"        return LimitV3.wrap_member(request.context_dict, refs)"},{"line_number":97,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_4ba78cbe","line":94,"range":{"start_line":94,"start_character":8,"end_line":94,"end_character":12},"updated":"2018-04-11 19:27:02.000000000","message":"Same question here as above.","commit_id":"c9c4e53c9ee397d8b92dc9959d6f8c0813800ae7"}],"keystone/limit/core.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a0348c1a654fe459f0e2568cf99ab57febb1302e","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def update_registered_limit(self, registered_limit_id, registered_limit):"},{"line_number":65,"context_line":"        self._assert_resource_exist(registered_limit, \u0027registered_limit\u0027)"},{"line_number":66,"context_line":"        refs \u003d self.driver.update_registered_limit(registered_limit_id,"},{"line_number":67,"context_line":"                                                   registered_limit)"},{"line_number":68,"context_line":"        self.get_registered_limit.invalidate(self, registered_limit[\u0027id\u0027])"},{"line_number":69,"context_line":"        return refs"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_8ba604ab","line":66,"range":{"start_line":66,"start_character":8,"end_line":66,"end_character":12},"updated":"2018-04-11 19:27:02.000000000","message":"nit: since this is no long a list of entities, I would suggest renaming this variable to something else that is more descriptive:\n\n  limit \u003d self.driver.update_registered_limits(...)","commit_id":"c9c4e53c9ee397d8b92dc9959d6f8c0813800ae7"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"2100cce8a025427d875f7c639252968acb27ca35","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def update_registered_limit(self, registered_limit_id, registered_limit):"},{"line_number":65,"context_line":"        self._assert_resource_exist(registered_limit, \u0027registered_limit\u0027)"},{"line_number":66,"context_line":"        refs \u003d self.driver.update_registered_limit(registered_limit_id,"},{"line_number":67,"context_line":"                                                   registered_limit)"},{"line_number":68,"context_line":"        self.get_registered_limit.invalidate(self, registered_limit[\u0027id\u0027])"},{"line_number":69,"context_line":"        return refs"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_abfbbebb","line":66,"range":{"start_line":66,"start_character":8,"end_line":66,"end_character":12},"in_reply_to":"bf659307_8ba604ab","updated":"2018-04-12 03:40:18.000000000","message":"Done","commit_id":"c9c4e53c9ee397d8b92dc9959d6f8c0813800ae7"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a0348c1a654fe459f0e2568cf99ab57febb1302e","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        refs \u003d self.driver.update_registered_limit(registered_limit_id,"},{"line_number":67,"context_line":"                                                   registered_limit)"},{"line_number":68,"context_line":"        self.get_registered_limit.invalidate(self, registered_limit[\u0027id\u0027])"},{"line_number":69,"context_line":"        return refs"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    @manager.response_truncated"},{"line_number":72,"context_line":"    def list_registered_limits(self, hints\u003dNone):"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_ebaea07f","line":69,"range":{"start_line":69,"start_character":15,"end_line":69,"end_character":19},"updated":"2018-04-11 19:27:02.000000000","message":"limit","commit_id":"c9c4e53c9ee397d8b92dc9959d6f8c0813800ae7"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"2100cce8a025427d875f7c639252968acb27ca35","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        refs \u003d self.driver.update_registered_limit(registered_limit_id,"},{"line_number":67,"context_line":"                                                   registered_limit)"},{"line_number":68,"context_line":"        self.get_registered_limit.invalidate(self, registered_limit[\u0027id\u0027])"},{"line_number":69,"context_line":"        return refs"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    @manager.response_truncated"},{"line_number":72,"context_line":"    def list_registered_limits(self, hints\u003dNone):"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_0b242a5f","line":69,"range":{"start_line":69,"start_character":15,"end_line":69,"end_character":19},"in_reply_to":"bf659307_ebaea07f","updated":"2018-04-12 03:40:18.000000000","message":"Done","commit_id":"c9c4e53c9ee397d8b92dc9959d6f8c0813800ae7"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a0348c1a654fe459f0e2568cf99ab57febb1302e","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    def update_limit(self, limit_id, limit):"},{"line_number":90,"context_line":"        self._assert_resource_exist(limit, \u0027limit\u0027)"},{"line_number":91,"context_line":"        refs \u003d self.driver.update_limit(limit_id, limit)"},{"line_number":92,"context_line":"        self.get_limit.invalidate(self, limit[\u0027id\u0027])"},{"line_number":93,"context_line":"        return refs"},{"line_number":94,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_0bb434d0","line":91,"range":{"start_line":91,"start_character":8,"end_line":91,"end_character":12},"updated":"2018-04-11 19:27:02.000000000","message":"Same comment here.","commit_id":"c9c4e53c9ee397d8b92dc9959d6f8c0813800ae7"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"eaf4d62fc069baaa43bfa7aabbe5121868873467","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        self._assert_resource_exist(registered_limit, \u0027registered_limit\u0027)"},{"line_number":66,"context_line":"        updated_registered_limit \u003d self.driver.update_registered_limit("},{"line_number":67,"context_line":"            registered_limit_id, registered_limit)"},{"line_number":68,"context_line":"        self.get_registered_limit.invalidate(self, registered_limit[\u0027id\u0027])"},{"line_number":69,"context_line":"        return updated_registered_limit"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    @manager.response_truncated"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f7c97a3_ff1e6f6e","line":68,"range":{"start_line":68,"start_character":51,"end_line":68,"end_character":73},"updated":"2018-06-08 20:10:35.000000000","message":"I hit a bug with this code while working on client support for this API. When I use ksc to update a limit, the client doesn\u0027t include the id the of registered limit in the body of the request, instead it\u0027s on the URL, which makes sense correct.\n\nBut I think that means this code relies on it being in the request body. I get a 500 from the client [0]. Here are logs [1].\n\nEither way, using the updated reference since it was freshly pulled from the database and has an ID attribute fixed the issue for me.\n\n  self.get_registered_limit.invalidate(\n      self, updated_registered_limit[\u0027id\u0027]\n  ) \n\nAlso, we should add a test for that somewhere since updating without ID in the body should be something we can do with how this API behaves (as opposed to the first version of this API).\n\n[0] http://paste.openstack.org/show/722995/\n[1] http://paste.openstack.org/show/722996/","commit_id":"6db852add7647d029afb8faa475451c499aab1db"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"ca8b5f9182b03b0e9fc68d364e364c4515a1272f","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        self._assert_resource_exist(registered_limit, \u0027registered_limit\u0027)"},{"line_number":66,"context_line":"        updated_registered_limit \u003d self.driver.update_registered_limit("},{"line_number":67,"context_line":"            registered_limit_id, registered_limit)"},{"line_number":68,"context_line":"        self.get_registered_limit.invalidate(self, registered_limit[\u0027id\u0027])"},{"line_number":69,"context_line":"        return updated_registered_limit"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    @manager.response_truncated"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f7c97a3_fc68aaf4","line":68,"range":{"start_line":68,"start_character":51,"end_line":68,"end_character":73},"in_reply_to":"5f7c97a3_ff1e6f6e","updated":"2018-06-11 01:12:17.000000000","message":"nice catch. I\u0027ll fix it in the next PS.","commit_id":"6db852add7647d029afb8faa475451c499aab1db"}],"keystone/limit/schema.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a47ddb2fb79397ee2a87e7092a08dd87272a89e6","unresolved":false,"context_lines":[{"line_number":43,"context_line":"}"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"_registered_limit_update_properties \u003d {"},{"line_number":46,"context_line":"    \u0027id\u0027: parameter_types.id_string,"},{"line_number":47,"context_line":"    \u0027service_id\u0027: parameter_types.id_string,"},{"line_number":48,"context_line":"    \u0027region_id\u0027: {"},{"line_number":49,"context_line":"        \u0027type\u0027: \u0027string\u0027"}],"source_content_type":"text/x-python","patch_set":15,"id":"5f7c97a3_9a4cc89e","line":46,"range":{"start_line":46,"start_character":0,"end_line":46,"end_character":36},"updated":"2018-06-13 18:45:11.000000000","message":"This isn\u0027t in the body of the request anymore I don\u0027t think, so this probably isn\u0027t necessary","commit_id":"22fadb03979cd4068701a1eaffbcddc1a4096a2a"}],"keystone/tests/unit/limit/test_backends.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a0348c1a654fe459f0e2568cf99ab57febb1302e","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        PROVIDERS.unified_limit_api.create_registered_limits("},{"line_number":125,"context_line":"            [registered_limit_1, registered_limit_2])"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        # update one, return it."},{"line_number":128,"context_line":"        registered_limit_update \u003d {\u0027id\u0027: registered_limit_1[\u0027id\u0027],"},{"line_number":129,"context_line":"                                   \u0027region_id\u0027: \u0027region_two\u0027}"},{"line_number":130,"context_line":"        res \u003d PROVIDERS.unified_limit_api.update_registered_limit("}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_0be994b5","line":127,"range":{"start_line":127,"start_character":8,"end_line":127,"end_character":32},"updated":"2018-04-11 19:27:02.000000000","message":"Without the odd behavior we originally implemented, some of these comments are a bit redundant. It\u0027s pretty easy to see what happening in the code now that we\u0027ve adjusted the API to make more sense.\n\nI wouldn\u0027t be opposed to removing these comments.","commit_id":"c9c4e53c9ee397d8b92dc9959d6f8c0813800ae7"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"2100cce8a025427d875f7c639252968acb27ca35","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        PROVIDERS.unified_limit_api.create_registered_limits("},{"line_number":125,"context_line":"            [registered_limit_1, registered_limit_2])"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        # update one, return it."},{"line_number":128,"context_line":"        registered_limit_update \u003d {\u0027id\u0027: registered_limit_1[\u0027id\u0027],"},{"line_number":129,"context_line":"                                   \u0027region_id\u0027: \u0027region_two\u0027}"},{"line_number":130,"context_line":"        res \u003d PROVIDERS.unified_limit_api.update_registered_limit("}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_4bbc62db","line":127,"range":{"start_line":127,"start_character":8,"end_line":127,"end_character":32},"in_reply_to":"bf659307_0be994b5","updated":"2018-04-12 03:40:18.000000000","message":"Done","commit_id":"c9c4e53c9ee397d8b92dc9959d6f8c0813800ae7"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a0348c1a654fe459f0e2568cf99ab57febb1302e","unresolved":false,"context_lines":[{"line_number":462,"context_line":"            resource_name\u003d\u0027snapshot\u0027, resource_limit\u003d5, id\u003duuid.uuid4().hex)"},{"line_number":463,"context_line":"        PROVIDERS.unified_limit_api.create_limits([limit_1, limit_2])"},{"line_number":464,"context_line":""},{"line_number":465,"context_line":"        # update one, return it."},{"line_number":466,"context_line":"        limit_update \u003d {\u0027id\u0027: limit_1[\u0027id\u0027],"},{"line_number":467,"context_line":"                        \u0027resource_limit\u0027: 8}"},{"line_number":468,"context_line":"        res \u003d PROVIDERS.unified_limit_api.update_limit(limit_1[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_cbce3c59","line":465,"range":{"start_line":465,"start_character":8,"end_line":465,"end_character":32},"updated":"2018-04-11 19:27:02.000000000","message":"Same minor comment here as above.","commit_id":"c9c4e53c9ee397d8b92dc9959d6f8c0813800ae7"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"efb9e563a6d842b90e0620c9b257cb00531afb11","unresolved":false,"context_lines":[{"line_number":507,"context_line":"                        \u0027resource_limit\u0027: 8}"},{"line_number":508,"context_line":"        res \u003d PROVIDERS.unified_limit_api.update_limit(limit_1[\u0027id\u0027],"},{"line_number":509,"context_line":"                                                       limit_update)"},{"line_number":510,"context_line":"        self.assertEqual(8, res[\u0027resource_limit\u0027])"},{"line_number":511,"context_line":""},{"line_number":512,"context_line":"    def test_list_limits(self):"},{"line_number":513,"context_line":"        # create two limits"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f7c97a3_06efa3e9","line":510,"range":{"start_line":510,"start_character":25,"end_line":510,"end_character":26},"updated":"2018-06-06 14:49:11.000000000","message":"I\u0027m being super nit picky here and we can totally do this in a follow up, but we can pull this out into a variable and give it a name to make it\u0027s purpose more clear (expected_resource_limit?)","commit_id":"6db852add7647d029afb8faa475451c499aab1db"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"260f1c20bda5257a41a5a81c558e975ba7f24d06","unresolved":false,"context_lines":[{"line_number":507,"context_line":"                        \u0027resource_limit\u0027: 8}"},{"line_number":508,"context_line":"        res \u003d PROVIDERS.unified_limit_api.update_limit(limit_1[\u0027id\u0027],"},{"line_number":509,"context_line":"                                                       limit_update)"},{"line_number":510,"context_line":"        self.assertEqual(8, res[\u0027resource_limit\u0027])"},{"line_number":511,"context_line":""},{"line_number":512,"context_line":"    def test_list_limits(self):"},{"line_number":513,"context_line":"        # create two limits"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f7c97a3_e01fde06","line":510,"range":{"start_line":510,"start_character":25,"end_line":510,"end_character":26},"in_reply_to":"5f7c97a3_06efa3e9","updated":"2018-06-07 02:49:13.000000000","message":"++","commit_id":"6db852add7647d029afb8faa475451c499aab1db"}],"keystone/tests/unit/test_limits.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a0348c1a654fe459f0e2568cf99ab57febb1302e","unresolved":false,"context_lines":[{"line_number":157,"context_line":"            body\u003d{\u0027registered_limits\u0027: [ref]},"},{"line_number":158,"context_line":"            expected_status\u003dhttp_client.CREATED)"},{"line_number":159,"context_line":"        reg_limit_id \u003d r.result[\u0027registered_limits\u0027][0][\u0027id\u0027]"},{"line_number":160,"context_line":"        update_ref1 \u003d unit.new_registered_limit_ref(id\u003dreg_limit_id,"},{"line_number":161,"context_line":"                                                    service_id\u003d\u0027fake_id\u0027)"},{"line_number":162,"context_line":"        update_ref2 \u003d unit.new_registered_limit_ref(id\u003dreg_limit_id,"},{"line_number":163,"context_line":"                                                    default_limit\u003d\u0027not_int\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_4b0c6ca4","line":160,"range":{"start_line":160,"start_character":8,"end_line":160,"end_character":19},"updated":"2018-04-11 19:27:02.000000000","message":"nit: we could update the names of these variables to be more descriptive:\n\n  invalid_service_update \u003d ...","commit_id":"c9c4e53c9ee397d8b92dc9959d6f8c0813800ae7"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"2100cce8a025427d875f7c639252968acb27ca35","unresolved":false,"context_lines":[{"line_number":157,"context_line":"            body\u003d{\u0027registered_limits\u0027: [ref]},"},{"line_number":158,"context_line":"            expected_status\u003dhttp_client.CREATED)"},{"line_number":159,"context_line":"        reg_limit_id \u003d r.result[\u0027registered_limits\u0027][0][\u0027id\u0027]"},{"line_number":160,"context_line":"        update_ref1 \u003d unit.new_registered_limit_ref(id\u003dreg_limit_id,"},{"line_number":161,"context_line":"                                                    service_id\u003d\u0027fake_id\u0027)"},{"line_number":162,"context_line":"        update_ref2 \u003d unit.new_registered_limit_ref(id\u003dreg_limit_id,"},{"line_number":163,"context_line":"                                                    default_limit\u003d\u0027not_int\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_8b9a7a6c","line":160,"range":{"start_line":160,"start_character":8,"end_line":160,"end_character":19},"in_reply_to":"bf659307_4b0c6ca4","updated":"2018-04-12 03:40:18.000000000","message":"Done","commit_id":"c9c4e53c9ee397d8b92dc9959d6f8c0813800ae7"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a0348c1a654fe459f0e2568cf99ab57febb1302e","unresolved":false,"context_lines":[{"line_number":503,"context_line":"            self.patch("},{"line_number":504,"context_line":"                \u0027/limits/%s\u0027 % r.result[\u0027limits\u0027][0][\u0027id\u0027],"},{"line_number":505,"context_line":"                body\u003d{\u0027limit\u0027: input_limit},"},{"line_number":506,"context_line":"                expected_status\u003dhttp_client.BAD_REQUEST)"},{"line_number":507,"context_line":""},{"line_number":508,"context_line":"    def test_list_limit(self):"},{"line_number":509,"context_line":"        r \u003d self.get("}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_2b2c9800","line":506,"updated":"2018-04-11 19:27:02.000000000","message":"Do we have a test that makes sure we can\u0027t update the limit ID in an update?","commit_id":"c9c4e53c9ee397d8b92dc9959d6f8c0813800ae7"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"2100cce8a025427d875f7c639252968acb27ca35","unresolved":false,"context_lines":[{"line_number":503,"context_line":"            self.patch("},{"line_number":504,"context_line":"                \u0027/limits/%s\u0027 % r.result[\u0027limits\u0027][0][\u0027id\u0027],"},{"line_number":505,"context_line":"                body\u003d{\u0027limit\u0027: input_limit},"},{"line_number":506,"context_line":"                expected_status\u003dhttp_client.BAD_REQUEST)"},{"line_number":507,"context_line":""},{"line_number":508,"context_line":"    def test_list_limit(self):"},{"line_number":509,"context_line":"        r \u003d self.get("}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_6bccc634","line":506,"in_reply_to":"bf659307_2b2c9800","updated":"2018-04-12 03:40:18.000000000","message":"I\u0027ll add one.","commit_id":"c9c4e53c9ee397d8b92dc9959d6f8c0813800ae7"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"cfb5841463724f1cc94148d1a02127e651adc232","unresolved":false,"context_lines":[{"line_number":488,"context_line":"                                 region_id\u003dself.region_id,"},{"line_number":489,"context_line":"                                 resource_name\u003d\u0027volume\u0027,"},{"line_number":490,"context_line":"                                 resource_limit\u003d10)"},{"line_number":491,"context_line":"        r \u003d self.post("},{"line_number":492,"context_line":"            \u0027/limits\u0027,"},{"line_number":493,"context_line":"            body\u003d{\u0027limits\u0027: [ref]},"},{"line_number":494,"context_line":"            expected_status\u003dhttp_client.CREATED)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_2e857c07","line":491,"range":{"start_line":491,"start_character":8,"end_line":491,"end_character":9},"updated":"2018-04-12 04:02:32.000000000","message":"nit: We could pull the id out here and assign it to a variable, that we we don\u0027t have to access r.response.. a bunch of times throughout the test.\n\n  limit_id \u003d r.result[\u0027limits\u0027][0][\u0027id\u0027]","commit_id":"27ead2e892df2347162f776c6ec97ba847ebaf5f"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"db06b12bc55b21ff56f7332de4d5403f2764ff3f","unresolved":false,"context_lines":[{"line_number":488,"context_line":"                                 region_id\u003dself.region_id,"},{"line_number":489,"context_line":"                                 resource_name\u003d\u0027volume\u0027,"},{"line_number":490,"context_line":"                                 resource_limit\u003d10)"},{"line_number":491,"context_line":"        r \u003d self.post("},{"line_number":492,"context_line":"            \u0027/limits\u0027,"},{"line_number":493,"context_line":"            body\u003d{\u0027limits\u0027: [ref]},"},{"line_number":494,"context_line":"            expected_status\u003dhttp_client.CREATED)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_7ff55c56","line":491,"range":{"start_line":491,"start_character":8,"end_line":491,"end_character":9},"in_reply_to":"bf659307_2e857c07","updated":"2018-04-12 06:54:31.000000000","message":"Done","commit_id":"27ead2e892df2347162f776c6ec97ba847ebaf5f"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"cfb5841463724f1cc94148d1a02127e651adc232","unresolved":false,"context_lines":[{"line_number":497,"context_line":"            \u0027id\u0027: \u0027fake_id\u0027,"},{"line_number":498,"context_line":"            \u0027resource_limit\u0027: 5"},{"line_number":499,"context_line":"        }"},{"line_number":500,"context_line":"        invalid_id__update \u003d {"},{"line_number":501,"context_line":"            \u0027id\u0027: uuid.uuid4().hex,"},{"line_number":502,"context_line":"            \u0027resource_limit\u0027: 5"},{"line_number":503,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_0e53d817","line":500,"range":{"start_line":500,"start_character":19,"end_line":500,"end_character":20},"updated":"2018-04-12 04:02:32.000000000","message":"extra underscore?","commit_id":"27ead2e892df2347162f776c6ec97ba847ebaf5f"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"db06b12bc55b21ff56f7332de4d5403f2764ff3f","unresolved":false,"context_lines":[{"line_number":497,"context_line":"            \u0027id\u0027: \u0027fake_id\u0027,"},{"line_number":498,"context_line":"            \u0027resource_limit\u0027: 5"},{"line_number":499,"context_line":"        }"},{"line_number":500,"context_line":"        invalid_id__update \u003d {"},{"line_number":501,"context_line":"            \u0027id\u0027: uuid.uuid4().hex,"},{"line_number":502,"context_line":"            \u0027resource_limit\u0027: 5"},{"line_number":503,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_7fcc7c34","line":500,"range":{"start_line":500,"start_character":19,"end_line":500,"end_character":20},"in_reply_to":"bf659307_0e53d817","updated":"2018-04-12 06:54:31.000000000","message":"Done","commit_id":"27ead2e892df2347162f776c6ec97ba847ebaf5f"}],"keystone_tempest_plugin/README.rst":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"7ed5a1db6a8cf5b9b7f1337cff9e310638056c1f","unresolved":false,"context_lines":[{"line_number":2,"context_line":"MOVED"},{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"The keystone tempest plugin has moved to http://git.openstack.org/cgit/openstack/keystone-tempest-plugin"}],"source_content_type":"text/x-rst","patch_set":16,"id":"5f7c97a3_29a755bf","side":"PARENT","line":5,"updated":"2018-06-14 18:54:30.000000000","message":"This seems like an unrelated change?","commit_id":"0e24f910759dfc30cfe32a489613acf56a701ca5"}],"releasenotes/notes/limits-api-refactor-05abf9e6c2e75852.yaml":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a0348c1a654fe459f0e2568cf99ab57febb1302e","unresolved":false,"context_lines":[{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    [`bug 1754184 \u003chttps://bugs.launchpad.net/keystone/+bug/1754184\u003e`_]"},{"line_number":5,"context_line":"    The unified limit APIs are refactor as below to align with API-WG guide:"},{"line_number":6,"context_line":"    1. GET unified limits now doesn\u0027t return all the existent limits. It now"},{"line_number":7,"context_line":"    only the newly created ones."},{"line_number":8,"context_line":"    2. The update unified limits action is changed from PUT to PATCH. The multi"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"bf659307_cb3cfc30","line":5,"range":{"start_line":5,"start_character":27,"end_line":5,"end_character":30},"updated":"2018-04-11 19:27:02.000000000","message":"has been*","commit_id":"c9c4e53c9ee397d8b92dc9959d6f8c0813800ae7"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a0348c1a654fe459f0e2568cf99ab57febb1302e","unresolved":false,"context_lines":[{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    [`bug 1754184 \u003chttps://bugs.launchpad.net/keystone/+bug/1754184\u003e`_]"},{"line_number":5,"context_line":"    The unified limit APIs are refactor as below to align with API-WG guide:"},{"line_number":6,"context_line":"    1. GET unified limits now doesn\u0027t return all the existent limits. It now"},{"line_number":7,"context_line":"    only the newly created ones."},{"line_number":8,"context_line":"    2. The update unified limits action is changed from PUT to PATCH. The multi"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"bf659307_8b4284aa","line":5,"range":{"start_line":5,"start_character":40,"end_line":5,"end_character":48},"updated":"2018-04-11 19:27:02.000000000","message":"s/as below//","commit_id":"c9c4e53c9ee397d8b92dc9959d6f8c0813800ae7"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a0348c1a654fe459f0e2568cf99ab57febb1302e","unresolved":false,"context_lines":[{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    [`bug 1754184 \u003chttps://bugs.launchpad.net/keystone/+bug/1754184\u003e`_]"},{"line_number":5,"context_line":"    The unified limit APIs are refactor as below to align with API-WG guide:"},{"line_number":6,"context_line":"    1. GET unified limits now doesn\u0027t return all the existent limits. It now"},{"line_number":7,"context_line":"    only the newly created ones."},{"line_number":8,"context_line":"    2. The update unified limits action is changed from PUT to PATCH. The multi"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"bf659307_eb0a2077","line":5,"range":{"start_line":5,"start_character":63,"end_line":5,"end_character":76},"updated":"2018-04-11 19:27:02.000000000","message":"the following API-WG guidelines:","commit_id":"c9c4e53c9ee397d8b92dc9959d6f8c0813800ae7"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a0348c1a654fe459f0e2568cf99ab57febb1302e","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    [`bug 1754184 \u003chttps://bugs.launchpad.net/keystone/+bug/1754184\u003e`_]"},{"line_number":5,"context_line":"    The unified limit APIs are refactor as below to align with API-WG guide:"},{"line_number":6,"context_line":"    1. GET unified limits now doesn\u0027t return all the existent limits. It now"},{"line_number":7,"context_line":"    only the newly created ones."},{"line_number":8,"context_line":"    2. The update unified limits action is changed from PUT to PATCH. The multi"},{"line_number":9,"context_line":"    updating support is removed as well."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"bf659307_2b7a58f0","line":6,"range":{"start_line":6,"start_character":26,"end_line":6,"end_character":69},"updated":"2018-04-11 19:27:02.000000000","message":"no longer returns all limits during update operations.","commit_id":"c9c4e53c9ee397d8b92dc9959d6f8c0813800ae7"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a0348c1a654fe459f0e2568cf99ab57febb1302e","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    [`bug 1754184 \u003chttps://bugs.launchpad.net/keystone/+bug/1754184\u003e`_]"},{"line_number":5,"context_line":"    The unified limit APIs are refactor as below to align with API-WG guide:"},{"line_number":6,"context_line":"    1. GET unified limits now doesn\u0027t return all the existent limits. It now"},{"line_number":7,"context_line":"    only the newly created ones."},{"line_number":8,"context_line":"    2. The update unified limits action is changed from PUT to PATCH. The multi"},{"line_number":9,"context_line":"    updating support is removed as well."},{"line_number":10,"context_line":"    Please note that the unified limits APIs is still experimental, so that"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"bf659307_4b7f8cdf","line":7,"range":{"start_line":7,"start_character":27,"end_line":7,"end_character":31},"updated":"2018-04-11 19:27:02.000000000","message":"limits*","commit_id":"c9c4e53c9ee397d8b92dc9959d6f8c0813800ae7"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a0348c1a654fe459f0e2568cf99ab57febb1302e","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    The unified limit APIs are refactor as below to align with API-WG guide:"},{"line_number":6,"context_line":"    1. GET unified limits now doesn\u0027t return all the existent limits. It now"},{"line_number":7,"context_line":"    only the newly created ones."},{"line_number":8,"context_line":"    2. The update unified limits action is changed from PUT to PATCH. The multi"},{"line_number":9,"context_line":"    updating support is removed as well."},{"line_number":10,"context_line":"    Please note that the unified limits APIs is still experimental, so that"},{"line_number":11,"context_line":"    they may be changed beofre it\u0027s marked as stable."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"bf659307_4b68ec1b","line":9,"range":{"start_line":8,"start_character":7,"end_line":9,"end_character":40},"updated":"2018-04-11 19:27:02.000000000","message":"nit: Support for updating multiple limits in a single request has been removed by implementing PATCH instead of PUT.","commit_id":"c9c4e53c9ee397d8b92dc9959d6f8c0813800ae7"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a0348c1a654fe459f0e2568cf99ab57febb1302e","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    only the newly created ones."},{"line_number":8,"context_line":"    2. The update unified limits action is changed from PUT to PATCH. The multi"},{"line_number":9,"context_line":"    updating support is removed as well."},{"line_number":10,"context_line":"    Please note that the unified limits APIs is still experimental, so that"},{"line_number":11,"context_line":"    they may be changed beofre it\u0027s marked as stable."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"bf659307_cb539c6a","line":11,"range":{"start_line":10,"start_character":68,"end_line":11,"end_character":53},"updated":"2018-04-11 19:27:02.000000000","message":"making it possible to include these improvements.","commit_id":"c9c4e53c9ee397d8b92dc9959d6f8c0813800ae7"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"2100cce8a025427d875f7c639252968acb27ca35","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"bf659307_eb00d636","line":12,"updated":"2018-04-12 03:40:18.000000000","message":"I doubt how to improve my English to make the doc things better.\n\nBig thanks for the review!","commit_id":"c9c4e53c9ee397d8b92dc9959d6f8c0813800ae7"}]}
