)]}'
{"tempest/api/volume/admin/test_volume_quotas.py":[{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"fa174e3b3a7f3bf9863e9c4bde2786bdf41bf2b6","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        self.assertEqual(volume_default, quota_set_new[\u0027volumes\u0027])"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"    @decorators.idempotent_id(\u00278911036f-9d54-4720-80cc-a1c9796a8805\u0027)"},{"line_number":142,"context_line":"    def test_quota_usage_after_volume_transfer(self):"},{"line_number":143,"context_line":"        # Create a volume for transfer"},{"line_number":144,"context_line":"        volume \u003d self.create_volume()"},{"line_number":145,"context_line":"        self.addCleanup(self.delete_volume,"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff82abbf_7ac0cfe1","side":"PARENT","line":142,"range":{"start_line":142,"start_character":8,"end_line":142,"end_character":46},"updated":"2017-11-29 20:43:19.000000000","message":"This test doesn\u0027t clean up after itself so the quotas for primary/alt credentials will be affected. \n\nSee L182-188 where it\u0027s clear that the quotas have been reduced.","commit_id":"8d0a5b68769c1b49175c8206efada875a496dde8"},{"author":{"_account_id":22636,"name":"Cliff Parsons","email":"cliffhparsons@aol.com","username":"cliffparsons"},"change_message_id":"3f568c771d6441544bed38ba1c6b6f5848a38cd4","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        self.assertEqual(volume_default, quota_set_new[\u0027volumes\u0027])"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"    @decorators.idempotent_id(\u00278911036f-9d54-4720-80cc-a1c9796a8805\u0027)"},{"line_number":142,"context_line":"    def test_quota_usage_after_volume_transfer(self):"},{"line_number":143,"context_line":"        # Create a volume for transfer"},{"line_number":144,"context_line":"        volume \u003d self.create_volume()"},{"line_number":145,"context_line":"        self.addCleanup(self.delete_volume,"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff82abbf_286e7dc8","side":"PARENT","line":142,"range":{"start_line":142,"start_character":8,"end_line":142,"end_character":46},"in_reply_to":"ff82abbf_7ac0cfe1","updated":"2017-11-29 21:41:13.000000000","message":"I don\u0027t believe it\u0027s a problem because the \"in_use\" counters will be decremented when the volume is deleted. I ran the test several times in a row and saw that the quotas always go back to the original values.","commit_id":"8d0a5b68769c1b49175c8206efada875a496dde8"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"613be338ab666aee8e55b4fb0f3e850f07595440","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    @decorators.idempotent_id(\u00273d45c99e-cc42-4424-a56e-5cbd212b63a6\u0027)"},{"line_number":62,"context_line":"    def test_update_all_quota_resources_for_tenant(self):"},{"line_number":63,"context_line":"        # Admin can update all the resource quota limits for a tenant"},{"line_number":64,"context_line":"        default_quota_set \u003d self.admin_quotas_client.show_default_quota_set("},{"line_number":65,"context_line":"            self.demo_tenant_id)[\u0027quota_set\u0027]"},{"line_number":66,"context_line":"        new_quota_set \u003d {\u0027gigabytes\u0027: 1009,"},{"line_number":67,"context_line":"                         \u0027volumes\u0027: 11,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f91af0f_ffb536ce","line":64,"range":{"start_line":64,"start_character":53,"end_line":64,"end_character":75},"updated":"2018-01-05 06:43:41.000000000","message":"\"default quota set\" of a pre-defined project may not be equal to its \"quota set\", so, if we have ever set quota set for the pre-defined project,\nafter the testcase its quota set will be reset to \"default quota set\".","commit_id":"1cc6d5f9c56b0db96679b122c292588577e33d46"},{"author":{"_account_id":22636,"name":"Cliff Parsons","email":"cliffhparsons@aol.com","username":"cliffparsons"},"change_message_id":"46a56cf9e19c68cab9fc80e7be5db7024569d082","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    @decorators.idempotent_id(\u00273d45c99e-cc42-4424-a56e-5cbd212b63a6\u0027)"},{"line_number":62,"context_line":"    def test_update_all_quota_resources_for_tenant(self):"},{"line_number":63,"context_line":"        # Admin can update all the resource quota limits for a tenant"},{"line_number":64,"context_line":"        default_quota_set \u003d self.admin_quotas_client.show_default_quota_set("},{"line_number":65,"context_line":"            self.demo_tenant_id)[\u0027quota_set\u0027]"},{"line_number":66,"context_line":"        new_quota_set \u003d {\u0027gigabytes\u0027: 1009,"},{"line_number":67,"context_line":"                         \u0027volumes\u0027: 11,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f91af0f_3d44f4b6","line":64,"range":{"start_line":64,"start_character":53,"end_line":64,"end_character":75},"in_reply_to":"9f91af0f_ffb536ce","updated":"2018-01-05 22:51:59.000000000","message":"Great catch. I will be uploading a fix for this very soon.","commit_id":"1cc6d5f9c56b0db96679b122c292588577e33d46"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"38915db22ee41fe80c7d7b942f13bc4f89c5846d","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        new_quota_usage \u003d self.admin_quotas_client.show_quota_set("},{"line_number":108,"context_line":"            self.demo_tenant_id, params\u003d{\u0027usage\u0027: True})[\u0027quota_set\u0027]"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        self.assertEqual(quota_usage[\u0027volumes\u0027][\u0027in_use\u0027] + 1,"},{"line_number":111,"context_line":"                         new_quota_usage[\u0027volumes\u0027][\u0027in_use\u0027])"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        self.assertEqual(quota_usage[\u0027gigabytes\u0027][\u0027in_use\u0027] +"},{"line_number":114,"context_line":"                         volume[\"size\"],"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f91af0f_04214f9f","line":111,"range":{"start_line":110,"start_character":0,"end_line":111,"end_character":62},"updated":"2018-01-10 07:54:09.000000000","message":"ditto","commit_id":"44b56b65d728239677bd1bb819877cca17f8f901"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"1379e3f16ec0efbd46ffea75f0137667e471fec1","unresolved":false,"context_lines":[{"line_number":118,"context_line":"        # Admin can delete the resource quota set for a project"},{"line_number":119,"context_line":"        project_name \u003d data_utils.rand_name(\u0027quota_tenant\u0027)"},{"line_number":120,"context_line":"        description \u003d data_utils.rand_name(\u0027desc_\u0027)"},{"line_number":121,"context_line":"        project \u003d identity.identity_utils(self.os_admin).create_project("},{"line_number":122,"context_line":"            project_name, description\u003ddescription)"},{"line_number":123,"context_line":"        project_id \u003d project[\u0027id\u0027]"},{"line_number":124,"context_line":"        self.addCleanup(identity.identity_utils(self.os_admin).delete_project,"},{"line_number":125,"context_line":"                        project_id)"},{"line_number":126,"context_line":"        quota_set_default \u003d self.admin_quotas_client.show_default_quota_set("},{"line_number":127,"context_line":"            project_id)[\u0027quota_set\u0027]"},{"line_number":128,"context_line":"        volume_default \u003d quota_set_default[\u0027volumes\u0027]"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f7c97a3_77254c5b","line":125,"range":{"start_line":121,"start_character":8,"end_line":125,"end_character":35},"updated":"2018-06-01 00:31:02.000000000","message":"This is creating a project, which \"is a big problem if your cluster has an immutable user source such as LDAP.\"\n\nIf my understanding here is correct, this test should be in a separate class below to minimize blacklisting of this test in LDAP-backed clouds.","commit_id":"0eea773009635ace47ee55d2349e16efa7b41782"},{"author":{"_account_id":22636,"name":"Cliff Parsons","email":"cliffhparsons@aol.com","username":"cliffparsons"},"change_message_id":"88a59829d2d2888debf0a73f47635b001cf5a84e","unresolved":false,"context_lines":[{"line_number":118,"context_line":"        # Admin can delete the resource quota set for a project"},{"line_number":119,"context_line":"        project_name \u003d data_utils.rand_name(\u0027quota_tenant\u0027)"},{"line_number":120,"context_line":"        description \u003d data_utils.rand_name(\u0027desc_\u0027)"},{"line_number":121,"context_line":"        project \u003d identity.identity_utils(self.os_admin).create_project("},{"line_number":122,"context_line":"            project_name, description\u003ddescription)"},{"line_number":123,"context_line":"        project_id \u003d project[\u0027id\u0027]"},{"line_number":124,"context_line":"        self.addCleanup(identity.identity_utils(self.os_admin).delete_project,"},{"line_number":125,"context_line":"                        project_id)"},{"line_number":126,"context_line":"        quota_set_default \u003d self.admin_quotas_client.show_default_quota_set("},{"line_number":127,"context_line":"            project_id)[\u0027quota_set\u0027]"},{"line_number":128,"context_line":"        volume_default \u003d quota_set_default[\u0027volumes\u0027]"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f7c97a3_7f22f6a4","line":125,"range":{"start_line":121,"start_character":8,"end_line":125,"end_character":35},"in_reply_to":"5f7c97a3_77254c5b","updated":"2018-06-01 14:54:42.000000000","message":"Thanks, I didn\u0027t see that before.  I\u0027ll separate this test into a separate class like suggested, and require it to run in tenant isolation.","commit_id":"0eea773009635ace47ee55d2349e16efa7b41782"},{"author":{"_account_id":22636,"name":"Cliff Parsons","email":"cliffhparsons@aol.com","username":"cliffparsons"},"change_message_id":"a583aec1d6c08f579e0b5c96d3ad9b1efaede2ed","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        # Admin can delete the resource quota set for a project"},{"line_number":194,"context_line":"        project_name \u003d data_utils.rand_name(\u0027quota_tenant\u0027)"},{"line_number":195,"context_line":"        description \u003d data_utils.rand_name(\u0027desc_\u0027)"},{"line_number":196,"context_line":"        project \u003d identity.identity_utils(self.os_admin).create_project("},{"line_number":197,"context_line":"            project_name, description\u003ddescription)"},{"line_number":198,"context_line":"        project_id \u003d project[\u0027id\u0027]"},{"line_number":199,"context_line":"        self.addCleanup(identity.identity_utils(self.os_admin).delete_project,"},{"line_number":200,"context_line":"                        project_id)"},{"line_number":201,"context_line":"        quota_set_default \u003d self.admin_quotas_client.show_default_quota_set("},{"line_number":202,"context_line":"            project_id)[\u0027quota_set\u0027]"},{"line_number":203,"context_line":"        volume_default \u003d quota_set_default[\u0027volumes\u0027]"}],"source_content_type":"text/x-python","patch_set":18,"id":"5f7c97a3_9fed9126","line":200,"range":{"start_line":196,"start_character":0,"end_line":200,"end_character":35},"updated":"2018-06-01 15:51:13.000000000","message":"Another way this could be done is to delete the quota on the demo_tenant as admin....not really sure why a project needed to be created. Any concerns with deleting the quota on the demo_tenant, and then restoring the previous quota values as a cleanup step?","commit_id":"b15805c77d613a053ce5a15b2bbd9a8178536160"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"48508e4c61ada37c0fbd628576555994b982bbe3","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            self.demo_tenant_id,"},{"line_number":73,"context_line":"            **new_quota_set)[\u0027quota_set\u0027]"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        cleanup_quota_set \u003d dict("},{"line_number":76,"context_line":"            (k, v) for k, v in original_quota_set.items()"},{"line_number":77,"context_line":"            if k in QUOTA_KEYS)"},{"line_number":78,"context_line":"        self.addCleanup(self.admin_quotas_client.update_quota_set,"},{"line_number":79,"context_line":"                        self.demo_tenant_id, **cleanup_quota_set)"},{"line_number":80,"context_line":"        # test that the specific values we set are actually in"}],"source_content_type":"text/x-python","patch_set":24,"id":"5f7c97a3_9fe44d3e","line":77,"range":{"start_line":75,"start_character":8,"end_line":77,"end_character":31},"updated":"2018-06-06 22:54:26.000000000","message":"If you define this in resource_setup you can then reference it here and on L103 below.","commit_id":"f748ee5719a76702b32ee2f727c7f2796a84cce7"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"c7cdf900f637d789bd18a362f12f7549c1a48757","unresolved":false,"context_lines":[{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        # Save the current quotas on the demo project, for the purpose"},{"line_number":100,"context_line":"        # of cleanup."},{"line_number":101,"context_line":"        original_quota_set \u003d self.admin_quotas_client.show_quota_set("},{"line_number":102,"context_line":"            self.demo_tenant_id)[\u0027quota_set\u0027]"},{"line_number":103,"context_line":"        cleanup_quota_set \u003d dict("},{"line_number":104,"context_line":"            (k, v) for k, v in original_quota_set.items()"}],"source_content_type":"text/x-python","patch_set":24,"id":"5f7c97a3_b0012a09","line":101,"range":{"start_line":101,"start_character":34,"end_line":101,"end_character":53},"updated":"2018-06-07 14:12:45.000000000","message":"nit: I believe this can just be the os_primary client: https://github.com/openstack/cinder/blob/c308b281dcef15a96b7f98593e298c1b9e0201b3/cinder/policies/quotas.py#L29\n\nBut I\u0027m OK with this since this is just clean up code, not really intended for workflow validation.\n\nOn second glance this was already here so this can be addressed in a separate PS.","commit_id":"f748ee5719a76702b32ee2f727c7f2796a84cce7"}],"tempest/api/volume/admin/test_volume_quotas_negative.py":[{"author":{"_account_id":20378,"name":"Trevor McCasland","email":"TM2086@att.com","username":"twm2016"},"change_message_id":"486b7e3f96fe29c59de7630e23a31aa1d93a6742","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        # they are created using utility wrapper methods."},{"line_number":49,"context_line":"        cls.volume \u003d cls.create_volume()"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    @classmethod"},{"line_number":52,"context_line":"    def resource_cleanup(cls):"},{"line_number":53,"context_line":"        # Reset quotas to original values"},{"line_number":54,"context_line":"        cls.admin_quotas_client.update_quota_set("},{"line_number":55,"context_line":"            cls.demo_tenant_id,"},{"line_number":56,"context_line":"            **cls.default_quota_set)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        super(BaseVolumeQuotasNegativeTestJSON, cls).resource_cleanup()"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    @decorators.attr(type\u003d\u0027negative\u0027)"},{"line_number":61,"context_line":"    @decorators.idempotent_id(\u0027bf544854-d62a-47f2-a681-90f7a47d86b6\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff82abbf_96def1d7","line":58,"range":{"start_line":51,"start_character":4,"end_line":58,"end_character":71},"updated":"2017-11-28 19:34:15.000000000","message":"is it possible to use addClassResourceCleanup instead? I believe it is preferred, https://github.com/openstack/tempest/blob/master/HACKING.rst#test-fixtures-and-resources","commit_id":"65b4f1a5822380b1969f1a25a1b6bd1f709b8fbc"},{"author":{"_account_id":22636,"name":"Cliff Parsons","email":"cliffhparsons@aol.com","username":"cliffparsons"},"change_message_id":"1ca2ab7bbe6ccda9033c6eea2041e999268230f1","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        # they are created using utility wrapper methods."},{"line_number":49,"context_line":"        cls.volume \u003d cls.create_volume()"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    @classmethod"},{"line_number":52,"context_line":"    def resource_cleanup(cls):"},{"line_number":53,"context_line":"        # Reset quotas to original values"},{"line_number":54,"context_line":"        cls.admin_quotas_client.update_quota_set("},{"line_number":55,"context_line":"            cls.demo_tenant_id,"},{"line_number":56,"context_line":"            **cls.default_quota_set)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        super(BaseVolumeQuotasNegativeTestJSON, cls).resource_cleanup()"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    @decorators.attr(type\u003d\u0027negative\u0027)"},{"line_number":61,"context_line":"    @decorators.idempotent_id(\u0027bf544854-d62a-47f2-a681-90f7a47d86b6\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff82abbf_01e376da","line":58,"range":{"start_line":51,"start_character":4,"end_line":58,"end_character":71},"in_reply_to":"ff82abbf_1ec4373f","updated":"2017-11-28 22:00:41.000000000","message":"I will give it a shot.","commit_id":"65b4f1a5822380b1969f1a25a1b6bd1f709b8fbc"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"4941974e5da1df699b76ca3270eda6dc3a363d22","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        # they are created using utility wrapper methods."},{"line_number":49,"context_line":"        cls.volume \u003d cls.create_volume()"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    @classmethod"},{"line_number":52,"context_line":"    def resource_cleanup(cls):"},{"line_number":53,"context_line":"        # Reset quotas to original values"},{"line_number":54,"context_line":"        cls.admin_quotas_client.update_quota_set("},{"line_number":55,"context_line":"            cls.demo_tenant_id,"},{"line_number":56,"context_line":"            **cls.default_quota_set)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        super(BaseVolumeQuotasNegativeTestJSON, cls).resource_cleanup()"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    @decorators.attr(type\u003d\u0027negative\u0027)"},{"line_number":61,"context_line":"    @decorators.idempotent_id(\u0027bf544854-d62a-47f2-a681-90f7a47d86b6\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff82abbf_1ec4373f","line":58,"range":{"start_line":51,"start_character":4,"end_line":58,"end_character":71},"in_reply_to":"ff82abbf_96def1d7","updated":"2017-11-28 21:09:25.000000000","message":"++","commit_id":"65b4f1a5822380b1969f1a25a1b6bd1f709b8fbc"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"613be338ab666aee8e55b4fb0f3e850f07595440","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        # to restore the quotas to their original values after the tests"},{"line_number":37,"context_line":"        # from this class are done. This is needed just in case Tempest is"},{"line_number":38,"context_line":"        # configured to use pre-provisioned projects/user accounts."},{"line_number":39,"context_line":"        cls.default_quota_set \u003d (cls.admin_quotas_client.show_quota_set("},{"line_number":40,"context_line":"            cls.demo_tenant_id)[\u0027quota_set\u0027])"},{"line_number":41,"context_line":"        cls.addClassResourceCleanup(cls.admin_quotas_client.update_quota_set,"},{"line_number":42,"context_line":"                                    cls.demo_tenant_id,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f91af0f_7fc1262e","line":39,"range":{"start_line":39,"start_character":12,"end_line":39,"end_character":29},"updated":"2018-01-05 06:43:41.000000000","message":"how about naming it \"original_quota_set\" or \"old_quota_set\"?\nbesides, no need to define it as instance variable.","commit_id":"1cc6d5f9c56b0db96679b122c292588577e33d46"},{"author":{"_account_id":22636,"name":"Cliff Parsons","email":"cliffhparsons@aol.com","username":"cliffparsons"},"change_message_id":"46a56cf9e19c68cab9fc80e7be5db7024569d082","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        # to restore the quotas to their original values after the tests"},{"line_number":37,"context_line":"        # from this class are done. This is needed just in case Tempest is"},{"line_number":38,"context_line":"        # configured to use pre-provisioned projects/user accounts."},{"line_number":39,"context_line":"        cls.default_quota_set \u003d (cls.admin_quotas_client.show_quota_set("},{"line_number":40,"context_line":"            cls.demo_tenant_id)[\u0027quota_set\u0027])"},{"line_number":41,"context_line":"        cls.addClassResourceCleanup(cls.admin_quotas_client.update_quota_set,"},{"line_number":42,"context_line":"                                    cls.demo_tenant_id,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f91af0f_9d0e608b","line":39,"range":{"start_line":39,"start_character":12,"end_line":39,"end_character":29},"in_reply_to":"9f91af0f_7fc1262e","updated":"2018-01-05 22:51:59.000000000","message":"Makes sense.  Will rename to original_quota_set.","commit_id":"1cc6d5f9c56b0db96679b122c292588577e33d46"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"24e0d0045ee587bc5b61800971b5f1b6413fa487","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        # to restore the quotas to their original values after the tests"},{"line_number":37,"context_line":"        # from this class are done. This is needed just in case Tempest is"},{"line_number":38,"context_line":"        # configured to use pre-provisioned projects/user accounts."},{"line_number":39,"context_line":"        cls.original_quota_set \u003d (cls.admin_quotas_client.show_quota_set("},{"line_number":40,"context_line":"            cls.demo_tenant_id)[\u0027quota_set\u0027])"},{"line_number":41,"context_line":"        cls.addClassResourceCleanup(cls.admin_quotas_client.update_quota_set,"},{"line_number":42,"context_line":"                                    cls.demo_tenant_id,"}],"source_content_type":"text/x-python","patch_set":22,"id":"5f7c97a3_1cae2798","line":39,"updated":"2018-06-06 00:28:22.000000000","message":"You\u0027re getting an error here: http://logs.openstack.org/41/523241/22/check/legacy-tempest-dsvm-neutron-full-ocata/6738b4f/job-output.txt.gz#_2018-06-04_15_47_10_811443\n\nAlso see other error I post in next file. So there\u0027s some instability to this change.","commit_id":"2c23a4097229d45493d039e81977525ee29e5b6a"}],"tempest/api/volume/admin/test_volume_snapshot_quotas_negative.py":[{"author":{"_account_id":20378,"name":"Trevor McCasland","email":"TM2086@att.com","username":"twm2016"},"change_message_id":"486b7e3f96fe29c59de7630e23a31aa1d93a6742","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        cls.volume \u003d cls.create_volume()"},{"line_number":58,"context_line":"        cls.snapshot \u003d cls.create_snapshot(volume_id\u003dcls.volume[\u0027id\u0027])"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    @classmethod"},{"line_number":61,"context_line":"    def resource_cleanup(cls):"},{"line_number":62,"context_line":"        # Reset quotas to original values"},{"line_number":63,"context_line":"        cls.admin_quotas_client.update_quota_set("},{"line_number":64,"context_line":"            cls.demo_tenant_id,"},{"line_number":65,"context_line":"            **cls.default_quota_set)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        super(VolumeSnapshotQuotasNegativeTestJSON, cls).resource_cleanup()"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    @decorators.attr(type\u003d\u0027negative\u0027)"},{"line_number":70,"context_line":"    @decorators.idempotent_id(\u002702bbf63f-6c05-4357-9d98-2926a94064ff\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff82abbf_16ec218d","line":67,"range":{"start_line":60,"start_character":4,"end_line":67,"end_character":75},"updated":"2017-11-28 19:34:15.000000000","message":"same here.. can you use addClassResourceCleanup ?","commit_id":"65b4f1a5822380b1969f1a25a1b6bd1f709b8fbc"},{"author":{"_account_id":22636,"name":"Cliff Parsons","email":"cliffhparsons@aol.com","username":"cliffparsons"},"change_message_id":"1ca2ab7bbe6ccda9033c6eea2041e999268230f1","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        cls.volume \u003d cls.create_volume()"},{"line_number":58,"context_line":"        cls.snapshot \u003d cls.create_snapshot(volume_id\u003dcls.volume[\u0027id\u0027])"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    @classmethod"},{"line_number":61,"context_line":"    def resource_cleanup(cls):"},{"line_number":62,"context_line":"        # Reset quotas to original values"},{"line_number":63,"context_line":"        cls.admin_quotas_client.update_quota_set("},{"line_number":64,"context_line":"            cls.demo_tenant_id,"},{"line_number":65,"context_line":"            **cls.default_quota_set)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        super(VolumeSnapshotQuotasNegativeTestJSON, cls).resource_cleanup()"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    @decorators.attr(type\u003d\u0027negative\u0027)"},{"line_number":70,"context_line":"    @decorators.idempotent_id(\u002702bbf63f-6c05-4357-9d98-2926a94064ff\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff82abbf_81cea657","line":67,"range":{"start_line":60,"start_character":4,"end_line":67,"end_character":75},"in_reply_to":"ff82abbf_16ec218d","updated":"2017-11-28 22:00:41.000000000","message":"yep, will try it","commit_id":"65b4f1a5822380b1969f1a25a1b6bd1f709b8fbc"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"613be338ab666aee8e55b4fb0f3e850f07595440","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        # to restore the quotas to their original values after the tests"},{"line_number":43,"context_line":"        # from this class are done. This is needed just in case Tempest is"},{"line_number":44,"context_line":"        # configured to use pre-provisioned projects/user accounts."},{"line_number":45,"context_line":"        cls.default_quota_set \u003d (cls.admin_quotas_client.show_quota_set("},{"line_number":46,"context_line":"            cls.demo_tenant_id)[\u0027quota_set\u0027])"},{"line_number":47,"context_line":"        cls.addClassResourceCleanup(cls.admin_quotas_client.update_quota_set,"},{"line_number":48,"context_line":"                                    cls.demo_tenant_id,"},{"line_number":49,"context_line":"                                    **cls.default_quota_set)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        cls.default_volume_size \u003d CONF.volume.volume_size"},{"line_number":52,"context_line":"        cls.shared_quota_set \u003d {\u0027gigabytes\u0027: 3 * cls.default_volume_size,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f91af0f_5fdb021a","line":49,"range":{"start_line":45,"start_character":0,"end_line":49,"end_character":60},"updated":"2018-01-05 06:43:41.000000000","message":"ditto","commit_id":"1cc6d5f9c56b0db96679b122c292588577e33d46"},{"author":{"_account_id":22636,"name":"Cliff Parsons","email":"cliffhparsons@aol.com","username":"cliffparsons"},"change_message_id":"46a56cf9e19c68cab9fc80e7be5db7024569d082","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        # to restore the quotas to their original values after the tests"},{"line_number":43,"context_line":"        # from this class are done. This is needed just in case Tempest is"},{"line_number":44,"context_line":"        # configured to use pre-provisioned projects/user accounts."},{"line_number":45,"context_line":"        cls.default_quota_set \u003d (cls.admin_quotas_client.show_quota_set("},{"line_number":46,"context_line":"            cls.demo_tenant_id)[\u0027quota_set\u0027])"},{"line_number":47,"context_line":"        cls.addClassResourceCleanup(cls.admin_quotas_client.update_quota_set,"},{"line_number":48,"context_line":"                                    cls.demo_tenant_id,"},{"line_number":49,"context_line":"                                    **cls.default_quota_set)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        cls.default_volume_size \u003d CONF.volume.volume_size"},{"line_number":52,"context_line":"        cls.shared_quota_set \u003d {\u0027gigabytes\u0027: 3 * cls.default_volume_size,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f91af0f_bd11e4ae","line":49,"range":{"start_line":45,"start_character":0,"end_line":49,"end_character":60},"in_reply_to":"9f91af0f_5fdb021a","updated":"2018-01-05 22:51:59.000000000","message":"Makes sense.  Will rename to original_quota_set.","commit_id":"1cc6d5f9c56b0db96679b122c292588577e33d46"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"24e0d0045ee587bc5b61800971b5f1b6413fa487","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        # to restore the quotas to their original values after the tests"},{"line_number":43,"context_line":"        # from this class are done. This is needed just in case Tempest is"},{"line_number":44,"context_line":"        # configured to use pre-provisioned projects/user accounts."},{"line_number":45,"context_line":"        cls.original_quota_set \u003d (cls.admin_quotas_client.show_quota_set("},{"line_number":46,"context_line":"            cls.demo_tenant_id)[\u0027quota_set\u0027])"},{"line_number":47,"context_line":"        cls.addClassResourceCleanup(cls.admin_quotas_client.update_quota_set,"},{"line_number":48,"context_line":"                                    cls.demo_tenant_id,"}],"source_content_type":"text/x-python","patch_set":22,"id":"5f7c97a3_dc9d0f58","line":45,"updated":"2018-06-06 00:28:22.000000000","message":"Error related to this here: http://logs.openstack.org/41/523241/18/check/tempest-full/4e2733d/job-output.txt.gz#_2018-06-01_16_32_08_809334","commit_id":"2c23a4097229d45493d039e81977525ee29e5b6a"}],"tempest/api/volume/test_volume_absolute_limits.py":[{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"4941974e5da1df699b76ca3270eda6dc3a363d22","unresolved":false,"context_lines":[{"line_number":24,"context_line":"# NOTE(zhufl): This inherits from BaseVolumeAdminTest because"},{"line_number":25,"context_line":"# it requires force_tenant_isolation\u003dTrue, which need admin"},{"line_number":26,"context_line":"# credentials to create non-admin users for the tests."},{"line_number":27,"context_line":"class AbsoluteLimitsTests(base.BaseVolumeAdminTest):  # noqa"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    # avoid existing volumes of pre-defined tenant"},{"line_number":30,"context_line":"    force_tenant_isolation \u003d True"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff82abbf_5ece3f63","side":"PARENT","line":27,"range":{"start_line":27,"start_character":31,"end_line":27,"end_character":50},"updated":"2017-11-28 21:09:25.000000000","message":"This can be changed to the non-admin class because flag that you removed was the reason why it was admin and admin client isn\u0027t used below.","commit_id":"8d0a5b68769c1b49175c8206efada875a496dde8"},{"author":{"_account_id":22636,"name":"Cliff Parsons","email":"cliffhparsons@aol.com","username":"cliffparsons"},"change_message_id":"1ca2ab7bbe6ccda9033c6eea2041e999268230f1","unresolved":false,"context_lines":[{"line_number":24,"context_line":"# NOTE(zhufl): This inherits from BaseVolumeAdminTest because"},{"line_number":25,"context_line":"# it requires force_tenant_isolation\u003dTrue, which need admin"},{"line_number":26,"context_line":"# credentials to create non-admin users for the tests."},{"line_number":27,"context_line":"class AbsoluteLimitsTests(base.BaseVolumeAdminTest):  # noqa"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    # avoid existing volumes of pre-defined tenant"},{"line_number":30,"context_line":"    force_tenant_isolation \u003d True"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff82abbf_e191b248","side":"PARENT","line":27,"range":{"start_line":27,"start_character":31,"end_line":27,"end_character":50},"in_reply_to":"ff82abbf_5ece3f63","updated":"2017-11-28 22:00:41.000000000","message":"Good catch! I will correct this.","commit_id":"8d0a5b68769c1b49175c8206efada875a496dde8"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"613be338ab666aee8e55b4fb0f3e850f07595440","unresolved":false,"context_lines":[{"line_number":26,"context_line":"# credentials to create non-admin users for the tests."},{"line_number":27,"context_line":"class AbsoluteLimitsTests(base.BaseVolumeAdminTest):  # noqa"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    # avoid existing volumes of pre-defined tenant"},{"line_number":30,"context_line":"    force_tenant_isolation \u003d True"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @classmethod"},{"line_number":33,"context_line":"    def resource_setup(cls):"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f91af0f_7fefe6af","side":"PARENT","line":30,"range":{"start_line":29,"start_character":4,"end_line":30,"end_character":33},"updated":"2018-01-05 06:43:41.000000000","message":"This is needed because pre-defined project may already have some volumes, so if you want to remove this,\nyou may need to show_limits before create_volume, and show_limits after create_volume, check whether the\nvalue delta is correct.","commit_id":"d4aba83b0304265462e216df4e4c251dede7e645"},{"author":{"_account_id":22636,"name":"Cliff Parsons","email":"cliffhparsons@aol.com","username":"cliffparsons"},"change_message_id":"46a56cf9e19c68cab9fc80e7be5db7024569d082","unresolved":false,"context_lines":[{"line_number":26,"context_line":"# credentials to create non-admin users for the tests."},{"line_number":27,"context_line":"class AbsoluteLimitsTests(base.BaseVolumeAdminTest):  # noqa"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    # avoid existing volumes of pre-defined tenant"},{"line_number":30,"context_line":"    force_tenant_isolation \u003d True"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @classmethod"},{"line_number":33,"context_line":"    def resource_setup(cls):"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f91af0f_fd7c4cec","side":"PARENT","line":30,"range":{"start_line":29,"start_character":4,"end_line":30,"end_character":33},"in_reply_to":"9f91af0f_7fefe6af","updated":"2018-01-05 22:51:59.000000000","message":"Agreed. I have implemented this and will upload it very soon.","commit_id":"d4aba83b0304265462e216df4e4c251dede7e645"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"38915db22ee41fe80c7d7b942f13bc4f89c5846d","unresolved":false,"context_lines":[{"line_number":45,"context_line":"            )[\u0027limits\u0027][\u0027absolute\u0027]"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        # verify volume limits and defaults per tenants"},{"line_number":48,"context_line":"        self.assertEqual(absolute_limits[\u0027totalGigabytesUsed\u0027],"},{"line_number":49,"context_line":"                         self.original_absolute_limits[\u0027totalGigabytesUsed\u0027] +"},{"line_number":50,"context_line":"                         CONF.volume.volume_size)"},{"line_number":51,"context_line":"        self.assertEqual(absolute_limits[\u0027totalVolumesUsed\u0027],"},{"line_number":52,"context_line":"                         self.original_absolute_limits[\u0027totalVolumesUsed\u0027] + 1)"},{"line_number":53,"context_line":"        self.assertEqual(absolute_limits[\u0027totalSnapshotsUsed\u0027],"},{"line_number":54,"context_line":"                         self.original_absolute_limits[\u0027totalSnapshotsUsed\u0027])"},{"line_number":55,"context_line":"        self.assertEqual(absolute_limits[\u0027totalBackupsUsed\u0027],"},{"line_number":56,"context_line":"                         self.original_absolute_limits[\u0027totalBackupsUsed\u0027])"},{"line_number":57,"context_line":"        self.assertEqual(absolute_limits[\u0027totalBackupGigabytesUsed\u0027],"},{"line_number":58,"context_line":"                         self.original_absolute_limits["},{"line_number":59,"context_line":"                             \u0027totalBackupGigabytesUsed\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f91af0f_c974e0d1","line":59,"range":{"start_line":48,"start_character":0,"end_line":59,"end_character":57},"updated":"2018-01-10 07:54:09.000000000","message":"This may accidentally fail if there are other testcases running at same time. \nBut without \"force_tenant_isolation \u003d True\" it seems we have no way to absolutely avoid it.\nSo let\u0027s just wait for other opinions.","commit_id":"44b56b65d728239677bd1bb819877cca17f8f901"},{"author":{"_account_id":22636,"name":"Cliff Parsons","email":"cliffhparsons@aol.com","username":"cliffparsons"},"change_message_id":"e11fb3134d93721bd799d5d3807ee1b032c90b16","unresolved":false,"context_lines":[{"line_number":45,"context_line":"            )[\u0027limits\u0027][\u0027absolute\u0027]"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        # verify volume limits and defaults per tenants"},{"line_number":48,"context_line":"        self.assertEqual(absolute_limits[\u0027totalGigabytesUsed\u0027],"},{"line_number":49,"context_line":"                         self.original_absolute_limits[\u0027totalGigabytesUsed\u0027] +"},{"line_number":50,"context_line":"                         CONF.volume.volume_size)"},{"line_number":51,"context_line":"        self.assertEqual(absolute_limits[\u0027totalVolumesUsed\u0027],"},{"line_number":52,"context_line":"                         self.original_absolute_limits[\u0027totalVolumesUsed\u0027] + 1)"},{"line_number":53,"context_line":"        self.assertEqual(absolute_limits[\u0027totalSnapshotsUsed\u0027],"},{"line_number":54,"context_line":"                         self.original_absolute_limits[\u0027totalSnapshotsUsed\u0027])"},{"line_number":55,"context_line":"        self.assertEqual(absolute_limits[\u0027totalBackupsUsed\u0027],"},{"line_number":56,"context_line":"                         self.original_absolute_limits[\u0027totalBackupsUsed\u0027])"},{"line_number":57,"context_line":"        self.assertEqual(absolute_limits[\u0027totalBackupGigabytesUsed\u0027],"},{"line_number":58,"context_line":"                         self.original_absolute_limits["},{"line_number":59,"context_line":"                             \u0027totalBackupGigabytesUsed\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f96bb07_c75014d8","line":59,"range":{"start_line":48,"start_character":0,"end_line":59,"end_character":57},"in_reply_to":"7f96bb07_01d7ccc1","updated":"2018-01-10 17:28:11.000000000","message":"Agreed, there would be no way to guarantee that this test always passes with pre-provisioned accounts (same thing for the other test that Fanglei pointed out as well).  I don\u0027t know if it\u0027s possible in the current tempest framework to write such a test for the immutable backend cases, is there?","commit_id":"44b56b65d728239677bd1bb819877cca17f8f901"},{"author":{"_account_id":22636,"name":"Cliff Parsons","email":"cliffhparsons@aol.com","username":"cliffparsons"},"change_message_id":"861a6fc4c5306255c1393c00679a04ef8acce337","unresolved":false,"context_lines":[{"line_number":45,"context_line":"            )[\u0027limits\u0027][\u0027absolute\u0027]"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        # verify volume limits and defaults per tenants"},{"line_number":48,"context_line":"        self.assertEqual(absolute_limits[\u0027totalGigabytesUsed\u0027],"},{"line_number":49,"context_line":"                         self.original_absolute_limits[\u0027totalGigabytesUsed\u0027] +"},{"line_number":50,"context_line":"                         CONF.volume.volume_size)"},{"line_number":51,"context_line":"        self.assertEqual(absolute_limits[\u0027totalVolumesUsed\u0027],"},{"line_number":52,"context_line":"                         self.original_absolute_limits[\u0027totalVolumesUsed\u0027] + 1)"},{"line_number":53,"context_line":"        self.assertEqual(absolute_limits[\u0027totalSnapshotsUsed\u0027],"},{"line_number":54,"context_line":"                         self.original_absolute_limits[\u0027totalSnapshotsUsed\u0027])"},{"line_number":55,"context_line":"        self.assertEqual(absolute_limits[\u0027totalBackupsUsed\u0027],"},{"line_number":56,"context_line":"                         self.original_absolute_limits[\u0027totalBackupsUsed\u0027])"},{"line_number":57,"context_line":"        self.assertEqual(absolute_limits[\u0027totalBackupGigabytesUsed\u0027],"},{"line_number":58,"context_line":"                         self.original_absolute_limits["},{"line_number":59,"context_line":"                             \u0027totalBackupGigabytesUsed\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa0c359_c52fde3c","line":59,"range":{"start_line":48,"start_character":0,"end_line":59,"end_character":57},"in_reply_to":"7f96bb07_c75014d8","updated":"2018-02-23 16:42:48.000000000","message":"Agreeing with Andrea and Fanglei. I think the best thing to do would be to skip this test if pre-provisioned account is being used. I don\u0027t think any of the other test cases in this commit need to be skipped since they are all testing within a pre-provisioned account/project, so concurrency should not be an issue.","commit_id":"44b56b65d728239677bd1bb819877cca17f8f901"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"670590aee3dc17fdc5612b5aa42807b981ac0c45","unresolved":false,"context_lines":[{"line_number":45,"context_line":"            )[\u0027limits\u0027][\u0027absolute\u0027]"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        # verify volume limits and defaults per tenants"},{"line_number":48,"context_line":"        self.assertEqual(absolute_limits[\u0027totalGigabytesUsed\u0027],"},{"line_number":49,"context_line":"                         self.original_absolute_limits[\u0027totalGigabytesUsed\u0027] +"},{"line_number":50,"context_line":"                         CONF.volume.volume_size)"},{"line_number":51,"context_line":"        self.assertEqual(absolute_limits[\u0027totalVolumesUsed\u0027],"},{"line_number":52,"context_line":"                         self.original_absolute_limits[\u0027totalVolumesUsed\u0027] + 1)"},{"line_number":53,"context_line":"        self.assertEqual(absolute_limits[\u0027totalSnapshotsUsed\u0027],"},{"line_number":54,"context_line":"                         self.original_absolute_limits[\u0027totalSnapshotsUsed\u0027])"},{"line_number":55,"context_line":"        self.assertEqual(absolute_limits[\u0027totalBackupsUsed\u0027],"},{"line_number":56,"context_line":"                         self.original_absolute_limits[\u0027totalBackupsUsed\u0027])"},{"line_number":57,"context_line":"        self.assertEqual(absolute_limits[\u0027totalBackupGigabytesUsed\u0027],"},{"line_number":58,"context_line":"                         self.original_absolute_limits["},{"line_number":59,"context_line":"                             \u0027totalBackupGigabytesUsed\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f96bb07_01d7ccc1","line":59,"range":{"start_line":48,"start_character":0,"end_line":59,"end_character":57},"in_reply_to":"9f91af0f_c974e0d1","updated":"2018-01-10 16:20:50.000000000","message":"Other test cases that run at the same time would use a different a different project and thus a different quota.\nThis test is about verifying that quotas are set to zero on a freshly provisioned account, so not using one makes this a different test.\n\nWith LDAP it is not possible to have a freshly provisioned account under control of the test, so this test should be skipped.\n\nYou can write a different test to verify that quotas are amended when resources are allocated, but I\u0027m not so sure this kind of test is so relevant for the immutable identity backend case?\n\nAFAIK the quota info is maintained on cinder side, so the identity backed should not matter here.","commit_id":"44b56b65d728239677bd1bb819877cca17f8f901"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"2641b1989e7dfe187a5389176bb2c784f26da2a5","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        cls.volume \u003d cls.create_volume()"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    @decorators.idempotent_id(\u00278e943f53-e9d6-4272-b2e9-adcf2f7c29ad\u0027)"},{"line_number":41,"context_line":"    @testtools.skipUnless(CONF.auth.use_dynamic_credentials,"},{"line_number":42,"context_line":"                          \u0027Must use dynamic credentials\u0027)"},{"line_number":43,"context_line":"    def test_get_volume_absolute_limits(self):"},{"line_number":44,"context_line":"        # get volume limit for a tenant"},{"line_number":45,"context_line":"        absolute_limits \u003d \\"}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa0c359_7050df32","line":42,"range":{"start_line":41,"start_character":0,"end_line":42,"end_character":57},"updated":"2018-02-27 03:32:29.000000000","message":"If we don\u0027t use use_dynamic_credentials, and if creating new users are allowed, this testcase should not be skipped.\nSo, maybe we need a new config to indicate an immutable user source?","commit_id":"229461fc3d4ecb40286e0596e0faec00cc7dc14d"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"04ec3667293c6f6a27618e9de268c8bdcb4f14fd","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        cls.volume \u003d cls.create_volume()"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    @decorators.idempotent_id(\u00278e943f53-e9d6-4272-b2e9-adcf2f7c29ad\u0027)"},{"line_number":41,"context_line":"    @testtools.skipUnless(CONF.auth.use_dynamic_credentials,"},{"line_number":42,"context_line":"                          \u0027Must use dynamic credentials\u0027)"},{"line_number":43,"context_line":"    def test_get_volume_absolute_limits(self):"},{"line_number":44,"context_line":"        # get volume limit for a tenant"},{"line_number":45,"context_line":"        absolute_limits \u003d \\"}],"source_content_type":"text/x-python","patch_set":8,"id":"1f9dbf25_899a18c3","line":42,"range":{"start_line":41,"start_character":0,"end_line":42,"end_character":57},"in_reply_to":"1f9dbf25_55afcc93","updated":"2018-02-28 00:59:44.000000000","message":"o, I mean we should keep \"force_tenant_isolation \u003d True\", but this can\u0027t take effect with immutable user source, \nso a new config may be needed to skip the testcase in immutable user source situation","commit_id":"229461fc3d4ecb40286e0596e0faec00cc7dc14d"},{"author":{"_account_id":22636,"name":"Cliff Parsons","email":"cliffhparsons@aol.com","username":"cliffparsons"},"change_message_id":"4a126004067ac38dd8c65fe10ef3c57e34e9c4f9","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        cls.volume \u003d cls.create_volume()"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    @decorators.idempotent_id(\u00278e943f53-e9d6-4272-b2e9-adcf2f7c29ad\u0027)"},{"line_number":41,"context_line":"    @testtools.skipUnless(CONF.auth.use_dynamic_credentials,"},{"line_number":42,"context_line":"                          \u0027Must use dynamic credentials\u0027)"},{"line_number":43,"context_line":"    def test_get_volume_absolute_limits(self):"},{"line_number":44,"context_line":"        # get volume limit for a tenant"},{"line_number":45,"context_line":"        absolute_limits \u003d \\"}],"source_content_type":"text/x-python","patch_set":8,"id":"1f9dbf25_6a3bf037","line":42,"range":{"start_line":41,"start_character":0,"end_line":42,"end_character":57},"in_reply_to":"1f9dbf25_899a18c3","updated":"2018-02-28 16:36:32.000000000","message":"Oh ok. I see your point now.  You\u0027re right that force_tenant_isolation \u003d True should be there in the file to preserve the original intent of this test. But I think if we leave the skipUnless decorator as-is also, it will prevent the test from running in an immutable user source environment. So I don\u0027t think any new config item would be required for that. I will update the patch set shortly.","commit_id":"229461fc3d4ecb40286e0596e0faec00cc7dc14d"},{"author":{"_account_id":22636,"name":"Cliff Parsons","email":"cliffhparsons@aol.com","username":"cliffparsons"},"change_message_id":"7c14c768f168d674328fc99cf5fd412352805914","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        cls.volume \u003d cls.create_volume()"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    @decorators.idempotent_id(\u00278e943f53-e9d6-4272-b2e9-adcf2f7c29ad\u0027)"},{"line_number":41,"context_line":"    @testtools.skipUnless(CONF.auth.use_dynamic_credentials,"},{"line_number":42,"context_line":"                          \u0027Must use dynamic credentials\u0027)"},{"line_number":43,"context_line":"    def test_get_volume_absolute_limits(self):"},{"line_number":44,"context_line":"        # get volume limit for a tenant"},{"line_number":45,"context_line":"        absolute_limits \u003d \\"}],"source_content_type":"text/x-python","patch_set":8,"id":"1f9dbf25_55afcc93","line":42,"range":{"start_line":41,"start_character":0,"end_line":42,"end_character":57},"in_reply_to":"3fa0c359_7050df32","updated":"2018-02-27 14:48:35.000000000","message":"Even if creating new users are allowed, Tempest won\u0027t create the new user account if use_dynamic_credentials \u003d False, so I don\u0027t think there\u0027s any point in indicating mutable versus immutable. Like Andrea said in her previous comment: \"This test is about verifying that quotas are set to zero on a freshly provisioned account\".  If Tempest is not going to create a freshly provisioned account for running this test, then it should be skipped.","commit_id":"229461fc3d4ecb40286e0596e0faec00cc7dc14d"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"1379e3f16ec0efbd46ffea75f0137667e471fec1","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"# NOTE(zhufl): This inherits from BaseVolumeAdminTest because"},{"line_number":25,"context_line":"# it requires force_tenant_isolation\u003dTrue, which need admin"},{"line_number":26,"context_line":"# credentials to create non-admin users for the tests."},{"line_number":27,"context_line":"class AbsoluteLimitsTests(base.BaseVolumeAdminTest):  # noqa"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    # avoid existing volumes of pre-defined tenant"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f7c97a3_17ec18b9","line":26,"updated":"2018-06-01 00:31:02.000000000","message":"There is some further background on this here: https://review.openstack.org/#/c/444752/\n\nNotably Andrea\u0027s comments toward the end.","commit_id":"0eea773009635ace47ee55d2349e16efa7b41782"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"1379e3f16ec0efbd46ffea75f0137667e471fec1","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    @classmethod"},{"line_number":33,"context_line":"    def resource_setup(cls):"},{"line_number":34,"context_line":"        super(AbsoluteLimitsTests, cls).resource_setup()"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"        # Create a shared volume for tests"},{"line_number":37,"context_line":"        cls.volume \u003d cls.create_volume()"},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"5f7c97a3_b7bd24d9","line":35,"updated":"2018-06-01 00:31:02.000000000","message":"Unrelated change.","commit_id":"0eea773009635ace47ee55d2349e16efa7b41782"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"1379e3f16ec0efbd46ffea75f0137667e471fec1","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        cls.volume \u003d cls.create_volume()"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    @decorators.idempotent_id(\u00278e943f53-e9d6-4272-b2e9-adcf2f7c29ad\u0027)"},{"line_number":40,"context_line":"    @testtools.skipUnless(CONF.auth.use_dynamic_credentials,"},{"line_number":41,"context_line":"                          \u0027Must use dynamic credentials\u0027)"},{"line_number":42,"context_line":"    def test_get_volume_absolute_limits(self):"},{"line_number":43,"context_line":"        # get volume limit for a tenant"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f7c97a3_97b268e4","line":40,"updated":"2018-06-01 00:31:02.000000000","message":"nit: You could apply this to the entire class on L26 due to the comment on L24-26.","commit_id":"0eea773009635ace47ee55d2349e16efa7b41782"},{"author":{"_account_id":22636,"name":"Cliff Parsons","email":"cliffhparsons@aol.com","username":"cliffparsons"},"change_message_id":"88a59829d2d2888debf0a73f47635b001cf5a84e","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        cls.volume \u003d cls.create_volume()"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    @decorators.idempotent_id(\u00278e943f53-e9d6-4272-b2e9-adcf2f7c29ad\u0027)"},{"line_number":40,"context_line":"    @testtools.skipUnless(CONF.auth.use_dynamic_credentials,"},{"line_number":41,"context_line":"                          \u0027Must use dynamic credentials\u0027)"},{"line_number":42,"context_line":"    def test_get_volume_absolute_limits(self):"},{"line_number":43,"context_line":"        # get volume limit for a tenant"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f7c97a3_df19ca79","line":40,"in_reply_to":"5f7c97a3_97b268e4","updated":"2018-06-01 14:54:42.000000000","message":"I tried that but the skipException doesn\u0027t get caught if I do it that way.","commit_id":"0eea773009635ace47ee55d2349e16efa7b41782"}]}
