)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"912e76e533dc3ddbb4286f6177f59601e10aca98","unresolved":false,"context_lines":[{"line_number":22,"context_line":"This patch also includes a delete tree extension for fakeldap."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Change-Id: I91f732e2944f27d28074c77bcad853c729e9d659"},{"line_number":25,"context_line":"Closes-Bug: #1247032"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"AAAATn%2F9FSw%3D","line":25,"updated":"2013-12-16 23:27:37.000000000","message":"I\u0027m not seeing any change to the server, only the tests, so how does this fix a bug?","commit_id":"ba7caae4e093a2bf3fb535b3ef97f73307ddbb73"},{"author":{"_account_id":5575,"name":"Jose Castro Leon","email":"jose.castro.leon@cern.ch","username":"jose-castro-leon"},"change_message_id":"1a7d7a4033bca35ad443f9e73f3971627d574223","unresolved":false,"context_lines":[{"line_number":22,"context_line":"This patch also includes a delete tree extension for fakeldap."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Change-Id: I91f732e2944f27d28074c77bcad853c729e9d659"},{"line_number":25,"context_line":"Closes-Bug: #1247032"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"AAAAUH%2F%2FXko%3D","line":25,"in_reply_to":"AAAATn%2F9FSw%3D","updated":"2014-01-14 15:53:28.000000000","message":"It got patched somewhere else but lacks test coverage. It was in the first patch submitted.","commit_id":"ba7caae4e093a2bf3fb535b3ef97f73307ddbb73"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1f993285aa8cd5aef368da8ba3d35554818e22f0","unresolved":false,"context_lines":[{"line_number":22,"context_line":"This patch also includes a delete tree extension for fakeldap."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Change-Id: I91f732e2944f27d28074c77bcad853c729e9d659"},{"line_number":25,"context_line":"Closes-Bug: #1247032"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"AAAAUH%2F%2FJdY%3D","line":25,"updated":"2014-01-17 00:28:33.000000000","message":"I don\u0027t see how adding a test fixes the bug.","commit_id":"5a91c2afb1ff4f420298eef986afd41f65604ee8"},{"author":{"_account_id":5575,"name":"Jose Castro Leon","email":"jose.castro.leon@cern.ch","username":"jose-castro-leon"},"change_message_id":"7d86aff5cccc62bd5ad75ee5836a8dc83e423362","unresolved":false,"context_lines":[{"line_number":22,"context_line":"This patch also includes a delete tree extension for fakeldap."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Change-Id: I91f732e2944f27d28074c77bcad853c729e9d659"},{"line_number":25,"context_line":"Closes-Bug: #1247032"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"AAAAUH%2F%2FH%2Bk%3D","line":25,"in_reply_to":"AAAAUH%2F%2FJdY%3D","updated":"2014-01-17 07:26:03.000000000","message":"As I mentioned before it was fixed by chance on https://github.com/openstack/keystone/commit/269dd15ceaf61de8e1904b8bee08f003ad5a2660\nShould I change the commit by one that includes only the test coverage?","commit_id":"5a91c2afb1ff4f420298eef986afd41f65604ee8"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"8f6e1add200aacba528787bf7939939682e022e4","unresolved":false,"context_lines":[{"line_number":22,"context_line":"This patch also includes a delete tree extension for fakeldap."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Change-Id: I91f732e2944f27d28074c77bcad853c729e9d659"},{"line_number":25,"context_line":"Closes-Bug: #1247032"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"AAAAUH%2F%2BHps%3D","line":25,"updated":"2014-01-29 23:30:57.000000000","message":"The question was \"Should I change the commit by one that includes only the test coverage?\" (since this was fixed with https://review.openstack.org/#/c/52948/) -- yes, change the commit message to say what this change is actually doing... enhancing tests.\n\nCould change this line to\n\n Related-Bug: #1247032","commit_id":"10a431a597aebf0697f3e98c678c1510ba90fb3c"}],"keystone/assignment/backends/ldap.py":[{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"255f44132eaf12688a1ad5e7512969dc30350bab","unresolved":false,"context_lines":[{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    def delete_project(self, tenant_id):"},{"line_number":179,"context_line":"        if self.project.subtree_delete_enabled:"},{"line_number":180,"context_line":"            self.project.deleteTree(tenant_id)"},{"line_number":181,"context_line":"        else:"},{"line_number":182,"context_line":"            tenant_dn \u003d self.project._id_to_dn(tenant_id)"},{"line_number":183,"context_line":"            self.role.roles_delete_subtree_by_project(tenant_dn)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2B47Q%3D","line":180,"updated":"2013-11-18 22:57:22.000000000","message":"Good catch.  This indicates we were lacking test coverage for this method.","commit_id":"64f503af3c8bbca9061d25df0d3c4ca77287ba1a"}],"keystone/tests/fakeldap.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"912e76e533dc3ddbb4286f6177f59601e10aca98","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    ldap.SCOPE_SUBTREE: \u0027SCOPE_SUBTREE\u0027,"},{"line_number":40,"context_line":"}"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"CONTROL_TREEDELETE \u003d \u00271.2.840.113556.1.4.805\u0027"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F9FUw%3D","line":42,"updated":"2013-12-16 23:27:37.000000000","message":"does this string come from an RFC? suggest add a reference.","commit_id":"ba7caae4e093a2bf3fb535b3ef97f73307ddbb73"},{"author":{"_account_id":5575,"name":"Jose Castro Leon","email":"jose.castro.leon@cern.ch","username":"jose-castro-leon"},"change_message_id":"1a7d7a4033bca35ad443f9e73f3971627d574223","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    ldap.SCOPE_SUBTREE: \u0027SCOPE_SUBTREE\u0027,"},{"line_number":40,"context_line":"}"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"CONTROL_TREEDELETE \u003d \u00271.2.840.113556.1.4.805\u0027"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2FXpQ%3D","line":42,"in_reply_to":"AAAATn%2F9FUw%3D","updated":"2014-01-14 15:53:28.000000000","message":"It comes from MS Active Directory pointed in this draft, the idea is allow us to emulate the behavior so the code can be really tested\n\nhttp://msdn.microsoft.com/en-us/library/cc223320.aspx\nhttp://tools.ietf.org/html/draft-armijo-ldap-treedelete-02","commit_id":"ba7caae4e093a2bf3fb535b3ef97f73307ddbb73"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"912e76e533dc3ddbb4286f6177f59601e10aca98","unresolved":false,"context_lines":[{"line_number":242,"context_line":""},{"line_number":243,"context_line":"        try:"},{"line_number":244,"context_line":"            if CONTROL_TREEDELETE in [c.controlType for c in serverctrls]:"},{"line_number":245,"context_line":"                LOG.debug(_(\u0027FakeLdap subtree_delete item: dn\u003d%s\u0027), dn)"},{"line_number":246,"context_line":"                children \u003d [k for k, v in self.db.iteritems()"},{"line_number":247,"context_line":"                            if re.match(\u0027%s.*,%s\u0027 % (self.__prefix, dn), k)]"},{"line_number":248,"context_line":"                for c in children:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F9FVg%3D","line":245,"updated":"2013-12-16 23:27:37.000000000","message":"remove the _() since don\u0027t need to translate test code.\n\nAlso, remove \"FakeLdap\" since \"fakeldap\" will already be in the log entry.","commit_id":"ba7caae4e093a2bf3fb535b3ef97f73307ddbb73"},{"author":{"_account_id":5575,"name":"Jose Castro Leon","email":"jose.castro.leon@cern.ch","username":"jose-castro-leon"},"change_message_id":"1a7d7a4033bca35ad443f9e73f3971627d574223","unresolved":false,"context_lines":[{"line_number":242,"context_line":""},{"line_number":243,"context_line":"        try:"},{"line_number":244,"context_line":"            if CONTROL_TREEDELETE in [c.controlType for c in serverctrls]:"},{"line_number":245,"context_line":"                LOG.debug(_(\u0027FakeLdap subtree_delete item: dn\u003d%s\u0027), dn)"},{"line_number":246,"context_line":"                children \u003d [k for k, v in self.db.iteritems()"},{"line_number":247,"context_line":"                            if re.match(\u0027%s.*,%s\u0027 % (self.__prefix, dn), k)]"},{"line_number":248,"context_line":"                for c in children:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2FXkg%3D","line":245,"in_reply_to":"AAAATn%2F9FVg%3D","updated":"2014-01-14 15:53:28.000000000","message":"Done","commit_id":"ba7caae4e093a2bf3fb535b3ef97f73307ddbb73"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"912e76e533dc3ddbb4286f6177f59601e10aca98","unresolved":false,"context_lines":[{"line_number":243,"context_line":"        try:"},{"line_number":244,"context_line":"            if CONTROL_TREEDELETE in [c.controlType for c in serverctrls]:"},{"line_number":245,"context_line":"                LOG.debug(_(\u0027FakeLdap subtree_delete item: dn\u003d%s\u0027), dn)"},{"line_number":246,"context_line":"                children \u003d [k for k, v in self.db.iteritems()"},{"line_number":247,"context_line":"                            if re.match(\u0027%s.*,%s\u0027 % (self.__prefix, dn), k)]"},{"line_number":248,"context_line":"                for c in children:"},{"line_number":249,"context_line":"                    del self.db[c]"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F9FTc%3D","line":246,"updated":"2013-12-16 23:27:37.000000000","message":"I think they want us to use six.iteritems() for python3 compat now.","commit_id":"ba7caae4e093a2bf3fb535b3ef97f73307ddbb73"},{"author":{"_account_id":5575,"name":"Jose Castro Leon","email":"jose.castro.leon@cern.ch","username":"jose-castro-leon"},"change_message_id":"1a7d7a4033bca35ad443f9e73f3971627d574223","unresolved":false,"context_lines":[{"line_number":243,"context_line":"        try:"},{"line_number":244,"context_line":"            if CONTROL_TREEDELETE in [c.controlType for c in serverctrls]:"},{"line_number":245,"context_line":"                LOG.debug(_(\u0027FakeLdap subtree_delete item: dn\u003d%s\u0027), dn)"},{"line_number":246,"context_line":"                children \u003d [k for k, v in self.db.iteritems()"},{"line_number":247,"context_line":"                            if re.match(\u0027%s.*,%s\u0027 % (self.__prefix, dn), k)]"},{"line_number":248,"context_line":"                for c in children:"},{"line_number":249,"context_line":"                    del self.db[c]"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2FXkc%3D","line":246,"in_reply_to":"AAAATn%2F9FTc%3D","updated":"2014-01-14 15:53:28.000000000","message":"Done","commit_id":"ba7caae4e093a2bf3fb535b3ef97f73307ddbb73"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1f993285aa8cd5aef368da8ba3d35554818e22f0","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    ldap.SCOPE_SUBTREE: \u0027SCOPE_SUBTREE\u0027,"},{"line_number":42,"context_line":"}"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"CONTROL_TREEDELETE \u003d \u00271.2.840.113556.1.4.805\u0027"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2FJdU%3D","line":44,"updated":"2014-01-17 00:28:33.000000000","message":"add a comment to the code where this came from.","commit_id":"5a91c2afb1ff4f420298eef986afd41f65604ee8"},{"author":{"_account_id":5575,"name":"Jose Castro Leon","email":"jose.castro.leon@cern.ch","username":"jose-castro-leon"},"change_message_id":"7d86aff5cccc62bd5ad75ee5836a8dc83e423362","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    ldap.SCOPE_SUBTREE: \u0027SCOPE_SUBTREE\u0027,"},{"line_number":42,"context_line":"}"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"CONTROL_TREEDELETE \u003d \u00271.2.840.113556.1.4.805\u0027"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2FH%2BU%3D","line":44,"in_reply_to":"AAAAUH%2F%2FJdU%3D","updated":"2014-01-17 07:26:03.000000000","message":"OK","commit_id":"5a91c2afb1ff4f420298eef986afd41f65604ee8"}],"keystone/tests/test_backend_ldap.py":[{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"255f44132eaf12688a1ad5e7512969dc30350bab","unresolved":false,"context_lines":[{"line_number":379,"context_line":"                          \u0027fake1\u0027)"},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"    def test_configurable_subtree_delete(self):"},{"line_number":382,"context_line":"        CONF.ldap.allow_subtree_delete \u003d True"},{"line_number":383,"context_line":"        self.load_backends()"},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"        project1 \u003d {\u0027id\u0027: uuid.uuid4().hex, \u0027name\u0027: uuid.uuid4().hex,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2B430%3D","line":382,"updated":"2013-11-18 22:57:22.000000000","message":"You should use self.opt_in_group(\u0027ldap\u0027, allow_subtree_delete\u003dTrue) instead of the direct setting of the CONF value.","commit_id":"64f503af3c8bbca9061d25df0d3c4ca77287ba1a"}]}
