)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"a570974f6f540e5e42cd5506b1be48fdc9e6a5df","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Includes the is_domain parameter to get_project_by_name method."},{"line_number":10,"context_line":"It will be used in the follow up patches to uniquely identify"},{"line_number":11,"context_line":"a project."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Co-Authored-By: Henrique Truta \u003chenrique@lsd.ufcg.edu.br\u003e"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"fa1b9901_1211cb5d","line":11,"updated":"2015-08-22 09:42:30.000000000","message":"Since (in v2) this is an exposed API, you should make it clear that we are not exposing this attribute via REST - it is for internal user only.","commit_id":"905afcd5ab6e3ec6d78ef4b99ae3f6ec9f308ff5"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"39dc4b80110e096860cb0922757e5496abb54650","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Includes the is_domain parameter to get_project_by_name method."},{"line_number":10,"context_line":"It will be used in the follow up patches to uniquely identify"},{"line_number":11,"context_line":"a project."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Co-Authored-By: Henrique Truta \u003chenrique@lsd.ufcg.edu.br\u003e"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"fa1b9901_94c0632c","line":11,"in_reply_to":"fa1b9901_1211cb5d","updated":"2015-08-22 18:17:57.000000000","message":"Done","commit_id":"905afcd5ab6e3ec6d78ef4b99ae3f6ec9f308ff5"}],"keystone/resource/backends/sql.py":[{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"39059a0f632a102dce9b769481c03a428d2f5ef6","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        with sql.transaction() as session:"},{"line_number":44,"context_line":"            query \u003d session.query(Project)"},{"line_number":45,"context_line":"            query \u003d query.filter_by(name\u003dtenant_name)"},{"line_number":46,"context_line":"            query \u003d query.filter_by(domain_id\u003ddomain_id)"},{"line_number":47,"context_line":"            query \u003d query.filter_by(is_domain\u003dis_domain)"},{"line_number":48,"context_line":"            try:"},{"line_number":49,"context_line":"                project_ref \u003d query.one()"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa1b9901_6bfef46c","line":46,"updated":"2015-08-18 10:28:27.000000000","message":"it is possible to have domain_id\u003dNone, right? Only projects acting as a domain can have such domain_id - and since we ignore the domain_id when searching such projects, I\u0027d add:\n\n  if domain_id is not None:\n    query \u003d query.filter_by(domain_id\u003ddomain_id)","commit_id":"169050100dc38d0bd29ab44a6eb76a10f5fa4edc"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"36343b76b93b1d35108046c8bba0a30de2f352d7","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        with sql.transaction() as session:"},{"line_number":44,"context_line":"            query \u003d session.query(Project)"},{"line_number":45,"context_line":"            query \u003d query.filter_by(name\u003dtenant_name)"},{"line_number":46,"context_line":"            query \u003d query.filter_by(domain_id\u003ddomain_id)"},{"line_number":47,"context_line":"            query \u003d query.filter_by(is_domain\u003dis_domain)"},{"line_number":48,"context_line":"            try:"},{"line_number":49,"context_line":"                project_ref \u003d query.one()"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa1b9901_9a63901a","line":46,"in_reply_to":"fa1b9901_6bfef46c","updated":"2015-08-18 13:23:13.000000000","message":"Makes sense. Done","commit_id":"169050100dc38d0bd29ab44a6eb76a10f5fa4edc"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"cdabe4b87c6abd82a076068f32f67a492fae51a5","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        with sql.transaction() as session:"},{"line_number":44,"context_line":"            query \u003d session.query(Project)"},{"line_number":45,"context_line":"            query \u003d query.filter_by(name\u003dtenant_name)"},{"line_number":46,"context_line":"            if domain_id is not None:"},{"line_number":47,"context_line":"                query \u003d query.filter_by(domain_id\u003ddomain_id)"},{"line_number":48,"context_line":"            query \u003d query.filter_by(is_domain\u003dis_domain)"},{"line_number":49,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":20,"id":"9a1a9d01_c60ad91f","line":46,"updated":"2015-10-01 08:20:51.000000000","message":"should this be part of this patch?  I understand why we need it eventually (for top level projects acting as a domain).  We also don\u0027t test it in this patch either.","commit_id":"082b1e93efcbd052b62ad7515d7631da337b62bb"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"744dfc179b35ba2dea5687c917b5b8c2fd52a5ca","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        with sql.transaction() as session:"},{"line_number":44,"context_line":"            query \u003d session.query(Project)"},{"line_number":45,"context_line":"            query \u003d query.filter_by(name\u003dtenant_name)"},{"line_number":46,"context_line":"            if domain_id is not None:"},{"line_number":47,"context_line":"                query \u003d query.filter_by(domain_id\u003ddomain_id)"},{"line_number":48,"context_line":"            query \u003d query.filter_by(is_domain\u003dis_domain)"},{"line_number":49,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":20,"id":"9a1a9d01_804a7726","line":46,"in_reply_to":"9a1a9d01_c60ad91f","updated":"2015-10-02 18:00:36.000000000","message":"yes, that\u0027s it... I\u0027ll add some tests for it","commit_id":"082b1e93efcbd052b62ad7515d7631da337b62bb"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"5210b08e2c88c22826755071f1ef7996b7f1c872","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        with sql.transaction() as session:"},{"line_number":44,"context_line":"            query \u003d session.query(Project)"},{"line_number":45,"context_line":"            query \u003d query.filter_by(name\u003dtenant_name)"},{"line_number":46,"context_line":"            if domain_id is not None:"},{"line_number":47,"context_line":"                query \u003d query.filter_by(domain_id\u003ddomain_id)"},{"line_number":48,"context_line":"            query \u003d query.filter_by(is_domain\u003dis_domain)"},{"line_number":49,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":32,"id":"da85f559_9716434a","line":46,"updated":"2015-11-12 13:49:06.000000000","message":"It\u0027s not clear why this is no conditional - maybe this is meant to be in the follow on patch?","commit_id":"12ad215f2ea9384b3587672bb59ec614607a92c6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"74d35e4c76fcd51309d558b073ed5f399acdbbd3","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        with sql.transaction() as session:"},{"line_number":44,"context_line":"            query \u003d session.query(Project)"},{"line_number":45,"context_line":"            query \u003d query.filter_by(name\u003dtenant_name)"},{"line_number":46,"context_line":"            if domain_id is not None:"},{"line_number":47,"context_line":"                query \u003d query.filter_by(domain_id\u003ddomain_id)"},{"line_number":48,"context_line":"            query \u003d query.filter_by(is_domain\u003dis_domain)"},{"line_number":49,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":32,"id":"da85f559_3ae64045","line":46,"in_reply_to":"da85f559_31175146","updated":"2015-11-12 22:23:52.000000000","message":"..but surely domain_id is not nullable yet....that\u0027s in the next patch...or am I getting the wrong end of the stick?","commit_id":"12ad215f2ea9384b3587672bb59ec614607a92c6"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"92d30c2a76ef281e4983effea10d852867066470","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        with sql.transaction() as session:"},{"line_number":44,"context_line":"            query \u003d session.query(Project)"},{"line_number":45,"context_line":"            query \u003d query.filter_by(name\u003dtenant_name)"},{"line_number":46,"context_line":"            if domain_id is not None:"},{"line_number":47,"context_line":"                query \u003d query.filter_by(domain_id\u003ddomain_id)"},{"line_number":48,"context_line":"            query \u003d query.filter_by(is_domain\u003dis_domain)"},{"line_number":49,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":32,"id":"da85f559_88d7d9ec","line":46,"in_reply_to":"da85f559_3ae64045","updated":"2015-11-13 05:00:34.000000000","message":"yes, but we don\u0027t search for it null in the backedn, we just know that projects that act as domains do not depend on the domain, because their name is unique across the whole cloud. So, we only need to check the combination of name + is_domain. We\u0027re only ignoring the domain_id in such cases","commit_id":"12ad215f2ea9384b3587672bb59ec614607a92c6"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"a12f813ae286d3bfa39056664574f01621a9862b","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        with sql.transaction() as session:"},{"line_number":44,"context_line":"            query \u003d session.query(Project)"},{"line_number":45,"context_line":"            query \u003d query.filter_by(name\u003dtenant_name)"},{"line_number":46,"context_line":"            if domain_id is not None:"},{"line_number":47,"context_line":"                query \u003d query.filter_by(domain_id\u003ddomain_id)"},{"line_number":48,"context_line":"            query \u003d query.filter_by(is_domain\u003dis_domain)"},{"line_number":49,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":32,"id":"da85f559_31175146","line":46,"in_reply_to":"da85f559_9716434a","updated":"2015-11-12 18:57:54.000000000","message":"that\u0027s just to allow us to filter root projects acting as domains by name (which have no domain_id)","commit_id":"12ad215f2ea9384b3587672bb59ec614607a92c6"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"c362ab8087e266180ad511ff84d7bb195840f352","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        with sql.transaction() as session:"},{"line_number":40,"context_line":"            return self._get_project(session, tenant_id).to_dict()"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def get_project_by_name(self, tenant_name, domain_id, is_domain):"},{"line_number":43,"context_line":"        with sql.transaction() as session:"},{"line_number":44,"context_line":"            query \u003d session.query(Project)"},{"line_number":45,"context_line":"            query \u003d query.filter_by(name\u003dtenant_name)"}],"source_content_type":"text/x-python","patch_set":34,"id":"ba8a016a_9be3dad8","line":42,"updated":"2015-11-19 18:33:57.000000000","message":"do we really need a new parameter here, or can we just equate domain_id\u003d\u003dNone with is_domain\u003d\u003dTrue?","commit_id":"e5a693cdbfd5b6cbf24b5e2afbd2fb52e7ecdb31"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"4ea912f7b2a6d2ccc94064a5bf751f021bdf24ea","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        with sql.transaction() as session:"},{"line_number":40,"context_line":"            return self._get_project(session, tenant_id).to_dict()"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def get_project_by_name(self, tenant_name, domain_id, is_domain):"},{"line_number":43,"context_line":"        with sql.transaction() as session:"},{"line_number":44,"context_line":"            query \u003d session.query(Project)"},{"line_number":45,"context_line":"            query \u003d query.filter_by(name\u003dtenant_name)"}],"source_content_type":"text/x-python","patch_set":34,"id":"ba8a016a_7335b3f5","line":42,"in_reply_to":"ba8a016a_9be3dad8","updated":"2015-11-21 02:29:42.000000000","message":"Would rather it be explicit.","commit_id":"e5a693cdbfd5b6cbf24b5e2afbd2fb52e7ecdb31"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"b1f10e2bef5d8f1ea1bfd02945b0b4c9de63be41","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        with sql.transaction() as session:"},{"line_number":40,"context_line":"            return self._get_project(session, tenant_id).to_dict()"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def get_project_by_name(self, tenant_name, domain_id, is_domain):"},{"line_number":43,"context_line":"        with sql.transaction() as session:"},{"line_number":44,"context_line":"            query \u003d session.query(Project)"},{"line_number":45,"context_line":"            query \u003d query.filter_by(name\u003dtenant_name)"}],"source_content_type":"text/x-python","patch_set":34,"id":"ba8a016a_b6059314","line":42,"in_reply_to":"ba8a016a_9be3dad8","updated":"2015-11-19 19:02:48.000000000","message":"this parameter comes from the driver interface (see core.py)","commit_id":"e5a693cdbfd5b6cbf24b5e2afbd2fb52e7ecdb31"},{"author":{"_account_id":15359,"name":"Erickson Filipe Guedes dos Santos","email":"erickson@lsd.ufcg.edu.br","username":"ericksonfilipe"},"change_message_id":"a677d30a5a718f1f0cbfbb2c7aee33149eb145af","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        with sql.transaction() as session:"},{"line_number":40,"context_line":"            return self._get_project(session, tenant_id).to_dict()"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def get_project_by_name(self, tenant_name, domain_id, is_domain):"},{"line_number":43,"context_line":"        with sql.transaction() as session:"},{"line_number":44,"context_line":"            query \u003d session.query(Project)"},{"line_number":45,"context_line":"            query \u003d query.filter_by(name\u003dtenant_name)"}],"source_content_type":"text/x-python","patch_set":36,"id":"7a740942_d2734be6","line":42,"updated":"2015-12-09 20:14:29.000000000","message":"why don\u0027t you let is_domain as an optional argument with False as Default?","commit_id":"d6f889c967377582af8d7b478b031d0d9c4b2062"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"f1d185c7aa60907026d1df7286d4eb5e385f063f","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        with sql.transaction() as session:"},{"line_number":40,"context_line":"            return self._get_project(session, tenant_id).to_dict()"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def get_project_by_name(self, tenant_name, domain_id, is_domain):"},{"line_number":43,"context_line":"        with sql.transaction() as session:"},{"line_number":44,"context_line":"            query \u003d session.query(Project)"},{"line_number":45,"context_line":"            query \u003d query.filter_by(name\u003dtenant_name)"}],"source_content_type":"text/x-python","patch_set":36,"id":"7a740942_8da60452","line":42,"in_reply_to":"7a740942_d2734be6","updated":"2015-12-09 20:28:42.000000000","message":"it is not common to have kwargs in the backend calls, I think it\u0027s duo to cache issues","commit_id":"d6f889c967377582af8d7b478b031d0d9c4b2062"}],"keystone/resource/core.py":[{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"ffb81fdc03a88d9c3c77a7f79538adbc28f3ef13","unresolved":false,"context_lines":[{"line_number":618,"context_line":"    @MEMOIZE"},{"line_number":619,"context_line":"    def get_project_by_name(self, tenant_name, domain_id, is_domain):"},{"line_number":620,"context_line":"        return self.driver.get_project_by_name("},{"line_number":621,"context_line":"            tenant_name, domain_id, is_domain)"},{"line_number":622,"context_line":""},{"line_number":623,"context_line":"    @notifications.internal("},{"line_number":624,"context_line":"        notifications.INVALIDATE_USER_PROJECT_TOKEN_PERSISTENCE)"}],"source_content_type":"text/x-python","patch_set":26,"id":"3a29b11f_a837bc4b","line":621,"updated":"2015-10-21 16:06:51.000000000","message":"I suspect this was asked before, but is there a reason we didn\u0027t use is_domain\u003dFalse here? That would save you changing all the places where is_domain can\u0027t be True.","commit_id":"b723921ba0ab19352b8b2853ee289c529efc27cf"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"0cccafbdb3d939b89f6cc117a41d224213150c5d","unresolved":false,"context_lines":[{"line_number":618,"context_line":"    @MEMOIZE"},{"line_number":619,"context_line":"    def get_project_by_name(self, tenant_name, domain_id, is_domain):"},{"line_number":620,"context_line":"        return self.driver.get_project_by_name("},{"line_number":621,"context_line":"            tenant_name, domain_id, is_domain)"},{"line_number":622,"context_line":""},{"line_number":623,"context_line":"    @notifications.internal("},{"line_number":624,"context_line":"        notifications.INVALIDATE_USER_PROJECT_TOKEN_PERSISTENCE)"}],"source_content_type":"text/x-python","patch_set":26,"id":"3a29b11f_c5b8b32c","line":621,"in_reply_to":"3a29b11f_a837bc4b","updated":"2015-10-22 14:35:49.000000000","message":"you mean in the function\u0027s signature? we cannot pass kwargs to memoize methods, I guess","commit_id":"b723921ba0ab19352b8b2853ee289c529efc27cf"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"e8c5340c883048698af85e7a39dbd5f57332df21","unresolved":false,"context_lines":[{"line_number":681,"context_line":"        return CONF.resource.list_limit or CONF.list_limit"},{"line_number":682,"context_line":""},{"line_number":683,"context_line":"    @abc.abstractmethod"},{"line_number":684,"context_line":"    def get_project_by_name(self, tenant_name, domain_id, is_domain):"},{"line_number":685,"context_line":"        \"\"\"Get a tenant by name."},{"line_number":686,"context_line":""},{"line_number":687,"context_line":"        :returns: tenant_ref"}],"source_content_type":"text/x-python","patch_set":39,"id":"fa69d971_adb5ac31","line":684,"range":{"start_line":684,"start_character":8,"end_line":684,"end_character":69},"updated":"2016-01-04 20:49:26.000000000","message":"No - you should remove the meth signature from the base class altogether.  This old one goes in the ResourceDriverV8 class, and the  new one goes in the ResourceDriverV9 class (which you have done).","commit_id":"df010b0c908e414e1050572a34c8dff9b2461d58"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"3dbe8f8cb74ccf693845159274879e21bf27f2ae","unresolved":false,"context_lines":[{"line_number":681,"context_line":"        return CONF.resource.list_limit or CONF.list_limit"},{"line_number":682,"context_line":""},{"line_number":683,"context_line":"    @abc.abstractmethod"},{"line_number":684,"context_line":"    def get_project_by_name(self, tenant_name, domain_id, is_domain):"},{"line_number":685,"context_line":"        \"\"\"Get a tenant by name."},{"line_number":686,"context_line":""},{"line_number":687,"context_line":"        :returns: tenant_ref"}],"source_content_type":"text/x-python","patch_set":39,"id":"fa69d971_c8c56e8e","line":684,"range":{"start_line":684,"start_character":8,"end_line":684,"end_character":69},"in_reply_to":"fa69d971_adb5ac31","updated":"2016-01-04 21:29:44.000000000","message":"Done","commit_id":"df010b0c908e414e1050572a34c8dff9b2461d58"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"e8c5340c883048698af85e7a39dbd5f57332df21","unresolved":false,"context_lines":[{"line_number":1004,"context_line":"        self.driver \u003d wrapped_driver"},{"line_number":1005,"context_line":""},{"line_number":1006,"context_line":"    def get_project_by_name(self, tenant_name, domain_id, is_domain):"},{"line_number":1007,"context_line":"        return self.driver.get_project_by_name(tenant_name, domain_id, False)"},{"line_number":1008,"context_line":""},{"line_number":1009,"context_line":"    def create_domain(self, domain_id, domain):"},{"line_number":1010,"context_line":"        return self.driver.create_domain(domain_id, domain)"}],"source_content_type":"text/x-python","patch_set":39,"id":"fa69d971_0df4f8ef","line":1007,"range":{"start_line":1007,"start_character":69,"end_line":1007,"end_character":76},"updated":"2016-01-04 20:49:26.000000000","message":"No, you can\u0027t call a V8 driver with this parameter - it won\u0027t understand it.  You should just call it without this parameter - which will mean it will operate as it did before.","commit_id":"df010b0c908e414e1050572a34c8dff9b2461d58"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"16337846c6faf290d8630742d5eeb3e335cbe0eb","unresolved":false,"context_lines":[{"line_number":1004,"context_line":"        self.driver \u003d wrapped_driver"},{"line_number":1005,"context_line":""},{"line_number":1006,"context_line":"    def get_project_by_name(self, tenant_name, domain_id, is_domain):"},{"line_number":1007,"context_line":"        return self.driver.get_project_by_name(tenant_name, domain_id, False)"},{"line_number":1008,"context_line":""},{"line_number":1009,"context_line":"    def create_domain(self, domain_id, domain):"},{"line_number":1010,"context_line":"        return self.driver.create_domain(domain_id, domain)"}],"source_content_type":"text/x-python","patch_set":39,"id":"fa69d971_edc0847e","line":1007,"range":{"start_line":1007,"start_character":69,"end_line":1007,"end_character":76},"in_reply_to":"fa69d971_0df4f8ef","updated":"2016-01-04 20:50:57.000000000","message":"I suspect what we want to do is actually check if is_domain is True, in which case we return NotFound, else if it is False, we call the driver method","commit_id":"df010b0c908e414e1050572a34c8dff9b2461d58"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"3dbe8f8cb74ccf693845159274879e21bf27f2ae","unresolved":false,"context_lines":[{"line_number":1004,"context_line":"        self.driver \u003d wrapped_driver"},{"line_number":1005,"context_line":""},{"line_number":1006,"context_line":"    def get_project_by_name(self, tenant_name, domain_id, is_domain):"},{"line_number":1007,"context_line":"        return self.driver.get_project_by_name(tenant_name, domain_id, False)"},{"line_number":1008,"context_line":""},{"line_number":1009,"context_line":"    def create_domain(self, domain_id, domain):"},{"line_number":1010,"context_line":"        return self.driver.create_domain(domain_id, domain)"}],"source_content_type":"text/x-python","patch_set":39,"id":"fa69d971_68f24271","line":1007,"range":{"start_line":1007,"start_character":69,"end_line":1007,"end_character":76},"in_reply_to":"fa69d971_edc0847e","updated":"2016-01-04 21:29:44.000000000","message":"Done","commit_id":"df010b0c908e414e1050572a34c8dff9b2461d58"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"f8e6facb61349a40d09f7fa0a732587e6e13a56b","unresolved":false,"context_lines":[{"line_number":208,"context_line":"        if MEMOIZE.should_cache(ret):"},{"line_number":209,"context_line":"            self.get_project.set(ret, self, tenant_id)"},{"line_number":210,"context_line":"            self.get_project_by_name.set(ret, self, ret[\u0027name\u0027],"},{"line_number":211,"context_line":"                                         ret[\u0027domain_id\u0027], ret[\u0027is_domain\u0027])"},{"line_number":212,"context_line":"        return ret"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"    def assert_domain_enabled(self, domain_id, domain\u003dNone):"}],"source_content_type":"text/x-python","patch_set":43,"id":"da6ed579_48473777","line":211,"range":{"start_line":211,"start_character":59,"end_line":211,"end_character":75},"updated":"2016-01-13 23:12:33.000000000","message":"As discussed, this is not safe to do with since this will cause issues with a V8 driver.  An easy fix would be to ONLY set the cache for get_project_by_name here if is_domain\u003dFalse","commit_id":"000fc9fd1c08c744ae66a106ad8266e54919eb58"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"74db03fd9163dd9fc77bdb2f3946621841d97ce8","unresolved":false,"context_lines":[{"line_number":208,"context_line":"        if MEMOIZE.should_cache(ret):"},{"line_number":209,"context_line":"            self.get_project.set(ret, self, tenant_id)"},{"line_number":210,"context_line":"            self.get_project_by_name.set(ret, self, ret[\u0027name\u0027],"},{"line_number":211,"context_line":"                                         ret[\u0027domain_id\u0027], ret[\u0027is_domain\u0027])"},{"line_number":212,"context_line":"        return ret"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"    def assert_domain_enabled(self, domain_id, domain\u003dNone):"}],"source_content_type":"text/x-python","patch_set":43,"id":"da6ed579_336b58f3","line":211,"range":{"start_line":211,"start_character":59,"end_line":211,"end_character":75},"in_reply_to":"da6ed579_48473777","updated":"2016-01-14 00:00:00.000000000","message":"Done","commit_id":"000fc9fd1c08c744ae66a106ad8266e54919eb58"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"b5cbf25f9b60d98c7888857c3b235608239c6f62","unresolved":false,"context_lines":[{"line_number":208,"context_line":"        if MEMOIZE.should_cache(ret):"},{"line_number":209,"context_line":"            self.get_project.set(ret, self, tenant_id)"},{"line_number":210,"context_line":"            if not ret[\u0027is_domain\u0027]:"},{"line_number":211,"context_line":"                # The parameter is_domain only exists in the v9 driver. So,"},{"line_number":212,"context_line":"                # we only cache this if we are dealing with a v8 driver call,"},{"line_number":213,"context_line":"                # to avoid problems with cache in wrapped calls."},{"line_number":214,"context_line":"                self.get_project_by_name.set(ret, self, ret[\u0027name\u0027],"},{"line_number":215,"context_line":"                                             ret[\u0027domain_id\u0027], False)"},{"line_number":216,"context_line":"        return ret"}],"source_content_type":"text/x-python","patch_set":44,"id":"da6ed579_ce01ef07","line":213,"range":{"start_line":211,"start_character":18,"end_line":213,"end_character":64},"updated":"2016-01-14 00:21:36.000000000","message":"maybe something like the following would be a bit clearer:\n\nThe is_domain attribute is not recognised by earlier drivers than V9 - and they will discard any value passed. Such drivers will only return results from get_project_by_name() if the request paramater is_domain is False. Hence we only pre-load the cache for get_project_by_name for projects created with is_domain\u003dFalse, to avoid pre-loading the cache with a project that an earlier driver than V9 driver cannot return.","commit_id":"b639b4e199d7a86b0a2fa4777942101664e1a578"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"e13d60b6f9f82c6ec2fb89ba5f41e5a799f46bf9","unresolved":false,"context_lines":[{"line_number":208,"context_line":"        if MEMOIZE.should_cache(ret):"},{"line_number":209,"context_line":"            self.get_project.set(ret, self, tenant_id)"},{"line_number":210,"context_line":"            if not ret[\u0027is_domain\u0027]:"},{"line_number":211,"context_line":"                # The parameter is_domain only exists in the v9 driver. So,"},{"line_number":212,"context_line":"                # we only cache this if we are dealing with a v8 driver call,"},{"line_number":213,"context_line":"                # to avoid problems with cache in wrapped calls."},{"line_number":214,"context_line":"                self.get_project_by_name.set(ret, self, ret[\u0027name\u0027],"},{"line_number":215,"context_line":"                                             ret[\u0027domain_id\u0027], False)"},{"line_number":216,"context_line":"        return ret"}],"source_content_type":"text/x-python","patch_set":44,"id":"da6ed579_7bbe8266","line":213,"range":{"start_line":211,"start_character":18,"end_line":213,"end_character":64},"in_reply_to":"da6ed579_ce01ef07","updated":"2016-01-14 02:32:29.000000000","message":"Done","commit_id":"b639b4e199d7a86b0a2fa4777942101664e1a578"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"587dd3ed9af435c7ddf34af0e63eaacd897c093a","unresolved":false,"context_lines":[{"line_number":212,"context_line":"                # than V9 - and they will discard any value passed. Such"},{"line_number":213,"context_line":"                # drivers will only return results from get_project_by_name()"},{"line_number":214,"context_line":"                # if the request paramater is_domain is False. Hence we only"},{"line_number":215,"context_line":"                # re-load the cache for get_project_by_name for projects"},{"line_number":216,"context_line":"                # created with is_domain\u003dFalse, to avoid pre-loading the"},{"line_number":217,"context_line":"                # cache with a project that an earlier driver than V9 driver"},{"line_number":218,"context_line":"                # cannot return."}],"source_content_type":"text/x-python","patch_set":46,"id":"ba63e191_e348098a","line":215,"range":{"start_line":215,"start_character":18,"end_line":215,"end_character":20},"updated":"2016-01-18 21:16:58.000000000","message":"nit: re-load/pre-load","commit_id":"db26b921a116e0b59ee857105431149feb132b5e"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"587dd3ed9af435c7ddf34af0e63eaacd897c093a","unresolved":false,"context_lines":[{"line_number":658,"context_line":"    def get_project(self, project_id):"},{"line_number":659,"context_line":"        return self.driver.get_project(project_id)"},{"line_number":660,"context_line":""},{"line_number":661,"context_line":"    @MEMOIZE"},{"line_number":662,"context_line":"    def get_project_by_name(self, tenant_name, domain_id, is_domain):"},{"line_number":663,"context_line":"        if not domain_id and not is_domain:"},{"line_number":664,"context_line":"            raise exception.ValidationError("},{"line_number":665,"context_line":"                message\u003d_(\u0027domain_id must be provided for regular projects.\u0027))"}],"source_content_type":"text/x-python","patch_set":46,"id":"ba63e191_7ef90ec8","line":662,"range":{"start_line":661,"start_character":4,"end_line":662,"end_character":69},"updated":"2016-01-18 21:16:58.000000000","message":"Just an idea...I know that everyone who reviews this asks why we don\u0027t have is_domain\u003dFalse here to avoid changing the callers (and the reason being the MEMOIZE).  An alternative would be to create an internal method _get_project_by_name that is called here...and THAT method has the MEMOIZE around it.  Would have to change the sets/invlaidates elsewhere in this file to match, but then no changes would be required to the callers","commit_id":"db26b921a116e0b59ee857105431149feb132b5e"}],"keystone/tests/unit/backend/legacy_drivers/resource/V8/sql.py":[{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"2f445a80a51bf50116fc013b07fa6163c9bfbd67","unresolved":false,"context_lines":[{"line_number":49,"context_line":"                          None,"},{"line_number":50,"context_line":"                          False)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        # Querying without passing the domain_id is only supported for"},{"line_number":53,"context_line":"        # projects that act as domains in the V9 driver."},{"line_number":54,"context_line":"        project2 \u003d unit.new_project_ref(domain_id\u003dDEFAULT_DOMAIN_ID,"},{"line_number":55,"context_line":"                                        is_domain\u003dTrue)"},{"line_number":56,"context_line":"        self.resource_api.create_project(project2[\u0027id\u0027], project2)"}],"source_content_type":"text/x-python","patch_set":42,"id":"fa69d971_6bcf5929","line":53,"range":{"start_line":52,"start_character":10,"end_line":53,"end_character":55},"updated":"2016-01-11 21:22:31.000000000","message":"I don\u0027t really understand this comment....","commit_id":"5621a4f0b3fc5b81eca589a22705a2194ffc75d4"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"234f474def0ef5f0473b6966fdc783c6da77c6c8","unresolved":false,"context_lines":[{"line_number":49,"context_line":"                          None,"},{"line_number":50,"context_line":"                          False)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        # Querying without passing the domain_id is only supported for"},{"line_number":53,"context_line":"        # projects that act as domains in the V9 driver."},{"line_number":54,"context_line":"        project2 \u003d unit.new_project_ref(domain_id\u003dDEFAULT_DOMAIN_ID,"},{"line_number":55,"context_line":"                                        is_domain\u003dTrue)"},{"line_number":56,"context_line":"        self.resource_api.create_project(project2[\u0027id\u0027], project2)"}],"source_content_type":"text/x-python","patch_set":42,"id":"da6ed579_726aae1c","line":53,"range":{"start_line":52,"start_character":10,"end_line":53,"end_character":55},"in_reply_to":"fa69d971_6bcf5929","updated":"2016-01-11 23:47:36.000000000","message":"just rephrased it","commit_id":"5621a4f0b3fc5b81eca589a22705a2194ffc75d4"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"b5cbf25f9b60d98c7888857c3b235608239c6f62","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                          False)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        # Querying without passing the domain_id is only supported for"},{"line_number":53,"context_line":"        # projects that act as domains in the V9 driver, that deals with"},{"line_number":54,"context_line":"        # projects acting as domains, which have no domain_id."},{"line_number":55,"context_line":"        project2 \u003d unit.new_project_ref(domain_id\u003dDEFAULT_DOMAIN_ID,"},{"line_number":56,"context_line":"                                        is_domain\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":44,"id":"da6ed579_4255d3f7","line":53,"range":{"start_line":53,"start_character":39,"end_line":53,"end_character":55},"updated":"2016-01-14 00:21:36.000000000","message":"in V9 and later drivers","commit_id":"b639b4e199d7a86b0a2fa4777942101664e1a578"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"b5cbf25f9b60d98c7888857c3b235608239c6f62","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        # Querying without passing the domain_id is only supported for"},{"line_number":53,"context_line":"        # projects that act as domains in the V9 driver, that deals with"},{"line_number":54,"context_line":"        # projects acting as domains, which have no domain_id."},{"line_number":55,"context_line":"        project2 \u003d unit.new_project_ref(domain_id\u003dDEFAULT_DOMAIN_ID,"},{"line_number":56,"context_line":"                                        is_domain\u003dTrue)"},{"line_number":57,"context_line":"        self.resource_api.create_project(project2[\u0027id\u0027], project2)"}],"source_content_type":"text/x-python","patch_set":44,"id":"da6ed579_829d0bbe","line":54,"range":{"start_line":54,"start_character":10,"end_line":54,"end_character":62},"updated":"2016-01-14 00:21:36.000000000","message":"this is still clear as mud....","commit_id":"b639b4e199d7a86b0a2fa4777942101664e1a578"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"e13d60b6f9f82c6ec2fb89ba5f41e5a799f46bf9","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        # Querying without passing the domain_id is only supported for"},{"line_number":53,"context_line":"        # projects that act as domains in the V9 driver, that deals with"},{"line_number":54,"context_line":"        # projects acting as domains, which have no domain_id."},{"line_number":55,"context_line":"        project2 \u003d unit.new_project_ref(domain_id\u003dDEFAULT_DOMAIN_ID,"},{"line_number":56,"context_line":"                                        is_domain\u003dTrue)"},{"line_number":57,"context_line":"        self.resource_api.create_project(project2[\u0027id\u0027], project2)"}],"source_content_type":"text/x-python","patch_set":44,"id":"da6ed579_967b0df5","line":54,"range":{"start_line":54,"start_character":10,"end_line":54,"end_character":62},"in_reply_to":"da6ed579_829d0bbe","updated":"2016-01-14 02:32:29.000000000","message":"Done","commit_id":"b639b4e199d7a86b0a2fa4777942101664e1a578"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"b5cbf25f9b60d98c7888857c3b235608239c6f62","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        # Querying without passing the domain_id is only supported for"},{"line_number":53,"context_line":"        # projects that act as domains in the V9 driver, that deals with"},{"line_number":54,"context_line":"        # projects acting as domains, which have no domain_id."},{"line_number":55,"context_line":"        project2 \u003d unit.new_project_ref(domain_id\u003dDEFAULT_DOMAIN_ID,"},{"line_number":56,"context_line":"                                        is_domain\u003dTrue)"},{"line_number":57,"context_line":"        self.resource_api.create_project(project2[\u0027id\u0027], project2)"},{"line_number":58,"context_line":""}],"source_content_type":"text/x-python","patch_set":44,"id":"da6ed579_22af7fe3","line":55,"range":{"start_line":55,"start_character":40,"end_line":55,"end_character":67},"updated":"2016-01-14 00:21:36.000000000","message":"but this one does have a domain id....still confused","commit_id":"b639b4e199d7a86b0a2fa4777942101664e1a578"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"e13d60b6f9f82c6ec2fb89ba5f41e5a799f46bf9","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        # Querying without passing the domain_id is only supported for"},{"line_number":53,"context_line":"        # projects that act as domains in the V9 driver, that deals with"},{"line_number":54,"context_line":"        # projects acting as domains, which have no domain_id."},{"line_number":55,"context_line":"        project2 \u003d unit.new_project_ref(domain_id\u003dDEFAULT_DOMAIN_ID,"},{"line_number":56,"context_line":"                                        is_domain\u003dTrue)"},{"line_number":57,"context_line":"        self.resource_api.create_project(project2[\u0027id\u0027], project2)"},{"line_number":58,"context_line":""}],"source_content_type":"text/x-python","patch_set":44,"id":"da6ed579_b68091c1","line":55,"range":{"start_line":55,"start_character":40,"end_line":55,"end_character":67},"in_reply_to":"da6ed579_22af7fe3","updated":"2016-01-14 02:32:29.000000000","message":"Done","commit_id":"b639b4e199d7a86b0a2fa4777942101664e1a578"}],"keystone/tests/unit/test_backend.py":[{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"8f08a8f52fcd73a3f0f16973c33922de27d956bc","unresolved":false,"context_lines":[{"line_number":171,"context_line":"            False)"},{"line_number":172,"context_line":"        self.assertDictEqual(tenant_ref, self.tenant_bar)"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    def test_get_project_by_name_with_is_domain_flag_disabled(self):"},{"line_number":175,"context_line":"        tenant_ref \u003d self.resource_api.get_project_by_name("},{"line_number":176,"context_line":"            self.tenant_bar[\u0027name\u0027],"},{"line_number":177,"context_line":"            DEFAULT_DOMAIN_ID,"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa1b9901_d9683df8","line":174,"updated":"2015-08-18 10:15:45.000000000","message":"this test is just a copy/paste from the test above. I\u0027d remove it","commit_id":"169050100dc38d0bd29ab44a6eb76a10f5fa4edc"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"36343b76b93b1d35108046c8bba0a30de2f352d7","unresolved":false,"context_lines":[{"line_number":171,"context_line":"            False)"},{"line_number":172,"context_line":"        self.assertDictEqual(tenant_ref, self.tenant_bar)"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    def test_get_project_by_name_with_is_domain_flag_disabled(self):"},{"line_number":175,"context_line":"        tenant_ref \u003d self.resource_api.get_project_by_name("},{"line_number":176,"context_line":"            self.tenant_bar[\u0027name\u0027],"},{"line_number":177,"context_line":"            DEFAULT_DOMAIN_ID,"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa1b9901_1a278013","line":174,"in_reply_to":"fa1b9901_d9683df8","updated":"2015-08-18 13:23:13.000000000","message":"Done","commit_id":"169050100dc38d0bd29ab44a6eb76a10f5fa4edc"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"8f08a8f52fcd73a3f0f16973c33922de27d956bc","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        self.assertDictEqual(projects_hierarchy[0], parent_ref)"},{"line_number":194,"context_line":"        self.assertDictEqual(projects_hierarchy[1], subproject_ref)"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    def test_get_project_by_name_404(self):"},{"line_number":197,"context_line":"        self.assertRaises(exception.ProjectNotFound,"},{"line_number":198,"context_line":"                          self.resource_api.get_project_by_name,"},{"line_number":199,"context_line":"                          uuid.uuid4().hex,"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa1b9901_f958a158","line":196,"updated":"2015-08-18 10:15:45.000000000","message":"add another assertRaises here passing the same name and domain but with is_domain \u003d True","commit_id":"169050100dc38d0bd29ab44a6eb76a10f5fa4edc"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"36343b76b93b1d35108046c8bba0a30de2f352d7","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        self.assertDictEqual(projects_hierarchy[0], parent_ref)"},{"line_number":194,"context_line":"        self.assertDictEqual(projects_hierarchy[1], subproject_ref)"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    def test_get_project_by_name_404(self):"},{"line_number":197,"context_line":"        self.assertRaises(exception.ProjectNotFound,"},{"line_number":198,"context_line":"                          self.resource_api.get_project_by_name,"},{"line_number":199,"context_line":"                          uuid.uuid4().hex,"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa1b9901_da2028fa","line":196,"in_reply_to":"fa1b9901_f958a158","updated":"2015-08-18 13:23:13.000000000","message":"Done","commit_id":"169050100dc38d0bd29ab44a6eb76a10f5fa4edc"},{"author":{"_account_id":16523,"name":"ZhangLei","display_name":"ZhangLei","email":"zhang.lei@99cloud.net","username":"zhang.lei"},"change_message_id":"66102b44352e3632f2b4a6b2ea46a3c586da4559","unresolved":false,"context_lines":[{"line_number":543,"context_line":"            False)"},{"line_number":544,"context_line":"        self.assertDictEqual(tenant_ref, self.tenant_bar)"},{"line_number":545,"context_line":""},{"line_number":546,"context_line":"    @tests.skip_if_no_multiple_domains_support"},{"line_number":547,"context_line":"    def test_get_project_by_name_with_is_domain_flag_enabled(self):"},{"line_number":548,"context_line":"        projects_hierarchy \u003d self._create_projects_hierarchy(is_domain\u003dTrue)"},{"line_number":549,"context_line":"        parent_ref \u003d self.resource_api.get_project_by_name("}],"source_content_type":"text/x-python","patch_set":17,"id":"9a1a9d01_01fe576b","line":546,"updated":"2015-09-25 03:03:57.000000000","message":"@unit.skip_if_no_multiple_domains_support","commit_id":"dc81d47d43e76113f2f926d692647fb7be947b3f"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"8043423bdf1bc450bf73d3c92b4d475fdb9d0007","unresolved":false,"context_lines":[{"line_number":543,"context_line":"            False)"},{"line_number":544,"context_line":"        self.assertDictEqual(tenant_ref, self.tenant_bar)"},{"line_number":545,"context_line":""},{"line_number":546,"context_line":"    @tests.skip_if_no_multiple_domains_support"},{"line_number":547,"context_line":"    def test_get_project_by_name_with_is_domain_flag_enabled(self):"},{"line_number":548,"context_line":"        projects_hierarchy \u003d self._create_projects_hierarchy(is_domain\u003dTrue)"},{"line_number":549,"context_line":"        parent_ref \u003d self.resource_api.get_project_by_name("}],"source_content_type":"text/x-python","patch_set":17,"id":"9a1a9d01_a6be8ffd","line":546,"in_reply_to":"9a1a9d01_01fe576b","updated":"2015-09-25 13:44:52.000000000","message":"Done","commit_id":"dc81d47d43e76113f2f926d692647fb7be947b3f"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"864484e6e1646122f87fe53884655265c371c833","unresolved":false,"context_lines":[{"line_number":541,"context_line":"    def test_get_project_by_name_without_passing_domain_id(self):"},{"line_number":542,"context_line":"        \"\"\"Tests get_project_by_name with no domain_id provided.\"\"\""},{"line_number":543,"context_line":"        project \u003d unit.new_project_ref(domain_id\u003dDEFAULT_DOMAIN_ID,"},{"line_number":544,"context_line":"                                       is_domain\u003dFalse)"},{"line_number":545,"context_line":"        self.resource_api.create_project(project[\u0027id\u0027], project)"},{"line_number":546,"context_line":""},{"line_number":547,"context_line":"        self.assertRaises(exception.ValidationError,"}],"source_content_type":"text/x-python","patch_set":42,"id":"da6ed579_43c1da2d","line":544,"range":{"start_line":544,"start_character":39,"end_line":544,"end_character":54},"updated":"2016-01-12 01:28:14.000000000","message":"isn\u0027t this default?","commit_id":"5621a4f0b3fc5b81eca589a22705a2194ffc75d4"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"911cda110a6470e42d560a6052c6bcf7abe818c9","unresolved":false,"context_lines":[{"line_number":541,"context_line":"    def test_get_project_by_name_without_passing_domain_id(self):"},{"line_number":542,"context_line":"        \"\"\"Tests get_project_by_name with no domain_id provided.\"\"\""},{"line_number":543,"context_line":"        project \u003d unit.new_project_ref(domain_id\u003dDEFAULT_DOMAIN_ID,"},{"line_number":544,"context_line":"                                       is_domain\u003dFalse)"},{"line_number":545,"context_line":"        self.resource_api.create_project(project[\u0027id\u0027], project)"},{"line_number":546,"context_line":""},{"line_number":547,"context_line":"        self.assertRaises(exception.ValidationError,"}],"source_content_type":"text/x-python","patch_set":42,"id":"da6ed579_e7a51ab5","line":544,"range":{"start_line":544,"start_character":39,"end_line":544,"end_character":54},"in_reply_to":"da6ed579_43c1da2d","updated":"2016-01-13 18:08:47.000000000","message":"yes, just put it to improve readability","commit_id":"5621a4f0b3fc5b81eca589a22705a2194ffc75d4"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"864484e6e1646122f87fe53884655265c371c833","unresolved":false,"context_lines":[{"line_number":563,"context_line":""},{"line_number":564,"context_line":"    @unit.skip_if_no_multiple_domains_support"},{"line_number":565,"context_line":"    def test_get_project_by_name_with_is_domain_flag_enabled(self):"},{"line_number":566,"context_line":"        project1 \u003d {"},{"line_number":567,"context_line":"            \u0027id\u0027: uuid.uuid4().hex,"},{"line_number":568,"context_line":"            \u0027name\u0027: uuid.uuid4().hex,"},{"line_number":569,"context_line":"            \u0027description\u0027: \u0027\u0027,"},{"line_number":570,"context_line":"            \u0027enabled\u0027: True,"},{"line_number":571,"context_line":"            \u0027parent_id\u0027: None,"},{"line_number":572,"context_line":"            \u0027domain_id\u0027: DEFAULT_DOMAIN_ID,"},{"line_number":573,"context_line":"            \u0027is_domain\u0027: True}"},{"line_number":574,"context_line":"        self.resource_api.create_project(project1[\u0027id\u0027], project1)"},{"line_number":575,"context_line":"        project2 \u003d {"},{"line_number":576,"context_line":"            \u0027id\u0027: uuid.uuid4().hex,"}],"source_content_type":"text/x-python","patch_set":42,"id":"da6ed579_a3af767c","line":573,"range":{"start_line":566,"start_character":8,"end_line":573,"end_character":30},"updated":"2016-01-12 01:28:14.000000000","message":"could simply this by called unit.new_project_ref()","commit_id":"5621a4f0b3fc5b81eca589a22705a2194ffc75d4"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"911cda110a6470e42d560a6052c6bcf7abe818c9","unresolved":false,"context_lines":[{"line_number":563,"context_line":""},{"line_number":564,"context_line":"    @unit.skip_if_no_multiple_domains_support"},{"line_number":565,"context_line":"    def test_get_project_by_name_with_is_domain_flag_enabled(self):"},{"line_number":566,"context_line":"        project1 \u003d {"},{"line_number":567,"context_line":"            \u0027id\u0027: uuid.uuid4().hex,"},{"line_number":568,"context_line":"            \u0027name\u0027: uuid.uuid4().hex,"},{"line_number":569,"context_line":"            \u0027description\u0027: \u0027\u0027,"},{"line_number":570,"context_line":"            \u0027enabled\u0027: True,"},{"line_number":571,"context_line":"            \u0027parent_id\u0027: None,"},{"line_number":572,"context_line":"            \u0027domain_id\u0027: DEFAULT_DOMAIN_ID,"},{"line_number":573,"context_line":"            \u0027is_domain\u0027: True}"},{"line_number":574,"context_line":"        self.resource_api.create_project(project1[\u0027id\u0027], project1)"},{"line_number":575,"context_line":"        project2 \u003d {"},{"line_number":576,"context_line":"            \u0027id\u0027: uuid.uuid4().hex,"}],"source_content_type":"text/x-python","patch_set":42,"id":"da6ed579_07f4ee83","line":573,"range":{"start_line":566,"start_character":8,"end_line":573,"end_character":30},"in_reply_to":"da6ed579_a3af767c","updated":"2016-01-13 18:08:47.000000000","message":"Done","commit_id":"5621a4f0b3fc5b81eca589a22705a2194ffc75d4"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"864484e6e1646122f87fe53884655265c371c833","unresolved":false,"context_lines":[{"line_number":573,"context_line":"            \u0027is_domain\u0027: True}"},{"line_number":574,"context_line":"        self.resource_api.create_project(project1[\u0027id\u0027], project1)"},{"line_number":575,"context_line":"        project2 \u003d {"},{"line_number":576,"context_line":"            \u0027id\u0027: uuid.uuid4().hex,"},{"line_number":577,"context_line":"            \u0027name\u0027: uuid.uuid4().hex,"},{"line_number":578,"context_line":"            \u0027description\u0027: \u0027\u0027,"},{"line_number":579,"context_line":"            \u0027enabled\u0027: True,"},{"line_number":580,"context_line":"            \u0027parent_id\u0027: None,"},{"line_number":581,"context_line":"            \u0027domain_id\u0027: DEFAULT_DOMAIN_ID,"},{"line_number":582,"context_line":"            \u0027is_domain\u0027: True}"},{"line_number":583,"context_line":"        self.resource_api.create_project(project2[\u0027id\u0027], project2)"},{"line_number":584,"context_line":""},{"line_number":585,"context_line":"        project1_ref \u003d self.resource_api.get_project_by_name("}],"source_content_type":"text/x-python","patch_set":42,"id":"da6ed579_63cade51","line":582,"range":{"start_line":576,"start_character":12,"end_line":582,"end_character":30},"updated":"2016-01-12 01:28:14.000000000","message":"and here","commit_id":"5621a4f0b3fc5b81eca589a22705a2194ffc75d4"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"911cda110a6470e42d560a6052c6bcf7abe818c9","unresolved":false,"context_lines":[{"line_number":573,"context_line":"            \u0027is_domain\u0027: True}"},{"line_number":574,"context_line":"        self.resource_api.create_project(project1[\u0027id\u0027], project1)"},{"line_number":575,"context_line":"        project2 \u003d {"},{"line_number":576,"context_line":"            \u0027id\u0027: uuid.uuid4().hex,"},{"line_number":577,"context_line":"            \u0027name\u0027: uuid.uuid4().hex,"},{"line_number":578,"context_line":"            \u0027description\u0027: \u0027\u0027,"},{"line_number":579,"context_line":"            \u0027enabled\u0027: True,"},{"line_number":580,"context_line":"            \u0027parent_id\u0027: None,"},{"line_number":581,"context_line":"            \u0027domain_id\u0027: DEFAULT_DOMAIN_ID,"},{"line_number":582,"context_line":"            \u0027is_domain\u0027: True}"},{"line_number":583,"context_line":"        self.resource_api.create_project(project2[\u0027id\u0027], project2)"},{"line_number":584,"context_line":""},{"line_number":585,"context_line":"        project1_ref \u003d self.resource_api.get_project_by_name("}],"source_content_type":"text/x-python","patch_set":42,"id":"da6ed579_e72f5af4","line":582,"range":{"start_line":576,"start_character":12,"end_line":582,"end_character":30},"in_reply_to":"da6ed579_63cade51","updated":"2016-01-13 18:08:47.000000000","message":"Done","commit_id":"5621a4f0b3fc5b81eca589a22705a2194ffc75d4"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"2f445a80a51bf50116fc013b07fa6163c9bfbd67","unresolved":false,"context_lines":[{"line_number":582,"context_line":"            \u0027is_domain\u0027: True}"},{"line_number":583,"context_line":"        self.resource_api.create_project(project2[\u0027id\u0027], project2)"},{"line_number":584,"context_line":""},{"line_number":585,"context_line":"        project1_ref \u003d self.resource_api.get_project_by_name("},{"line_number":586,"context_line":"            project1[\u0027name\u0027],"},{"line_number":587,"context_line":"            project1[\u0027domain_id\u0027],"},{"line_number":588,"context_line":"            True)"},{"line_number":589,"context_line":"        project2_ref \u003d self.resource_api.get_project_by_name("},{"line_number":590,"context_line":"            project2[\u0027name\u0027],"},{"line_number":591,"context_line":"            project2[\u0027domain_id\u0027],"},{"line_number":592,"context_line":"            True)"},{"line_number":593,"context_line":""},{"line_number":594,"context_line":"        self.assertDictEqual(project1, project1_ref)"},{"line_number":595,"context_line":"        self.assertDictEqual(project2, project2_ref)"}],"source_content_type":"text/x-python","patch_set":42,"id":"fa69d971_2b05e144","line":592,"range":{"start_line":585,"start_character":8,"end_line":592,"end_character":17},"updated":"2016-01-11 21:22:31.000000000","message":"Shouldn\u0027t these both raise an exception with a V8 driver? Since you have not  overridden this test in the legacy test class, I don\u0027t understand how the legacy test can pass","commit_id":"5621a4f0b3fc5b81eca589a22705a2194ffc75d4"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"234f474def0ef5f0473b6966fdc783c6da77c6c8","unresolved":false,"context_lines":[{"line_number":582,"context_line":"            \u0027is_domain\u0027: True}"},{"line_number":583,"context_line":"        self.resource_api.create_project(project2[\u0027id\u0027], project2)"},{"line_number":584,"context_line":""},{"line_number":585,"context_line":"        project1_ref \u003d self.resource_api.get_project_by_name("},{"line_number":586,"context_line":"            project1[\u0027name\u0027],"},{"line_number":587,"context_line":"            project1[\u0027domain_id\u0027],"},{"line_number":588,"context_line":"            True)"},{"line_number":589,"context_line":"        project2_ref \u003d self.resource_api.get_project_by_name("},{"line_number":590,"context_line":"            project2[\u0027name\u0027],"},{"line_number":591,"context_line":"            project2[\u0027domain_id\u0027],"},{"line_number":592,"context_line":"            True)"},{"line_number":593,"context_line":""},{"line_number":594,"context_line":"        self.assertDictEqual(project1, project1_ref)"},{"line_number":595,"context_line":"        self.assertDictEqual(project2, project2_ref)"}],"source_content_type":"text/x-python","patch_set":42,"id":"da6ed579_3203d611","line":592,"range":{"start_line":585,"start_character":8,"end_line":592,"end_character":17},"in_reply_to":"fa69d971_2b05e144","updated":"2016-01-11 23:47:36.000000000","message":"looks like they should... I\u0027m trying to make them raise it, with no success... Looks like this is not going to the wrapper","commit_id":"5621a4f0b3fc5b81eca589a22705a2194ffc75d4"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"cc82597b7b24d327f4900762ca7e133fa7af8592","unresolved":false,"context_lines":[{"line_number":550,"context_line":"                          None,"},{"line_number":551,"context_line":"                          False)"},{"line_number":552,"context_line":""},{"line_number":553,"context_line":"        # Querying without passing the domain_id is only supported for"},{"line_number":554,"context_line":"        # projects that act as domains."},{"line_number":555,"context_line":"        project2 \u003d unit.new_project_ref(domain_id\u003dDEFAULT_DOMAIN_ID,"},{"line_number":556,"context_line":"                                        is_domain\u003dTrue)"},{"line_number":557,"context_line":"        self.resource_api.create_project(project2[\u0027id\u0027], project2)"}],"source_content_type":"text/x-python","patch_set":43,"id":"da6ed579_59eb9313","line":554,"range":{"start_line":553,"start_character":9,"end_line":554,"end_character":39},"updated":"2016-01-13 21:05:39.000000000","message":"this comment presumably refers to the assert above? If so, probably place it before that asset and rephrase to say something like \"test that querying....\"","commit_id":"000fc9fd1c08c744ae66a106ad8266e54919eb58"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"74db03fd9163dd9fc77bdb2f3946621841d97ce8","unresolved":false,"context_lines":[{"line_number":550,"context_line":"                          None,"},{"line_number":551,"context_line":"                          False)"},{"line_number":552,"context_line":""},{"line_number":553,"context_line":"        # Querying without passing the domain_id is only supported for"},{"line_number":554,"context_line":"        # projects that act as domains."},{"line_number":555,"context_line":"        project2 \u003d unit.new_project_ref(domain_id\u003dDEFAULT_DOMAIN_ID,"},{"line_number":556,"context_line":"                                        is_domain\u003dTrue)"},{"line_number":557,"context_line":"        self.resource_api.create_project(project2[\u0027id\u0027], project2)"}],"source_content_type":"text/x-python","patch_set":43,"id":"da6ed579_8ea8d78e","line":554,"range":{"start_line":553,"start_character":9,"end_line":554,"end_character":39},"in_reply_to":"da6ed579_59eb9313","updated":"2016-01-14 00:00:00.000000000","message":"Done","commit_id":"000fc9fd1c08c744ae66a106ad8266e54919eb58"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"ee8f326955554cfe712ff8b8608abc38d25730c3","unresolved":false,"context_lines":[{"line_number":570,"context_line":"                                        is_domain\u003dTrue)"},{"line_number":571,"context_line":"        self.resource_api.create_project(project2[\u0027id\u0027], project2)"},{"line_number":572,"context_line":""},{"line_number":573,"context_line":"        project1_ref \u003d self.resource_api.get_project_by_name("},{"line_number":574,"context_line":"            project1[\u0027name\u0027],"},{"line_number":575,"context_line":"            project1[\u0027domain_id\u0027],"},{"line_number":576,"context_line":"            True)"},{"line_number":577,"context_line":"        project2_ref \u003d self.resource_api.get_project_by_name("},{"line_number":578,"context_line":"            project2[\u0027name\u0027],"},{"line_number":579,"context_line":"            project2[\u0027domain_id\u0027],"},{"line_number":580,"context_line":"            True)"},{"line_number":581,"context_line":""},{"line_number":582,"context_line":"        self.resource_api.get_project_by_name.invalidate("},{"line_number":583,"context_line":"            self, project1[\u0027name\u0027], project1[\u0027domain_id\u0027],"}],"source_content_type":"text/x-python","patch_set":43,"id":"da6ed579_79da174e","line":580,"range":{"start_line":573,"start_character":8,"end_line":580,"end_character":17},"updated":"2016-01-13 21:09:30.000000000","message":"did you work out why this wasn\u0027t failing the legacy tests...(before you overrode them, I mean)?","commit_id":"000fc9fd1c08c744ae66a106ad8266e54919eb58"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"74db03fd9163dd9fc77bdb2f3946621841d97ce8","unresolved":false,"context_lines":[{"line_number":570,"context_line":"                                        is_domain\u003dTrue)"},{"line_number":571,"context_line":"        self.resource_api.create_project(project2[\u0027id\u0027], project2)"},{"line_number":572,"context_line":""},{"line_number":573,"context_line":"        project1_ref \u003d self.resource_api.get_project_by_name("},{"line_number":574,"context_line":"            project1[\u0027name\u0027],"},{"line_number":575,"context_line":"            project1[\u0027domain_id\u0027],"},{"line_number":576,"context_line":"            True)"},{"line_number":577,"context_line":"        project2_ref \u003d self.resource_api.get_project_by_name("},{"line_number":578,"context_line":"            project2[\u0027name\u0027],"},{"line_number":579,"context_line":"            project2[\u0027domain_id\u0027],"},{"line_number":580,"context_line":"            True)"},{"line_number":581,"context_line":""},{"line_number":582,"context_line":"        self.resource_api.get_project_by_name.invalidate("},{"line_number":583,"context_line":"            self, project1[\u0027name\u0027], project1[\u0027domain_id\u0027],"}],"source_content_type":"text/x-python","patch_set":43,"id":"da6ed579_9351e438","line":580,"range":{"start_line":573,"start_character":8,"end_line":580,"end_character":17},"in_reply_to":"da6ed579_79da174e","updated":"2016-01-14 00:00:00.000000000","message":"Done, as replied in the manager comment","commit_id":"000fc9fd1c08c744ae66a106ad8266e54919eb58"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"cc82597b7b24d327f4900762ca7e133fa7af8592","unresolved":false,"context_lines":[{"line_number":579,"context_line":"            project2[\u0027domain_id\u0027],"},{"line_number":580,"context_line":"            True)"},{"line_number":581,"context_line":""},{"line_number":582,"context_line":"        self.resource_api.get_project_by_name.invalidate("},{"line_number":583,"context_line":"            self, project1[\u0027name\u0027], project1[\u0027domain_id\u0027],"},{"line_number":584,"context_line":"            True)"},{"line_number":585,"context_line":""},{"line_number":586,"context_line":"        self.assertDictEqual(project1, project1_ref)"},{"line_number":587,"context_line":"        self.assertDictEqual(project2, project2_ref)"}],"source_content_type":"text/x-python","patch_set":43,"id":"da6ed579_f93927d8","line":584,"range":{"start_line":582,"start_character":8,"end_line":584,"end_character":17},"updated":"2016-01-13 21:05:39.000000000","message":"do you have to do this before the asserts below? the order in the test suggests yes, but I doubt that is the case...and what is the testing anyway?","commit_id":"000fc9fd1c08c744ae66a106ad8266e54919eb58"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"74db03fd9163dd9fc77bdb2f3946621841d97ce8","unresolved":false,"context_lines":[{"line_number":579,"context_line":"            project2[\u0027domain_id\u0027],"},{"line_number":580,"context_line":"            True)"},{"line_number":581,"context_line":""},{"line_number":582,"context_line":"        self.resource_api.get_project_by_name.invalidate("},{"line_number":583,"context_line":"            self, project1[\u0027name\u0027], project1[\u0027domain_id\u0027],"},{"line_number":584,"context_line":"            True)"},{"line_number":585,"context_line":""},{"line_number":586,"context_line":"        self.assertDictEqual(project1, project1_ref)"},{"line_number":587,"context_line":"        self.assertDictEqual(project2, project2_ref)"}],"source_content_type":"text/x-python","patch_set":43,"id":"da6ed579_5347ec76","line":584,"range":{"start_line":582,"start_character":8,"end_line":584,"end_character":17},"in_reply_to":"da6ed579_f93927d8","updated":"2016-01-14 00:00:00.000000000","message":"copy and paste problem. removed","commit_id":"000fc9fd1c08c744ae66a106ad8266e54919eb58"}],"keystone/tests/unit/test_backend_sql.py":[{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"5210b08e2c88c22826755071f1ef7996b7f1c872","unresolved":false,"context_lines":[{"line_number":251,"context_line":"                          DEFAULT_DOMAIN_ID,"},{"line_number":252,"context_line":"                          False)"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"    def test_get_project_by_name_not_passing_domain_id(self):"},{"line_number":255,"context_line":"        domain1 \u003d {\u0027id\u0027: uuid.uuid4().hex, \u0027name\u0027: uuid.uuid4().hex}"},{"line_number":256,"context_line":"        self.resource_api.create_domain(domain1[\u0027id\u0027], domain1)"},{"line_number":257,"context_line":"        domain2 \u003d {\u0027id\u0027: uuid.uuid4().hex, \u0027name\u0027: uuid.uuid4().hex}"}],"source_content_type":"text/x-python","patch_set":32,"id":"da85f559_979963c6","line":254,"updated":"2015-11-12 13:49:06.000000000","message":"...similar to my other comment...unclear why this is part of this patch?","commit_id":"12ad215f2ea9384b3587672bb59ec614607a92c6"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"a12f813ae286d3bfa39056664574f01621a9862b","unresolved":false,"context_lines":[{"line_number":251,"context_line":"                          DEFAULT_DOMAIN_ID,"},{"line_number":252,"context_line":"                          False)"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"    def test_get_project_by_name_not_passing_domain_id(self):"},{"line_number":255,"context_line":"        domain1 \u003d {\u0027id\u0027: uuid.uuid4().hex, \u0027name\u0027: uuid.uuid4().hex}"},{"line_number":256,"context_line":"        self.resource_api.create_domain(domain1[\u0027id\u0027], domain1)"},{"line_number":257,"context_line":"        domain2 \u003d {\u0027id\u0027: uuid.uuid4().hex, \u0027name\u0027: uuid.uuid4().hex}"}],"source_content_type":"text/x-python","patch_set":32,"id":"da85f559_713879d3","line":254,"in_reply_to":"da85f559_979963c6","updated":"2015-11-12 18:57:54.000000000","message":"this test is just an internal procedure test, as is the other case you\u0027ve mentioned. We do that to allow getting root projects (with no domain_id) by name","commit_id":"12ad215f2ea9384b3587672bb59ec614607a92c6"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"5dfdf9dd42e7687145f0899bb47607b1cceae354","unresolved":false,"context_lines":[{"line_number":247,"context_line":"                          DEFAULT_DOMAIN_ID,"},{"line_number":248,"context_line":"                          False)"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"    def test_get_project_by_name_not_passing_domain_id(self):"},{"line_number":251,"context_line":"        domain1 \u003d {\u0027id\u0027: uuid.uuid4().hex, \u0027name\u0027: uuid.uuid4().hex}"},{"line_number":252,"context_line":"        self.resource_api.create_domain(domain1[\u0027id\u0027], domain1)"},{"line_number":253,"context_line":"        domain2 \u003d {\u0027id\u0027: uuid.uuid4().hex, \u0027name\u0027: uuid.uuid4().hex}"}],"source_content_type":"text/x-python","patch_set":34,"id":"ba8a016a_8050490c","line":250,"updated":"2015-11-19 18:09:15.000000000","message":"maybe add a comment explaining what is the expected result here","commit_id":"e5a693cdbfd5b6cbf24b5e2afbd2fb52e7ecdb31"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"4ea912f7b2a6d2ccc94064a5bf751f021bdf24ea","unresolved":false,"context_lines":[{"line_number":247,"context_line":"                          DEFAULT_DOMAIN_ID,"},{"line_number":248,"context_line":"                          False)"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"    def test_get_project_by_name_not_passing_domain_id(self):"},{"line_number":251,"context_line":"        domain1 \u003d {\u0027id\u0027: uuid.uuid4().hex, \u0027name\u0027: uuid.uuid4().hex}"},{"line_number":252,"context_line":"        self.resource_api.create_domain(domain1[\u0027id\u0027], domain1)"},{"line_number":253,"context_line":"        domain2 \u003d {\u0027id\u0027: uuid.uuid4().hex, \u0027name\u0027: uuid.uuid4().hex}"}],"source_content_type":"text/x-python","patch_set":34,"id":"ba8a016a_333f2bd8","line":250,"in_reply_to":"ba8a016a_8050490c","updated":"2015-11-21 02:29:42.000000000","message":"Seems clear enough to me:  name documents well enough.","commit_id":"e5a693cdbfd5b6cbf24b5e2afbd2fb52e7ecdb31"},{"author":{"_account_id":15359,"name":"Erickson Filipe Guedes dos Santos","email":"erickson@lsd.ufcg.edu.br","username":"ericksonfilipe"},"change_message_id":"a677d30a5a718f1f0cbfbb2c7aee33149eb145af","unresolved":false,"context_lines":[{"line_number":243,"context_line":"                          DEFAULT_DOMAIN_ID,"},{"line_number":244,"context_line":"                          False)"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    def test_get_project_by_name_not_passing_domain_id(self):"},{"line_number":247,"context_line":"        domain1 \u003d {\u0027id\u0027: uuid.uuid4().hex, \u0027name\u0027: uuid.uuid4().hex}"},{"line_number":248,"context_line":"        self.resource_api.create_domain(domain1[\u0027id\u0027], domain1)"},{"line_number":249,"context_line":"        domain2 \u003d {\u0027id\u0027: uuid.uuid4().hex, \u0027name\u0027: uuid.uuid4().hex}"}],"source_content_type":"text/x-python","patch_set":36,"id":"7a740942_d2ca6b6e","line":246,"updated":"2015-12-09 20:14:29.000000000","message":"Would be nice if you could create another test case just like this one - 2 projects with the same name but in different domains -, but passing the domain_id, so as to test if the right project is retrieved.","commit_id":"d6f889c967377582af8d7b478b031d0d9c4b2062"},{"author":{"_account_id":15359,"name":"Erickson Filipe Guedes dos Santos","email":"erickson@lsd.ufcg.edu.br","username":"ericksonfilipe"},"change_message_id":"e2a674a9b85efb13297cbe05b251582528475f30","unresolved":false,"context_lines":[{"line_number":243,"context_line":"                          DEFAULT_DOMAIN_ID,"},{"line_number":244,"context_line":"                          False)"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    def test_get_project_by_name_not_passing_domain_id(self):"},{"line_number":247,"context_line":"        domain1 \u003d {\u0027id\u0027: uuid.uuid4().hex, \u0027name\u0027: uuid.uuid4().hex}"},{"line_number":248,"context_line":"        self.resource_api.create_domain(domain1[\u0027id\u0027], domain1)"},{"line_number":249,"context_line":"        domain2 \u003d {\u0027id\u0027: uuid.uuid4().hex, \u0027name\u0027: uuid.uuid4().hex}"}],"source_content_type":"text/x-python","patch_set":36,"id":"7a740942_48d48a46","line":246,"in_reply_to":"7a740942_ad25000b","updated":"2015-12-09 20:36:49.000000000","message":"Well, ok. I\u0027ll change my vote. Thanks!","commit_id":"d6f889c967377582af8d7b478b031d0d9c4b2062"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"f1d185c7aa60907026d1df7286d4eb5e385f063f","unresolved":false,"context_lines":[{"line_number":243,"context_line":"                          DEFAULT_DOMAIN_ID,"},{"line_number":244,"context_line":"                          False)"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    def test_get_project_by_name_not_passing_domain_id(self):"},{"line_number":247,"context_line":"        domain1 \u003d {\u0027id\u0027: uuid.uuid4().hex, \u0027name\u0027: uuid.uuid4().hex}"},{"line_number":248,"context_line":"        self.resource_api.create_domain(domain1[\u0027id\u0027], domain1)"},{"line_number":249,"context_line":"        domain2 \u003d {\u0027id\u0027: uuid.uuid4().hex, \u0027name\u0027: uuid.uuid4().hex}"}],"source_content_type":"text/x-python","patch_set":36,"id":"7a740942_ad25000b","line":246,"in_reply_to":"7a740942_d2ca6b6e","updated":"2015-12-09 20:28:42.000000000","message":"We create this in the follow-up patchset, where the is_domain parameter is enforced with the name in the code, instead of in the sql backend","commit_id":"d6f889c967377582af8d7b478b031d0d9c4b2062"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"b358878af63025374dfccc139e5917c8b5054937","unresolved":false,"context_lines":[{"line_number":243,"context_line":"                          DEFAULT_DOMAIN_ID,"},{"line_number":244,"context_line":"                          False)"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    def test_get_project_by_name_not_passing_domain_id(self):"},{"line_number":247,"context_line":"        domain1 \u003d {\u0027id\u0027: uuid.uuid4().hex, \u0027name\u0027: uuid.uuid4().hex}"},{"line_number":248,"context_line":"        self.resource_api.create_domain(domain1[\u0027id\u0027], domain1)"},{"line_number":249,"context_line":"        domain2 \u003d {\u0027id\u0027: uuid.uuid4().hex, \u0027name\u0027: uuid.uuid4().hex}"}],"source_content_type":"text/x-python","patch_set":40,"id":"fa69d971_01b327ea","line":246,"range":{"start_line":246,"start_character":8,"end_line":246,"end_character":54},"updated":"2016-01-06 00:16:21.000000000","message":"This is kind of a weird test! What\u0027s it actually designed to show? It also fails when running with a legacy driver.","commit_id":"44e77db11094000f2b4da18d04a716c55f087a38"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"aecc8935f1cca983057c468b22b8d1da977687c0","unresolved":false,"context_lines":[{"line_number":243,"context_line":"                          DEFAULT_DOMAIN_ID,"},{"line_number":244,"context_line":"                          False)"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    def test_get_project_by_name_not_passing_domain_id(self):"},{"line_number":247,"context_line":"        domain1 \u003d {\u0027id\u0027: uuid.uuid4().hex, \u0027name\u0027: uuid.uuid4().hex}"},{"line_number":248,"context_line":"        self.resource_api.create_domain(domain1[\u0027id\u0027], domain1)"},{"line_number":249,"context_line":"        domain2 \u003d {\u0027id\u0027: uuid.uuid4().hex, \u0027name\u0027: uuid.uuid4().hex}"}],"source_content_type":"text/x-python","patch_set":40,"id":"fa69d971_b525b509","line":246,"range":{"start_line":246,"start_character":8,"end_line":246,"end_character":54},"in_reply_to":"fa69d971_01b327ea","updated":"2016-01-06 02:56:24.000000000","message":"you\u0027re right. the name of the test does not make sense at all. I\u0027ll put a better name and a description","commit_id":"44e77db11094000f2b4da18d04a716c55f087a38"}],"keystone/tests/unit/test_v2_controller.py":[{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"840eedeccde042d806275e7b47cdb110774ef97a","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            _ADMIN_CONTEXT,"},{"line_number":121,"context_line":"            project[\u0027id\u0027]"},{"line_number":122,"context_line":"        )"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    def test_update_is_domain_project_not_found(self):"},{"line_number":125,"context_line":"        \"\"\"Test that update is_domain project is not allowed in v2.\"\"\""},{"line_number":126,"context_line":"        project \u003d self._create_is_domain_project()"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_3daf7d2b","line":123,"updated":"2015-08-11 17:45:35.000000000","message":"nice!","commit_id":"b4d84125cf1763c9eced1e5012a1a06fb45a5b5e"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"a570974f6f540e5e42cd5506b1be48fdc9e6a5df","unresolved":false,"context_lines":[{"line_number":118,"context_line":"            exception.ProjectNotFound,"},{"line_number":119,"context_line":"            self.tenant_controller.get_project,"},{"line_number":120,"context_line":"            _ADMIN_CONTEXT,"},{"line_number":121,"context_line":"            project[\u0027id\u0027]"},{"line_number":122,"context_line":"        )"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    def test_update_is_domain_project_not_found(self):"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa1b9901_e53d6fbc","line":121,"updated":"2015-08-22 09:42:30.000000000","message":"this seems an odd test to be here...it\u0027s not related to get project by name. In reality this should have been in the original patch to add the is_domain attribute...maybe put it into the fix up patch?","commit_id":"905afcd5ab6e3ec6d78ef4b99ae3f6ec9f308ff5"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"39dc4b80110e096860cb0922757e5496abb54650","unresolved":false,"context_lines":[{"line_number":118,"context_line":"            exception.ProjectNotFound,"},{"line_number":119,"context_line":"            self.tenant_controller.get_project,"},{"line_number":120,"context_line":"            _ADMIN_CONTEXT,"},{"line_number":121,"context_line":"            project[\u0027id\u0027]"},{"line_number":122,"context_line":"        )"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    def test_update_is_domain_project_not_found(self):"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa1b9901_b4c9e75c","line":121,"in_reply_to":"fa1b9901_e53d6fbc","updated":"2015-08-22 18:17:57.000000000","message":"Done","commit_id":"905afcd5ab6e3ec6d78ef4b99ae3f6ec9f308ff5"}]}
