)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5141152ee131515a54b016da55d817b202f188e7","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Some fixes in the is_domain field creation"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch addresses the comments made in the patch"},{"line_number":10,"context_line":"that adds the is_domain field in the project table:"},{"line_number":11,"context_line":"https://review.openstack.org/#/c/213273/7"},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"ba15a1d1_b903d40c","line":9,"updated":"2015-09-15 20:28:30.000000000","message":"the commit message needs to explain the changes and it shouldn\u0027t be required to reference external reference to understand it.\n\nSee https://wiki.openstack.org/wiki/GitCommitMessages#Information_in_commit_messages","commit_id":"28f0f2824d6bd075b67e335cee9b1b626b8bee6b"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"23a967410939d3bc2bb230933d6c85751ed04aa1","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Some fixes in the is_domain field creation"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch addresses the comments made in the patch"},{"line_number":10,"context_line":"that adds the is_domain field in the project table:"},{"line_number":11,"context_line":"https://review.openstack.org/#/c/213273/7"},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"ba15a1d1_c1f18d6c","line":9,"in_reply_to":"ba15a1d1_b903d40c","updated":"2015-09-17 19:23:26.000000000","message":"Done","commit_id":"28f0f2824d6bd075b67e335cee9b1b626b8bee6b"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"6651df2bcb9e57dbcc577e10d1093d4706b2137b","unresolved":false,"context_lines":[{"line_number":12,"context_line":"- Add test in LDAP backend ensuring we cannot pass is_domain field"},{"line_number":13,"context_line":"- Add missing backend test case passing is_domain\u003dFalse in manager"},{"line_number":14,"context_line":"  layer"},{"line_number":15,"context_line":"- Add the server_default property on SQL backend is_domain field"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Co-Authored-By: Henrique Truta \u003chenrique@lsd.ufcg.edu.br\u003e"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"9a1a9d01_781e4fbc","line":15,"updated":"2015-09-29 19:45:38.000000000","message":"these are all unrelated and I can\u0027t tell from the changes which ones are related to which part. This needs to be split up.","commit_id":"545d7a632d84ba99f9c50a627c8a4cfa54c75629"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"fea9c4e4d60b0269fc8913596cec76ba7425fade","unresolved":false,"context_lines":[{"line_number":12,"context_line":"- Add test in LDAP backend ensuring we cannot pass is_domain field"},{"line_number":13,"context_line":"- Add missing backend test case passing is_domain\u003dFalse in manager"},{"line_number":14,"context_line":"  layer"},{"line_number":15,"context_line":"- Add the server_default property on SQL backend is_domain field"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Co-Authored-By: Henrique Truta \u003chenrique@lsd.ufcg.edu.br\u003e"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"9a1a9d01_8e140fe9","line":15,"in_reply_to":"9a1a9d01_781e4fbc","updated":"2015-09-30 17:57:25.000000000","message":"Done. patches split: https://review.openstack.org/#/c/229536/ https://review.openstack.org/#/c/229549/","commit_id":"545d7a632d84ba99f9c50a627c8a4cfa54c75629"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"db7ea400455f237bc81da9c45528e2894944f271","unresolved":false,"context_lines":[{"line_number":10,"context_line":"parameter set. We set it as \u00270\u0027 to comply with migration\u0027s default."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Co-Authored-By: Henrique Truta \u003chenrique@lsd.ufcg.edu.br\u003e"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Ida6a43ca9b61771f4366e900a46f62cda87f8f27"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"7a2fa921_5695143e","line":13,"updated":"2015-10-05 14:03:30.000000000","message":"link this to the reseller bp?","commit_id":"7e2572fbed87441e813379110fa2aa96236875d8"}],"keystone/resource/backends/ldap.py":[{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"1ebe5774301028b2bd2e57b0d5b871170e2f7c6b","unresolved":false,"context_lines":[{"line_number":67,"context_line":"            return [self._set_default_is_domain_project(x) for x in ref]"},{"line_number":68,"context_line":"        else:"},{"line_number":69,"context_line":"            raise ValueError(_("},{"line_number":70,"context_line":"                \u0027Expected dict or list: %s\u0027) % type(ref))  # pragma: no cover"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def _validate_parent_project_is_none(self, ref):"},{"line_number":73,"context_line":"        \"\"\"If a parent_id different from None was given,"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_d3eeaa8a","line":70,"updated":"2015-08-25 04:40:09.000000000","message":"why not start the second line with \"type(ref))\" rather than \u0027\u0027Expected dict ...\u0027 since there are still spaces above","commit_id":"2bf0f37c257d3da00243d143a33f1f64e6c3b25e"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"a940caf07d2c7849bf50c9b4b46262ff98f2dc65","unresolved":false,"context_lines":[{"line_number":67,"context_line":"            return [self._set_default_is_domain_project(x) for x in ref]"},{"line_number":68,"context_line":"        else:"},{"line_number":69,"context_line":"            raise ValueError(_("},{"line_number":70,"context_line":"                \u0027Expected dict or list: %s\u0027) % type(ref))  # pragma: no cover"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def _validate_parent_project_is_none(self, ref):"},{"line_number":73,"context_line":"        \"\"\"If a parent_id different from None was given,"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_45e4b73a","line":70,"in_reply_to":"fa1b9901_d3eeaa8a","updated":"2015-08-26 14:22:42.000000000","message":"Done","commit_id":"2bf0f37c257d3da00243d143a33f1f64e6c3b25e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"6651df2bcb9e57dbcc577e10d1093d4706b2137b","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            return [self._set_default_is_domain_project(x) for x in ref]"},{"line_number":73,"context_line":"        else:"},{"line_number":74,"context_line":"            raise ValueError(_(\u0027Expected dict or list: %s\u0027) %"},{"line_number":75,"context_line":"                             type(ref))  # pragma: no cover"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    def _validate_parent_project_is_none(self, ref):"},{"line_number":78,"context_line":"        \"\"\"If a parent_id different from None was given,"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a1a9d01_f8fb3f79","line":75,"updated":"2015-09-29 19:45:38.000000000","message":"this change isn\u0027t mentioned in the commit message and there\u0027s no reason we can\u0027t cover this in a unit test.","commit_id":"545d7a632d84ba99f9c50a627c8a4cfa54c75629"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"fea9c4e4d60b0269fc8913596cec76ba7425fade","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            return [self._set_default_is_domain_project(x) for x in ref]"},{"line_number":73,"context_line":"        else:"},{"line_number":74,"context_line":"            raise ValueError(_(\u0027Expected dict or list: %s\u0027) %"},{"line_number":75,"context_line":"                             type(ref))  # pragma: no cover"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    def _validate_parent_project_is_none(self, ref):"},{"line_number":78,"context_line":"        \"\"\"If a parent_id different from None was given,"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a1a9d01_8f95ee33","line":75,"in_reply_to":"9a1a9d01_f8fb3f79","updated":"2015-09-30 17:57:25.000000000","message":"Done. Implemented in a separated patch: https://review.openstack.org/#/c/229536/","commit_id":"545d7a632d84ba99f9c50a627c8a4cfa54c75629"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a48919d1ee77451a5922ba5b0109f714a3c6e5ab","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            return [self._set_default_is_domain_project(x) for x in ref]"},{"line_number":73,"context_line":"        else:"},{"line_number":74,"context_line":"            raise ValueError(_(\u0027Expected dict or list: %s\u0027) %"},{"line_number":75,"context_line":"                             type(ref))  # pragma: no cover"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    def _validate_parent_project_is_none(self, ref):"},{"line_number":78,"context_line":"        \"\"\"If a parent_id different from None was given,"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a1a9d01_e57a8623","line":75,"updated":"2015-09-30 19:58:54.000000000","message":"this is from the other change.","commit_id":"939abfaa2090b7c18ba35ec60de82277e5b1d214"}],"keystone/resource/backends/sql.py":[{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"1ebe5774301028b2bd2e57b0d5b871170e2f7c6b","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from keystone.i18n import _LE"},{"line_number":20,"context_line":"from keystone import resource as keystone_resource"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"import sqlalchemy"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_b3b9b67b","line":22,"updated":"2015-08-25 04:40:09.000000000","message":"3rd party lib, move this in the same group as oslo imports","commit_id":"2bf0f37c257d3da00243d143a33f1f64e6c3b25e"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"a940caf07d2c7849bf50c9b4b46262ff98f2dc65","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from keystone.i18n import _LE"},{"line_number":20,"context_line":"from keystone import resource as keystone_resource"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"import sqlalchemy"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_654f7b34","line":22,"in_reply_to":"fa1b9901_b3b9b67b","updated":"2015-08-26 14:22:42.000000000","message":"Done","commit_id":"2bf0f37c257d3da00243d143a33f1f64e6c3b25e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"6651df2bcb9e57dbcc577e10d1093d4706b2137b","unresolved":false,"context_lines":[{"line_number":256,"context_line":"    extra \u003d sql.Column(sql.JsonBlob())"},{"line_number":257,"context_line":"    parent_id \u003d sql.Column(sql.String(64), sql.ForeignKey(\u0027project.id\u0027))"},{"line_number":258,"context_line":"    is_domain \u003d sql.Column(sql.Boolean, default\u003dFalse, nullable\u003dFalse,"},{"line_number":259,"context_line":"                           server_default\u003dsqlalchemy.sql.expression.false())"},{"line_number":260,"context_line":"    # Unique constraint across two columns to create the separation"},{"line_number":261,"context_line":"    # rather than just only \u0027name\u0027 being unique"},{"line_number":262,"context_line":"    __table_args__ \u003d (sql.UniqueConstraint(\u0027domain_id\u0027, \u0027name\u0027), {})"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a1a9d01_b84147ab","line":259,"updated":"2015-09-29 19:45:38.000000000","message":"The migration uses server_default\u003d\u00270\u0027 , so this should be the same.","commit_id":"545d7a632d84ba99f9c50a627c8a4cfa54c75629"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"fea9c4e4d60b0269fc8913596cec76ba7425fade","unresolved":false,"context_lines":[{"line_number":256,"context_line":"    extra \u003d sql.Column(sql.JsonBlob())"},{"line_number":257,"context_line":"    parent_id \u003d sql.Column(sql.String(64), sql.ForeignKey(\u0027project.id\u0027))"},{"line_number":258,"context_line":"    is_domain \u003d sql.Column(sql.Boolean, default\u003dFalse, nullable\u003dFalse,"},{"line_number":259,"context_line":"                           server_default\u003dsqlalchemy.sql.expression.false())"},{"line_number":260,"context_line":"    # Unique constraint across two columns to create the separation"},{"line_number":261,"context_line":"    # rather than just only \u0027name\u0027 being unique"},{"line_number":262,"context_line":"    __table_args__ \u003d (sql.UniqueConstraint(\u0027domain_id\u0027, \u0027name\u0027), {})"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a1a9d01_6e02dbb5","line":259,"in_reply_to":"9a1a9d01_b84147ab","updated":"2015-09-30 17:57:25.000000000","message":"Done","commit_id":"545d7a632d84ba99f9c50a627c8a4cfa54c75629"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"fea9c4e4d60b0269fc8913596cec76ba7425fade","unresolved":false,"context_lines":[{"line_number":256,"context_line":"    extra \u003d sql.Column(sql.JsonBlob())"},{"line_number":257,"context_line":"    parent_id \u003d sql.Column(sql.String(64), sql.ForeignKey(\u0027project.id\u0027))"},{"line_number":258,"context_line":"    is_domain \u003d sql.Column(sql.Boolean, default\u003dFalse, nullable\u003dFalse,"},{"line_number":259,"context_line":"                           server_default\u003dsqlalchemy.sql.expression.false())"},{"line_number":260,"context_line":"    # Unique constraint across two columns to create the separation"},{"line_number":261,"context_line":"    # rather than just only \u0027name\u0027 being unique"},{"line_number":262,"context_line":"    __table_args__ \u003d (sql.UniqueConstraint(\u0027domain_id\u0027, \u0027name\u0027), {})"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a1a9d01_6ebdfb00","line":259,"in_reply_to":"9a1a9d01_b84147ab","updated":"2015-09-30 17:57:25.000000000","message":"Done","commit_id":"545d7a632d84ba99f9c50a627c8a4cfa54c75629"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"ebd72e5f565a5656449386db49f16b69c4d89d0f","unresolved":false,"context_lines":[{"line_number":255,"context_line":"    extra \u003d sql.Column(sql.JsonBlob())"},{"line_number":256,"context_line":"    parent_id \u003d sql.Column(sql.String(64), sql.ForeignKey(\u0027project.id\u0027))"},{"line_number":257,"context_line":"    is_domain \u003d sql.Column(sql.Boolean, default\u003dFalse, nullable\u003dFalse,"},{"line_number":258,"context_line":"                           server_default\u003d\u00270\u0027)"},{"line_number":259,"context_line":"    # Unique constraint across two columns to create the separation"},{"line_number":260,"context_line":"    # rather than just only \u0027name\u0027 being unique"},{"line_number":261,"context_line":"    __table_args__ \u003d (sql.UniqueConstraint(\u0027domain_id\u0027, \u0027name\u0027), {})"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a1a9d01_d7104602","line":258,"updated":"2015-10-01 07:26:01.000000000","message":"actually, would:\n\nserver_default\u003dsqlalchemy.sql.expression.false()\n\n...not be a safer thing to write? See catalog/backends/sql.py as an example.","commit_id":"7e2572fbed87441e813379110fa2aa96236875d8"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"4173908a1ab4f7979615431f729d0642fde6e6c1","unresolved":false,"context_lines":[{"line_number":255,"context_line":"    extra \u003d sql.Column(sql.JsonBlob())"},{"line_number":256,"context_line":"    parent_id \u003d sql.Column(sql.String(64), sql.ForeignKey(\u0027project.id\u0027))"},{"line_number":257,"context_line":"    is_domain \u003d sql.Column(sql.Boolean, default\u003dFalse, nullable\u003dFalse,"},{"line_number":258,"context_line":"                           server_default\u003d\u00270\u0027)"},{"line_number":259,"context_line":"    # Unique constraint across two columns to create the separation"},{"line_number":260,"context_line":"    # rather than just only \u0027name\u0027 being unique"},{"line_number":261,"context_line":"    __table_args__ \u003d (sql.UniqueConstraint(\u0027domain_id\u0027, \u0027name\u0027), {})"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a2fa921_16031cba","line":258,"in_reply_to":"9a1a9d01_90ba5ce0","updated":"2015-10-05 14:02:59.000000000","message":"OK, fair enough","commit_id":"7e2572fbed87441e813379110fa2aa96236875d8"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5423fb796763bb4066711dbe92dc60ba8d5bf2cb","unresolved":false,"context_lines":[{"line_number":255,"context_line":"    extra \u003d sql.Column(sql.JsonBlob())"},{"line_number":256,"context_line":"    parent_id \u003d sql.Column(sql.String(64), sql.ForeignKey(\u0027project.id\u0027))"},{"line_number":257,"context_line":"    is_domain \u003d sql.Column(sql.Boolean, default\u003dFalse, nullable\u003dFalse,"},{"line_number":258,"context_line":"                           server_default\u003d\u00270\u0027)"},{"line_number":259,"context_line":"    # Unique constraint across two columns to create the separation"},{"line_number":260,"context_line":"    # rather than just only \u0027name\u0027 being unique"},{"line_number":261,"context_line":"    __table_args__ \u003d (sql.UniqueConstraint(\u0027domain_id\u0027, \u0027name\u0027), {})"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a2fa921_56e75412","line":258,"in_reply_to":"9a1a9d01_90ba5ce0","updated":"2015-10-05 14:02:30.000000000","message":"The migration uses server_default\u003d\u00270\u0027. If we\u0027re going to use sqlalchemy.sql.expression.false() here then the same should be used in the migration.","commit_id":"7e2572fbed87441e813379110fa2aa96236875d8"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"ec60d54c185cc500d365302a26278143dc19101b","unresolved":false,"context_lines":[{"line_number":255,"context_line":"    extra \u003d sql.Column(sql.JsonBlob())"},{"line_number":256,"context_line":"    parent_id \u003d sql.Column(sql.String(64), sql.ForeignKey(\u0027project.id\u0027))"},{"line_number":257,"context_line":"    is_domain \u003d sql.Column(sql.Boolean, default\u003dFalse, nullable\u003dFalse,"},{"line_number":258,"context_line":"                           server_default\u003d\u00270\u0027)"},{"line_number":259,"context_line":"    # Unique constraint across two columns to create the separation"},{"line_number":260,"context_line":"    # rather than just only \u0027name\u0027 being unique"},{"line_number":261,"context_line":"    __table_args__ \u003d (sql.UniqueConstraint(\u0027domain_id\u0027, \u0027name\u0027), {})"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a1a9d01_90ba5ce0","line":258,"in_reply_to":"9a1a9d01_d7104602","updated":"2015-10-05 13:26:32.000000000","message":"I had it like this in patchset 7, but bkundson suggested the 0","commit_id":"7e2572fbed87441e813379110fa2aa96236875d8"}],"keystone/resource/controllers.py":[{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"1ebe5774301028b2bd2e57b0d5b871170e2f7c6b","unresolved":false,"context_lines":[{"line_number":93,"context_line":"            msg \u003d _(\u0027The creation of projects acting as domains is not \u0027"},{"line_number":94,"context_line":"                    \u0027allowed.\u0027)"},{"line_number":95,"context_line":"            raise exception.ValidationError(message\u003dmsg)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        self.assert_admin(context)"},{"line_number":98,"context_line":"        tenant_ref[\u0027id\u0027] \u003d tenant_ref.get(\u0027id\u0027, uuid.uuid4().hex)"},{"line_number":99,"context_line":"        tenant \u003d self.resource_api.create_project("}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_1359825a","line":96,"updated":"2015-08-25 04:40:09.000000000","message":"should this be \u0027is_domain\u0027 in tenant_ref?  The comment was to check that the attribute should not even set.  User can set this to False, and the validation would not capture it.","commit_id":"2bf0f37c257d3da00243d143a33f1f64e6c3b25e"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"a940caf07d2c7849bf50c9b4b46262ff98f2dc65","unresolved":false,"context_lines":[{"line_number":93,"context_line":"            msg \u003d _(\u0027The creation of projects acting as domains is not \u0027"},{"line_number":94,"context_line":"                    \u0027allowed.\u0027)"},{"line_number":95,"context_line":"            raise exception.ValidationError(message\u003dmsg)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        self.assert_admin(context)"},{"line_number":98,"context_line":"        tenant_ref[\u0027id\u0027] \u003d tenant_ref.get(\u0027id\u0027, uuid.uuid4().hex)"},{"line_number":99,"context_line":"        tenant \u003d self.resource_api.create_project("}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_a0702173","line":96,"in_reply_to":"fa1b9901_1359825a","updated":"2015-08-26 14:22:42.000000000","message":"I disagree. We should ignore the is_domain\u003dFalse property, as we do, for example when dealing with domain_id in here: https://github.com/openstack/keystone/blob/master/keystone/common/controller.py#L213","commit_id":"2bf0f37c257d3da00243d143a33f1f64e6c3b25e"}],"keystone/tests/unit/test_backend.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"6651df2bcb9e57dbcc577e10d1093d4706b2137b","unresolved":false,"context_lines":[{"line_number":2717,"context_line":"                   \u0027is_domain\u0027: False}"},{"line_number":2718,"context_line":""},{"line_number":2719,"context_line":"        ref \u003d self.resource_api.create_project(project[\u0027id\u0027], project)"},{"line_number":2720,"context_line":"        self.assertFalse(ref[\u0027is_domain\u0027])"},{"line_number":2721,"context_line":""},{"line_number":2722,"context_line":"    @test_utils.wip(\u0027waiting for projects acting as domains implementation\u0027)"},{"line_number":2723,"context_line":"    def test_create_project_with_parent_id_and_without_domain_id(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a1a9d01_d853db69","line":2720,"updated":"2015-09-29 19:45:38.000000000","message":"use assertIs(False, ref[\u0027is_domain\u0027]) then it\u0027ll also assert that the value is a boolean and not an int or string.","commit_id":"545d7a632d84ba99f9c50a627c8a4cfa54c75629"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"fea9c4e4d60b0269fc8913596cec76ba7425fade","unresolved":false,"context_lines":[{"line_number":2717,"context_line":"                   \u0027is_domain\u0027: False}"},{"line_number":2718,"context_line":""},{"line_number":2719,"context_line":"        ref \u003d self.resource_api.create_project(project[\u0027id\u0027], project)"},{"line_number":2720,"context_line":"        self.assertFalse(ref[\u0027is_domain\u0027])"},{"line_number":2721,"context_line":""},{"line_number":2722,"context_line":"    @test_utils.wip(\u0027waiting for projects acting as domains implementation\u0027)"},{"line_number":2723,"context_line":"    def test_create_project_with_parent_id_and_without_domain_id(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a1a9d01_2b85b558","line":2720,"in_reply_to":"9a1a9d01_d853db69","updated":"2015-09-30 17:57:25.000000000","message":"Done in a separated patch: https://review.openstack.org/#/c/229549/","commit_id":"545d7a632d84ba99f9c50a627c8a4cfa54c75629"}],"keystone/tests/unit/test_backend_ldap.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"6651df2bcb9e57dbcc577e10d1093d4706b2137b","unresolved":false,"context_lines":[{"line_number":1754,"context_line":"                          self.resource_api.create_project,"},{"line_number":1755,"context_line":"                          project[\u0027id\u0027], project)"},{"line_number":1756,"context_line":""},{"line_number":1757,"context_line":"    def test_create_project_with_is_domain_flag(self):"},{"line_number":1758,"context_line":"        self._assert_create_is_domain_project_not_allowed()"},{"line_number":1759,"context_line":""},{"line_number":1760,"context_line":"    def test_update_is_domain_field(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a1a9d01_f8e57fa3","line":1757,"updated":"2015-09-29 19:45:38.000000000","message":"Add a comment why this is overridden.","commit_id":"545d7a632d84ba99f9c50a627c8a4cfa54c75629"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"fea9c4e4d60b0269fc8913596cec76ba7425fade","unresolved":false,"context_lines":[{"line_number":1754,"context_line":"                          self.resource_api.create_project,"},{"line_number":1755,"context_line":"                          project[\u0027id\u0027], project)"},{"line_number":1756,"context_line":""},{"line_number":1757,"context_line":"    def test_create_project_with_is_domain_flag(self):"},{"line_number":1758,"context_line":"        self._assert_create_is_domain_project_not_allowed()"},{"line_number":1759,"context_line":""},{"line_number":1760,"context_line":"    def test_update_is_domain_field(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a1a9d01_aee0f329","line":1757,"in_reply_to":"9a1a9d01_f8e57fa3","updated":"2015-09-30 17:57:25.000000000","message":"Done in a separated patch: https://review.openstack.org/#/c/229549/","commit_id":"545d7a632d84ba99f9c50a627c8a4cfa54c75629"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"6651df2bcb9e57dbcc577e10d1093d4706b2137b","unresolved":false,"context_lines":[{"line_number":1782,"context_line":""},{"line_number":1783,"context_line":"    def test_create_not_is_domain_project_under_is_domain_hierarchy(self):"},{"line_number":1784,"context_line":"        self._assert_create_hierarchy_not_allowed()"},{"line_number":1785,"context_line":""},{"line_number":1786,"context_line":"    def test_create_is_domain_project(self):"},{"line_number":1787,"context_line":"        self._assert_create_is_domain_project_not_allowed()"},{"line_number":1788,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9a1a9d01_18a2b34b","line":1785,"updated":"2015-09-29 19:45:38.000000000","message":"This was renamed in test_backend, but it\u0027s not renamed here.","commit_id":"545d7a632d84ba99f9c50a627c8a4cfa54c75629"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"fea9c4e4d60b0269fc8913596cec76ba7425fade","unresolved":false,"context_lines":[{"line_number":1782,"context_line":""},{"line_number":1783,"context_line":"    def test_create_not_is_domain_project_under_is_domain_hierarchy(self):"},{"line_number":1784,"context_line":"        self._assert_create_hierarchy_not_allowed()"},{"line_number":1785,"context_line":""},{"line_number":1786,"context_line":"    def test_create_is_domain_project(self):"},{"line_number":1787,"context_line":"        self._assert_create_is_domain_project_not_allowed()"},{"line_number":1788,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9a1a9d01_4eefd71d","line":1785,"in_reply_to":"9a1a9d01_18a2b34b","updated":"2015-09-30 17:57:25.000000000","message":"Done in a separated patch: https://review.openstack.org/#/c/229549/","commit_id":"545d7a632d84ba99f9c50a627c8a4cfa54c75629"}],"keystone/tests/unit/test_v2_controller.py":[{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"1ebe5774301028b2bd2e57b0d5b871170e2f7c6b","unresolved":false,"context_lines":[{"line_number":106,"context_line":"    def test_create_is_domain_project_fails(self):"},{"line_number":107,"context_line":"        \"\"\"Test that the creation of a project acting as a domain fails.\"\"\""},{"line_number":108,"context_line":"        project \u003d {\u0027name\u0027: uuid.uuid4().hex, \u0027domain_id\u0027: \u0027default\u0027,"},{"line_number":109,"context_line":"                   \u0027is_domain\u0027: True}"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        self.assertRaises("},{"line_number":112,"context_line":"            exception.ValidationError,"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_0547f54b","line":109,"updated":"2015-08-25 04:40:09.000000000","message":"passing is_domain:False should also fail, since is_domain is not a v2 attribute","commit_id":"2bf0f37c257d3da00243d143a33f1f64e6c3b25e"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"a940caf07d2c7849bf50c9b4b46262ff98f2dc65","unresolved":false,"context_lines":[{"line_number":106,"context_line":"    def test_create_is_domain_project_fails(self):"},{"line_number":107,"context_line":"        \"\"\"Test that the creation of a project acting as a domain fails.\"\"\""},{"line_number":108,"context_line":"        project \u003d {\u0027name\u0027: uuid.uuid4().hex, \u0027domain_id\u0027: \u0027default\u0027,"},{"line_number":109,"context_line":"                   \u0027is_domain\u0027: True}"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        self.assertRaises("},{"line_number":112,"context_line":"            exception.ValidationError,"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_c00bd5d3","line":109,"in_reply_to":"fa1b9901_0547f54b","updated":"2015-08-26 14:22:42.000000000","message":"see comment in controllers.py","commit_id":"2bf0f37c257d3da00243d143a33f1f64e6c3b25e"}],"keystone/tests/unit/test_v3.py":[{"author":{"_account_id":10795,"name":"Rajesh Tailor","email":"tailor.rajesh88@gmail.com","username":"rajeshtailor"},"change_message_id":"8b4f4d83c2839f22b8f3ec0c6461f6cdd29a0ce3","unresolved":false,"context_lines":[{"line_number":299,"context_line":"        ref \u003d self.new_ref()"},{"line_number":300,"context_line":"        return ref"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"    def new_project_ref(self, domain_id, parent_id\u003dNone, is_domain\u003dFalse):"},{"line_number":303,"context_line":"        ref \u003d self.new_ref()"},{"line_number":304,"context_line":"        ref[\u0027domain_id\u0027] \u003d domain_id"},{"line_number":305,"context_line":"        ref[\u0027parent_id\u0027] \u003d parent_id"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa1b9901_22506431","line":302,"updated":"2015-08-21 12:16:57.000000000","message":"What difference does it make ?\n\nYou are still passing domain_id as keyword argument while calling new_project_ref method in same module.","commit_id":"cd65c16ac7058ff0ae9c74739049ed2008f18807"}]}
