)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"6912786b6255dcf97ccb4820395f5cb3211434d5","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     raiesmh08 \u003cmh.raies@ericsson.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-02-16 00:42:49 +0530"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix for bug-1665067"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Following V3 identity api tests are failing -"},{"line_number":10,"context_line":"    1. test_delete_credential"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"fa31d9ce_6f29bae5","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":19},"updated":"2017-02-15 21:23:34.000000000","message":"Actually, this not a good commit message title. May you please make this more descriptive? \n\nhttps://wiki.openstack.org/wiki/GitCommitMessages#Information_in_commit_messages\n\n\"The first commit line is the most important\" is a rule mentioned therein.","commit_id":"453a6cace6fdecd31dc5b4429fa6bb76acb70daf"}],"patrole_tempest_plugin/tests/api/identity/v3/rbac_base.py":[{"author":{"_account_id":23659,"name":"Jaewoo Park","email":"jaewoopark91@gmail.com","username":"aselius"},"change_message_id":"3cb15e7fd1cd27210e67da07ee6f4598cd928e9e","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                        self.services_client.delete_service, service[\u0027id\u0027])"},{"line_number":59,"context_line":"        return service"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def _setup_test_project(self):"},{"line_number":62,"context_line":"        \"\"\"Set up a test project.\"\"\""},{"line_number":63,"context_line":"        project \u003d self.projects_client.create_project("},{"line_number":64,"context_line":"            name\u003ddata_utils.rand_name(\u0027test_project\u0027),"},{"line_number":65,"context_line":"            description\u003ddata_utils.rand_name(\u0027desc\u0027))[\u0027project\u0027]"},{"line_number":66,"context_line":"        # Delete the project at the end of the test"},{"line_number":67,"context_line":"        self.addCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":68,"context_line":"                        self.projects_client.delete_project, project[\u0027id\u0027])"},{"line_number":69,"context_line":"        return project"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def _create_test_user(self, **kwargs):"},{"line_number":72,"context_line":"        if kwargs[\u0027password\u0027] is None:"},{"line_number":73,"context_line":"            user_password \u003d data_utils.rand_password()"},{"line_number":74,"context_line":"            kwargs[\u0027password\u0027] \u003d user_password"},{"line_number":75,"context_line":"        user \u003d self.users_client.create_user(**kwargs)[\u0027user\u0027]"},{"line_number":76,"context_line":"        # Delete the user at the end of the test"},{"line_number":77,"context_line":"        self.addCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":78,"context_line":"                        self.users_client.delete_user, user[\u0027id\u0027])"},{"line_number":79,"context_line":"        return user"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa31d9ce_1b4bebb1","line":79,"range":{"start_line":61,"start_character":0,"end_line":79,"end_character":19},"updated":"2017-02-17 00:37:59.000000000","message":"Can we get a consensus on this? This is probably going to cause a merge conflict for the test_users_rbac i have ready to be pushed after getting roles merged. \n\nSo none of the setup methods what so ever utilize test_utils in tempest base. And other project test being handled by Patrole point to some addCleanups without test_utils. If we decide that all cleanups need test_utils for the sacrifice of using a separate private method that is 20 characters different, I think we should submit a single bug for it and change it for all the previous ones / keep that in mind when we migrate the other tests over.","commit_id":"b911cc236a0c611167245030c6c7c98ab900a0f5"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"76eb2d79907a589270a7f519d7e4994de6cf9ac3","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                        self.services_client.delete_service, service[\u0027id\u0027])"},{"line_number":59,"context_line":"        return service"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def _setup_test_project(self):"},{"line_number":62,"context_line":"        \"\"\"Set up a test project.\"\"\""},{"line_number":63,"context_line":"        project \u003d self.projects_client.create_project("},{"line_number":64,"context_line":"            name\u003ddata_utils.rand_name(\u0027test_project\u0027),"},{"line_number":65,"context_line":"            description\u003ddata_utils.rand_name(\u0027desc\u0027))[\u0027project\u0027]"},{"line_number":66,"context_line":"        # Delete the project at the end of the test"},{"line_number":67,"context_line":"        self.addCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":68,"context_line":"                        self.projects_client.delete_project, project[\u0027id\u0027])"},{"line_number":69,"context_line":"        return project"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def _create_test_user(self, **kwargs):"},{"line_number":72,"context_line":"        if kwargs[\u0027password\u0027] is None:"},{"line_number":73,"context_line":"            user_password \u003d data_utils.rand_password()"},{"line_number":74,"context_line":"            kwargs[\u0027password\u0027] \u003d user_password"},{"line_number":75,"context_line":"        user \u003d self.users_client.create_user(**kwargs)[\u0027user\u0027]"},{"line_number":76,"context_line":"        # Delete the user at the end of the test"},{"line_number":77,"context_line":"        self.addCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":78,"context_line":"                        self.users_client.delete_user, user[\u0027id\u0027])"},{"line_number":79,"context_line":"        return user"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa31d9ce_bc21f2b6","line":79,"range":{"start_line":61,"start_character":0,"end_line":79,"end_character":19},"in_reply_to":"fa31d9ce_1b4bebb1","updated":"2017-02-17 05:23:26.000000000","message":"For your second point,\nIdeally any point of time if you a test failure, you can report bug. Also I have checked modules in different API sections, no other tests are failing with this reason.\n\nFor you first point, \nAs you said, you have some ready to push code and that will need rebase if this patch merges. Then I don\u0027t think doing rebase is a problem. \nAlso we should not give comments on the basis of code which we are about to push.\n\nCurrently this patch is making any conflict with any existing test. SO this patch can be added without any problem.","commit_id":"b911cc236a0c611167245030c6c7c98ab900a0f5"},{"author":{"_account_id":23659,"name":"Jaewoo Park","email":"jaewoopark91@gmail.com","username":"aselius"},"change_message_id":"5e0ade2b49c89abf50194a8e22e00ad9a3b26d1d","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                        self.services_client.delete_service, service[\u0027id\u0027])"},{"line_number":59,"context_line":"        return service"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def _setup_test_project(self):"},{"line_number":62,"context_line":"        \"\"\"Set up a test project.\"\"\""},{"line_number":63,"context_line":"        project \u003d self.projects_client.create_project("},{"line_number":64,"context_line":"            name\u003ddata_utils.rand_name(\u0027test_project\u0027),"},{"line_number":65,"context_line":"            description\u003ddata_utils.rand_name(\u0027desc\u0027))[\u0027project\u0027]"},{"line_number":66,"context_line":"        # Delete the project at the end of the test"},{"line_number":67,"context_line":"        self.addCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":68,"context_line":"                        self.projects_client.delete_project, project[\u0027id\u0027])"},{"line_number":69,"context_line":"        return project"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def _create_test_user(self, **kwargs):"},{"line_number":72,"context_line":"        if kwargs[\u0027password\u0027] is None:"},{"line_number":73,"context_line":"            user_password \u003d data_utils.rand_password()"},{"line_number":74,"context_line":"            kwargs[\u0027password\u0027] \u003d user_password"},{"line_number":75,"context_line":"        user \u003d self.users_client.create_user(**kwargs)[\u0027user\u0027]"},{"line_number":76,"context_line":"        # Delete the user at the end of the test"},{"line_number":77,"context_line":"        self.addCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":78,"context_line":"                        self.users_client.delete_user, user[\u0027id\u0027])"},{"line_number":79,"context_line":"        return user"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa31d9ce_fcdc2e1a","line":79,"range":{"start_line":61,"start_character":0,"end_line":79,"end_character":19},"in_reply_to":"fa31d9ce_1c6102a9","updated":"2017-02-17 18:31:41.000000000","message":"can you clarify what you mean by failure? do you mean the test cases failing in testr?","commit_id":"b911cc236a0c611167245030c6c7c98ab900a0f5"},{"author":{"_account_id":23659,"name":"Jaewoo Park","email":"jaewoopark91@gmail.com","username":"aselius"},"change_message_id":"0066c6f42834fbb620c083177dd6888b1b2719fe","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                        self.services_client.delete_service, service[\u0027id\u0027])"},{"line_number":59,"context_line":"        return service"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def _setup_test_project(self):"},{"line_number":62,"context_line":"        \"\"\"Set up a test project.\"\"\""},{"line_number":63,"context_line":"        project \u003d self.projects_client.create_project("},{"line_number":64,"context_line":"            name\u003ddata_utils.rand_name(\u0027test_project\u0027),"},{"line_number":65,"context_line":"            description\u003ddata_utils.rand_name(\u0027desc\u0027))[\u0027project\u0027]"},{"line_number":66,"context_line":"        # Delete the project at the end of the test"},{"line_number":67,"context_line":"        self.addCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":68,"context_line":"                        self.projects_client.delete_project, project[\u0027id\u0027])"},{"line_number":69,"context_line":"        return project"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def _create_test_user(self, **kwargs):"},{"line_number":72,"context_line":"        if kwargs[\u0027password\u0027] is None:"},{"line_number":73,"context_line":"            user_password \u003d data_utils.rand_password()"},{"line_number":74,"context_line":"            kwargs[\u0027password\u0027] \u003d user_password"},{"line_number":75,"context_line":"        user \u003d self.users_client.create_user(**kwargs)[\u0027user\u0027]"},{"line_number":76,"context_line":"        # Delete the user at the end of the test"},{"line_number":77,"context_line":"        self.addCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":78,"context_line":"                        self.users_client.delete_user, user[\u0027id\u0027])"},{"line_number":79,"context_line":"        return user"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa31d9ce_fc17ce51","line":79,"range":{"start_line":61,"start_character":0,"end_line":79,"end_character":19},"in_reply_to":"fa31d9ce_1c7ca2ea","updated":"2017-02-17 19:06:36.000000000","message":"tried to reproduce the bug but couldn\u0027t.. tests run fine for me. may need more details to reproduce this.","commit_id":"b911cc236a0c611167245030c6c7c98ab900a0f5"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"87b0324ee7b1a315208c9c070c34906ded307c84","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                        self.services_client.delete_service, service[\u0027id\u0027])"},{"line_number":59,"context_line":"        return service"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def _setup_test_project(self):"},{"line_number":62,"context_line":"        \"\"\"Set up a test project.\"\"\""},{"line_number":63,"context_line":"        project \u003d self.projects_client.create_project("},{"line_number":64,"context_line":"            name\u003ddata_utils.rand_name(\u0027test_project\u0027),"},{"line_number":65,"context_line":"            description\u003ddata_utils.rand_name(\u0027desc\u0027))[\u0027project\u0027]"},{"line_number":66,"context_line":"        # Delete the project at the end of the test"},{"line_number":67,"context_line":"        self.addCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":68,"context_line":"                        self.projects_client.delete_project, project[\u0027id\u0027])"},{"line_number":69,"context_line":"        return project"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def _create_test_user(self, **kwargs):"},{"line_number":72,"context_line":"        if kwargs[\u0027password\u0027] is None:"},{"line_number":73,"context_line":"            user_password \u003d data_utils.rand_password()"},{"line_number":74,"context_line":"            kwargs[\u0027password\u0027] \u003d user_password"},{"line_number":75,"context_line":"        user \u003d self.users_client.create_user(**kwargs)[\u0027user\u0027]"},{"line_number":76,"context_line":"        # Delete the user at the end of the test"},{"line_number":77,"context_line":"        self.addCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":78,"context_line":"                        self.users_client.delete_user, user[\u0027id\u0027])"},{"line_number":79,"context_line":"        return user"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa31d9ce_1c6102a9","line":79,"range":{"start_line":61,"start_character":0,"end_line":79,"end_character":19},"in_reply_to":"fa31d9ce_b91ac815","updated":"2017-02-17 18:22:21.000000000","message":"I understand your point. But at minimum we should provide a working condition within our project.\nAlthough tempest provides similar kind of methods but directly using them cause failure in our case.\nIn this kind of situation, there are always two options -\n1. provide a local supporting method for the test case \n2. provide solution in tempest and convince tempest core for that. Also until unless it is merged in tempest, our test case in rbac will be failing.\n\nBest solution in this kind of situation is always having a local problem solving method so that at least rbac cab be functional for such cases. Later if tempest also provides similar kind of method support then we can implement a cleanup for such private methods.\n\nBut for the time being to make such tests functional, such private method are always accepted in community.\n\nSo, IMHO we should go in this way and make rbac functional. Later if tempest provides this kind of support (Which can take significant time) we can submit a cleanup patch.","commit_id":"b911cc236a0c611167245030c6c7c98ab900a0f5"},{"author":{"_account_id":23185,"name":"Samantha Blanco","email":"samantha.blanco@att.com","username":"sblanco"},"change_message_id":"f44d81acb93db381773344493e171e815c6a6008","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                        self.services_client.delete_service, service[\u0027id\u0027])"},{"line_number":59,"context_line":"        return service"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def _setup_test_project(self):"},{"line_number":62,"context_line":"        \"\"\"Set up a test project.\"\"\""},{"line_number":63,"context_line":"        project \u003d self.projects_client.create_project("},{"line_number":64,"context_line":"            name\u003ddata_utils.rand_name(\u0027test_project\u0027),"},{"line_number":65,"context_line":"            description\u003ddata_utils.rand_name(\u0027desc\u0027))[\u0027project\u0027]"},{"line_number":66,"context_line":"        # Delete the project at the end of the test"},{"line_number":67,"context_line":"        self.addCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":68,"context_line":"                        self.projects_client.delete_project, project[\u0027id\u0027])"},{"line_number":69,"context_line":"        return project"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def _create_test_user(self, **kwargs):"},{"line_number":72,"context_line":"        if kwargs[\u0027password\u0027] is None:"},{"line_number":73,"context_line":"            user_password \u003d data_utils.rand_password()"},{"line_number":74,"context_line":"            kwargs[\u0027password\u0027] \u003d user_password"},{"line_number":75,"context_line":"        user \u003d self.users_client.create_user(**kwargs)[\u0027user\u0027]"},{"line_number":76,"context_line":"        # Delete the user at the end of the test"},{"line_number":77,"context_line":"        self.addCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":78,"context_line":"                        self.users_client.delete_user, user[\u0027id\u0027])"},{"line_number":79,"context_line":"        return user"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa31d9ce_59862cdc","line":79,"range":{"start_line":61,"start_character":0,"end_line":79,"end_character":19},"in_reply_to":"fa31d9ce_b91ac815","updated":"2017-02-17 17:59:33.000000000","message":"This was my concern as well and the reason for my -1. This seems to be an issue in Tempest and I\u0027d much rather resolve it there than leave it alone and only solve it locally.","commit_id":"b911cc236a0c611167245030c6c7c98ab900a0f5"},{"author":{"_account_id":23659,"name":"Jaewoo Park","email":"jaewoopark91@gmail.com","username":"aselius"},"change_message_id":"d85a3b50dad89fa8dc790b3b7f53948f1d5d5d35","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                        self.services_client.delete_service, service[\u0027id\u0027])"},{"line_number":59,"context_line":"        return service"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def _setup_test_project(self):"},{"line_number":62,"context_line":"        \"\"\"Set up a test project.\"\"\""},{"line_number":63,"context_line":"        project \u003d self.projects_client.create_project("},{"line_number":64,"context_line":"            name\u003ddata_utils.rand_name(\u0027test_project\u0027),"},{"line_number":65,"context_line":"            description\u003ddata_utils.rand_name(\u0027desc\u0027))[\u0027project\u0027]"},{"line_number":66,"context_line":"        # Delete the project at the end of the test"},{"line_number":67,"context_line":"        self.addCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":68,"context_line":"                        self.projects_client.delete_project, project[\u0027id\u0027])"},{"line_number":69,"context_line":"        return project"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def _create_test_user(self, **kwargs):"},{"line_number":72,"context_line":"        if kwargs[\u0027password\u0027] is None:"},{"line_number":73,"context_line":"            user_password \u003d data_utils.rand_password()"},{"line_number":74,"context_line":"            kwargs[\u0027password\u0027] \u003d user_password"},{"line_number":75,"context_line":"        user \u003d self.users_client.create_user(**kwargs)[\u0027user\u0027]"},{"line_number":76,"context_line":"        # Delete the user at the end of the test"},{"line_number":77,"context_line":"        self.addCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":78,"context_line":"                        self.users_client.delete_user, user[\u0027id\u0027])"},{"line_number":79,"context_line":"        return user"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa31d9ce_b91ac815","line":79,"range":{"start_line":61,"start_character":0,"end_line":79,"end_character":19},"in_reply_to":"fa31d9ce_bc21f2b6","updated":"2017-02-17 17:55:09.000000000","message":"guess to revisit my concern after stepping away from it for a second, I\u0027ve phrased my previous comment a little confusingly. I\u0027ve meant to say Identity base doesn\u0027t utilize test_utils.call_and_ignore_notfound_exc like https://github.com/openstack/tempest/blob/master/tempest/api/compute/base.py other bases do in other projects. Maybe instead of making a private method as a patchup, this could be brought up to the tempest team \u0026 submit a fix for it there. If you look at the tempest tests for api/identity/admin/v2/test_users it shows the test cases using setup_x_x which doesn\u0027t contain the addcleanup with test_utils. Again open to suggestions and correct me if I\u0027m mistaken, but since Patrole is a tempest plugin, I feel like we should be cautious about porting a method in tempest over with bare minimum changes and re-invoking it in a private method (performance-wise and coherency-wise)","commit_id":"b911cc236a0c611167245030c6c7c98ab900a0f5"},{"author":{"_account_id":23184,"name":"DavidPurcell","email":"d.purcell222@gmail.com","username":"DavidPurcell"},"change_message_id":"703481ecee40d344dd6dad5c52d2130de846c338","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                        self.services_client.delete_service, service[\u0027id\u0027])"},{"line_number":59,"context_line":"        return service"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def _setup_test_project(self):"},{"line_number":62,"context_line":"        \"\"\"Set up a test project.\"\"\""},{"line_number":63,"context_line":"        project \u003d self.projects_client.create_project("},{"line_number":64,"context_line":"            name\u003ddata_utils.rand_name(\u0027test_project\u0027),"},{"line_number":65,"context_line":"            description\u003ddata_utils.rand_name(\u0027desc\u0027))[\u0027project\u0027]"},{"line_number":66,"context_line":"        # Delete the project at the end of the test"},{"line_number":67,"context_line":"        self.addCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":68,"context_line":"                        self.projects_client.delete_project, project[\u0027id\u0027])"},{"line_number":69,"context_line":"        return project"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def _create_test_user(self, **kwargs):"},{"line_number":72,"context_line":"        if kwargs[\u0027password\u0027] is None:"},{"line_number":73,"context_line":"            user_password \u003d data_utils.rand_password()"},{"line_number":74,"context_line":"            kwargs[\u0027password\u0027] \u003d user_password"},{"line_number":75,"context_line":"        user \u003d self.users_client.create_user(**kwargs)[\u0027user\u0027]"},{"line_number":76,"context_line":"        # Delete the user at the end of the test"},{"line_number":77,"context_line":"        self.addCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":78,"context_line":"                        self.users_client.delete_user, user[\u0027id\u0027])"},{"line_number":79,"context_line":"        return user"}],"source_content_type":"text/x-python","patch_set":5,"id":"da36d5c6_e92af52b","line":79,"range":{"start_line":61,"start_character":0,"end_line":79,"end_character":19},"in_reply_to":"fa31d9ce_fc17ce51","updated":"2017-02-17 19:16:11.000000000","message":"This patch is the correct way to handle this.  The Tempest base classes are NOT stable APIs, and therefore cannot be relied upon for extension.  We have been doing so because it was convenient and Tempest made a special exception for our case.  However, we cannot rely on or expect Tempest to change these base classes to suit our needs.  The only things we can rely on or expect to change in Tempest are the things in Tempest.lib, tempest.config, and tempest.test_discover_plugin.  See here: https://docs.openstack.org/developer/tempest/plugin.html","commit_id":"b911cc236a0c611167245030c6c7c98ab900a0f5"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"ae8d475f713d77ebe16f7e5b51a4f1a92d55bbd2","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                        self.services_client.delete_service, service[\u0027id\u0027])"},{"line_number":59,"context_line":"        return service"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def _setup_test_project(self):"},{"line_number":62,"context_line":"        \"\"\"Set up a test project.\"\"\""},{"line_number":63,"context_line":"        project \u003d self.projects_client.create_project("},{"line_number":64,"context_line":"            name\u003ddata_utils.rand_name(\u0027test_project\u0027),"},{"line_number":65,"context_line":"            description\u003ddata_utils.rand_name(\u0027desc\u0027))[\u0027project\u0027]"},{"line_number":66,"context_line":"        # Delete the project at the end of the test"},{"line_number":67,"context_line":"        self.addCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":68,"context_line":"                        self.projects_client.delete_project, project[\u0027id\u0027])"},{"line_number":69,"context_line":"        return project"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def _create_test_user(self, **kwargs):"},{"line_number":72,"context_line":"        if kwargs[\u0027password\u0027] is None:"},{"line_number":73,"context_line":"            user_password \u003d data_utils.rand_password()"},{"line_number":74,"context_line":"            kwargs[\u0027password\u0027] \u003d user_password"},{"line_number":75,"context_line":"        user \u003d self.users_client.create_user(**kwargs)[\u0027user\u0027]"},{"line_number":76,"context_line":"        # Delete the user at the end of the test"},{"line_number":77,"context_line":"        self.addCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":78,"context_line":"                        self.users_client.delete_user, user[\u0027id\u0027])"},{"line_number":79,"context_line":"        return user"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa31d9ce_1c7ca2ea","line":79,"range":{"start_line":61,"start_character":0,"end_line":79,"end_character":19},"in_reply_to":"fa31d9ce_fcdc2e1a","updated":"2017-02-17 18:35:02.000000000","message":"Yes.\nThis patch is a fix for these failures.\nsee reported bug - https://bugs.launchpad.net/patrole/+bug/1665067","commit_id":"b911cc236a0c611167245030c6c7c98ab900a0f5"}],"patrole_tempest_plugin/tests/api/identity/v3/test_projects_rbac.py":[{"author":{"_account_id":23184,"name":"DavidPurcell","email":"d.purcell222@gmail.com","username":"DavidPurcell"},"change_message_id":"f25bb39e499d2a9497695c42d7358dfcd13b6b5d","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dFalse)"},{"line_number":34,"context_line":"        super(IdentityProjectV3AdminRbacTest, self).tearDown()"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def _setup_test_project(self):"},{"line_number":37,"context_line":"        \"\"\"Set up a test project.\"\"\""},{"line_number":38,"context_line":"        project \u003d self.projects_client.create_project("},{"line_number":39,"context_line":"            name\u003ddata_utils.rand_name(\u0027test_project\u0027),"},{"line_number":40,"context_line":"            description\u003ddata_utils.rand_name(\u0027desc\u0027))[\u0027project\u0027]"},{"line_number":41,"context_line":"        # Delete the project at the end of the test"},{"line_number":42,"context_line":"        self.addCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":43,"context_line":"                        self.projects_client.delete_project, project[\u0027id\u0027])"},{"line_number":44,"context_line":"        return project"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    @rbac_rule_validation.action(service\u003d\"keystone\","},{"line_number":47,"context_line":"                                 rule\u003d\"identity:create_project\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_afe492ab","line":44,"range":{"start_line":36,"start_character":4,"end_line":44,"end_character":22},"updated":"2017-02-15 21:32:28.000000000","message":"I think this belongs in the identity base class.","commit_id":"453a6cace6fdecd31dc5b4429fa6bb76acb70daf"},{"author":{"_account_id":23184,"name":"DavidPurcell","email":"d.purcell222@gmail.com","username":"DavidPurcell"},"change_message_id":"daf7b8a5a73c400e642e8f7717f7b4b937f22c99","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dFalse)"},{"line_number":34,"context_line":"        super(IdentityProjectV3AdminRbacTest, self).tearDown()"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def _setup_test_project(self):"},{"line_number":37,"context_line":"        \"\"\"Set up a test project.\"\"\""},{"line_number":38,"context_line":"        project \u003d self.projects_client.create_project("},{"line_number":39,"context_line":"            name\u003ddata_utils.rand_name(\u0027test_project\u0027),"},{"line_number":40,"context_line":"            description\u003ddata_utils.rand_name(\u0027desc\u0027))[\u0027project\u0027]"},{"line_number":41,"context_line":"        # Delete the project at the end of the test"},{"line_number":42,"context_line":"        self.addCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":43,"context_line":"                        self.projects_client.delete_project, project[\u0027id\u0027])"},{"line_number":44,"context_line":"        return project"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    @rbac_rule_validation.action(service\u003d\"keystone\","},{"line_number":47,"context_line":"                                 rule\u003d\"identity:create_project\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_e2f13102","line":44,"range":{"start_line":36,"start_character":4,"end_line":44,"end_character":22},"in_reply_to":"fa31d9ce_2c618205","updated":"2017-02-16 06:28:33.000000000","message":"I was not saying that you should use the Tempest base class.  I was telling you I think this method belongs in one of the base classes, either in the Tempest base class or the Patrole rbac_base class.  I think putting it in Patrole\u0027s Identity rbac_base would be better.","commit_id":"453a6cace6fdecd31dc5b4429fa6bb76acb70daf"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"914f17242dd62958c89b05fc1e6cc469445a041b","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dFalse)"},{"line_number":34,"context_line":"        super(IdentityProjectV3AdminRbacTest, self).tearDown()"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def _setup_test_project(self):"},{"line_number":37,"context_line":"        \"\"\"Set up a test project.\"\"\""},{"line_number":38,"context_line":"        project \u003d self.projects_client.create_project("},{"line_number":39,"context_line":"            name\u003ddata_utils.rand_name(\u0027test_project\u0027),"},{"line_number":40,"context_line":"            description\u003ddata_utils.rand_name(\u0027desc\u0027))[\u0027project\u0027]"},{"line_number":41,"context_line":"        # Delete the project at the end of the test"},{"line_number":42,"context_line":"        self.addCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":43,"context_line":"                        self.projects_client.delete_project, project[\u0027id\u0027])"},{"line_number":44,"context_line":"        return project"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    @rbac_rule_validation.action(service\u003d\"keystone\","},{"line_number":47,"context_line":"                                 rule\u003d\"identity:create_project\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_2c618205","line":44,"range":{"start_line":36,"start_character":4,"end_line":44,"end_character":22},"in_reply_to":"fa31d9ce_afe492ab","updated":"2017-02-16 05:50:54.000000000","message":"No, It\u0027s not. Similar method is in tempest but that is cleaning project without \"call_and_ignore_notfound_exc,\"","commit_id":"453a6cace6fdecd31dc5b4429fa6bb76acb70daf"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"71f05521676a27f28b9e35a2c824621ae9842538","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dFalse)"},{"line_number":34,"context_line":"        super(IdentityProjectV3AdminRbacTest, self).tearDown()"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def _setup_test_project(self):"},{"line_number":37,"context_line":"        \"\"\"Set up a test project.\"\"\""},{"line_number":38,"context_line":"        project \u003d self.projects_client.create_project("},{"line_number":39,"context_line":"            name\u003ddata_utils.rand_name(\u0027test_project\u0027),"},{"line_number":40,"context_line":"            description\u003ddata_utils.rand_name(\u0027desc\u0027))[\u0027project\u0027]"},{"line_number":41,"context_line":"        # Delete the project at the end of the test"},{"line_number":42,"context_line":"        self.addCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":43,"context_line":"                        self.projects_client.delete_project, project[\u0027id\u0027])"},{"line_number":44,"context_line":"        return project"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    @rbac_rule_validation.action(service\u003d\"keystone\","},{"line_number":47,"context_line":"                                 rule\u003d\"identity:create_project\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_62fb8147","line":44,"range":{"start_line":36,"start_character":4,"end_line":44,"end_character":22},"in_reply_to":"fa31d9ce_e2f13102","updated":"2017-02-16 06:49:57.000000000","message":"If you wish, i can do it. But i don\u0027t think it is going to make any significant benefit.\nIf this is the case of putting such type of methods in rbac_base, we can find a number of private methods which will have to move in rbac_base","commit_id":"453a6cace6fdecd31dc5b4429fa6bb76acb70daf"}],"patrole_tempest_plugin/tests/api/identity/v3/test_users_rbac.py":[{"author":{"_account_id":23184,"name":"DavidPurcell","email":"d.purcell222@gmail.com","username":"DavidPurcell"},"change_message_id":"f25bb39e499d2a9497695c42d7358dfcd13b6b5d","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dFalse)"},{"line_number":34,"context_line":"        super(IdentityUserV3AdminRbacTest, self).tearDown()"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def _create_test_user(self, **kwargs):"},{"line_number":37,"context_line":"        if kwargs[\u0027password\u0027] is None:"},{"line_number":38,"context_line":"            user_password \u003d data_utils.rand_password()"},{"line_number":39,"context_line":"            kwargs[\u0027password\u0027] \u003d user_password"},{"line_number":40,"context_line":"        user \u003d self.users_client.create_user(**kwargs)[\u0027user\u0027]"},{"line_number":41,"context_line":"        # Delete the user at the end of the test"},{"line_number":42,"context_line":"        self.addCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":43,"context_line":"                        self.users_client.delete_user, user[\u0027id\u0027])"},{"line_number":44,"context_line":"        return user"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    @rbac_rule_validation.action(service\u003d\"keystone\","},{"line_number":47,"context_line":"                                 rule\u003d\"identity:create_user\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_ef33ea11","line":44,"range":{"start_line":36,"start_character":4,"end_line":44,"end_character":19},"updated":"2017-02-15 21:32:28.000000000","message":"I think this belongs in the identity base class.","commit_id":"453a6cace6fdecd31dc5b4429fa6bb76acb70daf"},{"author":{"_account_id":23184,"name":"DavidPurcell","email":"d.purcell222@gmail.com","username":"DavidPurcell"},"change_message_id":"daf7b8a5a73c400e642e8f7717f7b4b937f22c99","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dFalse)"},{"line_number":34,"context_line":"        super(IdentityUserV3AdminRbacTest, self).tearDown()"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def _create_test_user(self, **kwargs):"},{"line_number":37,"context_line":"        if kwargs[\u0027password\u0027] is None:"},{"line_number":38,"context_line":"            user_password \u003d data_utils.rand_password()"},{"line_number":39,"context_line":"            kwargs[\u0027password\u0027] \u003d user_password"},{"line_number":40,"context_line":"        user \u003d self.users_client.create_user(**kwargs)[\u0027user\u0027]"},{"line_number":41,"context_line":"        # Delete the user at the end of the test"},{"line_number":42,"context_line":"        self.addCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":43,"context_line":"                        self.users_client.delete_user, user[\u0027id\u0027])"},{"line_number":44,"context_line":"        return user"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    @rbac_rule_validation.action(service\u003d\"keystone\","},{"line_number":47,"context_line":"                                 rule\u003d\"identity:create_user\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_42dbdd7b","line":44,"range":{"start_line":36,"start_character":4,"end_line":44,"end_character":19},"in_reply_to":"fa31d9ce_2c28a299","updated":"2017-02-16 06:28:33.000000000","message":"I was not saying that you should use the Tempest base class.  I was telling you I think this method belongs in one of the base classes, either in the Tempest base class or the Patrole rbac_base class.  I think putting it in Patrole\u0027s Identity rbac_base would be better.","commit_id":"453a6cace6fdecd31dc5b4429fa6bb76acb70daf"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"71f05521676a27f28b9e35a2c824621ae9842538","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dFalse)"},{"line_number":34,"context_line":"        super(IdentityUserV3AdminRbacTest, self).tearDown()"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def _create_test_user(self, **kwargs):"},{"line_number":37,"context_line":"        if kwargs[\u0027password\u0027] is None:"},{"line_number":38,"context_line":"            user_password \u003d data_utils.rand_password()"},{"line_number":39,"context_line":"            kwargs[\u0027password\u0027] \u003d user_password"},{"line_number":40,"context_line":"        user \u003d self.users_client.create_user(**kwargs)[\u0027user\u0027]"},{"line_number":41,"context_line":"        # Delete the user at the end of the test"},{"line_number":42,"context_line":"        self.addCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":43,"context_line":"                        self.users_client.delete_user, user[\u0027id\u0027])"},{"line_number":44,"context_line":"        return user"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    @rbac_rule_validation.action(service\u003d\"keystone\","},{"line_number":47,"context_line":"                                 rule\u003d\"identity:create_user\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_82df95d4","line":44,"range":{"start_line":36,"start_character":4,"end_line":44,"end_character":19},"in_reply_to":"fa31d9ce_42dbdd7b","updated":"2017-02-16 06:49:57.000000000","message":"If you wish, i can do it. But i don\u0027t think it is going to make any significant benefit.\nIf this is the case of putting such type of methods in rbac_base, we can find a number of private methods which will have to move in rbac_base.","commit_id":"453a6cace6fdecd31dc5b4429fa6bb76acb70daf"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"914f17242dd62958c89b05fc1e6cc469445a041b","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dFalse)"},{"line_number":34,"context_line":"        super(IdentityUserV3AdminRbacTest, self).tearDown()"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def _create_test_user(self, **kwargs):"},{"line_number":37,"context_line":"        if kwargs[\u0027password\u0027] is None:"},{"line_number":38,"context_line":"            user_password \u003d data_utils.rand_password()"},{"line_number":39,"context_line":"            kwargs[\u0027password\u0027] \u003d user_password"},{"line_number":40,"context_line":"        user \u003d self.users_client.create_user(**kwargs)[\u0027user\u0027]"},{"line_number":41,"context_line":"        # Delete the user at the end of the test"},{"line_number":42,"context_line":"        self.addCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":43,"context_line":"                        self.users_client.delete_user, user[\u0027id\u0027])"},{"line_number":44,"context_line":"        return user"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    @rbac_rule_validation.action(service\u003d\"keystone\","},{"line_number":47,"context_line":"                                 rule\u003d\"identity:create_user\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_2c28a299","line":44,"range":{"start_line":36,"start_character":4,"end_line":44,"end_character":19},"in_reply_to":"fa31d9ce_ef33ea11","updated":"2017-02-16 05:50:54.000000000","message":"No it\u0027s not in patrole\u0027s identity base. Instead it is defined in tempest identity base. But in tempest identity base it\u0027s is defined without \"call_and_ignore_notfound_ex\". That\u0027s why this method is defined.","commit_id":"453a6cace6fdecd31dc5b4429fa6bb76acb70daf"}]}
