)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"617050873c03eaf3f18f7d71b566479cd9d912bd","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Implement list limiting support in driver backends"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Provides an optional limit to the number of rows that will be"},{"line_number":10,"context_line":"returned by a backend from list_{entity} call.  The limt is specified"},{"line_number":11,"context_line":"in the configuration file, and allows for an overall general limit as"},{"line_number":12,"context_line":"well as individual limit for a given driver."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAASn%2F%2FjJY%3D","line":10,"updated":"2013-09-03 16:24:20.000000000","message":"(NIT): limt -\u003e limit","commit_id":"4989e672d1a40b9350cd3e0ad93ca1f96eb2709a"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"e1490a1cdc201963f33b88c1ecea61c4571fbe8b","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Implement list limiting support in driver backends"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Provides an optional limit to the number of rows that will be"},{"line_number":10,"context_line":"returned by a backend from list_{entity} call.  The limt is specified"},{"line_number":11,"context_line":"in the configuration file, and allows for an overall general limit as"},{"line_number":12,"context_line":"well as individual limit for a given driver."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAASn%2F%2Fiho%3D","line":10,"in_reply_to":"AAAASn%2F%2FjJY%3D","updated":"2013-09-03 17:57:08.000000000","message":"Done","commit_id":"4989e672d1a40b9350cd3e0ad93ca1f96eb2709a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f36fa0497cec07c4f23527a06f2f4f36054e9b0b","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Provides an optional limit to the number of rows that will be"},{"line_number":10,"context_line":"returned by a backend from list_{entity} call.  The limit is specified"},{"line_number":11,"context_line":"in the configuration file, and allows for an overall general limit as"},{"line_number":12,"context_line":"well as individual limit for a given driver."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Implements bp list-limiting"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"AAAASn%2F%2FhjM%3D","line":12,"updated":"2013-09-03 20:28:56.000000000","message":"should note that by default there is no limit.","commit_id":"d995fda56afde0d9ecb492aba99aa6e44de437dd"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"8c002c23959fdd6d977f7a19052b1f93e7f293c1","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Provides an optional limit to the number of rows that will be"},{"line_number":10,"context_line":"returned by a backend from list_{entity} call.  The limit is specified"},{"line_number":11,"context_line":"in the configuration file, and allows for an overall general limit as"},{"line_number":12,"context_line":"well as individual limit for a given driver."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Implements bp list-limiting"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"AAAASn%2F%2FgfY%3D","line":12,"in_reply_to":"AAAASn%2F%2FhjM%3D","updated":"2013-09-03 23:58:50.000000000","message":"Done","commit_id":"d995fda56afde0d9ecb492aba99aa6e44de437dd"}],"doc/source/configuration.rst":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"77de2e326732d5aed0b83c7e81ac0ee98033913a","unresolved":false,"context_lines":[{"line_number":699,"context_line":"Keystone provides a method of setting a limit to the number of entities"},{"line_number":700,"context_line":"returned in a collection, which is useful to prevent overly long response"},{"line_number":701,"context_line":"times for list queries that have not specified a sufficently narrow filter."},{"line_number":702,"context_line":"This limit can be set globally by setting ``list_limit`` in the main section"},{"line_number":703,"context_line":"of ``keystone.conf``, with no limit set by default.  Individual driver"},{"line_number":704,"context_line":"sections may override this global value with a specific limit, for example::"},{"line_number":705,"context_line":""}],"source_content_type":"text/x-rst","patch_set":19,"id":"AAAAUH%2F%2B4zk%3D","line":702,"updated":"2014-01-21 03:46:00.000000000","message":"Should we substitute \u0027main\u0027 with \u0027[DEFAULT]\u0027?","commit_id":"efc230d4b5615200100478f32f5741582c513f14"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"6dd9d4212a2bb3103ab2362385d50878343b73be","unresolved":false,"context_lines":[{"line_number":699,"context_line":"Keystone provides a method of setting a limit to the number of entities"},{"line_number":700,"context_line":"returned in a collection, which is useful to prevent overly long response"},{"line_number":701,"context_line":"times for list queries that have not specified a sufficently narrow filter."},{"line_number":702,"context_line":"This limit can be set globally by setting ``list_limit`` in the main section"},{"line_number":703,"context_line":"of ``keystone.conf``, with no limit set by default.  Individual driver"},{"line_number":704,"context_line":"sections may override this global value with a specific limit, for example::"},{"line_number":705,"context_line":""}],"source_content_type":"text/x-rst","patch_set":19,"id":"AAAAUH%2F%2B3oA%3D","line":702,"in_reply_to":"AAAAUH%2F%2B4zk%3D","updated":"2014-01-21 10:49:46.000000000","message":"Done","commit_id":"efc230d4b5615200100478f32f5741582c513f14"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2dcefd3f0920f46da719e2fb192fc7eee30682e3","unresolved":false,"context_lines":[{"line_number":708,"context_line":"    list_limit \u003d 100"},{"line_number":709,"context_line":""},{"line_number":710,"context_line":"If a response to ``list_{entity}`` call has been truncted, then the response"},{"line_number":711,"context_line":"status code will be 203 (Subset)."},{"line_number":712,"context_line":""},{"line_number":713,"context_line":""},{"line_number":714,"context_line":"Sample Configuration Files"}],"source_content_type":"text/x-rst","patch_set":27,"id":"AAAAUH%2F96WI%3D","line":711,"updated":"2014-02-01 15:15:44.000000000","message":"change this to say that \"truncated\" will be set on the response.","commit_id":"f5b90effeb7db975604339ab1c3505ad77846d51"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"8734cba6f1ca2b98f1e78d872699011e6c3a5d74","unresolved":false,"context_lines":[{"line_number":708,"context_line":"    list_limit \u003d 100"},{"line_number":709,"context_line":""},{"line_number":710,"context_line":"If a response to ``list_{entity}`` call has been truncted, then the response"},{"line_number":711,"context_line":"status code will be 203 (Subset)."},{"line_number":712,"context_line":""},{"line_number":713,"context_line":""},{"line_number":714,"context_line":"Sample Configuration Files"}],"source_content_type":"text/x-rst","patch_set":27,"id":"AAAAUH%2F96F4%3D","line":711,"in_reply_to":"AAAAUH%2F96WI%3D","updated":"2014-02-03 22:56:24.000000000","message":"ouch, missed that one!  Thanks.","commit_id":"f5b90effeb7db975604339ab1c3505ad77846d51"}],"doc/source/developing.rst":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"77de2e326732d5aed0b83c7e81ac0ee98033913a","unresolved":false,"context_lines":[{"line_number":156,"context_line":""},{"line_number":157,"context_line":"The communication of the filter details between the controller level and its"},{"line_number":158,"context_line":"drivers is handled by the passing of a reference to a Hints object,"},{"line_number":159,"context_line":"which is a list dicts describing the filters. A driver that satisfies a filter"},{"line_number":160,"context_line":"must delete the filter from the Hints object so that when it is returned"},{"line_number":161,"context_line":"back to the controller level, it can know to only execute any unsatisfied"},{"line_number":162,"context_line":"filters."}],"source_content_type":"text/x-rst","patch_set":19,"id":"AAAAUH%2F%2B4zQ%3D","line":159,"updated":"2014-01-21 03:46:00.000000000","message":"s/list dicts/list of dictionaries/g","commit_id":"efc230d4b5615200100478f32f5741582c513f14"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"6dd9d4212a2bb3103ab2362385d50878343b73be","unresolved":false,"context_lines":[{"line_number":156,"context_line":""},{"line_number":157,"context_line":"The communication of the filter details between the controller level and its"},{"line_number":158,"context_line":"drivers is handled by the passing of a reference to a Hints object,"},{"line_number":159,"context_line":"which is a list dicts describing the filters. A driver that satisfies a filter"},{"line_number":160,"context_line":"must delete the filter from the Hints object so that when it is returned"},{"line_number":161,"context_line":"back to the controller level, it can know to only execute any unsatisfied"},{"line_number":162,"context_line":"filters."}],"source_content_type":"text/x-rst","patch_set":19,"id":"AAAAUH%2F%2B3nM%3D","line":159,"in_reply_to":"AAAAUH%2F%2B4zQ%3D","updated":"2014-01-21 10:49:46.000000000","message":"..actually this section is duplicated somehow from the one above - some error in the rebase…it should be removed.","commit_id":"efc230d4b5615200100478f32f5741582c513f14"}],"etc/keystone.conf.sample":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"239be62d54c7d8a39e107922ea3507d3a2890695","unresolved":false,"context_lines":[{"line_number":57,"context_line":"# set with list_limit, with no limit set by default.  This global limit may be"},{"line_number":58,"context_line":"# then overridden for a specific driver, by specifying a list_limit in the"},{"line_number":59,"context_line":"# appropriate section (e.g. [assignment])"},{"line_number":60,"context_line":"# list_limit \u003d"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"# \u003d\u003d\u003d Logging Options \u003d\u003d\u003d"},{"line_number":63,"context_line":"# Print debugging output"}],"source_content_type":"application/octet-stream","patch_set":24,"id":"AAAAUH%2F%2Bvg4%3D","line":60,"updated":"2014-01-22 16:54:28.000000000","message":"the list_limit options should be also documented in those sections.","commit_id":"cbe8d7de6ac2181f2d906b92f01b2bace8bdd063"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"f33bc8a1a7b1292a1ad50e5e6b7ade1398b626db","unresolved":false,"context_lines":[{"line_number":57,"context_line":"# set with list_limit, with no limit set by default.  This global limit may be"},{"line_number":58,"context_line":"# then overridden for a specific driver, by specifying a list_limit in the"},{"line_number":59,"context_line":"# appropriate section (e.g. [assignment])"},{"line_number":60,"context_line":"# list_limit \u003d"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"# \u003d\u003d\u003d Logging Options \u003d\u003d\u003d"},{"line_number":63,"context_line":"# Print debugging output"}],"source_content_type":"application/octet-stream","patch_set":24,"id":"AAAAUH%2F%2BvKY%3D","line":60,"in_reply_to":"AAAAUH%2F%2Bvg4%3D","updated":"2014-01-31 11:19:53.000000000","message":"Done","commit_id":"cbe8d7de6ac2181f2d906b92f01b2bace8bdd063"}],"keystone/assignment/backends/sql.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"239be62d54c7d8a39e107922ea3507d3a2890695","unresolved":false,"context_lines":[{"line_number":211,"context_line":"    def list_projects(self, hints):"},{"line_number":212,"context_line":"        with self.transaction() as session:"},{"line_number":213,"context_line":"            query \u003d session.query(Project)"},{"line_number":214,"context_line":"            project_refs \u003d self.filter_paginate_limit(Project, query, hints)"},{"line_number":215,"context_line":"            return [project_ref.to_dict() for project_ref in project_refs]"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"    def list_projects_in_domain(self, domain_id):"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2BvUI%3D","line":214,"updated":"2014-01-22 16:54:28.000000000","message":"why is the function paginate_limit? this commit is not supporting paginating.","commit_id":"cbe8d7de6ac2181f2d906b92f01b2bace8bdd063"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"f33bc8a1a7b1292a1ad50e5e6b7ade1398b626db","unresolved":false,"context_lines":[{"line_number":211,"context_line":"    def list_projects(self, hints):"},{"line_number":212,"context_line":"        with self.transaction() as session:"},{"line_number":213,"context_line":"            query \u003d session.query(Project)"},{"line_number":214,"context_line":"            project_refs \u003d self.filter_paginate_limit(Project, query, hints)"},{"line_number":215,"context_line":"            return [project_ref.to_dict() for project_ref in project_refs]"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"    def list_projects_in_domain(self, domain_id):"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2BvJ8%3D","line":214,"in_reply_to":"AAAAUH%2F%2BvUI%3D","updated":"2014-01-31 11:19:53.000000000","message":"Dolphm and I agreed that we would call it that to create he framework for paging.","commit_id":"cbe8d7de6ac2181f2d906b92f01b2bace8bdd063"}],"keystone/assignment/core.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f36fa0497cec07c4f23527a06f2f4f36054e9b0b","unresolved":false,"context_lines":[{"line_number":226,"context_line":"        for role_id in roles:"},{"line_number":227,"context_line":"            self.remove_role_from_user_and_project(user_id, tenant_id, role_id)"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    @manager.truncated"},{"line_number":230,"context_line":"    def list_projects(self, list_directives\u003dNone):"},{"line_number":231,"context_line":"        return self.driver.list_projects(list_directives\u003dlist_directives)"},{"line_number":232,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAASn%2F%2Fhgs%3D","line":229,"updated":"2013-09-03 20:28:56.000000000","message":"suggest change name to something more descriptive and less scary \"limit_response_element_count\"","commit_id":"d995fda56afde0d9ecb492aba99aa6e44de437dd"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"8c002c23959fdd6d977f7a19052b1f93e7f293c1","unresolved":false,"context_lines":[{"line_number":226,"context_line":"        for role_id in roles:"},{"line_number":227,"context_line":"            self.remove_role_from_user_and_project(user_id, tenant_id, role_id)"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    @manager.truncated"},{"line_number":230,"context_line":"    def list_projects(self, list_directives\u003dNone):"},{"line_number":231,"context_line":"        return self.driver.list_projects(list_directives\u003dlist_directives)"},{"line_number":232,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAASn%2F%2FgiQ%3D","line":229,"in_reply_to":"AAAASn%2F%2Fhgs%3D","updated":"2013-09-03 23:58:50.000000000","message":"how about truncate_response?","commit_id":"d995fda56afde0d9ecb492aba99aa6e44de437dd"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"dadca70dead740332e7534c193569cbcc0fc63e3","unresolved":false,"context_lines":[{"line_number":596,"context_line":"        return [dict(r) for r in role_set]"},{"line_number":597,"context_line":""},{"line_number":598,"context_line":"    def _get_list_limit(self):"},{"line_number":599,"context_line":"        return CONF.assignment.list_limit or CONF.list_limit"},{"line_number":600,"context_line":""},{"line_number":601,"context_line":"    @abc.abstractmethod"},{"line_number":602,"context_line":"    def get_project_by_name(self, tenant_name, domain_id):"}],"source_content_type":"text/x-python","patch_set":29,"id":"AAAAUX%2F%2FqMw%3D","line":599,"updated":"2014-02-11 17:52:32.000000000","message":"should be a @property","commit_id":"0dec4c8be9bb5349e3eb3199242dd37ebf46c011"}],"keystone/catalog/core.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"239be62d54c7d8a39e107922ea3507d3a2890695","unresolved":false,"context_lines":[{"line_number":102,"context_line":"    @manager.response_truncated"},{"line_number":103,"context_line":"    def list_services(self, hints\u003dNone):"},{"line_number":104,"context_line":"        # NOTE(henry-nash): Since the advantage of filtering or list limiting"},{"line_number":105,"context_line":"        # of services at the driver level is minimal, we leave this to the"},{"line_number":106,"context_line":"        # caller."},{"line_number":107,"context_line":"        return self.driver.list_services()"},{"line_number":108,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2BvSI%3D","line":105,"updated":"2014-01-22 16:54:28.000000000","message":"this is assuming we know what all the drivers are. deployers might have their own drivers that would be able to implement this.","commit_id":"cbe8d7de6ac2181f2d906b92f01b2bace8bdd063"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"f33bc8a1a7b1292a1ad50e5e6b7ade1398b626db","unresolved":false,"context_lines":[{"line_number":102,"context_line":"    @manager.response_truncated"},{"line_number":103,"context_line":"    def list_services(self, hints\u003dNone):"},{"line_number":104,"context_line":"        # NOTE(henry-nash): Since the advantage of filtering or list limiting"},{"line_number":105,"context_line":"        # of services at the driver level is minimal, we leave this to the"},{"line_number":106,"context_line":"        # caller."},{"line_number":107,"context_line":"        return self.driver.list_services()"},{"line_number":108,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2BvJ0%3D","line":105,"in_reply_to":"AAAAUH%2F%2BvSI%3D","updated":"2014-01-31 11:19:53.000000000","message":"I guess that is true…would it be OK if I came back in and added that in a later path?","commit_id":"cbe8d7de6ac2181f2d906b92f01b2bace8bdd063"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2dcefd3f0920f46da719e2fb192fc7eee30682e3","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    @manager.response_truncated"},{"line_number":103,"context_line":"    def list_services(self, hints\u003dNone):"},{"line_number":104,"context_line":"        # NOTE(henry-nash): Since the advantage of filtering or list limiting"},{"line_number":105,"context_line":"        # of services at the driver level is minimal, we leave this to the"},{"line_number":106,"context_line":"        # caller."},{"line_number":107,"context_line":"        return self.driver.list_services()"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F96Wo%3D","line":104,"updated":"2014-02-01 15:15:44.000000000","message":"Henry asked -- \"would it be OK if I came back in and added that in a later path?\" -- I\u0027m OK with this, but then request that this be changed to a TODO and explain that this is going to change in the future... seems like it would be just as easy to just pass on the hints now.","commit_id":"f5b90effeb7db975604339ab1c3505ad77846d51"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"8734cba6f1ca2b98f1e78d872699011e6c3a5d74","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    @manager.response_truncated"},{"line_number":103,"context_line":"    def list_services(self, hints\u003dNone):"},{"line_number":104,"context_line":"        # NOTE(henry-nash): Since the advantage of filtering or list limiting"},{"line_number":105,"context_line":"        # of services at the driver level is minimal, we leave this to the"},{"line_number":106,"context_line":"        # caller."},{"line_number":107,"context_line":"        return self.driver.list_services()"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F96BU%3D","line":104,"in_reply_to":"AAAAUH%2F96Wo%3D","updated":"2014-02-03 22:56:24.000000000","message":"I have now implemented this.","commit_id":"f5b90effeb7db975604339ab1c3505ad77846d51"}],"keystone/common/controller.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"239be62d54c7d8a39e107922ea3507d3a2890695","unresolved":false,"context_lines":[{"line_number":321,"context_line":"        return container"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"    @classmethod"},{"line_number":324,"context_line":"    def paginate_or_limit(cls, context, refs, hints):"},{"line_number":325,"context_line":"        \"\"\"Paginates or limits a list of references."},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"        Returns a boolean indicating whether the list was truncated, as well"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2BvRk%3D","line":324,"updated":"2014-01-22 16:54:28.000000000","message":"this doesn\u0027t do pagination so it should be renamed.","commit_id":"cbe8d7de6ac2181f2d906b92f01b2bace8bdd063"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"f33bc8a1a7b1292a1ad50e5e6b7ade1398b626db","unresolved":false,"context_lines":[{"line_number":321,"context_line":"        return container"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"    @classmethod"},{"line_number":324,"context_line":"    def paginate_or_limit(cls, context, refs, hints):"},{"line_number":325,"context_line":"        \"\"\"Paginates or limits a list of references."},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"        Returns a boolean indicating whether the list was truncated, as well"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2BvI4%3D","line":324,"in_reply_to":"AAAAUH%2F%2BvRk%3D","updated":"2014-01-31 11:19:53.000000000","message":"I left it there for the same reasons stated in the drivers…but I agree here there is no harm in making it specific.  Done.","commit_id":"cbe8d7de6ac2181f2d906b92f01b2bace8bdd063"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"239be62d54c7d8a39e107922ea3507d3a2890695","unresolved":false,"context_lines":[{"line_number":340,"context_line":"        else:"},{"line_number":341,"context_line":"            return limited, refs"},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"        # The following code is unreachable for now"},{"line_number":344,"context_line":"        page \u003d context[\u0027query_string\u0027].get(\u0027page\u0027, 1)"},{"line_number":345,"context_line":"        per_page \u003d context[\u0027query_string\u0027].get(\u0027per_page\u0027, 30)"},{"line_number":346,"context_line":"        return refs[per_page * (page - 1):per_page * page]"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2BvRg%3D","line":343,"updated":"2014-01-22 16:54:28.000000000","message":"this code should be removed.","commit_id":"cbe8d7de6ac2181f2d906b92f01b2bace8bdd063"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"f33bc8a1a7b1292a1ad50e5e6b7ade1398b626db","unresolved":false,"context_lines":[{"line_number":340,"context_line":"        else:"},{"line_number":341,"context_line":"            return limited, refs"},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"        # The following code is unreachable for now"},{"line_number":344,"context_line":"        page \u003d context[\u0027query_string\u0027].get(\u0027page\u0027, 1)"},{"line_number":345,"context_line":"        per_page \u003d context[\u0027query_string\u0027].get(\u0027per_page\u0027, 30)"},{"line_number":346,"context_line":"        return refs[per_page * (page - 1):per_page * page]"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2BvJg%3D","line":343,"in_reply_to":"AAAAUH%2F%2BvRg%3D","updated":"2014-01-31 11:19:53.000000000","message":"Done","commit_id":"cbe8d7de6ac2181f2d906b92f01b2bace8bdd063"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"9e970b52631d44cf96c41e1dead1c22e63ed51ac","unresolved":false,"context_lines":[{"line_number":268,"context_line":""},{"line_number":269,"context_line":"        Returns the wrapped collection, which includes:"},{"line_number":270,"context_line":"        - Executing any filtering not already carried out"},{"line_number":271,"context_line":"        - Paginate or truncate to a set limit if necessary"},{"line_number":272,"context_line":"        - Adds \u0027self\u0027 links in every member"},{"line_number":273,"context_line":"        - Adds \u0027next\u0027, \u0027self\u0027 and \u0027prev\u0027 links for the whole collection."},{"line_number":274,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAUH%2F96jI%3D","line":271,"updated":"2014-02-01 09:54:36.000000000","message":"(I should remove the word Paginate from here)","commit_id":"8882052d0bbd23589851833f77b690b4dfe27678"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"2022a89cb76001688b95db6d078cb207dbc53b4e","unresolved":false,"context_lines":[{"line_number":308,"context_line":"        \"\"\"Limits a list of references."},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"        Returns a boolean indicating whether the list was truncated, as well"},{"line_number":311,"context_line":"        as the list of entities."},{"line_number":312,"context_line":"        \"\"\""},{"line_number":313,"context_line":"        limited \u003d False"},{"line_number":314,"context_line":"        if hints is None:"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAUH%2F98Ns%3D","line":311,"updated":"2014-01-31 22:09:19.000000000","message":"(NIT): could doc strings be added here for the parameters and a return for the value, even though you have it described generally above?","commit_id":"8882052d0bbd23589851833f77b690b4dfe27678"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"9e970b52631d44cf96c41e1dead1c22e63ed51ac","unresolved":false,"context_lines":[{"line_number":308,"context_line":"        \"\"\"Limits a list of references."},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"        Returns a boolean indicating whether the list was truncated, as well"},{"line_number":311,"context_line":"        as the list of entities."},{"line_number":312,"context_line":"        \"\"\""},{"line_number":313,"context_line":"        limited \u003d False"},{"line_number":314,"context_line":"        if hints is None:"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAUH%2F96i8%3D","line":311,"in_reply_to":"AAAAUH%2F98Ns%3D","updated":"2014-02-01 09:54:36.000000000","message":"Done","commit_id":"8882052d0bbd23589851833f77b690b4dfe27678"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2dcefd3f0920f46da719e2fb192fc7eee30682e3","unresolved":false,"context_lines":[{"line_number":277,"context_line":"        :param refs: the list of members of the collection"},{"line_number":278,"context_line":"        :param hints: list hints, containing any relevant"},{"line_number":279,"context_line":"                      filters and limit. Any filters already satisfied by"},{"line_number":280,"context_line":"                      drivers will have been removed"},{"line_number":281,"context_line":"        \"\"\""},{"line_number":282,"context_line":"        # Check if there are any filters in hints that were not"},{"line_number":283,"context_line":"        # handled by the drivers. The driver will not have paginated or"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F96V4%3D","line":280,"updated":"2014-02-01 15:15:44.000000000","message":"suggest change drivers to managers?","commit_id":"f5b90effeb7db975604339ab1c3505ad77846d51"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"8734cba6f1ca2b98f1e78d872699011e6c3a5d74","unresolved":false,"context_lines":[{"line_number":277,"context_line":"        :param refs: the list of members of the collection"},{"line_number":278,"context_line":"        :param hints: list hints, containing any relevant"},{"line_number":279,"context_line":"                      filters and limit. Any filters already satisfied by"},{"line_number":280,"context_line":"                      drivers will have been removed"},{"line_number":281,"context_line":"        \"\"\""},{"line_number":282,"context_line":"        # Check if there are any filters in hints that were not"},{"line_number":283,"context_line":"        # handled by the drivers. The driver will not have paginated or"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F96BI%3D","line":280,"in_reply_to":"AAAAUH%2F96V4%3D","updated":"2014-02-03 22:56:24.000000000","message":"Done","commit_id":"f5b90effeb7db975604339ab1c3505ad77846d51"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2dcefd3f0920f46da719e2fb192fc7eee30682e3","unresolved":false,"context_lines":[{"line_number":323,"context_line":"            limited \u003d True"},{"line_number":324,"context_line":"            return limited, refs[:list_limit]"},{"line_number":325,"context_line":"        else:"},{"line_number":326,"context_line":"            return limited, refs"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"    @classmethod"},{"line_number":329,"context_line":"    def filter_by_attributes(cls, refs, hints):"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F96Vs%3D","line":326,"updated":"2014-02-01 15:15:44.000000000","message":"the use of `limited` here is unnecessarily confusing... readers have to examine the entire function to figure out that limited is always False here.  Suggest define an enum or define a couple of constants for LIMITED \u003d True, NOT_LIMITED \u003d False and return those directly rather than reassigning `limited`.","commit_id":"f5b90effeb7db975604339ab1c3505ad77846d51"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"8734cba6f1ca2b98f1e78d872699011e6c3a5d74","unresolved":false,"context_lines":[{"line_number":323,"context_line":"            limited \u003d True"},{"line_number":324,"context_line":"            return limited, refs[:list_limit]"},{"line_number":325,"context_line":"        else:"},{"line_number":326,"context_line":"            return limited, refs"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"    @classmethod"},{"line_number":329,"context_line":"    def filter_by_attributes(cls, refs, hints):"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F96BM%3D","line":326,"in_reply_to":"AAAAUH%2F96Vs%3D","updated":"2014-02-03 22:56:24.000000000","message":"Nice idea.  Done.","commit_id":"f5b90effeb7db975604339ab1c3505ad77846d51"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f7b6986ddd03f3d6c493beaf89b22bc08e998d50","unresolved":false,"context_lines":[{"line_number":308,"context_line":"        \"\"\"Limits a list of entities."},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"        The underlying driver layer may have already truncated the collection"},{"line_number":311,"context_line":"        for us, but in case it was unable to handle this we check here."},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"        :param refs: the list of members of the collection"},{"line_number":314,"context_line":"        :param hints: hints, containing, among other things, the limit required"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAUH%2F9u5A%3D","line":311,"updated":"2014-02-04 16:14:35.000000000","message":"suggest change \"this\" to \"truncation\"","commit_id":"15b535d33f39e48a9c55611dc3af5b81a1ba752e"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"a1bc6a64567a3e6100a904eca7f72c03d95e7218","unresolved":false,"context_lines":[{"line_number":308,"context_line":"        \"\"\"Limits a list of entities."},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"        The underlying driver layer may have already truncated the collection"},{"line_number":311,"context_line":"        for us, but in case it was unable to handle this we check here."},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"        :param refs: the list of members of the collection"},{"line_number":314,"context_line":"        :param hints: hints, containing, among other things, the limit required"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAUH%2F9Ycc%3D","line":311,"in_reply_to":"AAAAUH%2F9u5A%3D","updated":"2014-02-07 11:25:08.000000000","message":"Done","commit_id":"15b535d33f39e48a9c55611dc3af5b81a1ba752e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f7b6986ddd03f3d6c493beaf89b22bc08e998d50","unresolved":false,"context_lines":[{"line_number":311,"context_line":"        for us, but in case it was unable to handle this we check here."},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"        :param refs: the list of members of the collection"},{"line_number":314,"context_line":"        :param hints: hints, containing, among other things, the limit required"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"        :returns: boolean indicating whether the list was truncated, as well"},{"line_number":317,"context_line":"                  as the list of (truncated if necessary) entities."}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAUH%2F9u48%3D","line":314,"updated":"2014-02-04 16:14:35.000000000","message":"change \"required\" to \"requested\" ?","commit_id":"15b535d33f39e48a9c55611dc3af5b81a1ba752e"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"a1bc6a64567a3e6100a904eca7f72c03d95e7218","unresolved":false,"context_lines":[{"line_number":311,"context_line":"        for us, but in case it was unable to handle this we check here."},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"        :param refs: the list of members of the collection"},{"line_number":314,"context_line":"        :param hints: hints, containing, among other things, the limit required"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"        :returns: boolean indicating whether the list was truncated, as well"},{"line_number":317,"context_line":"                  as the list of (truncated if necessary) entities."}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAUH%2F9YcY%3D","line":314,"in_reply_to":"AAAAUH%2F9u48%3D","updated":"2014-02-07 11:25:08.000000000","message":"good idea, done.","commit_id":"15b535d33f39e48a9c55611dc3af5b81a1ba752e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f7b6986ddd03f3d6c493beaf89b22bc08e998d50","unresolved":false,"context_lines":[{"line_number":332,"context_line":"            # The collection isn\u0027t too large - and this may be because the"},{"line_number":333,"context_line":"            # driver layer truncated it for us.  If so, it will have set the"},{"line_number":334,"context_line":"            # \u0027truncated\u0027 attribute to \u0027true\u0027"},{"line_number":335,"context_line":"            return list_limit[\u0027truncated\u0027], refs"},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"    @classmethod"},{"line_number":338,"context_line":"    def filter_by_attributes(cls, refs, hints):"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAUH%2F9u4E%3D","line":335,"updated":"2014-02-04 16:14:35.000000000","message":"seems like we would check list_limit[\u0027truncated\u0027] and if it\u0027s true then the refs are already truncated? Why would the driver indicate that it truncated and then return too many elements?\n\nlike\n\n if list_limit.get(\u0027truncated\u0027) is not None:\n    return list_limit[\u0027truncated\u0027], refs\n\n if len(refs) \u003e list_limit[\u0027limit\u0027]:\n   return LIMITED, refs[:list_limit[\u0027limit\u0027]]\n\n return NOT_LIMITED, refs","commit_id":"15b535d33f39e48a9c55611dc3af5b81a1ba752e"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"a1bc6a64567a3e6100a904eca7f72c03d95e7218","unresolved":false,"context_lines":[{"line_number":332,"context_line":"            # The collection isn\u0027t too large - and this may be because the"},{"line_number":333,"context_line":"            # driver layer truncated it for us.  If so, it will have set the"},{"line_number":334,"context_line":"            # \u0027truncated\u0027 attribute to \u0027true\u0027"},{"line_number":335,"context_line":"            return list_limit[\u0027truncated\u0027], refs"},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"    @classmethod"},{"line_number":338,"context_line":"    def filter_by_attributes(cls, refs, hints):"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAUH%2F9YcI%3D","line":335,"in_reply_to":"AAAAUH%2F9u4E%3D","updated":"2014-02-07 11:25:08.000000000","message":"Done (well, something very similar)","commit_id":"15b535d33f39e48a9c55611dc3af5b81a1ba752e"}],"keystone/common/driver_hints.py":[{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"0d85ebc74a9670a9a7d7ba4e18b93cce8b44a8e4","unresolved":false,"context_lines":[{"line_number":61,"context_line":"                    entry[\u0027comparator\u0027] \u003d\u003d \u0027equals\u0027):"},{"line_number":62,"context_line":"                return entry"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def set_limit(self, limit):"},{"line_number":65,"context_line":"        \"\"\"Set a limit to indicate the list should be truncated.\"\"\""},{"line_number":66,"context_line":"        # We only allow one limit entry in the list, so if it already exists"},{"line_number":67,"context_line":"        # we overwrite the old one"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2BvhE%3D","line":64,"updated":"2014-01-22 15:57:10.000000000","message":"Why put this in the list?  Seems much more efficient and less confusing to have a self.limit attribute instead of a getter and setter and iterate through a list.","commit_id":"cbe8d7de6ac2181f2d906b92f01b2bace8bdd063"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"3c0df1aa0d0c7c6390aba3c79624ef0e1b6c7732","unresolved":false,"context_lines":[{"line_number":61,"context_line":"                    entry[\u0027comparator\u0027] \u003d\u003d \u0027equals\u0027):"},{"line_number":62,"context_line":"                return entry"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def set_limit(self, limit):"},{"line_number":65,"context_line":"        \"\"\"Set a limit to indicate the list should be truncated.\"\"\""},{"line_number":66,"context_line":"        # We only allow one limit entry in the list, so if it already exists"},{"line_number":67,"context_line":"        # we overwrite the old one"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2BvZk%3D","line":64,"in_reply_to":"AAAAUH%2F%2BvhE%3D","updated":"2014-01-22 16:20:46.000000000","message":"It could be…in fact that was one of the early versions….although some people were keen that you could always enumerate the list manually if you want","commit_id":"cbe8d7de6ac2181f2d906b92f01b2bace8bdd063"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f7b6986ddd03f3d6c493beaf89b22bc08e998d50","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                exists \u003d True"},{"line_number":74,"context_line":"        if not exists:"},{"line_number":75,"context_line":"            self.append({\u0027limit\u0027: limit, \u0027type\u0027: \u0027limit\u0027,"},{"line_number":76,"context_line":"                         \u0027truncated\u0027: truncated})"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def get_limit(self):"},{"line_number":79,"context_line":"        \"\"\"Get the limit to which the list should be truncated.\"\"\""}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAUH%2F9u14%3D","line":76,"updated":"2014-02-04 16:14:35.000000000","message":"here\u0027s a change to use for/else:\n\n for x in self:\n     if x[\u0027type\u0027] \u003d\u003d \u0027limit\u0027:\n        x[\u0027limit\u0027] \u003d limit\n        x[\u0027truncated\u0027] \u003d truncated\n        break\n  else:\n    self.append({\u0027limit\u0027: limit, \u0027type\u0027: \u0027limit\u0027,\n        \u0027truncated\u0027: truncated})\n\nthen you can get rid of the extra exists variable.\n\nand then won\u0027t also go through all the elements when there should only be one.","commit_id":"15b535d33f39e48a9c55611dc3af5b81a1ba752e"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"a1bc6a64567a3e6100a904eca7f72c03d95e7218","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                exists \u003d True"},{"line_number":74,"context_line":"        if not exists:"},{"line_number":75,"context_line":"            self.append({\u0027limit\u0027: limit, \u0027type\u0027: \u0027limit\u0027,"},{"line_number":76,"context_line":"                         \u0027truncated\u0027: truncated})"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def get_limit(self):"},{"line_number":79,"context_line":"        \"\"\"Get the limit to which the list should be truncated.\"\"\""}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAUH%2F9YW4%3D","line":76,"in_reply_to":"AAAAUH%2F9u14%3D","updated":"2014-02-07 11:25:08.000000000","message":"nice!","commit_id":"15b535d33f39e48a9c55611dc3af5b81a1ba752e"}],"keystone/common/manager.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"77de2e326732d5aed0b83c7e81ac0ee98033913a","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    If a hints list is not provided in the arguments of the wrapped call then"},{"line_number":39,"context_line":"    any limits set in the config file are ignored.  This allows internal use"},{"line_number":40,"context_line":"    of such wrapped methods where he entire data set is needed as input for the"},{"line_number":41,"context_line":"    calculations of some other API (e.g. get role assignments for a given"},{"line_number":42,"context_line":"    project)."},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAUH%2F%2B4vY%3D","line":40,"updated":"2014-01-21 03:46:00.000000000","message":"s/he/the/","commit_id":"efc230d4b5615200100478f32f5741582c513f14"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"6dd9d4212a2bb3103ab2362385d50878343b73be","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    If a hints list is not provided in the arguments of the wrapped call then"},{"line_number":39,"context_line":"    any limits set in the config file are ignored.  This allows internal use"},{"line_number":40,"context_line":"    of such wrapped methods where he entire data set is needed as input for the"},{"line_number":41,"context_line":"    calculations of some other API (e.g. get role assignments for a given"},{"line_number":42,"context_line":"    project)."},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAUH%2F%2B3mw%3D","line":40,"in_reply_to":"AAAAUH%2F%2B4vY%3D","updated":"2014-01-21 10:49:46.000000000","message":"Done","commit_id":"efc230d4b5615200100478f32f5741582c513f14"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"239be62d54c7d8a39e107922ea3507d3a2890695","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    \"\"\"Truncate the list returned by the wrapped function."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    This is designed to wrap Manager list_{entity} methods to ensure that"},{"line_number":26,"context_line":"    any list limits are enforced.  Provided a hints list is provided, the"},{"line_number":27,"context_line":"    wrapper will insert the relevant limit into the hints so that the"},{"line_number":28,"context_line":"    underlying driver call can try and honor it.  In fact, because we want the"},{"line_number":29,"context_line":"    caller to be able to determine if the list has been truncated, it actually"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2BvPE%3D","line":26,"updated":"2014-01-22 16:54:28.000000000","message":"(nit) Change \"Provided a\" to \"If a\"","commit_id":"cbe8d7de6ac2181f2d906b92f01b2bace8bdd063"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"f33bc8a1a7b1292a1ad50e5e6b7ade1398b626db","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    \"\"\"Truncate the list returned by the wrapped function."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    This is designed to wrap Manager list_{entity} methods to ensure that"},{"line_number":26,"context_line":"    any list limits are enforced.  Provided a hints list is provided, the"},{"line_number":27,"context_line":"    wrapper will insert the relevant limit into the hints so that the"},{"line_number":28,"context_line":"    underlying driver call can try and honor it.  In fact, because we want the"},{"line_number":29,"context_line":"    caller to be able to determine if the list has been truncated, it actually"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2BvIo%3D","line":26,"in_reply_to":"AAAAUH%2F%2BvPE%3D","updated":"2014-01-31 11:19:53.000000000","message":"Done","commit_id":"cbe8d7de6ac2181f2d906b92f01b2bace8bdd063"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"239be62d54c7d8a39e107922ea3507d3a2890695","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    any list limits are enforced.  Provided a hints list is provided, the"},{"line_number":27,"context_line":"    wrapper will insert the relevant limit into the hints so that the"},{"line_number":28,"context_line":"    underlying driver call can try and honor it.  In fact, because we want the"},{"line_number":29,"context_line":"    caller to be able to determine if the list has been truncated, it actually"},{"line_number":30,"context_line":"    asks the driver for one more entity than the limit and then, once the"},{"line_number":31,"context_line":"    list has been generated, will set the limit in the hint to the correct"},{"line_number":32,"context_line":"    value before returning to the caller."}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2BvOk%3D","line":29,"updated":"2014-01-22 16:54:28.000000000","message":"suggest change the function to return an indication of whether the list has been truncated or not rather than requesting the wrong number of items.","commit_id":"cbe8d7de6ac2181f2d906b92f01b2bace8bdd063"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"f33bc8a1a7b1292a1ad50e5e6b7ade1398b626db","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    any list limits are enforced.  Provided a hints list is provided, the"},{"line_number":27,"context_line":"    wrapper will insert the relevant limit into the hints so that the"},{"line_number":28,"context_line":"    underlying driver call can try and honor it.  In fact, because we want the"},{"line_number":29,"context_line":"    caller to be able to determine if the list has been truncated, it actually"},{"line_number":30,"context_line":"    asks the driver for one more entity than the limit and then, once the"},{"line_number":31,"context_line":"    list has been generated, will set the limit in the hint to the correct"},{"line_number":32,"context_line":"    value before returning to the caller."}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2BEgg%3D","line":29,"in_reply_to":"AAAAUH%2F%2BvOk%3D","updated":"2014-01-31 11:19:53.000000000","message":"see comment below","commit_id":"cbe8d7de6ac2181f2d906b92f01b2bace8bdd063"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"239be62d54c7d8a39e107922ea3507d3a2890695","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    \"\"\""},{"line_number":45,"context_line":"    @functools.wraps(f)"},{"line_number":46,"context_line":"    def wrapper(self, *args, **kwargs):"},{"line_number":47,"context_line":"        if \u0027hints\u0027 not in kwargs or kwargs[\u0027hints\u0027] is None:"},{"line_number":48,"context_line":"            return f(self, *args, **kwargs)"},{"line_number":49,"context_line":"        else:"},{"line_number":50,"context_line":"            list_limit \u003d self.driver._get_list_limit()"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2BvN0%3D","line":47,"updated":"2014-01-22 16:54:28.000000000","message":"simplify this by using \"kwargs.get(\u0027hints\u0027)\"","commit_id":"cbe8d7de6ac2181f2d906b92f01b2bace8bdd063"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"f33bc8a1a7b1292a1ad50e5e6b7ade1398b626db","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    \"\"\""},{"line_number":45,"context_line":"    @functools.wraps(f)"},{"line_number":46,"context_line":"    def wrapper(self, *args, **kwargs):"},{"line_number":47,"context_line":"        if \u0027hints\u0027 not in kwargs or kwargs[\u0027hints\u0027] is None:"},{"line_number":48,"context_line":"            return f(self, *args, **kwargs)"},{"line_number":49,"context_line":"        else:"},{"line_number":50,"context_line":"            list_limit \u003d self.driver._get_list_limit()"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2BvHQ%3D","line":47,"in_reply_to":"AAAAUH%2F%2BvN0%3D","updated":"2014-01-31 11:19:53.000000000","message":"Done","commit_id":"cbe8d7de6ac2181f2d906b92f01b2bace8bdd063"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"239be62d54c7d8a39e107922ea3507d3a2890695","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    def wrapper(self, *args, **kwargs):"},{"line_number":47,"context_line":"        if \u0027hints\u0027 not in kwargs or kwargs[\u0027hints\u0027] is None:"},{"line_number":48,"context_line":"            return f(self, *args, **kwargs)"},{"line_number":49,"context_line":"        else:"},{"line_number":50,"context_line":"            list_limit \u003d self.driver._get_list_limit()"},{"line_number":51,"context_line":"            if list_limit:"},{"line_number":52,"context_line":"                # Ask for one more entry than we need"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2BvP4%3D","line":49,"updated":"2014-01-22 16:54:28.000000000","message":"suggest remove the else then you can unindent several lines.","commit_id":"cbe8d7de6ac2181f2d906b92f01b2bace8bdd063"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"f33bc8a1a7b1292a1ad50e5e6b7ade1398b626db","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    def wrapper(self, *args, **kwargs):"},{"line_number":47,"context_line":"        if \u0027hints\u0027 not in kwargs or kwargs[\u0027hints\u0027] is None:"},{"line_number":48,"context_line":"            return f(self, *args, **kwargs)"},{"line_number":49,"context_line":"        else:"},{"line_number":50,"context_line":"            list_limit \u003d self.driver._get_list_limit()"},{"line_number":51,"context_line":"            if list_limit:"},{"line_number":52,"context_line":"                # Ask for one more entry than we need"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2BvHM%3D","line":49,"in_reply_to":"AAAAUH%2F%2BvP4%3D","updated":"2014-01-31 11:19:53.000000000","message":"Done","commit_id":"cbe8d7de6ac2181f2d906b92f01b2bace8bdd063"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"0d85ebc74a9670a9a7d7ba4e18b93cce8b44a8e4","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            list_limit \u003d self.driver._get_list_limit()"},{"line_number":51,"context_line":"            if list_limit:"},{"line_number":52,"context_line":"                # Ask for one more entry than we need"},{"line_number":53,"context_line":"                kwargs[\u0027hints\u0027].set_limit(list_limit + 1)"},{"line_number":54,"context_line":"            ref_list \u003d f(self, *args, **kwargs)"},{"line_number":55,"context_line":"            if list_limit:"},{"line_number":56,"context_line":"                # Set the limit to the correct value, so the caller can"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2Bvm4%3D","line":53,"updated":"2014-01-22 15:57:10.000000000","message":"I find this a little confusing.  Can\u0027t the driver just do the +1 so it\u0027s more obvious that it\u0027s happening?","commit_id":"cbe8d7de6ac2181f2d906b92f01b2bace8bdd063"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"f33bc8a1a7b1292a1ad50e5e6b7ade1398b626db","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            list_limit \u003d self.driver._get_list_limit()"},{"line_number":51,"context_line":"            if list_limit:"},{"line_number":52,"context_line":"                # Ask for one more entry than we need"},{"line_number":53,"context_line":"                kwargs[\u0027hints\u0027].set_limit(list_limit + 1)"},{"line_number":54,"context_line":"            ref_list \u003d f(self, *args, **kwargs)"},{"line_number":55,"context_line":"            if list_limit:"},{"line_number":56,"context_line":"                # Set the limit to the correct value, so the caller can"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2BEgk%3D","line":53,"in_reply_to":"AAAAUH%2F%2BvNU%3D","updated":"2014-01-31 11:19:53.000000000","message":"So the slight complication with that approach is that it means that the driver level would have to do something like this:\n- add the limit ahead of the query taking place, and ask for one more than the limit\n- intercept after the query and see if we got more than the limit (which, I think,  impacts more code due to the way we sqlalchemy to actually execute the query), and if so, remove the extra item and then set a status (perhaps in the limit item in the hints) to say that truncation has taken place.\n\nIF we really feel that is better, I\u0027m OK with that approach - just canvasing views","commit_id":"cbe8d7de6ac2181f2d906b92f01b2bace8bdd063"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"239be62d54c7d8a39e107922ea3507d3a2890695","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            list_limit \u003d self.driver._get_list_limit()"},{"line_number":51,"context_line":"            if list_limit:"},{"line_number":52,"context_line":"                # Ask for one more entry than we need"},{"line_number":53,"context_line":"                kwargs[\u0027hints\u0027].set_limit(list_limit + 1)"},{"line_number":54,"context_line":"            ref_list \u003d f(self, *args, **kwargs)"},{"line_number":55,"context_line":"            if list_limit:"},{"line_number":56,"context_line":"                # Set the limit to the correct value, so the caller can"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2BvNU%3D","line":53,"in_reply_to":"AAAAUH%2F%2BvYA%3D","updated":"2014-01-22 16:54:28.000000000","message":"I\u0027d rather let the driver pick what method it wants to use to figure out if the response was truncated or not.","commit_id":"cbe8d7de6ac2181f2d906b92f01b2bace8bdd063"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"3c0df1aa0d0c7c6390aba3c79624ef0e1b6c7732","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            list_limit \u003d self.driver._get_list_limit()"},{"line_number":51,"context_line":"            if list_limit:"},{"line_number":52,"context_line":"                # Ask for one more entry than we need"},{"line_number":53,"context_line":"                kwargs[\u0027hints\u0027].set_limit(list_limit + 1)"},{"line_number":54,"context_line":"            ref_list \u003d f(self, *args, **kwargs)"},{"line_number":55,"context_line":"            if list_limit:"},{"line_number":56,"context_line":"                # Set the limit to the correct value, so the caller can"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2BvYA%3D","line":53,"in_reply_to":"AAAAUH%2F%2Bvm4%3D","updated":"2014-01-22 16:20:46.000000000","message":"So I did consider that…it lend of depends where we wan to lie :-)  It seemed (at least to me) that it might be better for the drives to return what they are being asked for, and for us to do the manipulation here.","commit_id":"cbe8d7de6ac2181f2d906b92f01b2bace8bdd063"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2dcefd3f0920f46da719e2fb192fc7eee30682e3","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        list_limit \u003d self.driver._get_list_limit()"},{"line_number":51,"context_line":"        if list_limit:"},{"line_number":52,"context_line":"            # Ask for one more entry than we need"},{"line_number":53,"context_line":"            kwargs[\u0027hints\u0027].set_limit(list_limit + 1)"},{"line_number":54,"context_line":"        ref_list \u003d f(self, *args, **kwargs)"},{"line_number":55,"context_line":"        if list_limit:"},{"line_number":56,"context_line":"            # Set the limit to the correct value, so the caller can"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F96WQ%3D","line":53,"updated":"2014-02-01 15:15:44.000000000","message":"I still feel its better to not lie to the driver and pass the hints in as they are and let the driver figure out how it should best figure out how to limit the results.\n\nFor the sql driver, it may be this wrapper.","commit_id":"f5b90effeb7db975604339ab1c3505ad77846d51"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"8734cba6f1ca2b98f1e78d872699011e6c3a5d74","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        list_limit \u003d self.driver._get_list_limit()"},{"line_number":51,"context_line":"        if list_limit:"},{"line_number":52,"context_line":"            # Ask for one more entry than we need"},{"line_number":53,"context_line":"            kwargs[\u0027hints\u0027].set_limit(list_limit + 1)"},{"line_number":54,"context_line":"        ref_list \u003d f(self, *args, **kwargs)"},{"line_number":55,"context_line":"        if list_limit:"},{"line_number":56,"context_line":"            # Set the limit to the correct value, so the caller can"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F9ymA%3D","line":53,"in_reply_to":"AAAAUH%2F96WQ%3D","updated":"2014-02-03 22:56:24.000000000","message":"Done","commit_id":"f5b90effeb7db975604339ab1c3505ad77846d51"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f7b6986ddd03f3d6c493beaf89b22bc08e998d50","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    hints list is provided, the wrapper will insert the relevant limit into"},{"line_number":28,"context_line":"    the hints so that the underlying driver call can try and honor it. If the"},{"line_number":29,"context_line":"    driver does truncate the response, it will update the \u0027truncated\u0027 attribute"},{"line_number":30,"context_line":"    in the limit entry in the hints list, which enables the caller of this"},{"line_number":31,"context_line":"    function to know if truncation has taken place.  If, however, the driver"},{"line_number":32,"context_line":"    layer is unable to perform truncation, the limit entry is simply left in"},{"line_number":33,"context_line":"    the hints list for the caller to handle."}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAUH%2F9u0w%3D","line":30,"updated":"2014-02-04 16:14:35.000000000","message":"suggest put \u0027 around limit.","commit_id":"15b535d33f39e48a9c55611dc3af5b81a1ba752e"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"a1bc6a64567a3e6100a904eca7f72c03d95e7218","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    hints list is provided, the wrapper will insert the relevant limit into"},{"line_number":28,"context_line":"    the hints so that the underlying driver call can try and honor it. If the"},{"line_number":29,"context_line":"    driver does truncate the response, it will update the \u0027truncated\u0027 attribute"},{"line_number":30,"context_line":"    in the limit entry in the hints list, which enables the caller of this"},{"line_number":31,"context_line":"    function to know if truncation has taken place.  If, however, the driver"},{"line_number":32,"context_line":"    layer is unable to perform truncation, the limit entry is simply left in"},{"line_number":33,"context_line":"    the hints list for the caller to handle."}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAUH%2F9YWE%3D","line":30,"in_reply_to":"AAAAUH%2F9u0w%3D","updated":"2014-02-07 11:25:08.000000000","message":"Done","commit_id":"15b535d33f39e48a9c55611dc3af5b81a1ba752e"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"2048bd5af7d87d0305603d8eda287bfc4b6559a1","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        if kwargs.get(\u0027hints\u0027) is None:"},{"line_number":49,"context_line":"            return f(self, *args, **kwargs)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        list_limit \u003d self.driver._get_list_limit()"},{"line_number":52,"context_line":"        if list_limit:"},{"line_number":53,"context_line":"            kwargs[\u0027hints\u0027].set_limit(list_limit)"},{"line_number":54,"context_line":"        return f(self, *args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAUH%2F9mXU%3D","line":51,"updated":"2014-02-05 19:21:38.000000000","message":"Why is _get_list_limit a protected method of the driver if it\u0027s purpose is to be used by the manager?","commit_id":"15b535d33f39e48a9c55611dc3af5b81a1ba752e"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"a1bc6a64567a3e6100a904eca7f72c03d95e7218","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        if kwargs.get(\u0027hints\u0027) is None:"},{"line_number":49,"context_line":"            return f(self, *args, **kwargs)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        list_limit \u003d self.driver._get_list_limit()"},{"line_number":52,"context_line":"        if list_limit:"},{"line_number":53,"context_line":"            kwargs[\u0027hints\u0027].set_limit(list_limit)"},{"line_number":54,"context_line":"        return f(self, *args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAUH%2F9YUc%3D","line":51,"in_reply_to":"AAAAUH%2F9mXU%3D","updated":"2014-02-07 11:25:08.000000000","message":"…because we only allow virtual functions in the drive object class in the manager….unless you prefix it with \u0027_\u0027.  I think we actually have a test for that somewhere in our unit tests.","commit_id":"15b535d33f39e48a9c55611dc3af5b81a1ba752e"}],"keystone/common/serializer.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"239be62d54c7d8a39e107922ea3507d3a2890695","unresolved":false,"context_lines":[{"line_number":151,"context_line":"                if list_item_tag in child:"},{"line_number":152,"context_line":"                    values.append(child[list_item_tag])"},{"line_number":153,"context_line":"                else:"},{"line_number":154,"context_line":"                    if \u0027links\u0027 in child:"},{"line_number":155,"context_line":"                        links \u003d child[\u0027links\u0027]"},{"line_number":156,"context_line":"                    else:"},{"line_number":157,"context_line":"                        truncated \u003d child[\u0027truncated\u0027]"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2BvM0%3D","line":154,"updated":"2014-01-22 16:54:28.000000000","message":"why change so that links might not be in child?","commit_id":"cbe8d7de6ac2181f2d906b92f01b2bace8bdd063"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"f33bc8a1a7b1292a1ad50e5e6b7ade1398b626db","unresolved":false,"context_lines":[{"line_number":151,"context_line":"                if list_item_tag in child:"},{"line_number":152,"context_line":"                    values.append(child[list_item_tag])"},{"line_number":153,"context_line":"                else:"},{"line_number":154,"context_line":"                    if \u0027links\u0027 in child:"},{"line_number":155,"context_line":"                        links \u003d child[\u0027links\u0027]"},{"line_number":156,"context_line":"                    else:"},{"line_number":157,"context_line":"                        truncated \u003d child[\u0027truncated\u0027]"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2Bedk%3D","line":154,"in_reply_to":"AAAAUH%2F%2BvM0%3D","updated":"2014-01-31 11:19:53.000000000","message":"Maybe I am misunderstanding the way this works, but I think we walk the the elements and since \u0027truncated\u0027 as at the same level as \u0027links\u0027, when we looking at the \u0027truncated\u0027 element it won\u0027 have \u0027links\u0027 in it...","commit_id":"cbe8d7de6ac2181f2d906b92f01b2bace8bdd063"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"2022a89cb76001688b95db6d078cb207dbc53b4e","unresolved":false,"context_lines":[{"line_number":199,"context_line":"            # FIXME(henry-nash): special-case truncation attribute in"},{"line_number":200,"context_line":"            # collections"},{"line_number":201,"context_line":"            if \u0027truncated\u0027 \u003d\u003d key:"},{"line_number":202,"context_line":"                if truncated:"},{"line_number":203,"context_line":"                    # we have multiple attributes"},{"line_number":204,"context_line":"                    raise Exception(\u0027Multiple truncation attributes found\u0027)"},{"line_number":205,"context_line":"                truncated \u003d d.pop(key)"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAUH%2F98MQ%3D","line":202,"updated":"2014-01-31 22:09:19.000000000","message":"this would never get hit, would it?","commit_id":"8882052d0bbd23589851833f77b690b4dfe27678"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"9e970b52631d44cf96c41e1dead1c22e63ed51ac","unresolved":false,"context_lines":[{"line_number":199,"context_line":"            # FIXME(henry-nash): special-case truncation attribute in"},{"line_number":200,"context_line":"            # collections"},{"line_number":201,"context_line":"            if \u0027truncated\u0027 \u003d\u003d key:"},{"line_number":202,"context_line":"                if truncated:"},{"line_number":203,"context_line":"                    # we have multiple attributes"},{"line_number":204,"context_line":"                    raise Exception(\u0027Multiple truncation attributes found\u0027)"},{"line_number":205,"context_line":"                truncated \u003d d.pop(key)"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAUH%2F96iw%3D","line":202,"in_reply_to":"AAAAUH%2F98MQ%3D","updated":"2014-02-01 09:54:36.000000000","message":"It could, since we set truncated a few lines below this - and if the collection had, in error, two \u0027truncated\u0027 attributes we would hit this.  It is the same logic as the \u0027links\u0027 code above.","commit_id":"8882052d0bbd23589851833f77b690b4dfe27678"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2dcefd3f0920f46da719e2fb192fc7eee30682e3","unresolved":false,"context_lines":[{"line_number":143,"context_line":"            return {\u0027links\u0027: self._deserialize_links(element)}"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"        links \u003d None"},{"line_number":146,"context_line":"        truncated \u003d None"},{"line_number":147,"context_line":"        for child in [self.walk_element(x) for x in element"},{"line_number":148,"context_line":"                      if not isinstance(x, ENTITY_TYPE)]:"},{"line_number":149,"context_line":"            if list_item_tag:"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F96VY%3D","line":146,"updated":"2014-02-01 15:15:44.000000000","message":"Why is the deserializer affected by this? Are clients sending the server truncated lists?","commit_id":"f5b90effeb7db975604339ab1c3505ad77846d51"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"8734cba6f1ca2b98f1e78d872699011e6c3a5d74","unresolved":false,"context_lines":[{"line_number":143,"context_line":"            return {\u0027links\u0027: self._deserialize_links(element)}"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"        links \u003d None"},{"line_number":146,"context_line":"        truncated \u003d None"},{"line_number":147,"context_line":"        for child in [self.walk_element(x) for x in element"},{"line_number":148,"context_line":"                      if not isinstance(x, ENTITY_TYPE)]:"},{"line_number":149,"context_line":"            if list_item_tag:"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F95%2FU%3D","line":146,"in_reply_to":"AAAAUH%2F96VY%3D","updated":"2014-02-03 22:56:24.000000000","message":"It is used in our testing structure (we deserializes the results to check them)","commit_id":"f5b90effeb7db975604339ab1c3505ad77846d51"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2dcefd3f0920f46da719e2fb192fc7eee30682e3","unresolved":false,"context_lines":[{"line_number":196,"context_line":"                    # we have multiple links"},{"line_number":197,"context_line":"                    raise Exception(\u0027Multiple links found\u0027)"},{"line_number":198,"context_line":"                links \u003d d.pop(key)"},{"line_number":199,"context_line":"            # FIXME(henry-nash): special-case truncation attribute in"},{"line_number":200,"context_line":"            # collections"},{"line_number":201,"context_line":"            if \u0027truncated\u0027 \u003d\u003d key:"},{"line_number":202,"context_line":"                if truncated:"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F96VU%3D","line":199,"updated":"2014-02-01 15:15:44.000000000","message":"why is this a FIXME? Is there something left to do here?","commit_id":"f5b90effeb7db975604339ab1c3505ad77846d51"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"8734cba6f1ca2b98f1e78d872699011e6c3a5d74","unresolved":false,"context_lines":[{"line_number":196,"context_line":"                    # we have multiple links"},{"line_number":197,"context_line":"                    raise Exception(\u0027Multiple links found\u0027)"},{"line_number":198,"context_line":"                links \u003d d.pop(key)"},{"line_number":199,"context_line":"            # FIXME(henry-nash): special-case truncation attribute in"},{"line_number":200,"context_line":"            # collections"},{"line_number":201,"context_line":"            if \u0027truncated\u0027 \u003d\u003d key:"},{"line_number":202,"context_line":"                if truncated:"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F95%2FQ%3D","line":199,"in_reply_to":"AAAAUH%2F96VU%3D","updated":"2014-02-03 22:56:24.000000000","message":"I was just following the equivalent above for links….although I agree, I\u0027m not sure what else we can do.  I\u0027ll reword the comments.","commit_id":"f5b90effeb7db975604339ab1c3505ad77846d51"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2dcefd3f0920f46da719e2fb192fc7eee30682e3","unresolved":false,"context_lines":[{"line_number":201,"context_line":"            if \u0027truncated\u0027 \u003d\u003d key:"},{"line_number":202,"context_line":"                if truncated:"},{"line_number":203,"context_line":"                    # we have multiple attributes"},{"line_number":204,"context_line":"                    raise Exception(\u0027Multiple truncation attributes found\u0027)"},{"line_number":205,"context_line":"                truncated \u003d d.pop(key)"},{"line_number":206,"context_line":"        assert len(d.keys()) \u003d\u003d 1, (\u0027Cannot encode more than one root \u0027"},{"line_number":207,"context_line":"                                    \u0027element: %s\u0027 % d.keys())"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F96VQ%3D","line":204,"updated":"2014-02-01 15:15:44.000000000","message":"wrap string in _() for translation.","commit_id":"f5b90effeb7db975604339ab1c3505ad77846d51"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"8734cba6f1ca2b98f1e78d872699011e6c3a5d74","unresolved":false,"context_lines":[{"line_number":201,"context_line":"            if \u0027truncated\u0027 \u003d\u003d key:"},{"line_number":202,"context_line":"                if truncated:"},{"line_number":203,"context_line":"                    # we have multiple attributes"},{"line_number":204,"context_line":"                    raise Exception(\u0027Multiple truncation attributes found\u0027)"},{"line_number":205,"context_line":"                truncated \u003d d.pop(key)"},{"line_number":206,"context_line":"        assert len(d.keys()) \u003d\u003d 1, (\u0027Cannot encode more than one root \u0027"},{"line_number":207,"context_line":"                                    \u0027element: %s\u0027 % d.keys())"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F95%2FI%3D","line":204,"in_reply_to":"AAAAUH%2F96VQ%3D","updated":"2014-02-03 22:56:24.000000000","message":"Done","commit_id":"f5b90effeb7db975604339ab1c3505ad77846d51"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2dcefd3f0920f46da719e2fb192fc7eee30682e3","unresolved":false,"context_lines":[{"line_number":224,"context_line":"        if links:"},{"line_number":225,"context_line":"            self._populate_links(root, links)"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"        # FIXME(henry-nash): special-case attribute for now"},{"line_number":228,"context_line":"        if truncated:"},{"line_number":229,"context_line":"            self._populate_truncated(root, truncated)"},{"line_number":230,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F96VM%3D","line":227,"updated":"2014-02-01 15:15:44.000000000","message":"I don\u0027t see what the alternative is.","commit_id":"f5b90effeb7db975604339ab1c3505ad77846d51"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"8734cba6f1ca2b98f1e78d872699011e6c3a5d74","unresolved":false,"context_lines":[{"line_number":224,"context_line":"        if links:"},{"line_number":225,"context_line":"            self._populate_links(root, links)"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"        # FIXME(henry-nash): special-case attribute for now"},{"line_number":228,"context_line":"        if truncated:"},{"line_number":229,"context_line":"            self._populate_truncated(root, truncated)"},{"line_number":230,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F95%2B8%3D","line":227,"in_reply_to":"AAAAUH%2F96VM%3D","updated":"2014-02-03 22:56:24.000000000","message":"as above.","commit_id":"f5b90effeb7db975604339ab1c3505ad77846d51"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f7b6986ddd03f3d6c493beaf89b22bc08e998d50","unresolved":false,"context_lines":[{"line_number":143,"context_line":"            return {\u0027links\u0027: self._deserialize_links(element)}"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"        links \u003d None"},{"line_number":146,"context_line":"        truncated \u003d None"},{"line_number":147,"context_line":"        for child in [self.walk_element(x) for x in element"},{"line_number":148,"context_line":"                      if not isinstance(x, ENTITY_TYPE)]:"},{"line_number":149,"context_line":"            if list_item_tag:"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAUH%2F9uyw%3D","line":146,"updated":"2014-02-04 16:14:35.000000000","message":"suggest set truncated \u003d False here since it\u0027s used as a boolean at 174.","commit_id":"15b535d33f39e48a9c55611dc3af5b81a1ba752e"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"a1bc6a64567a3e6100a904eca7f72c03d95e7218","unresolved":false,"context_lines":[{"line_number":143,"context_line":"            return {\u0027links\u0027: self._deserialize_links(element)}"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"        links \u003d None"},{"line_number":146,"context_line":"        truncated \u003d None"},{"line_number":147,"context_line":"        for child in [self.walk_element(x) for x in element"},{"line_number":148,"context_line":"                      if not isinstance(x, ENTITY_TYPE)]:"},{"line_number":149,"context_line":"            if list_item_tag:"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAUH%2F9YUM%3D","line":146,"in_reply_to":"AAAAUH%2F9uyw%3D","updated":"2014-02-07 11:25:08.000000000","message":"Done","commit_id":"15b535d33f39e48a9c55611dc3af5b81a1ba752e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f7b6986ddd03f3d6c493beaf89b22bc08e998d50","unresolved":false,"context_lines":[{"line_number":185,"context_line":""},{"line_number":186,"context_line":"        \"\"\""},{"line_number":187,"context_line":"        links \u003d None"},{"line_number":188,"context_line":"        truncated \u003d None"},{"line_number":189,"context_line":"        # FIXME(dolph): skipping links for now"},{"line_number":190,"context_line":"        for key in d.keys():"},{"line_number":191,"context_line":"            if \u0027_links\u0027 in key:"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAUH%2F9uyI%3D","line":188,"updated":"2014-02-04 16:14:35.000000000","message":"suggest set truncated \u003d False here since it\u0027s used as a boolean.","commit_id":"15b535d33f39e48a9c55611dc3af5b81a1ba752e"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"a1bc6a64567a3e6100a904eca7f72c03d95e7218","unresolved":false,"context_lines":[{"line_number":185,"context_line":""},{"line_number":186,"context_line":"        \"\"\""},{"line_number":187,"context_line":"        links \u003d None"},{"line_number":188,"context_line":"        truncated \u003d None"},{"line_number":189,"context_line":"        # FIXME(dolph): skipping links for now"},{"line_number":190,"context_line":"        for key in d.keys():"},{"line_number":191,"context_line":"            if \u0027_links\u0027 in key:"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAUH%2F9YT0%3D","line":188,"in_reply_to":"AAAAUH%2F9uyI%3D","updated":"2014-02-07 11:25:08.000000000","message":"Done","commit_id":"15b535d33f39e48a9c55611dc3af5b81a1ba752e"}],"keystone/common/sql/core.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"617050873c03eaf3f18f7d71b566479cd9d912bd","unresolved":false,"context_lines":[{"line_number":402,"context_line":"        if list_directives is not None and list_directives.filteritems():"},{"line_number":403,"context_line":"            query \u003d self.filter(model, query, list_directives)"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"        # We can only try and paginate or limit here if we supported all the"},{"line_number":406,"context_line":"        # specified filters, sine otherwise this will mess up the results. Any"},{"line_number":407,"context_line":"        # unsatisfied filters will have been left in the request_dict for the"},{"line_number":408,"context_line":"        # controller to handle."}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAASn%2F%2FjGc%3D","line":405,"updated":"2013-09-03 16:24:20.000000000","message":"(NIT): add NOTE(henry-nash): here","commit_id":"4989e672d1a40b9350cd3e0ad93ca1f96eb2709a"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"e1490a1cdc201963f33b88c1ecea61c4571fbe8b","unresolved":false,"context_lines":[{"line_number":402,"context_line":"        if list_directives is not None and list_directives.filteritems():"},{"line_number":403,"context_line":"            query \u003d self.filter(model, query, list_directives)"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"        # We can only try and paginate or limit here if we supported all the"},{"line_number":406,"context_line":"        # specified filters, sine otherwise this will mess up the results. Any"},{"line_number":407,"context_line":"        # unsatisfied filters will have been left in the request_dict for the"},{"line_number":408,"context_line":"        # controller to handle."}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAASn%2F%2Figg%3D","line":405,"in_reply_to":"AAAASn%2F%2FjGc%3D","updated":"2013-09-03 17:57:08.000000000","message":"Done","commit_id":"4989e672d1a40b9350cd3e0ad93ca1f96eb2709a"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"bccf75c35da6e9be67e8d5acb3048d65ce97f4ca","unresolved":false,"context_lines":[{"line_number":404,"context_line":""},{"line_number":405,"context_line":"        # We can only try and paginate or limit here if we supported all the"},{"line_number":406,"context_line":"        # specified filters, sine otherwise this will mess up the results. Any"},{"line_number":407,"context_line":"        # unsatisfied filters will have been left in the request_dict for the"},{"line_number":408,"context_line":"        # controller to handle."},{"line_number":409,"context_line":""},{"line_number":410,"context_line":"        if (list_directives is not None and"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAASn%2F%2FjCI%3D","line":407,"updated":"2013-09-03 16:32:11.000000000","message":"request_dict -\u003e list_directives","commit_id":"4989e672d1a40b9350cd3e0ad93ca1f96eb2709a"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"e1490a1cdc201963f33b88c1ecea61c4571fbe8b","unresolved":false,"context_lines":[{"line_number":404,"context_line":""},{"line_number":405,"context_line":"        # We can only try and paginate or limit here if we supported all the"},{"line_number":406,"context_line":"        # specified filters, sine otherwise this will mess up the results. Any"},{"line_number":407,"context_line":"        # unsatisfied filters will have been left in the request_dict for the"},{"line_number":408,"context_line":"        # controller to handle."},{"line_number":409,"context_line":""},{"line_number":410,"context_line":"        if (list_directives is not None and"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAASn%2F%2FigY%3D","line":407,"in_reply_to":"AAAASn%2F%2FjCI%3D","updated":"2013-09-03 17:57:08.000000000","message":"Done","commit_id":"4989e672d1a40b9350cd3e0ad93ca1f96eb2709a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f36fa0497cec07c4f23527a06f2f4f36054e9b0b","unresolved":false,"context_lines":[{"line_number":403,"context_line":"            query \u003d self.filter(model, query, list_directives)"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"        # NOTE(henry-nash): We can only try and paginate or limit here if we"},{"line_number":406,"context_line":"        # supported all the specified filters, sine otherwise this will mess"},{"line_number":407,"context_line":"        # up the results. Any unsatisfied filters will have been left in"},{"line_number":408,"context_line":"        # list_directives for the controller to handle."},{"line_number":409,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAASn%2F%2Fheo%3D","line":406,"updated":"2013-09-03 20:28:56.000000000","message":"change \"sine\" to \"since\"","commit_id":"d995fda56afde0d9ecb492aba99aa6e44de437dd"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"8c002c23959fdd6d977f7a19052b1f93e7f293c1","unresolved":false,"context_lines":[{"line_number":403,"context_line":"            query \u003d self.filter(model, query, list_directives)"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"        # NOTE(henry-nash): We can only try and paginate or limit here if we"},{"line_number":406,"context_line":"        # supported all the specified filters, sine otherwise this will mess"},{"line_number":407,"context_line":"        # up the results. Any unsatisfied filters will have been left in"},{"line_number":408,"context_line":"        # list_directives for the controller to handle."},{"line_number":409,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAASn%2F%2Fgh0%3D","line":406,"in_reply_to":"AAAASn%2F%2Fheo%3D","updated":"2013-09-03 23:58:50.000000000","message":"Done","commit_id":"d995fda56afde0d9ecb492aba99aa6e44de437dd"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f36fa0497cec07c4f23527a06f2f4f36054e9b0b","unresolved":false,"context_lines":[{"line_number":407,"context_line":"        # up the results. Any unsatisfied filters will have been left in"},{"line_number":408,"context_line":"        # list_directives for the controller to handle."},{"line_number":409,"context_line":""},{"line_number":410,"context_line":"        if (list_directives is not None and"},{"line_number":411,"context_line":"                list_directives.filteritems() is None):"},{"line_number":412,"context_line":"                    return self.paginate_or_limit(query, list_directives,"},{"line_number":413,"context_line":"                                                  limit)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAASn%2F%2FheE%3D","line":410,"updated":"2013-09-03 20:28:56.000000000","message":"suggest combine the 2 sections where list_directives is not None. This is confusing.\n\nLimiting only happens if there\u0027s no filter?\n\nsuggest \"if list_directives is None: return query\" at the top of this function.","commit_id":"d995fda56afde0d9ecb492aba99aa6e44de437dd"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"8c002c23959fdd6d977f7a19052b1f93e7f293c1","unresolved":false,"context_lines":[{"line_number":407,"context_line":"        # up the results. Any unsatisfied filters will have been left in"},{"line_number":408,"context_line":"        # list_directives for the controller to handle."},{"line_number":409,"context_line":""},{"line_number":410,"context_line":"        if (list_directives is not None and"},{"line_number":411,"context_line":"                list_directives.filteritems() is None):"},{"line_number":412,"context_line":"                    return self.paginate_or_limit(query, list_directives,"},{"line_number":413,"context_line":"                                                  limit)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAASn%2F%2Fgfw%3D","line":410,"in_reply_to":"AAAASn%2F%2FheE%3D","updated":"2013-09-03 23:58:50.000000000","message":"Done","commit_id":"d995fda56afde0d9ecb492aba99aa6e44de437dd"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f36fa0497cec07c4f23527a06f2f4f36054e9b0b","unresolved":false,"context_lines":[{"line_number":408,"context_line":"        # list_directives for the controller to handle."},{"line_number":409,"context_line":""},{"line_number":410,"context_line":"        if (list_directives is not None and"},{"line_number":411,"context_line":"                list_directives.filteritems() is None):"},{"line_number":412,"context_line":"                    return self.paginate_or_limit(query, list_directives,"},{"line_number":413,"context_line":"                                                  limit)"},{"line_number":414,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAASn%2F%2Fhcs%3D","line":411,"updated":"2013-09-03 20:28:56.000000000","message":"the test at line 401 is list_directives.filteritems() and this one is \"is None\", is there a reason for the difference in the test?","commit_id":"d995fda56afde0d9ecb492aba99aa6e44de437dd"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"8c002c23959fdd6d977f7a19052b1f93e7f293c1","unresolved":false,"context_lines":[{"line_number":408,"context_line":"        # list_directives for the controller to handle."},{"line_number":409,"context_line":""},{"line_number":410,"context_line":"        if (list_directives is not None and"},{"line_number":411,"context_line":"                list_directives.filteritems() is None):"},{"line_number":412,"context_line":"                    return self.paginate_or_limit(query, list_directives,"},{"line_number":413,"context_line":"                                                  limit)"},{"line_number":414,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAASn%2F%2Fgfs%3D","line":411,"in_reply_to":"AAAASn%2F%2Fhcs%3D","updated":"2013-09-03 23:58:50.000000000","message":"...its just that there may be no filter items left by now since self.filter() will have marked them as satisfied.  Refactored code to make this clearer","commit_id":"d995fda56afde0d9ecb492aba99aa6e44de437dd"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"77de2e326732d5aed0b83c7e81ac0ee98033913a","unresolved":false,"context_lines":[{"line_number":260,"context_line":"        # NOTE(henry-nash): If we were to implement pagination, we would"},{"line_number":261,"context_line":"        # add it here."},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"        # If we satisfied all the filers, set an upper limit if supplied"},{"line_number":264,"context_line":"        if hints is not None:"},{"line_number":265,"context_line":"            list_limit \u003d hints.get_limit()"},{"line_number":266,"context_line":"            if list_limit:"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAUH%2F%2B4uo%3D","line":263,"updated":"2014-01-21 03:46:00.000000000","message":"s/filers/filters/","commit_id":"efc230d4b5615200100478f32f5741582c513f14"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"6dd9d4212a2bb3103ab2362385d50878343b73be","unresolved":false,"context_lines":[{"line_number":260,"context_line":"        # NOTE(henry-nash): If we were to implement pagination, we would"},{"line_number":261,"context_line":"        # add it here."},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"        # If we satisfied all the filers, set an upper limit if supplied"},{"line_number":264,"context_line":"        if hints is not None:"},{"line_number":265,"context_line":"            list_limit \u003d hints.get_limit()"},{"line_number":266,"context_line":"            if list_limit:"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAUH%2F%2B3mM%3D","line":263,"in_reply_to":"AAAAUH%2F%2B4uo%3D","updated":"2014-01-21 10:49:46.000000000","message":"Done","commit_id":"efc230d4b5615200100478f32f5741582c513f14"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"239be62d54c7d8a39e107922ea3507d3a2890695","unresolved":false,"context_lines":[{"line_number":245,"context_line":""},{"line_number":246,"context_line":"        return query"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"    def _paginate_or_limit(self, query, hints):"},{"line_number":249,"context_line":"        \"\"\"Applies pagination or limit to a query."},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"        If no pagination requested, then apply any supplied upper limit."}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2BvMs%3D","line":248,"updated":"2014-01-22 16:54:28.000000000","message":"this doesn\u0027t do pagination, so remove this.","commit_id":"cbe8d7de6ac2181f2d906b92f01b2bace8bdd063"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"f33bc8a1a7b1292a1ad50e5e6b7ade1398b626db","unresolved":false,"context_lines":[{"line_number":245,"context_line":""},{"line_number":246,"context_line":"        return query"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"    def _paginate_or_limit(self, query, hints):"},{"line_number":249,"context_line":"        \"\"\"Applies pagination or limit to a query."},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"        If no pagination requested, then apply any supplied upper limit."}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2Bedg%3D","line":248,"in_reply_to":"AAAAUH%2F%2BvMs%3D","updated":"2014-01-31 11:19:53.000000000","message":"I have renamed this to simply \u0027limit\u0027","commit_id":"cbe8d7de6ac2181f2d906b92f01b2bace8bdd063"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2dcefd3f0920f46da719e2fb192fc7eee30682e3","unresolved":false,"context_lines":[{"line_number":258,"context_line":"        # we would expand this method to support pagination and limiting."},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"        # If we satisfied all the filters, set an upper limit if supplied"},{"line_number":261,"context_line":"        if hints is not None:"},{"line_number":262,"context_line":"            list_limit \u003d hints.get_limit()"},{"line_number":263,"context_line":"            if list_limit:"},{"line_number":264,"context_line":"                query \u003d query.limit(list_limit)"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F96VA%3D","line":261,"updated":"2014-02-01 15:15:44.000000000","message":"I don\u0027t see how hints could be None here.","commit_id":"f5b90effeb7db975604339ab1c3505ad77846d51"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"8734cba6f1ca2b98f1e78d872699011e6c3a5d74","unresolved":false,"context_lines":[{"line_number":258,"context_line":"        # we would expand this method to support pagination and limiting."},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"        # If we satisfied all the filters, set an upper limit if supplied"},{"line_number":261,"context_line":"        if hints is not None:"},{"line_number":262,"context_line":"            list_limit \u003d hints.get_limit()"},{"line_number":263,"context_line":"            if list_limit:"},{"line_number":264,"context_line":"                query \u003d query.limit(list_limit)"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F95%2Bw%3D","line":261,"in_reply_to":"AAAAUH%2F96VA%3D","updated":"2014-02-03 22:56:24.000000000","message":"agreed.","commit_id":"f5b90effeb7db975604339ab1c3505ad77846d51"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2dcefd3f0920f46da719e2fb192fc7eee30682e3","unresolved":false,"context_lines":[{"line_number":271,"context_line":"        :param query: query to apply filters to"},{"line_number":272,"context_line":"        :param hints: contains the list of filters, pagination and limit"},{"line_number":273,"context_line":"                      details. Any filters satisfied here will be removed so"},{"line_number":274,"context_line":"                      that the caller will know if any filters remain."},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        :returns updated query"},{"line_number":277,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F96U8%3D","line":274,"updated":"2014-02-01 15:15:44.000000000","message":"document what it means if `hints` is None.","commit_id":"f5b90effeb7db975604339ab1c3505ad77846d51"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"8734cba6f1ca2b98f1e78d872699011e6c3a5d74","unresolved":false,"context_lines":[{"line_number":271,"context_line":"        :param query: query to apply filters to"},{"line_number":272,"context_line":"        :param hints: contains the list of filters, pagination and limit"},{"line_number":273,"context_line":"                      details. Any filters satisfied here will be removed so"},{"line_number":274,"context_line":"                      that the caller will know if any filters remain."},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        :returns updated query"},{"line_number":277,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F95%2Bo%3D","line":274,"in_reply_to":"AAAAUH%2F96U8%3D","updated":"2014-02-03 22:56:24.000000000","message":"Done","commit_id":"f5b90effeb7db975604339ab1c3505ad77846d51"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"2048bd5af7d87d0305603d8eda287bfc4b6559a1","unresolved":false,"context_lines":[{"line_number":167,"context_line":""},{"line_number":168,"context_line":"    \"\"\""},{"line_number":169,"context_line":"    @functools.wraps(f)"},{"line_number":170,"context_line":"    def wrapper(self, *args, **kwargs):"},{"line_number":171,"context_line":"        if not hasattr(args[0], \u0027get_limit\u0027):"},{"line_number":172,"context_line":"            raise exception.UnexpectedError("},{"line_number":173,"context_line":"                _(\u0027Cannot truncate a driver call without hints list as \u0027"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAUH%2F9mJI%3D","line":170,"updated":"2014-02-05 19:21:38.000000000","message":"Just a thought (maybe not a good one).  It this is really just meant to decorate methods with this signature \u0027list_{entity}(self, hints)\u0027 then why not use the same signature for wrapper.  You usually use *args and **kwargs because most of the time you don\u0027t care about the arguments passed in.  In this case we clearly do.\n\nDecorating the wrong thing would give you a TypeError and you could remove the next 6 lines.","commit_id":"15b535d33f39e48a9c55611dc3af5b81a1ba752e"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"a1bc6a64567a3e6100a904eca7f72c03d95e7218","unresolved":false,"context_lines":[{"line_number":167,"context_line":""},{"line_number":168,"context_line":"    \"\"\""},{"line_number":169,"context_line":"    @functools.wraps(f)"},{"line_number":170,"context_line":"    def wrapper(self, *args, **kwargs):"},{"line_number":171,"context_line":"        if not hasattr(args[0], \u0027get_limit\u0027):"},{"line_number":172,"context_line":"            raise exception.UnexpectedError("},{"line_number":173,"context_line":"                _(\u0027Cannot truncate a driver call without hints list as \u0027"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAUH%2F9YSM%3D","line":170,"in_reply_to":"AAAAUH%2F9mJI%3D","updated":"2014-02-07 11:25:08.000000000","message":"you mean call it truncate_list_entity(f) or something like that?","commit_id":"15b535d33f39e48a9c55611dc3af5b81a1ba752e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f7b6986ddd03f3d6c493beaf89b22bc08e998d50","unresolved":false,"context_lines":[{"line_number":168,"context_line":"    \"\"\""},{"line_number":169,"context_line":"    @functools.wraps(f)"},{"line_number":170,"context_line":"    def wrapper(self, *args, **kwargs):"},{"line_number":171,"context_line":"        if not hasattr(args[0], \u0027get_limit\u0027):"},{"line_number":172,"context_line":"            raise exception.UnexpectedError("},{"line_number":173,"context_line":"                _(\u0027Cannot truncate a driver call without hints list as \u0027"},{"line_number":174,"context_line":"                  \u0027first parameter after self \u0027))"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAUH%2F9uxY%3D","line":171,"updated":"2014-02-04 16:14:35.000000000","message":"would be easier if \u0027hints\u0027 was a kwarg...","commit_id":"15b535d33f39e48a9c55611dc3af5b81a1ba752e"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"a1bc6a64567a3e6100a904eca7f72c03d95e7218","unresolved":false,"context_lines":[{"line_number":168,"context_line":"    \"\"\""},{"line_number":169,"context_line":"    @functools.wraps(f)"},{"line_number":170,"context_line":"    def wrapper(self, *args, **kwargs):"},{"line_number":171,"context_line":"        if not hasattr(args[0], \u0027get_limit\u0027):"},{"line_number":172,"context_line":"            raise exception.UnexpectedError("},{"line_number":173,"context_line":"                _(\u0027Cannot truncate a driver call without hints list as \u0027"},{"line_number":174,"context_line":"                  \u0027first parameter after self \u0027))"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAUH%2F9YSg%3D","line":171,"in_reply_to":"AAAAUH%2F9uxY%3D","updated":"2014-02-07 11:25:08.000000000","message":"yeah…I thought about that…..balance between hiding what\u0027s going on vs. complicating the signatures of all the calls we might wrap…open to other views...","commit_id":"15b535d33f39e48a9c55611dc3af5b81a1ba752e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f7b6986ddd03f3d6c493beaf89b22bc08e998d50","unresolved":false,"context_lines":[{"line_number":310,"context_line":"        :param model: table model"},{"line_number":311,"context_line":"        :param query: query to apply filters to"},{"line_number":312,"context_line":"        :param hints: contains the list of filters and limit details.  This may"},{"line_number":313,"context_line":"                      by None, indicating that there are no filters or limits"},{"line_number":314,"context_line":"                      to be applied. If it not None, then any filters satisfied"},{"line_number":315,"context_line":"                      here will be removed so that the caller will know if any"},{"line_number":316,"context_line":"                      filters remain."}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAUH%2F9us0%3D","line":313,"updated":"2014-02-04 16:14:35.000000000","message":"change \"by None\" to \"be None\"","commit_id":"15b535d33f39e48a9c55611dc3af5b81a1ba752e"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"a1bc6a64567a3e6100a904eca7f72c03d95e7218","unresolved":false,"context_lines":[{"line_number":310,"context_line":"        :param model: table model"},{"line_number":311,"context_line":"        :param query: query to apply filters to"},{"line_number":312,"context_line":"        :param hints: contains the list of filters and limit details.  This may"},{"line_number":313,"context_line":"                      by None, indicating that there are no filters or limits"},{"line_number":314,"context_line":"                      to be applied. If it not None, then any filters satisfied"},{"line_number":315,"context_line":"                      here will be removed so that the caller will know if any"},{"line_number":316,"context_line":"                      filters remain."}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAUH%2F9YSA%3D","line":313,"in_reply_to":"AAAAUH%2F9us0%3D","updated":"2014-02-07 11:25:08.000000000","message":"Done","commit_id":"15b535d33f39e48a9c55611dc3af5b81a1ba752e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f7b6986ddd03f3d6c493beaf89b22bc08e998d50","unresolved":false,"context_lines":[{"line_number":311,"context_line":"        :param query: query to apply filters to"},{"line_number":312,"context_line":"        :param hints: contains the list of filters and limit details.  This may"},{"line_number":313,"context_line":"                      by None, indicating that there are no filters or limits"},{"line_number":314,"context_line":"                      to be applied. If it not None, then any filters satisfied"},{"line_number":315,"context_line":"                      here will be removed so that the caller will know if any"},{"line_number":316,"context_line":"                      filters remain."},{"line_number":317,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAUH%2F9uss%3D","line":314,"updated":"2014-02-04 16:14:35.000000000","message":"change \"If it not\" to \"If it\u0027s not\"","commit_id":"15b535d33f39e48a9c55611dc3af5b81a1ba752e"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"a1bc6a64567a3e6100a904eca7f72c03d95e7218","unresolved":false,"context_lines":[{"line_number":311,"context_line":"        :param query: query to apply filters to"},{"line_number":312,"context_line":"        :param hints: contains the list of filters and limit details.  This may"},{"line_number":313,"context_line":"                      by None, indicating that there are no filters or limits"},{"line_number":314,"context_line":"                      to be applied. If it not None, then any filters satisfied"},{"line_number":315,"context_line":"                      here will be removed so that the caller will know if any"},{"line_number":316,"context_line":"                      filters remain."},{"line_number":317,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAUH%2F9YRo%3D","line":314,"in_reply_to":"AAAAUH%2F9uss%3D","updated":"2014-02-07 11:25:08.000000000","message":"Done","commit_id":"15b535d33f39e48a9c55611dc3af5b81a1ba752e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f7b6986ddd03f3d6c493beaf89b22bc08e998d50","unresolved":false,"context_lines":[{"line_number":315,"context_line":"                      here will be removed so that the caller will know if any"},{"line_number":316,"context_line":"                      filters remain."},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"        :returns updated query"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"        \"\"\""},{"line_number":321,"context_line":"        if hints is None:"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAUH%2F9uq0%3D","line":318,"updated":"2014-02-04 16:14:35.000000000","message":":returns: (add : )","commit_id":"15b535d33f39e48a9c55611dc3af5b81a1ba752e"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"a1bc6a64567a3e6100a904eca7f72c03d95e7218","unresolved":false,"context_lines":[{"line_number":315,"context_line":"                      here will be removed so that the caller will know if any"},{"line_number":316,"context_line":"                      filters remain."},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"        :returns updated query"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"        \"\"\""},{"line_number":321,"context_line":"        if hints is None:"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAUH%2F9YRM%3D","line":318,"in_reply_to":"AAAAUH%2F9uq0%3D","updated":"2014-02-07 11:25:08.000000000","message":"Done","commit_id":"15b535d33f39e48a9c55611dc3af5b81a1ba752e"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"dadca70dead740332e7534c193569cbcc0fc63e3","unresolved":false,"context_lines":[{"line_number":167,"context_line":""},{"line_number":168,"context_line":"    \"\"\""},{"line_number":169,"context_line":"    @functools.wraps(f)"},{"line_number":170,"context_line":"    def wrapper(self, *args, **kwargs):"},{"line_number":171,"context_line":"        if not hasattr(args[0], \u0027get_limit\u0027):"},{"line_number":172,"context_line":"            raise exception.UnexpectedError("},{"line_number":173,"context_line":"                _(\u0027Cannot truncate a driver call without hints list as \u0027"}],"source_content_type":"text/x-python","patch_set":29,"id":"AAAAUX%2F%2FqE8%3D","line":170,"updated":"2014-02-11 17:52:32.000000000","message":"self, hints, *args","commit_id":"0dec4c8be9bb5349e3eb3199242dd37ebf46c011"}],"keystone/credential/core.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"239be62d54c7d8a39e107922ea3507d3a2890695","unresolved":false,"context_lines":[{"line_number":48,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":49,"context_line":"class Driver(object):"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def _get_list_limit(self):"},{"line_number":52,"context_line":"        pass"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    # credential crud"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2BvMI%3D","line":51,"updated":"2014-01-22 16:54:28.000000000","message":"add a docstring so that classes implementing this function know what to do.","commit_id":"cbe8d7de6ac2181f2d906b92f01b2bace8bdd063"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"f33bc8a1a7b1292a1ad50e5e6b7ade1398b626db","unresolved":false,"context_lines":[{"line_number":48,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":49,"context_line":"class Driver(object):"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def _get_list_limit(self):"},{"line_number":52,"context_line":"        pass"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    # credential crud"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2BeKg%3D","line":51,"in_reply_to":"AAAAUH%2F%2BvMI%3D","updated":"2014-01-31 11:19:53.000000000","message":"Done","commit_id":"cbe8d7de6ac2181f2d906b92f01b2bace8bdd063"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"2022a89cb76001688b95db6d078cb207dbc53b4e","unresolved":false,"context_lines":[{"line_number":51,"context_line":"#    def _get_list_limit(self):"},{"line_number":52,"context_line":"        # We don\u0027t support a diver specific limit for credentials, so just"},{"line_number":53,"context_line":"        # return any overall limit"},{"line_number":54,"context_line":"#        return CONF.list_limit"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    # credential crud"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAUH%2F975s%3D","line":54,"updated":"2014-01-31 22:09:19.000000000","message":"(NIT): remove this and add a NOTE or TODO?","commit_id":"8882052d0bbd23589851833f77b690b4dfe27678"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"9e970b52631d44cf96c41e1dead1c22e63ed51ac","unresolved":false,"context_lines":[{"line_number":51,"context_line":"#    def _get_list_limit(self):"},{"line_number":52,"context_line":"        # We don\u0027t support a diver specific limit for credentials, so just"},{"line_number":53,"context_line":"        # return any overall limit"},{"line_number":54,"context_line":"#        return CONF.list_limit"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    # credential crud"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAUH%2F96io%3D","line":54,"in_reply_to":"AAAAUH%2F975s%3D","updated":"2014-02-01 09:54:36.000000000","message":"oops, should just delete this.  Thanks!","commit_id":"8882052d0bbd23589851833f77b690b4dfe27678"}],"keystone/identity/backends/sql.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"77de2e326732d5aed0b83c7e81ac0ee98033913a","unresolved":false,"context_lines":[{"line_number":251,"context_line":"            session.add(ref)"},{"line_number":252,"context_line":"        return ref.to_dict()"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"    def list_groups(self, hints):"},{"line_number":255,"context_line":"        session \u003d self.get_session()"},{"line_number":256,"context_line":"        query \u003d session.query(Group)"},{"line_number":257,"context_line":"        refs \u003d self.filter_paginate_limit(Group, query, hints)"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAUH%2F%2B4uI%3D","line":254,"updated":"2014-01-21 03:46:00.000000000","message":"For this patch, we only care about applying the limit to list_{entity} right? We are not worried about the use case for filtering a user\u0027s projects?","commit_id":"efc230d4b5615200100478f32f5741582c513f14"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"382cf74a1612a6034a57cf8cc711711155b2f837","unresolved":false,"context_lines":[{"line_number":251,"context_line":"            session.add(ref)"},{"line_number":252,"context_line":"        return ref.to_dict()"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"    def list_groups(self, hints):"},{"line_number":255,"context_line":"        session \u003d self.get_session()"},{"line_number":256,"context_line":"        query \u003d session.query(Group)"},{"line_number":257,"context_line":"        refs \u003d self.filter_paginate_limit(Group, query, hints)"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAUH%2F%2B0q0%3D","line":254,"in_reply_to":"AAAAUH%2F%2B0s0%3D","updated":"2014-01-21 18:31:50.000000000","message":"Done","commit_id":"efc230d4b5615200100478f32f5741582c513f14"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"6ff7034412cb9b1ccb0e142b7e1d40e34cd75994","unresolved":false,"context_lines":[{"line_number":251,"context_line":"            session.add(ref)"},{"line_number":252,"context_line":"        return ref.to_dict()"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"    def list_groups(self, hints):"},{"line_number":255,"context_line":"        session \u003d self.get_session()"},{"line_number":256,"context_line":"        query \u003d session.query(Group)"},{"line_number":257,"context_line":"        refs \u003d self.filter_paginate_limit(Group, query, hints)"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAUH%2F%2B0s0%3D","line":254,"in_reply_to":"AAAAUH%2F%2B3Lk%3D","updated":"2014-01-21 18:19:09.000000000","message":"Would it be appropriate to add a TODO to revisit this at that time?","commit_id":"efc230d4b5615200100478f32f5741582c513f14"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"6dd9d4212a2bb3103ab2362385d50878343b73be","unresolved":false,"context_lines":[{"line_number":251,"context_line":"            session.add(ref)"},{"line_number":252,"context_line":"        return ref.to_dict()"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"    def list_groups(self, hints):"},{"line_number":255,"context_line":"        session \u003d self.get_session()"},{"line_number":256,"context_line":"        query \u003d session.query(Group)"},{"line_number":257,"context_line":"        refs \u003d self.filter_paginate_limit(Group, query, hints)"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAUH%2F%2B3Lk%3D","line":254,"in_reply_to":"AAAAUH%2F%2B4uI%3D","updated":"2014-01-21 10:49:46.000000000","message":"That\u0027s a fair point.  For this patch, you are not…although one could imagine doing that…let\u0027s leave this to a separate patch","commit_id":"efc230d4b5615200100478f32f5741582c513f14"}],"keystone/tests/test_backend.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"77de2e326732d5aed0b83c7e81ac0ee98033913a","unresolved":false,"context_lines":[{"line_number":4024,"context_line":"            hints \u003d driver_hints.Hints()"},{"line_number":4025,"context_line":"            hints.add_filter(\u0027domain_id\u0027, domain1[\u0027id\u0027])"},{"line_number":4026,"context_line":"            entities \u003d self._list_entities(entity)(hints\u003dhints)"},{"line_number":4027,"context_line":"            # Remember that at the driver level we alwys get one more entry"},{"line_number":4028,"context_line":"            # than we asked for so that the controller can tell if we need"},{"line_number":4029,"context_line":"            # tell the caller we haev truncated the list"},{"line_number":4030,"context_line":"            self.assertEqual(len(entities), hints.get_limit() + 1)"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAUH%2F%2B4tw%3D","line":4027,"updated":"2014-01-21 03:46:00.000000000","message":"always*","commit_id":"efc230d4b5615200100478f32f5741582c513f14"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"6dd9d4212a2bb3103ab2362385d50878343b73be","unresolved":false,"context_lines":[{"line_number":4024,"context_line":"            hints \u003d driver_hints.Hints()"},{"line_number":4025,"context_line":"            hints.add_filter(\u0027domain_id\u0027, domain1[\u0027id\u0027])"},{"line_number":4026,"context_line":"            entities \u003d self._list_entities(entity)(hints\u003dhints)"},{"line_number":4027,"context_line":"            # Remember that at the driver level we alwys get one more entry"},{"line_number":4028,"context_line":"            # than we asked for so that the controller can tell if we need"},{"line_number":4029,"context_line":"            # tell the caller we haev truncated the list"},{"line_number":4030,"context_line":"            self.assertEqual(len(entities), hints.get_limit() + 1)"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAUH%2F%2B3kA%3D","line":4027,"in_reply_to":"AAAAUH%2F%2B4tw%3D","updated":"2014-01-21 10:49:46.000000000","message":"Done","commit_id":"efc230d4b5615200100478f32f5741582c513f14"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"77de2e326732d5aed0b83c7e81ac0ee98033913a","unresolved":false,"context_lines":[{"line_number":4026,"context_line":"            entities \u003d self._list_entities(entity)(hints\u003dhints)"},{"line_number":4027,"context_line":"            # Remember that at the driver level we alwys get one more entry"},{"line_number":4028,"context_line":"            # than we asked for so that the controller can tell if we need"},{"line_number":4029,"context_line":"            # tell the caller we haev truncated the list"},{"line_number":4030,"context_line":"            self.assertEqual(len(entities), hints.get_limit() + 1)"},{"line_number":4031,"context_line":"            self._match_with_list(entities, domain1_entity_list)"},{"line_number":4032,"context_line":"            # Check the driver has removed the filter from the list directives"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAUH%2F%2B4to%3D","line":4029,"updated":"2014-01-21 03:46:00.000000000","message":"have*","commit_id":"efc230d4b5615200100478f32f5741582c513f14"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"6dd9d4212a2bb3103ab2362385d50878343b73be","unresolved":false,"context_lines":[{"line_number":4026,"context_line":"            entities \u003d self._list_entities(entity)(hints\u003dhints)"},{"line_number":4027,"context_line":"            # Remember that at the driver level we alwys get one more entry"},{"line_number":4028,"context_line":"            # than we asked for so that the controller can tell if we need"},{"line_number":4029,"context_line":"            # tell the caller we haev truncated the list"},{"line_number":4030,"context_line":"            self.assertEqual(len(entities), hints.get_limit() + 1)"},{"line_number":4031,"context_line":"            self._match_with_list(entities, domain1_entity_list)"},{"line_number":4032,"context_line":"            # Check the driver has removed the filter from the list directives"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAUH%2F%2B3j8%3D","line":4029,"in_reply_to":"AAAAUH%2F%2B4to%3D","updated":"2014-01-21 10:49:46.000000000","message":"Done","commit_id":"efc230d4b5615200100478f32f5741582c513f14"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"77de2e326732d5aed0b83c7e81ac0ee98033913a","unresolved":false,"context_lines":[{"line_number":4048,"context_line":"            # even with the limits set, as part of some internal calculation."},{"line_number":4049,"context_line":"            # Calling the API without a hints list should achieve this, and"},{"line_number":4050,"context_line":"            # return at least the 20 entries we created (there may be other"},{"line_number":4051,"context_line":"            # entities lying around ceated by other tests/setup)."},{"line_number":4052,"context_line":"            entities \u003d self._list_entities(entity)()"},{"line_number":4053,"context_line":"            self.assertTrue(len(entities) \u003e\u003d 20)"},{"line_number":4054,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAUH%2F%2B4tk%3D","line":4051,"updated":"2014-01-21 03:46:00.000000000","message":"created*","commit_id":"efc230d4b5615200100478f32f5741582c513f14"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"6dd9d4212a2bb3103ab2362385d50878343b73be","unresolved":false,"context_lines":[{"line_number":4048,"context_line":"            # even with the limits set, as part of some internal calculation."},{"line_number":4049,"context_line":"            # Calling the API without a hints list should achieve this, and"},{"line_number":4050,"context_line":"            # return at least the 20 entries we created (there may be other"},{"line_number":4051,"context_line":"            # entities lying around ceated by other tests/setup)."},{"line_number":4052,"context_line":"            entities \u003d self._list_entities(entity)()"},{"line_number":4053,"context_line":"            self.assertTrue(len(entities) \u003e\u003d 20)"},{"line_number":4054,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAUH%2F%2B3j4%3D","line":4051,"in_reply_to":"AAAAUH%2F%2B4tk%3D","updated":"2014-01-21 10:49:46.000000000","message":"Done","commit_id":"efc230d4b5615200100478f32f5741582c513f14"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"0d85ebc74a9670a9a7d7ba4e18b93cce8b44a8e4","unresolved":false,"context_lines":[{"line_number":4005,"context_line":"            self._delete_test_data(entity, entity_list)"},{"line_number":4006,"context_line":"            self._delete_test_data(entity, domain1_entity_list)"},{"line_number":4007,"context_line":""},{"line_number":4008,"context_line":"    def test_list_entities_filtered_and_limited(self):"},{"line_number":4009,"context_line":"        domain1 \u003d {\u0027id\u0027: uuid.uuid4().hex, \u0027name\u0027: uuid.uuid4().hex}"},{"line_number":4010,"context_line":"        self.identity_api.create_domain(domain1[\u0027id\u0027], domain1)"},{"line_number":4011,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2Bvgs%3D","line":4008,"updated":"2014-01-22 15:57:10.000000000","message":"I think this test suffers from the same failure mode that I mentioned in the other test file.  Needs it\u0027s own setup and cleanup.","commit_id":"cbe8d7de6ac2181f2d906b92f01b2bace8bdd063"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"f33bc8a1a7b1292a1ad50e5e6b7ade1398b626db","unresolved":false,"context_lines":[{"line_number":4005,"context_line":"            self._delete_test_data(entity, entity_list)"},{"line_number":4006,"context_line":"            self._delete_test_data(entity, domain1_entity_list)"},{"line_number":4007,"context_line":""},{"line_number":4008,"context_line":"    def test_list_entities_filtered_and_limited(self):"},{"line_number":4009,"context_line":"        domain1 \u003d {\u0027id\u0027: uuid.uuid4().hex, \u0027name\u0027: uuid.uuid4().hex}"},{"line_number":4010,"context_line":"        self.identity_api.create_domain(domain1[\u0027id\u0027], domain1)"},{"line_number":4011,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F9%2B8w%3D","line":4008,"in_reply_to":"AAAAUH%2F%2Bvgs%3D","updated":"2014-01-31 11:19:53.000000000","message":"Done","commit_id":"cbe8d7de6ac2181f2d906b92f01b2bace8bdd063"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2dcefd3f0920f46da719e2fb192fc7eee30682e3","unresolved":false,"context_lines":[{"line_number":4114,"context_line":"            # Create 20 entities, 14 of which are in domain1"},{"line_number":4115,"context_line":"            self.entity_lists[entity] \u003d self._create_test_data(entity, 6)"},{"line_number":4116,"context_line":"            self.domain1_entity_lists[entity] \u003d self._create_test_data("},{"line_number":4117,"context_line":"                entity, 14, self.domain1[\u0027id\u0027])"},{"line_number":4118,"context_line":""},{"line_number":4119,"context_line":"        # Make sure we clean up when finished"},{"line_number":4120,"context_line":"        self.addCleanup(self.cleanUp)"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F96UM%3D","line":4117,"updated":"2014-02-01 15:15:44.000000000","message":"the call to do the cleanup for these should be set here rather than done later... because if one of these fails then the cleanup for the other ones won\u0027t be done.","commit_id":"f5b90effeb7db975604339ab1c3505ad77846d51"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"8734cba6f1ca2b98f1e78d872699011e6c3a5d74","unresolved":false,"context_lines":[{"line_number":4114,"context_line":"            # Create 20 entities, 14 of which are in domain1"},{"line_number":4115,"context_line":"            self.entity_lists[entity] \u003d self._create_test_data(entity, 6)"},{"line_number":4116,"context_line":"            self.domain1_entity_lists[entity] \u003d self._create_test_data("},{"line_number":4117,"context_line":"                entity, 14, self.domain1[\u0027id\u0027])"},{"line_number":4118,"context_line":""},{"line_number":4119,"context_line":"        # Make sure we clean up when finished"},{"line_number":4120,"context_line":"        self.addCleanup(self.cleanUp)"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F95%2Bc%3D","line":4117,"in_reply_to":"AAAAUH%2F96UM%3D","updated":"2014-02-03 22:56:24.000000000","message":"Done","commit_id":"f5b90effeb7db975604339ab1c3505ad77846d51"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2dcefd3f0920f46da719e2fb192fc7eee30682e3","unresolved":false,"context_lines":[{"line_number":4133,"context_line":"        self.opt(list_limit\u003dself.old_list_limit)"},{"line_number":4134,"context_line":"        self.opt_in_group(\u0027identity\u0027, list_limit\u003dself.old_identity_list_limit)"},{"line_number":4135,"context_line":"        self.opt_in_group(\u0027assignment\u0027,"},{"line_number":4136,"context_line":"                          list_limit\u003dself.old_assignment_list_limit)"},{"line_number":4137,"context_line":""},{"line_number":4138,"context_line":"    def test_list_entities_filtered_and_limited(self):"},{"line_number":4139,"context_line":"        for entity in self.ENTITY_TYPES:"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F96Uk%3D","line":4136,"updated":"2014-02-01 15:15:44.000000000","message":"there\u0027s no need to reset the config options because tests.TestCase calls CONF.reset() -- http://git.openstack.org/cgit/openstack/keystone/tree/keystone/tests/core.py#n317","commit_id":"f5b90effeb7db975604339ab1c3505ad77846d51"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"8734cba6f1ca2b98f1e78d872699011e6c3a5d74","unresolved":false,"context_lines":[{"line_number":4133,"context_line":"        self.opt(list_limit\u003dself.old_list_limit)"},{"line_number":4134,"context_line":"        self.opt_in_group(\u0027identity\u0027, list_limit\u003dself.old_identity_list_limit)"},{"line_number":4135,"context_line":"        self.opt_in_group(\u0027assignment\u0027,"},{"line_number":4136,"context_line":"                          list_limit\u003dself.old_assignment_list_limit)"},{"line_number":4137,"context_line":""},{"line_number":4138,"context_line":"    def test_list_entities_filtered_and_limited(self):"},{"line_number":4139,"context_line":"        for entity in self.ENTITY_TYPES:"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F95%2BY%3D","line":4136,"in_reply_to":"AAAAUH%2F96Uk%3D","updated":"2014-02-03 22:56:24.000000000","message":"Done","commit_id":"f5b90effeb7db975604339ab1c3505ad77846d51"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2dcefd3f0920f46da719e2fb192fc7eee30682e3","unresolved":false,"context_lines":[{"line_number":4136,"context_line":"                          list_limit\u003dself.old_assignment_list_limit)"},{"line_number":4137,"context_line":""},{"line_number":4138,"context_line":"    def test_list_entities_filtered_and_limited(self):"},{"line_number":4139,"context_line":"        for entity in self.ENTITY_TYPES:"},{"line_number":4140,"context_line":"            self.opt(list_limit\u003d10)"},{"line_number":4141,"context_line":"            # Should get back just 10 users in domain1"},{"line_number":4142,"context_line":"            hints \u003d driver_hints.Hints()"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F96UA%3D","line":4139,"updated":"2014-02-01 15:15:44.000000000","message":"I\u0027d prefer this was separated into 3 tests then it would be easier to tell which one wasn\u0027t working.","commit_id":"f5b90effeb7db975604339ab1c3505ad77846d51"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"8734cba6f1ca2b98f1e78d872699011e6c3a5d74","unresolved":false,"context_lines":[{"line_number":4136,"context_line":"                          list_limit\u003dself.old_assignment_list_limit)"},{"line_number":4137,"context_line":""},{"line_number":4138,"context_line":"    def test_list_entities_filtered_and_limited(self):"},{"line_number":4139,"context_line":"        for entity in self.ENTITY_TYPES:"},{"line_number":4140,"context_line":"            self.opt(list_limit\u003d10)"},{"line_number":4141,"context_line":"            # Should get back just 10 users in domain1"},{"line_number":4142,"context_line":"            hints \u003d driver_hints.Hints()"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F95%2BU%3D","line":4139,"in_reply_to":"AAAAUH%2F96UA%3D","updated":"2014-02-03 22:56:24.000000000","message":"Done","commit_id":"f5b90effeb7db975604339ab1c3505ad77846d51"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2dcefd3f0920f46da719e2fb192fc7eee30682e3","unresolved":false,"context_lines":[{"line_number":4138,"context_line":"    def test_list_entities_filtered_and_limited(self):"},{"line_number":4139,"context_line":"        for entity in self.ENTITY_TYPES:"},{"line_number":4140,"context_line":"            self.opt(list_limit\u003d10)"},{"line_number":4141,"context_line":"            # Should get back just 10 users in domain1"},{"line_number":4142,"context_line":"            hints \u003d driver_hints.Hints()"},{"line_number":4143,"context_line":"            hints.add_filter(\u0027domain_id\u0027, self.domain1[\u0027id\u0027])"},{"line_number":4144,"context_line":"            entities \u003d self._list_entities(entity)(hints\u003dhints)"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F96UE%3D","line":4141,"updated":"2014-02-01 15:15:44.000000000","message":"change \"users\" to \"entities\"","commit_id":"f5b90effeb7db975604339ab1c3505ad77846d51"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"8734cba6f1ca2b98f1e78d872699011e6c3a5d74","unresolved":false,"context_lines":[{"line_number":4138,"context_line":"    def test_list_entities_filtered_and_limited(self):"},{"line_number":4139,"context_line":"        for entity in self.ENTITY_TYPES:"},{"line_number":4140,"context_line":"            self.opt(list_limit\u003d10)"},{"line_number":4141,"context_line":"            # Should get back just 10 users in domain1"},{"line_number":4142,"context_line":"            hints \u003d driver_hints.Hints()"},{"line_number":4143,"context_line":"            hints.add_filter(\u0027domain_id\u0027, self.domain1[\u0027id\u0027])"},{"line_number":4144,"context_line":"            entities \u003d self._list_entities(entity)(hints\u003dhints)"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F95%2BQ%3D","line":4141,"in_reply_to":"AAAAUH%2F96UE%3D","updated":"2014-02-03 22:56:24.000000000","message":"Done","commit_id":"f5b90effeb7db975604339ab1c3505ad77846d51"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2dcefd3f0920f46da719e2fb192fc7eee30682e3","unresolved":false,"context_lines":[{"line_number":4152,"context_line":"            if entity \u003d\u003d \u0027project\u0027:"},{"line_number":4153,"context_line":"                self.opt_in_group(\u0027assignment\u0027, list_limit\u003d5)"},{"line_number":4154,"context_line":"            else:"},{"line_number":4155,"context_line":"                self.opt_in_group(\u0027identity\u0027, list_limit\u003d5)"},{"line_number":4156,"context_line":""},{"line_number":4157,"context_line":"            # Should get back just 5 users in domain1"},{"line_number":4158,"context_line":"            hints \u003d driver_hints.Hints()"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F96T4%3D","line":4155,"updated":"2014-02-01 15:15:44.000000000","message":"the identity option is set to 5 for the next time through the loop... isn\u0027t that going to lead to the incorrect result?","commit_id":"f5b90effeb7db975604339ab1c3505ad77846d51"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"8734cba6f1ca2b98f1e78d872699011e6c3a5d74","unresolved":false,"context_lines":[{"line_number":4152,"context_line":"            if entity \u003d\u003d \u0027project\u0027:"},{"line_number":4153,"context_line":"                self.opt_in_group(\u0027assignment\u0027, list_limit\u003d5)"},{"line_number":4154,"context_line":"            else:"},{"line_number":4155,"context_line":"                self.opt_in_group(\u0027identity\u0027, list_limit\u003d5)"},{"line_number":4156,"context_line":""},{"line_number":4157,"context_line":"            # Should get back just 5 users in domain1"},{"line_number":4158,"context_line":"            hints \u003d driver_hints.Hints()"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F95%2BM%3D","line":4155,"in_reply_to":"AAAAUH%2F96T4%3D","updated":"2014-02-03 22:56:24.000000000","message":"fixed by making these separate tests","commit_id":"f5b90effeb7db975604339ab1c3505ad77846d51"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"2048bd5af7d87d0305603d8eda287bfc4b6559a1","unresolved":false,"context_lines":[{"line_number":4114,"context_line":"             # Make sure we clean up when finished"},{"line_number":4115,"context_line":"            self.addCleanup(self.cleanUpEntity, entity)"},{"line_number":4116,"context_line":""},{"line_number":4117,"context_line":"    def cleanUpDomain(self):"},{"line_number":4118,"context_line":"        \"\"\"Clean up domain test data from Limit Test Cases.\"\"\""},{"line_number":4119,"context_line":""},{"line_number":4120,"context_line":"        self.domain1[\u0027enabled\u0027] \u003d False"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAUH%2F9vVY%3D","line":4117,"updated":"2014-02-05 19:21:38.000000000","message":"Any reason for the camel cased name?","commit_id":"15b535d33f39e48a9c55611dc3af5b81a1ba752e"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"a1bc6a64567a3e6100a904eca7f72c03d95e7218","unresolved":false,"context_lines":[{"line_number":4114,"context_line":"             # Make sure we clean up when finished"},{"line_number":4115,"context_line":"            self.addCleanup(self.cleanUpEntity, entity)"},{"line_number":4116,"context_line":""},{"line_number":4117,"context_line":"    def cleanUpDomain(self):"},{"line_number":4118,"context_line":"        \"\"\"Clean up domain test data from Limit Test Cases.\"\"\""},{"line_number":4119,"context_line":""},{"line_number":4120,"context_line":"        self.domain1[\u0027enabled\u0027] \u003d False"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAUH%2F9YQo%3D","line":4117,"in_reply_to":"AAAAUH%2F9vVY%3D","updated":"2014-02-07 11:25:08.000000000","message":"…don\u0027t know what came over me….:-)","commit_id":"15b535d33f39e48a9c55611dc3af5b81a1ba752e"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"2048bd5af7d87d0305603d8eda287bfc4b6559a1","unresolved":false,"context_lines":[{"line_number":4121,"context_line":"        self.assignment_api.update_domain(self.domain1[\u0027id\u0027], self.domain1)"},{"line_number":4122,"context_line":"        self.assignment_api.delete_domain(self.domain1[\u0027id\u0027])"},{"line_number":4123,"context_line":""},{"line_number":4124,"context_line":"    def cleanUpEntity(self, entity):"},{"line_number":4125,"context_line":"        \"\"\"Clean up entity test data from Limit Test Cases.\"\"\""},{"line_number":4126,"context_line":""},{"line_number":4127,"context_line":"        self._delete_test_data(entity, self.entity_lists[entity])"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAUH%2F9vVU%3D","line":4124,"updated":"2014-02-05 19:21:38.000000000","message":"...or this one?","commit_id":"15b535d33f39e48a9c55611dc3af5b81a1ba752e"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"a1bc6a64567a3e6100a904eca7f72c03d95e7218","unresolved":false,"context_lines":[{"line_number":4121,"context_line":"        self.assignment_api.update_domain(self.domain1[\u0027id\u0027], self.domain1)"},{"line_number":4122,"context_line":"        self.assignment_api.delete_domain(self.domain1[\u0027id\u0027])"},{"line_number":4123,"context_line":""},{"line_number":4124,"context_line":"    def cleanUpEntity(self, entity):"},{"line_number":4125,"context_line":"        \"\"\"Clean up entity test data from Limit Test Cases.\"\"\""},{"line_number":4126,"context_line":""},{"line_number":4127,"context_line":"        self._delete_test_data(entity, self.entity_lists[entity])"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAUH%2F9YQg%3D","line":4124,"in_reply_to":"AAAAUH%2F9vVU%3D","updated":"2014-02-07 11:25:08.000000000","message":"ditto","commit_id":"15b535d33f39e48a9c55611dc3af5b81a1ba752e"}],"keystone/tests/test_backend_sql.py":[{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"2048bd5af7d87d0305603d8eda287bfc4b6559a1","unresolved":false,"context_lines":[{"line_number":497,"context_line":""},{"line_number":498,"context_line":""},{"line_number":499,"context_line":"class SqlLimitTests(SqlTests, test_backend.LimitTests):"},{"line_number":500,"context_line":"    def setUp(self):"},{"line_number":501,"context_line":"        super(SqlLimitTests, self).setUp()"},{"line_number":502,"context_line":"        test_backend.LimitTests.setUp(self)"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAUH%2F9mPA%3D","line":500,"updated":"2014-02-05 19:21:38.000000000","message":"I believe this is unnecessary.  The only reason you need this is that test_backend.LimitTests is broken and not calling its own super().setUp.","commit_id":"15b535d33f39e48a9c55611dc3af5b81a1ba752e"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"a1bc6a64567a3e6100a904eca7f72c03d95e7218","unresolved":false,"context_lines":[{"line_number":497,"context_line":""},{"line_number":498,"context_line":""},{"line_number":499,"context_line":"class SqlLimitTests(SqlTests, test_backend.LimitTests):"},{"line_number":500,"context_line":"    def setUp(self):"},{"line_number":501,"context_line":"        super(SqlLimitTests, self).setUp()"},{"line_number":502,"context_line":"        test_backend.LimitTests.setUp(self)"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAUH%2F9YIk%3D","line":500,"in_reply_to":"AAAAUH%2F9mPA%3D","updated":"2014-02-07 11:25:08.000000000","message":"Unfortunately, I don\u0027t think it is as simple as that - some issue further up the class hierarchy to do with multiple inheritance.  I suggest I come back in and try and fix it later once this patch is in (and fixe the SqlTokenCacheInvalidation class above as well)","commit_id":"15b535d33f39e48a9c55611dc3af5b81a1ba752e"}],"keystone/tests/test_driver_hints.py":[{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"0d85ebc74a9670a9a7d7ba4e18b93cce8b44a8e4","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        hints2.add_filter(\u0027t5\u0027, \u0027data2\u0027)"},{"line_number":51,"context_line":"        self.assertEqual(len(hints.filters()), 2)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def test_limits(self):"},{"line_number":54,"context_line":"        hints \u003d driver_hints.Hints()"},{"line_number":55,"context_line":"        self.assertEqual(hints.get_limit(), None)"},{"line_number":56,"context_line":"        hints.set_limit(10)"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2BvgI%3D","line":53,"updated":"2014-01-22 15:57:10.000000000","message":"It the Hints object just used a .limit attribute there would be no need for this test.","commit_id":"cbe8d7de6ac2181f2d906b92f01b2bace8bdd063"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"3c0df1aa0d0c7c6390aba3c79624ef0e1b6c7732","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        hints2.add_filter(\u0027t5\u0027, \u0027data2\u0027)"},{"line_number":51,"context_line":"        self.assertEqual(len(hints.filters()), 2)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def test_limits(self):"},{"line_number":54,"context_line":"        hints \u003d driver_hints.Hints()"},{"line_number":55,"context_line":"        self.assertEqual(hints.get_limit(), None)"},{"line_number":56,"context_line":"        hints.set_limit(10)"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2BvX0%3D","line":53,"in_reply_to":"AAAAUH%2F%2BvgI%3D","updated":"2014-01-22 16:20:46.000000000","message":"that is true….but so my reply to the comment in driver_hints","commit_id":"cbe8d7de6ac2181f2d906b92f01b2bace8bdd063"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2dcefd3f0920f46da719e2fb192fc7eee30682e3","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def test_limits(self):"},{"line_number":54,"context_line":"        hints \u003d driver_hints.Hints()"},{"line_number":55,"context_line":"        self.assertEqual(hints.get_limit(), None)"},{"line_number":56,"context_line":"        hints.set_limit(10)"},{"line_number":57,"context_line":"        self.assertEqual(hints.get_limit(), 10)"},{"line_number":58,"context_line":"        hints.set_limit(11)"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F96WM%3D","line":55,"updated":"2014-02-01 15:15:44.000000000","message":"use assertIsNone","commit_id":"f5b90effeb7db975604339ab1c3505ad77846d51"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"8734cba6f1ca2b98f1e78d872699011e6c3a5d74","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def test_limits(self):"},{"line_number":54,"context_line":"        hints \u003d driver_hints.Hints()"},{"line_number":55,"context_line":"        self.assertEqual(hints.get_limit(), None)"},{"line_number":56,"context_line":"        hints.set_limit(10)"},{"line_number":57,"context_line":"        self.assertEqual(hints.get_limit(), 10)"},{"line_number":58,"context_line":"        hints.set_limit(11)"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F95%2BI%3D","line":55,"in_reply_to":"AAAAUH%2F96WM%3D","updated":"2014-02-03 22:56:24.000000000","message":"Done","commit_id":"f5b90effeb7db975604339ab1c3505ad77846d51"}],"keystone/tests/test_v3_filters.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"77de2e326732d5aed0b83c7e81ac0ee98033913a","unresolved":false,"context_lines":[{"line_number":279,"context_line":"        # TODO(henry-nash) Ideally the policy setting would happen in the"},{"line_number":280,"context_line":"        # entity for-loop below, using a string substitution of \u0027plural\u0027."},{"line_number":281,"context_line":"        # However, that appears to lead to unreliable policy checking - i.e."},{"line_number":282,"context_line":"        # multiple calls to _set_policy doesn\u0027t work properly."},{"line_number":283,"context_line":"        self._set_policy({\"identity:list_users\": [],"},{"line_number":284,"context_line":"                          \"identity:list_groups\": [],"},{"line_number":285,"context_line":"                          \"identity:list_projects\": [],"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAUH%2F%2B4tE%3D","line":282,"updated":"2014-01-21 03:46:00.000000000","message":"Bug report?","commit_id":"efc230d4b5615200100478f32f5741582c513f14"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"6dd9d4212a2bb3103ab2362385d50878343b73be","unresolved":false,"context_lines":[{"line_number":279,"context_line":"        # TODO(henry-nash) Ideally the policy setting would happen in the"},{"line_number":280,"context_line":"        # entity for-loop below, using a string substitution of \u0027plural\u0027."},{"line_number":281,"context_line":"        # However, that appears to lead to unreliable policy checking - i.e."},{"line_number":282,"context_line":"        # multiple calls to _set_policy doesn\u0027t work properly."},{"line_number":283,"context_line":"        self._set_policy({\"identity:list_users\": [],"},{"line_number":284,"context_line":"                          \"identity:list_groups\": [],"},{"line_number":285,"context_line":"                          \"identity:list_projects\": [],"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAUH%2F%2B3Go%3D","line":282,"in_reply_to":"AAAAUH%2F%2B4tE%3D","updated":"2014-01-21 10:49:46.000000000","message":"Good point - actually I retested this with the policy setting in the loop and it now works fine…so either my pilot error earlier or it has been fixed (this was back in Havana when this test was first written).  Hence comment now removed and code place in line in loop.","commit_id":"efc230d4b5615200100478f32f5741582c513f14"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"0d85ebc74a9670a9a7d7ba4e18b93cce8b44a8e4","unresolved":false,"context_lines":[{"line_number":259,"context_line":""},{"line_number":260,"context_line":"        self._delete_test_data(\u0027user\u0027, user_list)"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"    def test_list_limit(self):"},{"line_number":263,"context_line":"        \"\"\"GET /\u003centities\u003e (limited)"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"        Test Plan:"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2BvjQ%3D","line":262,"updated":"2014-01-22 15:57:10.000000000","message":"I wouldn\u0027t mind seeing this in it\u0027s own testing class so it can have it\u0027s own setup and cleanup.  If this test fails the CONF entries may be incorrect for the next test run.","commit_id":"cbe8d7de6ac2181f2d906b92f01b2bace8bdd063"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"f33bc8a1a7b1292a1ad50e5e6b7ade1398b626db","unresolved":false,"context_lines":[{"line_number":259,"context_line":""},{"line_number":260,"context_line":"        self._delete_test_data(\u0027user\u0027, user_list)"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"    def test_list_limit(self):"},{"line_number":263,"context_line":"        \"\"\"GET /\u003centities\u003e (limited)"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"        Test Plan:"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2BbgM%3D","line":262,"in_reply_to":"AAAAUH%2F%2BvXk%3D","updated":"2014-01-31 11:19:53.000000000","message":"Ok, this is now done.","commit_id":"cbe8d7de6ac2181f2d906b92f01b2bace8bdd063"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"3c0df1aa0d0c7c6390aba3c79624ef0e1b6c7732","unresolved":false,"context_lines":[{"line_number":259,"context_line":""},{"line_number":260,"context_line":"        self._delete_test_data(\u0027user\u0027, user_list)"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"    def test_list_limit(self):"},{"line_number":263,"context_line":"        \"\"\"GET /\u003centities\u003e (limited)"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"        Test Plan:"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2BvXk%3D","line":262,"in_reply_to":"AAAAUH%2F%2BvjQ%3D","updated":"2014-01-22 16:20:46.000000000","message":"I think you are right.  Would it be OK if I came back in and did this in a subsequent patch once I2 is out?","commit_id":"cbe8d7de6ac2181f2d906b92f01b2bace8bdd063"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2dcefd3f0920f46da719e2fb192fc7eee30682e3","unresolved":false,"context_lines":[{"line_number":328,"context_line":"        for _ in range(10):"},{"line_number":329,"context_line":"            new_entity \u003d {\u0027id\u0027: uuid.uuid4().hex, \u0027type\u0027: uuid.uuid4().hex}"},{"line_number":330,"context_line":"            service \u003d self.catalog_api.create_service(new_entity[\u0027id\u0027],"},{"line_number":331,"context_line":"                                                      new_entity)"},{"line_number":332,"context_line":"            self.service_list.append(service)"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"        # Make sure we clean up when finished"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F96Tk%3D","line":331,"updated":"2014-02-01 15:15:44.000000000","message":"the addCleanups for these things should be done here rather than later because that will ensure they\u0027re cleaned up even if a later create_service fails.","commit_id":"f5b90effeb7db975604339ab1c3505ad77846d51"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"8734cba6f1ca2b98f1e78d872699011e6c3a5d74","unresolved":false,"context_lines":[{"line_number":328,"context_line":"        for _ in range(10):"},{"line_number":329,"context_line":"            new_entity \u003d {\u0027id\u0027: uuid.uuid4().hex, \u0027type\u0027: uuid.uuid4().hex}"},{"line_number":330,"context_line":"            service \u003d self.catalog_api.create_service(new_entity[\u0027id\u0027],"},{"line_number":331,"context_line":"                                                      new_entity)"},{"line_number":332,"context_line":"            self.service_list.append(service)"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"        # Make sure we clean up when finished"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F9yl8%3D","line":331,"in_reply_to":"AAAAUH%2F96Tk%3D","updated":"2014-02-03 22:56:24.000000000","message":"Done","commit_id":"f5b90effeb7db975604339ab1c3505ad77846d51"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2dcefd3f0920f46da719e2fb192fc7eee30682e3","unresolved":false,"context_lines":[{"line_number":347,"context_line":"        self.opt_in_group(\u0027assignment\u0027,"},{"line_number":348,"context_line":"                          list_limit\u003dself.orig_assignment_list_limit)"},{"line_number":349,"context_line":"        self.opt_in_group(\u0027catalog\u0027, list_limit\u003dself.orig_catalog_list_limit)"},{"line_number":350,"context_line":"        self.opt(list_limit\u003dself.orig_list_limit)"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"    def test_list_limit(self):"},{"line_number":353,"context_line":"        \"\"\"GET /\u003centities\u003e (limited)"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F96Tg%3D","line":350,"updated":"2014-02-01 15:15:44.000000000","message":"the options will be reset by tests.TestCase, so shouldn\u0027t need to do this.","commit_id":"f5b90effeb7db975604339ab1c3505ad77846d51"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"8734cba6f1ca2b98f1e78d872699011e6c3a5d74","unresolved":false,"context_lines":[{"line_number":347,"context_line":"        self.opt_in_group(\u0027assignment\u0027,"},{"line_number":348,"context_line":"                          list_limit\u003dself.orig_assignment_list_limit)"},{"line_number":349,"context_line":"        self.opt_in_group(\u0027catalog\u0027, list_limit\u003dself.orig_catalog_list_limit)"},{"line_number":350,"context_line":"        self.opt(list_limit\u003dself.orig_list_limit)"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"    def test_list_limit(self):"},{"line_number":353,"context_line":"        \"\"\"GET /\u003centities\u003e (limited)"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F9yl4%3D","line":350,"in_reply_to":"AAAAUH%2F96Tg%3D","updated":"2014-02-03 22:56:24.000000000","message":"Done","commit_id":"f5b90effeb7db975604339ab1c3505ad77846d51"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2dcefd3f0920f46da719e2fb192fc7eee30682e3","unresolved":false,"context_lines":[{"line_number":364,"context_line":"          limit is not exceeded"},{"line_number":365,"context_line":""},{"line_number":366,"context_line":"        \"\"\""},{"line_number":367,"context_line":"        for entity in self.ENTITY_TYPES:"},{"line_number":368,"context_line":"            plural \u003d \u0027%ss\u0027 % entity"},{"line_number":369,"context_line":"            if entity in [\u0027user\u0027, \u0027group\u0027]:"},{"line_number":370,"context_line":"                driver \u003d \u0027identity\u0027"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F96TU%3D","line":367,"updated":"2014-02-01 15:15:44.000000000","message":"suggest have separate test cases so that it\u0027s easier to tell which type of entity failed.","commit_id":"f5b90effeb7db975604339ab1c3505ad77846d51"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"8734cba6f1ca2b98f1e78d872699011e6c3a5d74","unresolved":false,"context_lines":[{"line_number":364,"context_line":"          limit is not exceeded"},{"line_number":365,"context_line":""},{"line_number":366,"context_line":"        \"\"\""},{"line_number":367,"context_line":"        for entity in self.ENTITY_TYPES:"},{"line_number":368,"context_line":"            plural \u003d \u0027%ss\u0027 % entity"},{"line_number":369,"context_line":"            if entity in [\u0027user\u0027, \u0027group\u0027]:"},{"line_number":370,"context_line":"                driver \u003d \u0027identity\u0027"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F9yl0%3D","line":367,"in_reply_to":"AAAAUH%2F96TU%3D","updated":"2014-02-03 22:56:24.000000000","message":"Done","commit_id":"f5b90effeb7db975604339ab1c3505ad77846d51"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2dcefd3f0920f46da719e2fb192fc7eee30682e3","unresolved":false,"context_lines":[{"line_number":380,"context_line":"            self.opt_in_group(driver, list_limit\u003d4)"},{"line_number":381,"context_line":"            r \u003d self.get(\u0027/%s\u0027 % plural, auth\u003dself.auth)"},{"line_number":382,"context_line":"            self.assertEqual(len(r.result.get(plural)), 4)"},{"line_number":383,"context_line":"            self.assertTrue(r.result.get(\u0027truncated\u0027))"},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"        # Also try an entity that is not supported at the driver level, to make"},{"line_number":386,"context_line":"        # sure this is handled by the Manager layer"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F96TQ%3D","line":383,"updated":"2014-02-01 15:15:44.000000000","message":"suggest use assertIs(r.result.get(\u0027truncated\u0027), True) then it\u0027ll also validate that we\u0027re returning a Boolean and not a string or something.","commit_id":"f5b90effeb7db975604339ab1c3505ad77846d51"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"8734cba6f1ca2b98f1e78d872699011e6c3a5d74","unresolved":false,"context_lines":[{"line_number":380,"context_line":"            self.opt_in_group(driver, list_limit\u003d4)"},{"line_number":381,"context_line":"            r \u003d self.get(\u0027/%s\u0027 % plural, auth\u003dself.auth)"},{"line_number":382,"context_line":"            self.assertEqual(len(r.result.get(plural)), 4)"},{"line_number":383,"context_line":"            self.assertTrue(r.result.get(\u0027truncated\u0027))"},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"        # Also try an entity that is not supported at the driver level, to make"},{"line_number":386,"context_line":"        # sure this is handled by the Manager layer"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F9yfo%3D","line":383,"in_reply_to":"AAAAUH%2F96TQ%3D","updated":"2014-02-03 22:56:24.000000000","message":"Done…and that actually caught a bug in the xml handling! Nice suggestion!","commit_id":"f5b90effeb7db975604339ab1c3505ad77846d51"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"2048bd5af7d87d0305603d8eda287bfc4b6559a1","unresolved":false,"context_lines":[{"line_number":337,"context_line":"                                                   new_entity)"},{"line_number":338,"context_line":"            self.policy_list.append(policy)"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"    def cleanUpEntity(self, entity):"},{"line_number":341,"context_line":"        \"\"\"Clean up entity test data from Identity Limit Test Cases.\"\"\""},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"        self._delete_test_data(entity, self.entity_lists[entity])"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAUH%2F9mOo%3D","line":340,"updated":"2014-02-05 19:21:38.000000000","message":"Camel case again?","commit_id":"15b535d33f39e48a9c55611dc3af5b81a1ba752e"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"a1bc6a64567a3e6100a904eca7f72c03d95e7218","unresolved":false,"context_lines":[{"line_number":337,"context_line":"                                                   new_entity)"},{"line_number":338,"context_line":"            self.policy_list.append(policy)"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"    def cleanUpEntity(self, entity):"},{"line_number":341,"context_line":"        \"\"\"Clean up entity test data from Identity Limit Test Cases.\"\"\""},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"        self._delete_test_data(entity, self.entity_lists[entity])"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAUH%2F9YPc%3D","line":340,"in_reply_to":"AAAAUH%2F9mOo%3D","updated":"2014-02-07 11:25:08.000000000","message":"…you can make a camel pass through the eye of….","commit_id":"15b535d33f39e48a9c55611dc3af5b81a1ba752e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f7b6986ddd03f3d6c493beaf89b22bc08e998d50","unresolved":false,"context_lines":[{"line_number":357,"context_line":"    def _test_entity_list_limit(self, entity, driver):"},{"line_number":358,"context_line":"        \"\"\"GET /\u003centities\u003e (limited)"},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"        Test Plan:"},{"line_number":361,"context_line":"        - For the specified type of entity:"},{"line_number":362,"context_line":"            - Update policy for no protection on api"},{"line_number":363,"context_line":"            - Add a bunch of entities"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAUH%2F9umY%3D","line":360,"updated":"2014-02-04 16:14:35.000000000","message":"add a blank line after this for rst.","commit_id":"15b535d33f39e48a9c55611dc3af5b81a1ba752e"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"a1bc6a64567a3e6100a904eca7f72c03d95e7218","unresolved":false,"context_lines":[{"line_number":357,"context_line":"    def _test_entity_list_limit(self, entity, driver):"},{"line_number":358,"context_line":"        \"\"\"GET /\u003centities\u003e (limited)"},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"        Test Plan:"},{"line_number":361,"context_line":"        - For the specified type of entity:"},{"line_number":362,"context_line":"            - Update policy for no protection on api"},{"line_number":363,"context_line":"            - Add a bunch of entities"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAUH%2F9YO8%3D","line":360,"in_reply_to":"AAAAUH%2F9umY%3D","updated":"2014-02-07 11:25:08.000000000","message":"Done","commit_id":"15b535d33f39e48a9c55611dc3af5b81a1ba752e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f7b6986ddd03f3d6c493beaf89b22bc08e998d50","unresolved":false,"context_lines":[{"line_number":367,"context_line":"            - returned"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"        \"\"\""},{"line_number":370,"context_line":"        plural \u003d \u0027%ss\u0027 % entity"},{"line_number":371,"context_line":"        if entity \u003d\u003d \u0027policy\u0027:"},{"line_number":372,"context_line":"            plural \u003d \u0027policies\u0027"},{"line_number":373,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAUH%2F9umM%3D","line":370,"updated":"2014-02-04 16:14:35.000000000","message":"remove this line.","commit_id":"15b535d33f39e48a9c55611dc3af5b81a1ba752e"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"a1bc6a64567a3e6100a904eca7f72c03d95e7218","unresolved":false,"context_lines":[{"line_number":367,"context_line":"            - returned"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"        \"\"\""},{"line_number":370,"context_line":"        plural \u003d \u0027%ss\u0027 % entity"},{"line_number":371,"context_line":"        if entity \u003d\u003d \u0027policy\u0027:"},{"line_number":372,"context_line":"            plural \u003d \u0027policies\u0027"},{"line_number":373,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAUH%2F9YOs%3D","line":370,"in_reply_to":"AAAAUH%2F9umM%3D","updated":"2014-02-07 11:25:08.000000000","message":"nice catch","commit_id":"15b535d33f39e48a9c55611dc3af5b81a1ba752e"}]}
