)]}'
{"patrole_tempest_plugin/tests/api/compute/rbac_base.py":[{"author":{"_account_id":23185,"name":"Samantha Blanco","email":"samantha.blanco@att.com","username":"sblanco"},"change_message_id":"e7d71e5ea8160af0d1cb0fd939e77f9644392695","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        if \u0027admin\u0027 not in CONF.auth.tempest_roles:"},{"line_number":32,"context_line":"            raise cls.skipException("},{"line_number":33,"context_line":"                \"%s skipped because tempest roles is not admin\" % cls.__name__)"},{"line_number":34,"context_line":"        if not CONF.compute_feature_enabled.api_extensions:"},{"line_number":35,"context_line":"            raise cls.skipException("},{"line_number":36,"context_line":"                \u0027%s skipped as no compute extensions enabled\u0027 % cls.__name__)"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5a3905b3_10d3f3d5","line":34,"updated":"2017-01-24 15:43:23.000000000","message":"I think this should be in the relevant RBAC tests rather than in this class","commit_id":"00c70a0f8dd124beba68146b0a8ea5d9789f3d3a"},{"author":{"_account_id":20411,"name":"Julian","email":"julian.sy@att.com","username":"syjulian"},"change_message_id":"0757f41c732ce57ce0630e02310b20701e127c6b","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        if \u0027admin\u0027 not in CONF.auth.tempest_roles:"},{"line_number":32,"context_line":"            raise cls.skipException("},{"line_number":33,"context_line":"                \"%s skipped because tempest roles is not admin\" % cls.__name__)"},{"line_number":34,"context_line":"        if not CONF.compute_feature_enabled.api_extensions:"},{"line_number":35,"context_line":"            raise cls.skipException("},{"line_number":36,"context_line":"                \u0027%s skipped as no compute extensions enabled\u0027 % cls.__name__)"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5a3905b3_aa5e1610","line":34,"in_reply_to":"5a3905b3_10d3f3d5","updated":"2017-01-24 21:26:20.000000000","message":"Done","commit_id":"00c70a0f8dd124beba68146b0a8ea5d9789f3d3a"},{"author":{"_account_id":23185,"name":"Samantha Blanco","email":"samantha.blanco@att.com","username":"sblanco"},"change_message_id":"e7d71e5ea8160af0d1cb0fd939e77f9644392695","unresolved":false,"context_lines":[{"line_number":36,"context_line":"                \u0027%s skipped as no compute extensions enabled\u0027 % cls.__name__)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    @classmethod"},{"line_number":39,"context_line":"    def setup_clients(cls):"},{"line_number":40,"context_line":"        super(BaseV2ComputeRbacTest, cls).setup_clients()"},{"line_number":41,"context_line":"        cls.identity_client \u003d cls.os_adm.identity_client"},{"line_number":42,"context_line":"        cls.tenants_client \u003d cls.os_adm.tenants_client"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a3905b3_f0b4a782","line":39,"updated":"2017-01-24 15:43:23.000000000","message":"Are all of these clients necessary for all compute tests? If not, I think they should be moved to the relevant RBAC classes","commit_id":"00c70a0f8dd124beba68146b0a8ea5d9789f3d3a"},{"author":{"_account_id":20411,"name":"Julian","email":"julian.sy@att.com","username":"syjulian"},"change_message_id":"0757f41c732ce57ce0630e02310b20701e127c6b","unresolved":false,"context_lines":[{"line_number":36,"context_line":"                \u0027%s skipped as no compute extensions enabled\u0027 % cls.__name__)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    @classmethod"},{"line_number":39,"context_line":"    def setup_clients(cls):"},{"line_number":40,"context_line":"        super(BaseV2ComputeRbacTest, cls).setup_clients()"},{"line_number":41,"context_line":"        cls.identity_client \u003d cls.os_adm.identity_client"},{"line_number":42,"context_line":"        cls.tenants_client \u003d cls.os_adm.tenants_client"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a3905b3_ca99a2d2","line":39,"in_reply_to":"5a3905b3_f0b4a782","updated":"2017-01-24 21:26:20.000000000","message":"Done","commit_id":"00c70a0f8dd124beba68146b0a8ea5d9789f3d3a"},{"author":{"_account_id":23184,"name":"DavidPurcell","email":"d.purcell222@gmail.com","username":"DavidPurcell"},"change_message_id":"fc30bfcacf322c25c4b058f070af458a04c3dd38","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2017 at\u0026t"},{"line_number":2,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":3,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":4,"context_line":"#    a copy of the License at"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a3905b3_db4b355e","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":21},"updated":"2017-01-24 22:56:07.000000000","message":"Change to Copyright 2017 AT\u0026T Corporation.","commit_id":"0d0e22d8e73e558dc1d1e8bfc2d73d7bdb5bd846"},{"author":{"_account_id":20411,"name":"Julian","email":"julian.sy@att.com","username":"syjulian"},"change_message_id":"a1f52e3cd546dcef166397c113f1770a9d0b9f08","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2017 at\u0026t"},{"line_number":2,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":3,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":4,"context_line":"#    a copy of the License at"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a461143_66763240","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":21},"in_reply_to":"5a3905b3_db4b355e","updated":"2017-01-25 15:03:06.000000000","message":"Done","commit_id":"0d0e22d8e73e558dc1d1e8bfc2d73d7bdb5bd846"},{"author":{"_account_id":23185,"name":"Samantha Blanco","email":"samantha.blanco@att.com","username":"sblanco"},"change_message_id":"7b94ea5fd361c294e90e74b197bea51db28475aa","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    credentials \u003d [\u0027primary\u0027, \u0027admin\u0027]"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    def setUp(self):"},{"line_number":26,"context_line":"        super(BaseV2ComputeRbacTest, self).setUp()"},{"line_number":27,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dTrue)"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def tearDown(self):"},{"line_number":30,"context_line":"        super(BaseV2ComputeRbacTest, self).tearDown()"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a461143_1681194b","line":27,"range":{"start_line":25,"start_character":0,"end_line":27,"end_character":59},"updated":"2017-01-25 15:53:21.000000000","message":"Calling switch_role twice can lead to false test results and difficult bugs; please leave it at the beginning of each test","commit_id":"03c08740417008bb557842e43191a0ba5aeefa95"},{"author":{"_account_id":20411,"name":"Julian","email":"julian.sy@att.com","username":"syjulian"},"change_message_id":"b25c7b8b4fb59742c7523fc76a3e942193378941","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    credentials \u003d [\u0027primary\u0027, \u0027admin\u0027]"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    def setUp(self):"},{"line_number":26,"context_line":"        super(BaseV2ComputeRbacTest, self).setUp()"},{"line_number":27,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dTrue)"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def tearDown(self):"},{"line_number":30,"context_line":"        super(BaseV2ComputeRbacTest, self).tearDown()"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a461143_c469948d","line":27,"range":{"start_line":25,"start_character":0,"end_line":27,"end_character":59},"in_reply_to":"3a461143_1681194b","updated":"2017-01-25 18:51:31.000000000","message":"Done","commit_id":"03c08740417008bb557842e43191a0ba5aeefa95"},{"author":{"_account_id":23184,"name":"DavidPurcell","email":"d.purcell222@gmail.com","username":"DavidPurcell"},"change_message_id":"e3194e2d19dc9084236666f91a054ae53e9c7abd","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    credentials \u003d [\u0027primary\u0027, \u0027admin\u0027]"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    def setUp(self):"},{"line_number":26,"context_line":"        super(BaseV2ComputeRbacTest, self).setUp()"},{"line_number":27,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dTrue)"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def tearDown(self):"},{"line_number":30,"context_line":"        super(BaseV2ComputeRbacTest, self).tearDown()"},{"line_number":31,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dFalse)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    @classmethod"},{"line_number":34,"context_line":"    def skip_checks(cls):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a461143_d686b164","line":31,"range":{"start_line":25,"start_character":4,"end_line":31,"end_character":60},"updated":"2017-01-25 15:51:59.000000000","message":"The switch_role call needs to be before you call the superclass\u0027s teardown to ensure that the teardown is run with admin privileges.  I am also not sure how I feel about putting the switch_role in the base class.  My main concern is that the tearDown of the test case itself will now not be run with admin privileges if anything is added there.","commit_id":"03c08740417008bb557842e43191a0ba5aeefa95"},{"author":{"_account_id":20411,"name":"Julian","email":"julian.sy@att.com","username":"syjulian"},"change_message_id":"b25c7b8b4fb59742c7523fc76a3e942193378941","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    credentials \u003d [\u0027primary\u0027, \u0027admin\u0027]"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    def setUp(self):"},{"line_number":26,"context_line":"        super(BaseV2ComputeRbacTest, self).setUp()"},{"line_number":27,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dTrue)"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def tearDown(self):"},{"line_number":30,"context_line":"        super(BaseV2ComputeRbacTest, self).tearDown()"},{"line_number":31,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dFalse)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    @classmethod"},{"line_number":34,"context_line":"    def skip_checks(cls):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a461143_040abcd2","line":31,"range":{"start_line":25,"start_character":4,"end_line":31,"end_character":60},"in_reply_to":"3a461143_d686b164","updated":"2017-01-25 18:51:31.000000000","message":"Done","commit_id":"03c08740417008bb557842e43191a0ba5aeefa95"},{"author":{"_account_id":23184,"name":"DavidPurcell","email":"d.purcell222@gmail.com","username":"DavidPurcell"},"change_message_id":"a81df7905a1b3ea917c158f330c3fbb428bc0196","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        super(BaseV2ComputeRbacTest, cls).setup_clients()"},{"line_number":37,"context_line":"        cls.admin_client \u003d cls.os_admin.agents_client"},{"line_number":38,"context_line":"        cls.auth_provider \u003d cls.os.auth_provider"},{"line_number":39,"context_line":"        cls.client \u003d cls.os.limits_client"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a461143_04bb9cc5","line":39,"range":{"start_line":39,"start_character":8,"end_line":39,"end_character":41},"updated":"2017-01-25 18:57:41.000000000","message":"There is already a limits_client in the BaseV2ComputeTest that you are extending.","commit_id":"a8e792adc9ec02f77f6c2d11bad0edd34ee8e7f5"}],"patrole_tempest_plugin/tests/api/compute/test_absolute_limits_rbac.py":[{"author":{"_account_id":23185,"name":"Samantha Blanco","email":"samantha.blanco@att.com","username":"sblanco"},"change_message_id":"e7d71e5ea8160af0d1cb0fd939e77f9644392695","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class RBACAbsoluteLimitsTestJSON(rbac_base.BaseV2ComputeRbacTest):"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    credentials \u003d [\u0027admin\u0027, \u0027primary\u0027]"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def tearDown(self):"},{"line_number":30,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a3905b3_d0688bf7","line":27,"updated":"2017-01-24 15:43:23.000000000","message":"This is not necessary here","commit_id":"00c70a0f8dd124beba68146b0a8ea5d9789f3d3a"},{"author":{"_account_id":23185,"name":"Samantha Blanco","email":"samantha.blanco@att.com","username":"sblanco"},"change_message_id":"e7d71e5ea8160af0d1cb0fd939e77f9644392695","unresolved":false,"context_lines":[{"line_number":34,"context_line":"                                 rule\u003d\"os_compute_api:os-used-limits\")"},{"line_number":35,"context_line":"    @decorators.idempotent_id(\u00273fb60f83-9a5f-4fdd-89d9-26c3710844a1\u0027)"},{"line_number":36,"context_line":"    def test_used_limits_for_admin_rbac(self):"},{"line_number":37,"context_line":"        tenant_name \u003d data_utils.rand_name(name\u003d\u0027tenant\u0027)"},{"line_number":38,"context_line":"        self.tenants_client.create_tenant(name\u003dtenant_name,"},{"line_number":39,"context_line":"                                          enabled\u003dTrue)[\u0027tenant\u0027]"},{"line_number":40,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dTrue)"},{"line_number":41,"context_line":"        self.client.show_limits()"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a3905b3_13593d35","line":39,"range":{"start_line":37,"start_character":0,"end_line":39,"end_character":65},"updated":"2017-01-24 15:43:23.000000000","message":"Why is this being created if it\u0027s not being used? If it is being used, it needs to be cleaned up","commit_id":"00c70a0f8dd124beba68146b0a8ea5d9789f3d3a"},{"author":{"_account_id":23184,"name":"DavidPurcell","email":"d.purcell222@gmail.com","username":"DavidPurcell"},"change_message_id":"fc30bfcacf322c25c4b058f070af458a04c3dd38","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2017 at\u0026t"},{"line_number":2,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":3,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":4,"context_line":"#    a copy of the License at"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a3905b3_9bb8cd2c","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":21},"updated":"2017-01-24 22:56:07.000000000","message":"Change this to Copyright 2017 AT\u0026T Corporation.","commit_id":"0d0e22d8e73e558dc1d1e8bfc2d73d7bdb5bd846"},{"author":{"_account_id":20411,"name":"Julian","email":"julian.sy@att.com","username":"syjulian"},"change_message_id":"a1f52e3cd546dcef166397c113f1770a9d0b9f08","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2017 at\u0026t"},{"line_number":2,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":3,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":4,"context_line":"#    a copy of the License at"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a461143_86731e4d","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":21},"in_reply_to":"5a3905b3_9bb8cd2c","updated":"2017-01-25 15:03:06.000000000","message":"Done","commit_id":"0d0e22d8e73e558dc1d1e8bfc2d73d7bdb5bd846"},{"author":{"_account_id":23184,"name":"DavidPurcell","email":"d.purcell222@gmail.com","username":"DavidPurcell"},"change_message_id":"a81df7905a1b3ea917c158f330c3fbb428bc0196","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    @decorators.idempotent_id(\u00273fb60f83-9a5f-4fdd-89d9-26c3710844a1\u0027)"},{"line_number":45,"context_line":"    def test_used_limits_for_admin_rbac(self):"},{"line_number":46,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dTrue)"},{"line_number":47,"context_line":"        self.client.show_limits()"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a461143_e403f074","line":47,"range":{"start_line":47,"start_character":8,"end_line":47,"end_character":33},"updated":"2017-01-25 18:57:41.000000000","message":"I would suggest directly using the limits_client in the BaseV2ComputeTest.","commit_id":"a8e792adc9ec02f77f6c2d11bad0edd34ee8e7f5"}]}
