)]}'
{"cinderclient/tests/functional/base.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"8462e45c041539257c200f3b763ea0f655e0a93b","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        :param status: expected status of an object"},{"line_number":127,"context_line":"        :param timeout: timeout in seconds"},{"line_number":128,"context_line":"        \"\"\""},{"line_number":129,"context_line":"        cmd \u003d object_name + \u0027-show\u0027 if object_name !\u003d \u0027volume\u0027 else \u0027show\u0027"},{"line_number":130,"context_line":"        start_time \u003d time.time()"},{"line_number":131,"context_line":"        while time.time() - start_time \u003c timeout:"},{"line_number":132,"context_line":"            if status in self.cinder(cmd, params\u003dobject_id):"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a2fa921_50ec0dc7","line":129,"updated":"2015-10-06 12:27:42.000000000","message":"-1: I see this is a common occurrence with the volume object. It would be better to have a common method - ie: obj_cmd(self, object_name, op) - So you just do cmd \u003d self.obj_cmd(object_name, \u0027show\u0027) or self.obj_cmd(object_name, \u0027create\u0027) in case there are more exceptions they can all be grouped together in that method.","commit_id":"5eea1dee90b80bb728ab259a72ff818e3a562e75"}],"cinderclient/tests/functional/test_cli.py":[{"author":{"_account_id":8592,"name":"Anastasia Kuznetsova","email":"akuznetsova@mirantis.com","username":"nastya-kuz"},"change_message_id":"e632e230563decab6d1df7154f9c4d5988fb29f9","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"from cinderclient.tests.functional import base"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"property \u003d {\u0027volume\u0027: (\u0027attachments\u0027, \u0027availability_zone\u0027, \u0027bootable\u0027,"},{"line_number":17,"context_line":"                       \u0027created_at\u0027, \u0027description\u0027, \u0027encrypted\u0027, \u0027id\u0027,"},{"line_number":18,"context_line":"                       \u0027metadata\u0027, \u0027name\u0027, \u0027size\u0027, \u0027status\u0027, \u0027user_id\u0027,"},{"line_number":19,"context_line":"                       \u0027volume_type\u0027),"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_2021bab4","line":16,"updated":"2015-09-03 15:38:37.000000000","message":"As far as I understand in future there are will be more tests for other cinder objects, so this dict will grow. I prefer to create separate classes for CinderVolumeTests, CinderSnapshotTests, etc and add setUpClass for every class and define appropriate property list in class.","commit_id":"5eea1dee90b80bb728ab259a72ff818e3a562e75"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"8462e45c041539257c200f3b763ea0f655e0a93b","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"from cinderclient.tests.functional import base"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"property \u003d {\u0027volume\u0027: (\u0027attachments\u0027, \u0027availability_zone\u0027, \u0027bootable\u0027,"},{"line_number":17,"context_line":"                       \u0027created_at\u0027, \u0027description\u0027, \u0027encrypted\u0027, \u0027id\u0027,"},{"line_number":18,"context_line":"                       \u0027metadata\u0027, \u0027name\u0027, \u0027size\u0027, \u0027status\u0027, \u0027user_id\u0027,"},{"line_number":19,"context_line":"                       \u0027volume_type\u0027),"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a2fa921_d0901def","line":16,"in_reply_to":"7a2fa921_0703d674","updated":"2015-10-06 12:27:42.000000000","message":"-1: I agree with Anastasia\u0027s approach.  Although we don\u0027t need the setUpClass method, we can just add the `volume_property` directly as a class attribute.  Maybe even call it `expected_properties` so we have a common name for all test classes.","commit_id":"5eea1dee90b80bb728ab259a72ff818e3a562e75"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"eadf1694719b2c5ed2e4142d1ddfaed52bf0b2a0","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"from cinderclient.tests.functional import base"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"property \u003d {\u0027volume\u0027: (\u0027attachments\u0027, \u0027availability_zone\u0027, \u0027bootable\u0027,"},{"line_number":17,"context_line":"                       \u0027created_at\u0027, \u0027description\u0027, \u0027encrypted\u0027, \u0027id\u0027,"},{"line_number":18,"context_line":"                       \u0027metadata\u0027, \u0027name\u0027, \u0027size\u0027, \u0027status\u0027, \u0027user_id\u0027,"},{"line_number":19,"context_line":"                       \u0027volume_type\u0027),"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a2fa921_0703d674","line":16,"in_reply_to":"da20952f_1021fe9d","updated":"2015-10-05 20:54:46.000000000","message":"+1 on Anastasia\u0027s suggestion","commit_id":"5eea1dee90b80bb728ab259a72ff818e3a562e75"},{"author":{"_account_id":8592,"name":"Anastasia Kuznetsova","email":"akuznetsova@mirantis.com","username":"nastya-kuz"},"change_message_id":"ea3d891bb358cbbd02872aaad19043dbbb20dfd1","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"from cinderclient.tests.functional import base"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"property \u003d {\u0027volume\u0027: (\u0027attachments\u0027, \u0027availability_zone\u0027, \u0027bootable\u0027,"},{"line_number":17,"context_line":"                       \u0027created_at\u0027, \u0027description\u0027, \u0027encrypted\u0027, \u0027id\u0027,"},{"line_number":18,"context_line":"                       \u0027metadata\u0027, \u0027name\u0027, \u0027size\u0027, \u0027status\u0027, \u0027user_id\u0027,"},{"line_number":19,"context_line":"                       \u0027volume_type\u0027),"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_1021fe9d","line":16,"in_reply_to":"da20952f_1a3dd58e","updated":"2015-09-07 10:49:55.000000000","message":"Ok, will wait for a further refactoring","commit_id":"5eea1dee90b80bb728ab259a72ff818e3a562e75"},{"author":{"_account_id":14305,"name":"Yuriy Nesenenko","email":"ynesenenko@mirantis.com","username":"yuriy_n"},"change_message_id":"3efc687359b9495ce496ee9bd77f49206a536949","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"from cinderclient.tests.functional import base"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"property \u003d {\u0027volume\u0027: (\u0027attachments\u0027, \u0027availability_zone\u0027, \u0027bootable\u0027,"},{"line_number":17,"context_line":"                       \u0027created_at\u0027, \u0027description\u0027, \u0027encrypted\u0027, \u0027id\u0027,"},{"line_number":18,"context_line":"                       \u0027metadata\u0027, \u0027name\u0027, \u0027size\u0027, \u0027status\u0027, \u0027user_id\u0027,"},{"line_number":19,"context_line":"                       \u0027volume_type\u0027),"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_6a746c9b","line":16,"in_reply_to":"da20952f_2021bab4","updated":"2015-09-03 16:23:40.000000000","message":"These property for objects like volume, backup or snapshot. I don\u0027t see any sense to add here something else. It\u0027s only done for sucn objects. What other cinder objects do you mean?","commit_id":"5eea1dee90b80bb728ab259a72ff818e3a562e75"},{"author":{"_account_id":8592,"name":"Anastasia Kuznetsova","email":"akuznetsova@mirantis.com","username":"nastya-kuz"},"change_message_id":"6d180162bcda04424f75fe3f1b49634b6536bb89","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"from cinderclient.tests.functional import base"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"property \u003d {\u0027volume\u0027: (\u0027attachments\u0027, \u0027availability_zone\u0027, \u0027bootable\u0027,"},{"line_number":17,"context_line":"                       \u0027created_at\u0027, \u0027description\u0027, \u0027encrypted\u0027, \u0027id\u0027,"},{"line_number":18,"context_line":"                       \u0027metadata\u0027, \u0027name\u0027, \u0027size\u0027, \u0027status\u0027, \u0027user_id\u0027,"},{"line_number":19,"context_line":"                       \u0027volume_type\u0027),"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_e3e3abd7","line":16,"in_reply_to":"da20952f_6a746c9b","updated":"2015-09-04 09:31:54.000000000","message":"I just thought that it will be more graceful solution, e.g:\n\nclass CinderVolumeTests(base.ClientTestBase):\n    \"\"\"Basic test for cinder client.\n    Check of base cinder volume commands.\n    \"\"\"\n\n   @classmethod\n    def setUpClass(cls):\n        super(CinderVolumeTests, cls).setUpClass()\n        cls.volume_property \u003d (...)\n\n    def test_one(self):\n         ...\n\nclass CinderBackupTests(base.ClientTestBase):\n    \"\"\"Basic test for cinder client.\n    Check of base cinder backup commands.\n    \"\"\"\n\n   @classmethod\n    def setUpClass(cls):\n        super(CinderBackupTests, cls).setUpClass()\n        cls.backup_property \u003d (...)\n\n    def test_one(self):\n         ...","commit_id":"5eea1dee90b80bb728ab259a72ff818e3a562e75"},{"author":{"_account_id":14305,"name":"Yuriy Nesenenko","email":"ynesenenko@mirantis.com","username":"yuriy_n"},"change_message_id":"68504c8554991a9158249bf04ab23e69a35fc7c0","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"from cinderclient.tests.functional import base"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"property \u003d {\u0027volume\u0027: (\u0027attachments\u0027, \u0027availability_zone\u0027, \u0027bootable\u0027,"},{"line_number":17,"context_line":"                       \u0027created_at\u0027, \u0027description\u0027, \u0027encrypted\u0027, \u0027id\u0027,"},{"line_number":18,"context_line":"                       \u0027metadata\u0027, \u0027name\u0027, \u0027size\u0027, \u0027status\u0027, \u0027user_id\u0027,"},{"line_number":19,"context_line":"                       \u0027volume_type\u0027),"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_1a3dd58e","line":16,"in_reply_to":"da20952f_e30acb89","updated":"2015-09-04 15:14:23.000000000","message":"Removing the redundant code will be continued. As you see later, no need to divide in such a way.;)","commit_id":"5eea1dee90b80bb728ab259a72ff818e3a562e75"},{"author":{"_account_id":8592,"name":"Anastasia Kuznetsova","email":"akuznetsova@mirantis.com","username":"nastya-kuz"},"change_message_id":"00a88f0c137393088312c9f4f7a84643f92882c5","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"from cinderclient.tests.functional import base"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"property \u003d {\u0027volume\u0027: (\u0027attachments\u0027, \u0027availability_zone\u0027, \u0027bootable\u0027,"},{"line_number":17,"context_line":"                       \u0027created_at\u0027, \u0027description\u0027, \u0027encrypted\u0027, \u0027id\u0027,"},{"line_number":18,"context_line":"                       \u0027metadata\u0027, \u0027name\u0027, \u0027size\u0027, \u0027status\u0027, \u0027user_id\u0027,"},{"line_number":19,"context_line":"                       \u0027volume_type\u0027),"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_e30acb89","line":16,"in_reply_to":"da20952f_e3e3abd7","updated":"2015-09-04 09:32:38.000000000","message":"Do not you think so ?","commit_id":"5eea1dee90b80bb728ab259a72ff818e3a562e75"}]}
