)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7020,"name":"Joe Hakim Rahme","email":"jhakimra@redhat.com","username":"rahmu"},"change_message_id":"191755c86f1613c82ec2539e84e097b4ec70c0aa","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"There is a limit for 2 backends in tempest to be tested."},{"line_number":10,"context_line":"Changing the backend names to a list will allow to test more"},{"line_number":11,"context_line":"backends and run tests on all configured backend"},{"line_number":12,"context_line":"Changing tests to support N backends."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"The changes :"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"9a8ffd7b_e70c6a3d","line":11,"updated":"2015-11-25 10:41:46.000000000","message":"mini typo: \"all configured backends\"","commit_id":"81e4ba9050cf2b12f520b29e5873963d067ab32f"}],"tempest/api/volume/admin/test_multi_backend.py":[{"author":{"_account_id":16986,"name":"Shuquan Huang","email":"shuquan.huang@live.com","username":"shuquan"},"change_message_id":"05612b2b7d02508dbb40e3f4679936c2fe0946d0","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        cls.backend1_name \u003d CONF.volume.backend_names[0]"},{"line_number":39,"context_line":"        cls.backend2_name \u003d CONF.volume.backend_names[1]"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        cls.name_field \u003d cls.special_fields[\u0027name_field\u0027]"},{"line_number":42,"context_line":"        cls.volume_type_id_list \u003d []"},{"line_number":43,"context_line":"        cls.volume_id_list_with_prefix \u003d []"}],"source_content_type":"text/x-python","patch_set":1,"id":"da85f559_ab892928","line":40,"updated":"2015-11-10 09:28:13.000000000","message":"Since it\u0027s changed to list now, we should update the test cases here to support more than 2 backend by using loop.","commit_id":"7f15e314150fa73ea0d8711ddb774c5350de7a8b"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"31a61026ea00e4fde4fc67cda3e72e46c19c1a96","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        cls.backend1_name \u003d CONF.volume.backend_names[0]"},{"line_number":39,"context_line":"        cls.backend2_name \u003d CONF.volume.backend_names[1]"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        cls.name_field \u003d cls.special_fields[\u0027name_field\u0027]"},{"line_number":42,"context_line":"        cls.volume_type_id_list \u003d []"},{"line_number":43,"context_line":"        cls.volume_id_list_with_prefix \u003d []"}],"source_content_type":"text/x-python","patch_set":1,"id":"da85f559_746ec202","line":40,"in_reply_to":"da85f559_ab892928","updated":"2015-11-10 10:25:25.000000000","message":"ok , i will do it .\nBenny","commit_id":"7f15e314150fa73ea0d8711ddb774c5350de7a8b"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"b9d085eeb428391c3892d25b2c78d3cba762d273","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        # Volume/Type creation (uses volume_backend_name)"},{"line_number":46,"context_line":"        for backend_name in cls.backend_names:"},{"line_number":47,"context_line":"            if cls.backend_names.count(backend_name) \u003d\u003d 1:"},{"line_number":48,"context_line":"                cls._create_type_and_volume(backend_name, False)"},{"line_number":49,"context_line":"                cls._create_type_and_volume(backend_name, True)"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"da85f559_b795cc87","line":47,"range":{"start_line":47,"start_character":19,"end_line":47,"end_character":32},"updated":"2015-11-11 12:57:34.000000000","message":"The logic here is flawed. If the same name is provided twice, no volume will be created at all.  Before this change the first volume would always be created, and the 2nd one only if the name is unique.\nAlso the comments from L48 and L54 are gone, and I find they were useful.","commit_id":"9e66d2a8b352b60b571f52dfce7b592c00d2085a"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"23625c72109067b03c9d3dded5136ec0782a73ce","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        # Volume/Type creation (uses volume_backend_name)"},{"line_number":46,"context_line":"        for backend_name in cls.backend_names:"},{"line_number":47,"context_line":"            if cls.backend_names.count(backend_name) \u003d\u003d 1:"},{"line_number":48,"context_line":"                cls._create_type_and_volume(backend_name, False)"},{"line_number":49,"context_line":"                cls._create_type_and_volume(backend_name, True)"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"da85f559_a91d6c63","line":47,"in_reply_to":"da85f559_b795cc87","updated":"2015-11-11 13:55:51.000000000","message":"Hi, \nGood point ,  keep in mind we may have here 10 different backends and they all can be the same name or  the first and last are with the same name. \nthere are two tests that check if backend_name1 \u003d\u003d backend_name2 , these tests are skipped. so i will take care that only unique name will added.\n\nI will add a fix here to support your good point and case \n\nExamples:\nbackend names :  \n#1  b1, b1, b1 ,b1 \nIn this case only the first b1 will be inserted.\n\n#2 b1 b2 b3 b2\nIn case 2 we will insert b1,b3, and b2 (at location 1 only) \n\nIs it acceptable ?\n\nThanks a lot for your good catch !!!","commit_id":"9e66d2a8b352b60b571f52dfce7b592c00d2085a"},{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"dbc2e4a311eec419bb04c49a66ed8232d01d6442","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        cls.created_backend_names \u003d []"},{"line_number":48,"context_line":"        for backend_name in cls.backend_names:"},{"line_number":49,"context_line":"            if backend_name not in cls.created_backend_names:"},{"line_number":50,"context_line":"                # Volume/Type creation (uses backend_name)"},{"line_number":51,"context_line":"                cls._create_type_and_volume(backend_name, False)"},{"line_number":52,"context_line":"                # Volume/Type creation (uses capabilities:volume_backend_name)"},{"line_number":53,"context_line":"                cls._create_type_and_volume(backend_name, True)"}],"source_content_type":"text/x-python","patch_set":4,"id":"da85f559_3ac69c68","line":50,"updated":"2015-11-11 14:53:43.000000000","message":"Corrected the typo as I was writing ;) Thanks for being fast on it","commit_id":"638650289e258487e6087a30cf9198aa9692c232"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"cf9e8c71e521eaac3e8127b4b7cc6c1e3a94e030","unresolved":false,"context_lines":[{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    @test.idempotent_id(\u002746435ab1-a0af-4401-8373-f14e66b0dd58\u0027)"},{"line_number":116,"context_line":"    def test_backend_name_distinction(self):"},{"line_number":117,"context_line":"        for backend_name in self.backend_names:"},{"line_number":118,"context_line":"            if self.backend_names.count(backend_name) !\u003d 1:"},{"line_number":119,"context_line":"                raise self.skipException(\"backends configured with same name\")"},{"line_number":120,"context_line":"        # get volume id which created by type without prefix"}],"source_content_type":"text/x-python","patch_set":4,"id":"da85f559_6d40d507","line":117,"updated":"2015-11-11 22:43:56.000000000","message":"I\u0027m sorry I did not catch this in my first review.\nEven if you have some backends with the name repeated more than once, you can run this test as long as you have at least two distinct backends.\nThis is not what you\u0027re checking here.\n\nI think the easiest would be to store a normalised list of backends in resource_setup (e.g. set(configured list) to remove duplicates).\n\nThen in the setup you can just look over the set, and here you can check if your resulting set has more than one element, else skip.","commit_id":"638650289e258487e6087a30cf9198aa9692c232"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"e82bca8d10253140ddac3661a43fbfcd850f516b","unresolved":false,"context_lines":[{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    @test.idempotent_id(\u002746435ab1-a0af-4401-8373-f14e66b0dd58\u0027)"},{"line_number":116,"context_line":"    def test_backend_name_distinction(self):"},{"line_number":117,"context_line":"        for backend_name in self.backend_names:"},{"line_number":118,"context_line":"            if self.backend_names.count(backend_name) !\u003d 1:"},{"line_number":119,"context_line":"                raise self.skipException(\"backends configured with same name\")"},{"line_number":120,"context_line":"        # get volume id which created by type without prefix"}],"source_content_type":"text/x-python","patch_set":4,"id":"da85f559_42583b88","line":117,"in_reply_to":"da85f559_6d40d507","updated":"2015-11-12 00:55:06.000000000","message":"Hi Andrea ,\nThe user should not enter from tempest.conf multiple backend with same name from first place .i dont want to change the test case , just to keep the old way .\nin the old way they checked if backend_1 is same as backend_2 and raise.\nSo in my list style i am doing the same.\n\nthe resource_setup here creates volume_and_types with different names, preventing two types with same name -which is good and i accepted your comment.  we can configure at least 1 backend name .\n\n\nBenny","commit_id":"638650289e258487e6087a30cf9198aa9692c232"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"cf9e8c71e521eaac3e8127b4b7cc6c1e3a94e030","unresolved":false,"context_lines":[{"line_number":119,"context_line":"                raise self.skipException(\"backends configured with same name\")"},{"line_number":120,"context_line":"        # get volume id which created by type without prefix"},{"line_number":121,"context_line":"        list_len \u003d len(self.volume_id_list_without_prefix)"},{"line_number":122,"context_line":"        for index1_volume in range(0, list_len):"},{"line_number":123,"context_line":"            for index2_volume in range(index1_volume + 1, list_len):"},{"line_number":124,"context_line":"                self._test_backend_name_distinction("},{"line_number":125,"context_line":"                    self.volume_id_list_without_prefix[index1_volume],"}],"source_content_type":"text/x-python","patch_set":4,"id":"da85f559_cdbc61bd","line":122,"updated":"2015-11-11 22:43:56.000000000","message":"Here you\u0027re testing all combinations of two here - I see why permutations are not relevant. But I\u0027m not sure I see the value of testing all these combinations: I\u0027d assume the code on cinder side handling this will be the same. I haven\u0027t checked cinder code so I\u0027m probably wrong...","commit_id":"638650289e258487e6087a30cf9198aa9692c232"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"e82bca8d10253140ddac3661a43fbfcd850f516b","unresolved":false,"context_lines":[{"line_number":119,"context_line":"                raise self.skipException(\"backends configured with same name\")"},{"line_number":120,"context_line":"        # get volume id which created by type without prefix"},{"line_number":121,"context_line":"        list_len \u003d len(self.volume_id_list_without_prefix)"},{"line_number":122,"context_line":"        for index1_volume in range(0, list_len):"},{"line_number":123,"context_line":"            for index2_volume in range(index1_volume + 1, list_len):"},{"line_number":124,"context_line":"                self._test_backend_name_distinction("},{"line_number":125,"context_line":"                    self.volume_id_list_without_prefix[index1_volume],"}],"source_content_type":"text/x-python","patch_set":4,"id":"da85f559_02aa3319","line":122,"in_reply_to":"da85f559_cdbc61bd","updated":"2015-11-12 00:55:06.000000000","message":"Hi , \nIn order to support old style , i am running on pairs without repeating values.\nExample if we have in the list : 1 2 3 4\nwe will run it on \n12\n13\n14\n23\n24\n34\n\nthe best was to change the function name to acceprt args but again , i dont think i have to change old style tests .\nWe have to check in cinder that each backend created on different cinder backend.\n\nBenny","commit_id":"638650289e258487e6087a30cf9198aa9692c232"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"cf9e8c71e521eaac3e8127b4b7cc6c1e3a94e030","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    @test.idempotent_id(\u00274236305b-b65a-4bfc-a9d2-69cb5b2bf2ed\u0027)"},{"line_number":129,"context_line":"    def test_backend_name_distinction_with_prefix(self):"},{"line_number":130,"context_line":"        for backend_name in self.backend_names:"},{"line_number":131,"context_line":"            if self.backend_names.count(backend_name) !\u003d 1:"},{"line_number":132,"context_line":"                raise self.skipException(\"backends configured with same name\")"},{"line_number":133,"context_line":"        # get volume id which created by type without prefix"}],"source_content_type":"text/x-python","patch_set":4,"id":"da85f559_4dc95158","line":130,"updated":"2015-11-11 22:43:56.000000000","message":"Ditto L117","commit_id":"638650289e258487e6087a30cf9198aa9692c232"},{"author":{"_account_id":7020,"name":"Joe Hakim Rahme","email":"jhakimra@redhat.com","username":"rahmu"},"change_message_id":"b408f47aae46eb46d877b81e59fce006a0966a53","unresolved":false,"context_lines":[{"line_number":121,"context_line":"            self._test_backend_name_reporting_by_volume_id(volume_id)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    @test.idempotent_id(\u002746435ab1-a0af-4401-8373-f14e66b0dd58\u0027)"},{"line_number":124,"context_line":"    def test_backend_name_distinction(self):"},{"line_number":125,"context_line":"        for backend_name in self.backend_names:"},{"line_number":126,"context_line":"            if self.backend_names.count(backend_name) !\u003d 1:"},{"line_number":127,"context_line":"                raise self.skipException(\"backends configured with same name\")"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba8a016a_8bc11731","line":124,"updated":"2015-11-16 15:15:35.000000000","message":"Question: Should we validate that len(self.backend_names) \u003e 1 ?","commit_id":"a091fb08b670888f1b73580e716d287b19d1c754"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"9f69205d97fcfc7ceec2252c93ec5ff1632fab90","unresolved":false,"context_lines":[{"line_number":121,"context_line":"            self._test_backend_name_reporting_by_volume_id(volume_id)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    @test.idempotent_id(\u002746435ab1-a0af-4401-8373-f14e66b0dd58\u0027)"},{"line_number":124,"context_line":"    def test_backend_name_distinction(self):"},{"line_number":125,"context_line":"        for backend_name in self.backend_names:"},{"line_number":126,"context_line":"            if self.backend_names.count(backend_name) !\u003d 1:"},{"line_number":127,"context_line":"                raise self.skipException(\"backends configured with same name\")"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba8a016a_5762ecd9","line":124,"in_reply_to":"ba8a016a_8bc11731","updated":"2015-11-16 17:37:18.000000000","message":"Hi Joe, \nFirst thanks a lot for your time !\nWell , i dont think so because we can not protect interface too much , the user knows thats he deals with more than one backend.\nits true for other list or strings that user enters in tempest.conf.\nThere is a sample in the list  backend1 and backend2 so its sould be like that.\n\nThats my personal opinion.\n\nBenny","commit_id":"a091fb08b670888f1b73580e716d287b19d1c754"},{"author":{"_account_id":7020,"name":"Joe Hakim Rahme","email":"jhakimra@redhat.com","username":"rahmu"},"change_message_id":"b408f47aae46eb46d877b81e59fce006a0966a53","unresolved":false,"context_lines":[{"line_number":128,"context_line":"        # get volume id which created by type without prefix"},{"line_number":129,"context_line":"        list_len \u003d len(self.volume_id_list_without_prefix)"},{"line_number":130,"context_line":"        for index1_volume in range(0, list_len):"},{"line_number":131,"context_line":"            for index2_volume in range(index1_volume + 1, list_len):"},{"line_number":132,"context_line":"                self._test_backend_name_distinction("},{"line_number":133,"context_line":"                    self.volume_id_list_without_prefix[index1_volume],"},{"line_number":134,"context_line":"                    self.volume_id_list_without_prefix[index2_volume])"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba8a016a_ebe6a3e7","line":131,"updated":"2015-11-16 15:15:35.000000000","message":"This could potentially generate a lot of self.admin_volume_client.show_volume(...) requests, especially if you have a lot of backends.\n\nHere\u0027s an idea on how to improve it (written directly in web browser and not tested):\n\n    def _get_volume_host(self, volume_id):\n        return self.admin_volume_client.show_volume(volume_id)[\u0027volume\u0027][\u0027os-vol-host-attr:host\u0027]\n\n    volume_hosts \u003d [self._get_volume_host(volume) for volume in self.volume_id_list_without_prefix]\n    #assert that volumes are each created on separate hosts:\n    self.assertEqual(len(volume_hosts), len(set(volume_hosts)))\n\nThis might not be needed, but I think we could simply avoid quadratic solutions, wdyt?","commit_id":"a091fb08b670888f1b73580e716d287b19d1c754"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"9f69205d97fcfc7ceec2252c93ec5ff1632fab90","unresolved":false,"context_lines":[{"line_number":128,"context_line":"        # get volume id which created by type without prefix"},{"line_number":129,"context_line":"        list_len \u003d len(self.volume_id_list_without_prefix)"},{"line_number":130,"context_line":"        for index1_volume in range(0, list_len):"},{"line_number":131,"context_line":"            for index2_volume in range(index1_volume + 1, list_len):"},{"line_number":132,"context_line":"                self._test_backend_name_distinction("},{"line_number":133,"context_line":"                    self.volume_id_list_without_prefix[index1_volume],"},{"line_number":134,"context_line":"                    self.volume_id_list_without_prefix[index2_volume])"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba8a016a_dda03a93","line":131,"in_reply_to":"ba8a016a_ebe6a3e7","updated":"2015-11-16 17:37:18.000000000","message":"Looks good ! i like it . instead of using _test_backend_name_distinction with two volumes.\nWe can do something like(not tested)  , \ntest_backend_name_distinction(volume_ids_list):\n      ... use your example code\n\nwe will not need a nested loop .\nthoughts ?","commit_id":"a091fb08b670888f1b73580e716d287b19d1c754"},{"author":{"_account_id":7020,"name":"Joe Hakim Rahme","email":"jhakimra@redhat.com","username":"rahmu"},"change_message_id":"b408f47aae46eb46d877b81e59fce006a0966a53","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        self.assertTrue(len(volume1_host.split(\"@\")) \u003e 1, msg)"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    def _test_backend_name_distinction(self, volume1_id, volume2_id):"},{"line_number":162,"context_line":"        # this test checks that the two volumes created at setUp don\u0027t"},{"line_number":163,"context_line":"        # belong to the same backend (if they are, than the"},{"line_number":164,"context_line":"        # volume backend distinction is not working properly)"},{"line_number":165,"context_line":"        volume \u003d self.admin_volume_client.show_volume(volume1_id)[\u0027volume\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba8a016a_cbf5df83","line":162,"updated":"2015-11-16 15:15:35.000000000","message":"This comment is slightly outdated since there aren\u0027t only two volumes created.","commit_id":"a091fb08b670888f1b73580e716d287b19d1c754"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"9f69205d97fcfc7ceec2252c93ec5ff1632fab90","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        self.assertTrue(len(volume1_host.split(\"@\")) \u003e 1, msg)"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    def _test_backend_name_distinction(self, volume1_id, volume2_id):"},{"line_number":162,"context_line":"        # this test checks that the two volumes created at setUp don\u0027t"},{"line_number":163,"context_line":"        # belong to the same backend (if they are, than the"},{"line_number":164,"context_line":"        # volume backend distinction is not working properly)"},{"line_number":165,"context_line":"        volume \u003d self.admin_volume_client.show_volume(volume1_id)[\u0027volume\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba8a016a_7717f0ed","line":162,"in_reply_to":"ba8a016a_cbf5df83","updated":"2015-11-16 17:37:18.000000000","message":"yep . but function deals with two volumes each time .\nI did not want to change the tests logic too much , keep the \"existing\" code runs with old style and new.\nBenny","commit_id":"a091fb08b670888f1b73580e716d287b19d1c754"},{"author":{"_account_id":10725,"name":"Sergey Gotliv","email":"sgotliv@redhat.com","username":"sgotliv"},"change_message_id":"421fc85f922516e2093451b6ea927c83f970bb2c","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        # Volume/Type creation (uses volume_backend_name)"},{"line_number":53,"context_line":"        # It is not allowed to create the same backend name twice"},{"line_number":54,"context_line":"        # create a list to keep created backend, to prevent duplication."},{"line_number":55,"context_line":"        cls.created_backend_names \u003d []"},{"line_number":56,"context_line":"        for backend_name in cls.backend_names:"},{"line_number":57,"context_line":"            if backend_name not in cls.created_backend_names:"},{"line_number":58,"context_line":"                # Volume/Type creation (uses backend_name)"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba8a016a_b54131ab","line":55,"updated":"2015-11-19 08:52:03.000000000","message":"You can create a list with unique names:\n\ncls.created_backend_names \u003d list(set(backend_names))\n\nand then just iterate and create volume and type with and without prefixes.","commit_id":"0da220cd05f7cf669f034a2323dcba7ca3b08009"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"57336faea48fc0b97e85ca797049e2200d88dd42","unresolved":false,"context_lines":[{"line_number":154,"context_line":"        volume_hosts \u003d [self._get_volume_host(volume) for volume in"},{"line_number":155,"context_line":"                        volume_id_list]"},{"line_number":156,"context_line":"        # assert that volumes are each created on separate hosts:"},{"line_number":157,"context_line":"        self.assertEqual(len(volume_hosts), len(set(volume_hosts)))"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"class VolumeMultiBackendV1Test(VolumeMultiBackendV2Test):"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba8a016a_f2a90025","line":157,"updated":"2015-11-19 12:50:47.000000000","message":"six.assertCountEqual looks like better assert in this case.\n\nPlease use the six version in order to be compatible with both with py27 and py3.\n\nThe problem with plain assertEqual it does not provides enough information about the failure in this case.","commit_id":"3afc55c4647f167df126e29004779b8afe55d38e"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"0bc739d455f65ca02e264057f802629b305077fd","unresolved":false,"context_lines":[{"line_number":154,"context_line":"        volume_hosts \u003d [self._get_volume_host(volume) for volume in"},{"line_number":155,"context_line":"                        volume_id_list]"},{"line_number":156,"context_line":"        # assert that volumes are each created on separate hosts:"},{"line_number":157,"context_line":"        self.assertEqual(len(volume_hosts), len(set(volume_hosts)))"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"class VolumeMultiBackendV1Test(VolumeMultiBackendV2Test):"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba8a016a_62c3ff89","line":157,"in_reply_to":"ba8a016a_f2a90025","updated":"2015-11-19 13:51:20.000000000","message":"ok , will fix it","commit_id":"3afc55c4647f167df126e29004779b8afe55d38e"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"efa26d47b2740c4f20d27c0de43d4b23bd08eae0","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        super(VolumeMultiBackendV2Test, cls).resource_setup()"},{"line_number":37,"context_line":"        # support 2 backends names, deprecated_for_removal."},{"line_number":38,"context_line":"        # keep support 2 backend names, in case they are not empty"},{"line_number":39,"context_line":"        cls.backend_names \u003d []"},{"line_number":40,"context_line":"        if CONF.volume.backend1_name and CONF.volume.backend2_name:"},{"line_number":41,"context_line":"            cls.backend_names.append(CONF.volume.backend1_name)"},{"line_number":42,"context_line":"            cls.backend_names.append(CONF.volume.backend2_name)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a8ffd7b_5bf2199c","line":39,"updated":"2015-11-24 16:47:55.000000000","message":"Make this a set from the beginning:\n\n  cls.backend_names \u003d set()","commit_id":"0b6abf8cd05209682d54bec32124fe6b467711c0"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"2e821ea76a853a7549edbbcd62247d3148bfa35a","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        super(VolumeMultiBackendV2Test, cls).resource_setup()"},{"line_number":37,"context_line":"        # support 2 backends names, deprecated_for_removal."},{"line_number":38,"context_line":"        # keep support 2 backend names, in case they are not empty"},{"line_number":39,"context_line":"        cls.backend_names \u003d []"},{"line_number":40,"context_line":"        if CONF.volume.backend1_name and CONF.volume.backend2_name:"},{"line_number":41,"context_line":"            cls.backend_names.append(CONF.volume.backend1_name)"},{"line_number":42,"context_line":"            cls.backend_names.append(CONF.volume.backend2_name)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a8ffd7b_cdf88e7f","line":39,"in_reply_to":"9a8ffd7b_5bf2199c","updated":"2015-11-24 17:25:57.000000000","message":"Done","commit_id":"0b6abf8cd05209682d54bec32124fe6b467711c0"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"efa26d47b2740c4f20d27c0de43d4b23bd08eae0","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        # keep support 2 backend names, in case they are not empty"},{"line_number":39,"context_line":"        cls.backend_names \u003d []"},{"line_number":40,"context_line":"        if CONF.volume.backend1_name and CONF.volume.backend2_name:"},{"line_number":41,"context_line":"            cls.backend_names.append(CONF.volume.backend1_name)"},{"line_number":42,"context_line":"            cls.backend_names.append(CONF.volume.backend2_name)"},{"line_number":43,"context_line":"        else:"},{"line_number":44,"context_line":"            # read backend name from a list ."}],"source_content_type":"text/x-python","patch_set":11,"id":"9a8ffd7b_1b1251b5","line":41,"updated":"2015-11-24 16:47:55.000000000","message":"use:\n  cls.backend_names.add(...)","commit_id":"0b6abf8cd05209682d54bec32124fe6b467711c0"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"2e821ea76a853a7549edbbcd62247d3148bfa35a","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        # keep support 2 backend names, in case they are not empty"},{"line_number":39,"context_line":"        cls.backend_names \u003d []"},{"line_number":40,"context_line":"        if CONF.volume.backend1_name and CONF.volume.backend2_name:"},{"line_number":41,"context_line":"            cls.backend_names.append(CONF.volume.backend1_name)"},{"line_number":42,"context_line":"            cls.backend_names.append(CONF.volume.backend2_name)"},{"line_number":43,"context_line":"        else:"},{"line_number":44,"context_line":"            # read backend name from a list ."}],"source_content_type":"text/x-python","patch_set":11,"id":"9a8ffd7b_2d035a75","line":41,"in_reply_to":"9a8ffd7b_1b1251b5","updated":"2015-11-24 17:25:57.000000000","message":"Done","commit_id":"0b6abf8cd05209682d54bec32124fe6b467711c0"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"efa26d47b2740c4f20d27c0de43d4b23bd08eae0","unresolved":false,"context_lines":[{"line_number":42,"context_line":"            cls.backend_names.append(CONF.volume.backend2_name)"},{"line_number":43,"context_line":"        else:"},{"line_number":44,"context_line":"            # read backend name from a list ."},{"line_number":45,"context_line":"            cls.backend_names \u003d CONF.volume.backend_names"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        cls.name_field \u003d cls.special_fields[\u0027name_field\u0027]"},{"line_number":48,"context_line":"        cls.volume_type_id_list \u003d []"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a8ffd7b_9b6de134","line":45,"updated":"2015-11-24 16:47:55.000000000","message":"cls.backend_names \u003d set(CONF.volume.backend_names)","commit_id":"0b6abf8cd05209682d54bec32124fe6b467711c0"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"2e821ea76a853a7549edbbcd62247d3148bfa35a","unresolved":false,"context_lines":[{"line_number":42,"context_line":"            cls.backend_names.append(CONF.volume.backend2_name)"},{"line_number":43,"context_line":"        else:"},{"line_number":44,"context_line":"            # read backend name from a list ."},{"line_number":45,"context_line":"            cls.backend_names \u003d CONF.volume.backend_names"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        cls.name_field \u003d cls.special_fields[\u0027name_field\u0027]"},{"line_number":48,"context_line":"        cls.volume_type_id_list \u003d []"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a8ffd7b_0dfe966b","line":45,"in_reply_to":"9a8ffd7b_9b6de134","updated":"2015-11-24 17:25:57.000000000","message":"Done","commit_id":"0b6abf8cd05209682d54bec32124fe6b467711c0"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"efa26d47b2740c4f20d27c0de43d4b23bd08eae0","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        # Volume/Type creation (uses volume_backend_name)"},{"line_number":53,"context_line":"        # It is not allowed to create the same backend name twice"},{"line_number":54,"context_line":"        # create a list to keep created backend, to prevent duplication."},{"line_number":55,"context_line":"        cls.backend_names \u003d list(set(cls.backend_names))"},{"line_number":56,"context_line":"        if len(cls.backend_names) \u003c 2:"},{"line_number":57,"context_line":"            raise cls.skipException(\"Requires at least two different \""},{"line_number":58,"context_line":"                                    \"backend names\")"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a8ffd7b_fb5e6d75","line":55,"updated":"2015-11-24 16:47:55.000000000","message":"Use a set from the beginning so that you can remove this ugly hack.","commit_id":"0b6abf8cd05209682d54bec32124fe6b467711c0"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"2e821ea76a853a7549edbbcd62247d3148bfa35a","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        # Volume/Type creation (uses volume_backend_name)"},{"line_number":53,"context_line":"        # It is not allowed to create the same backend name twice"},{"line_number":54,"context_line":"        # create a list to keep created backend, to prevent duplication."},{"line_number":55,"context_line":"        cls.backend_names \u003d list(set(cls.backend_names))"},{"line_number":56,"context_line":"        if len(cls.backend_names) \u003c 2:"},{"line_number":57,"context_line":"            raise cls.skipException(\"Requires at least two different \""},{"line_number":58,"context_line":"                                    \"backend names\")"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a8ffd7b_6d096295","line":55,"in_reply_to":"9a8ffd7b_fb5e6d75","updated":"2015-11-24 17:25:57.000000000","message":"Done","commit_id":"0b6abf8cd05209682d54bec32124fe6b467711c0"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"efa26d47b2740c4f20d27c0de43d4b23bd08eae0","unresolved":false,"context_lines":[{"line_number":156,"context_line":"        # assert that volumes are each created on separate hosts:"},{"line_number":157,"context_line":"        msg \u003d (\"volumes %s were created in the same backend\" % \", \""},{"line_number":158,"context_line":"               .join(volume_hosts))"},{"line_number":159,"context_line":"        six.assertCountEqual(self, volume_hosts, list(set(volume_hosts)), msg)"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"class VolumeMultiBackendV1Test(VolumeMultiBackendV2Test):"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a8ffd7b_d6f26006","line":159,"updated":"2015-11-24 16:47:55.000000000","message":"You don\u0027t need to cast to a list here:\n  six.assertCountEqual(self, volume_hosts, set(volume_hosts), msg)\n\nshould work","commit_id":"0b6abf8cd05209682d54bec32124fe6b467711c0"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"2e821ea76a853a7549edbbcd62247d3148bfa35a","unresolved":false,"context_lines":[{"line_number":156,"context_line":"        # assert that volumes are each created on separate hosts:"},{"line_number":157,"context_line":"        msg \u003d (\"volumes %s were created in the same backend\" % \", \""},{"line_number":158,"context_line":"               .join(volume_hosts))"},{"line_number":159,"context_line":"        six.assertCountEqual(self, volume_hosts, list(set(volume_hosts)), msg)"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"class VolumeMultiBackendV1Test(VolumeMultiBackendV2Test):"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a8ffd7b_6d308257","line":159,"in_reply_to":"9a8ffd7b_d6f26006","updated":"2015-11-24 17:25:57.000000000","message":"Done","commit_id":"0b6abf8cd05209682d54bec32124fe6b467711c0"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"94876c70063181b12d76aaafb85933a3ba44c5a3","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        # Volume/Type creation (uses volume_backend_name)"},{"line_number":53,"context_line":"        # It is not allowed to create the same backend name twice"},{"line_number":54,"context_line":"        # create a list to keep created backend, to prevent duplication."},{"line_number":55,"context_line":"        cls.backend_names \u003d set(cls.backend_names)"},{"line_number":56,"context_line":"        if len(cls.backend_names) \u003c 2:"},{"line_number":57,"context_line":"            raise cls.skipException(\"Requires at least two different \""},{"line_number":58,"context_line":"                                    \"backend names\")"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a8ffd7b_3a936a5d","line":55,"updated":"2015-11-25 09:41:19.000000000","message":"This is already a set. Why whould you make it a set again ?","commit_id":"2a4bb75d5ce47259c47b0df4d1fe95eeef517f9f"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"50ad07068b3cbdf5bcea38b3cb56c30d666bbeab","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        # Volume/Type creation (uses volume_backend_name)"},{"line_number":53,"context_line":"        # It is not allowed to create the same backend name twice"},{"line_number":54,"context_line":"        # create a list to keep created backend, to prevent duplication."},{"line_number":55,"context_line":"        cls.backend_names \u003d set(cls.backend_names)"},{"line_number":56,"context_line":"        if len(cls.backend_names) \u003c 2:"},{"line_number":57,"context_line":"            raise cls.skipException(\"Requires at least two different \""},{"line_number":58,"context_line":"                                    \"backend names\")"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a8ffd7b_b009bb97","line":55,"in_reply_to":"9a8ffd7b_3a936a5d","updated":"2015-11-25 10:13:58.000000000","message":"conf.volume is a list type (see config.py) , once we make assigment to a list , it will be changed to list type and not set.\nThe set here creates a set object","commit_id":"2a4bb75d5ce47259c47b0df4d1fe95eeef517f9f"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"4d8f1698feb5e60a41b3204873ff5c3d78f87e7a","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        # Volume/Type creation (uses volume_backend_name)"},{"line_number":53,"context_line":"        # It is not allowed to create the same backend name twice"},{"line_number":54,"context_line":"        # create a list to keep created backend, to prevent duplication."},{"line_number":55,"context_line":"        cls.backend_names \u003d set(cls.backend_names)"},{"line_number":56,"context_line":"        if len(cls.backend_names) \u003c 2:"},{"line_number":57,"context_line":"            raise cls.skipException(\"Requires at least two different \""},{"line_number":58,"context_line":"                                    \"backend names\")"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a8ffd7b_8be9ea1c","line":55,"in_reply_to":"9a8ffd7b_9031170e","updated":"2015-11-25 10:24:55.000000000","message":"Hey , you are right  , i looked at wrong line . it should not be there .\ni will remove it , fixing it now \n\nThanks !!!\nBenny","commit_id":"2a4bb75d5ce47259c47b0df4d1fe95eeef517f9f"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"56cfa3faa8fb6222ff9b2fbea6b9f9317963406d","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        # Volume/Type creation (uses volume_backend_name)"},{"line_number":53,"context_line":"        # It is not allowed to create the same backend name twice"},{"line_number":54,"context_line":"        # create a list to keep created backend, to prevent duplication."},{"line_number":55,"context_line":"        cls.backend_names \u003d set(cls.backend_names)"},{"line_number":56,"context_line":"        if len(cls.backend_names) \u003c 2:"},{"line_number":57,"context_line":"            raise cls.skipException(\"Requires at least two different \""},{"line_number":58,"context_line":"                                    \"backend names\")"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a8ffd7b_9031170e","line":55,"in_reply_to":"9a8ffd7b_b009bb97","updated":"2015-11-25 10:20:51.000000000","message":"cls.backend_names is declared L39 and L45. In both definition you use a set. Where are you seeing a list ?","commit_id":"2a4bb75d5ce47259c47b0df4d1fe95eeef517f9f"},{"author":{"_account_id":7020,"name":"Joe Hakim Rahme","email":"jhakimra@redhat.com","username":"rahmu"},"change_message_id":"191755c86f1613c82ec2539e84e097b4ec70c0aa","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        cls.backend_names \u003d set()"},{"line_number":40,"context_line":"        if CONF.volume.backend1_name and CONF.volume.backend2_name:"},{"line_number":41,"context_line":"            cls.backend_names.add(CONF.volume.backend1_name)"},{"line_number":42,"context_line":"            cls.backend_names.add(CONF.volume.backend2_name)"},{"line_number":43,"context_line":"        else:"},{"line_number":44,"context_line":"            # read backend name from a list ."},{"line_number":45,"context_line":"            cls.backend_names \u003d set(CONF.volume.backend_names)"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a8ffd7b_0b5f3a42","line":42,"updated":"2015-11-25 10:41:46.000000000","message":"This is fine, but for next time it might be better not to create the empty set outside the condition, and use set literal constructors. Something like this:\n\n    if  CONF.volume.backend1_name and CONF.volume.backend2_name:\n        cls.backend_names \u003d {\n            CONF.volume.backend1_name,\n            CONF.volume.backend2_name,\n        }\n    else:\n        ...\n\nThis would avoid creating an empty set in case the backend_name list is set in the conf file (and I find that using literal constructors is almost always prettier).\n\nThis is obviously a tiny nitpick, not sure if it\u0027s worth uploading a new patchset just for this.","commit_id":"81e4ba9050cf2b12f520b29e5873963d067ab32f"},{"author":{"_account_id":7020,"name":"Joe Hakim Rahme","email":"jhakimra@redhat.com","username":"rahmu"},"change_message_id":"191755c86f1613c82ec2539e84e097b4ec70c0aa","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        # Volume/Type creation (uses volume_backend_name)"},{"line_number":53,"context_line":"        # It is not allowed to create the same backend name twice"},{"line_number":54,"context_line":"        # create a list to keep created backend, to prevent duplication."},{"line_number":55,"context_line":"        if len(cls.backend_names) \u003c 2:"},{"line_number":56,"context_line":"            raise cls.skipException(\"Requires at least two different \""},{"line_number":57,"context_line":"                                    \"backend names\")"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a8ffd7b_4b122264","line":54,"updated":"2015-11-25 10:41:46.000000000","message":"I don\u0027t understand what that last line of comments refer to. Which list are you talking about?","commit_id":"81e4ba9050cf2b12f520b29e5873963d067ab32f"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"9e102a368834dc2b35c837e65b1d3379aaaf4e21","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        # Volume/Type creation (uses volume_backend_name)"},{"line_number":53,"context_line":"        # It is not allowed to create the same backend name twice"},{"line_number":54,"context_line":"        # create a list to keep created backend, to prevent duplication."},{"line_number":55,"context_line":"        if len(cls.backend_names) \u003c 2:"},{"line_number":56,"context_line":"            raise cls.skipException(\"Requires at least two different \""},{"line_number":57,"context_line":"                                    \"backend names\")"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a8ffd7b_a7918254","line":54,"in_reply_to":"9a8ffd7b_4b122264","updated":"2015-11-25 10:49:08.000000000","message":"Joe is right. You should remove the code comment L54 it doesn\u0027t make sense anymore.","commit_id":"81e4ba9050cf2b12f520b29e5873963d067ab32f"}],"tempest/config.py":[{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"a8ef443b7136856d44c61b394d80993270192569","unresolved":false,"context_lines":[{"line_number":726,"context_line":"               help\u003d\u0027Name of the backend2 (must be declared in cinder.conf)\u0027,"},{"line_number":727,"context_line":"               deprecated_for_removal\u003dTrue),"},{"line_number":728,"context_line":"    cfg.ListOpt(\u0027backend_names\u0027,"},{"line_number":729,"context_line":"                default\u003d[],"},{"line_number":730,"context_line":"                help\u003d\u0027A list of backend names seperated by comma .\u0027"},{"line_number":731,"context_line":"                     \u0027The backend name must be declared in cinder.conf\u0027,"},{"line_number":732,"context_line":"                deprecated_opts\u003d[cfg.DeprecatedOpt(\u0027BACKEND_1\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"da85f559_f56c74d1","line":729,"updated":"2015-11-12 11:06:47.000000000","message":"I think we should change default to empty for deprecated options, and keep the default here. For people not customising this config option it will just work. For people explicitly setting the old options in their workflow, they will still have the ability to do so.","commit_id":"12352c40db9367c7fe07ebd87d1a562d1c25e7e1"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"1bf7e3808a6956195a8ce771e5f3887b4ff4c294","unresolved":false,"context_lines":[{"line_number":726,"context_line":"               help\u003d\u0027Name of the backend2 (must be declared in cinder.conf)\u0027,"},{"line_number":727,"context_line":"               deprecated_for_removal\u003dTrue),"},{"line_number":728,"context_line":"    cfg.ListOpt(\u0027backend_names\u0027,"},{"line_number":729,"context_line":"                default\u003d[],"},{"line_number":730,"context_line":"                help\u003d\u0027A list of backend names seperated by comma .\u0027"},{"line_number":731,"context_line":"                     \u0027The backend name must be declared in cinder.conf\u0027,"},{"line_number":732,"context_line":"                deprecated_opts\u003d[cfg.DeprecatedOpt(\u0027BACKEND_1\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"da85f559_9d5c194c","line":729,"in_reply_to":"da85f559_3563dc43","updated":"2015-11-12 16:28:44.000000000","message":"We should continue support for first phase old way , (backend1_name ,backend2_name)\nKeep in mind if we remove old defaults values  , automatic scripts may fail (assume they use defaults names for backends)\nWe will continue to support old option till complete removal.\n\nPlease let me know what you think ? if you agree , lets move on and remove your objections.\n\nOtherwise , i am  missing something ? \nBenny","commit_id":"12352c40db9367c7fe07ebd87d1a562d1c25e7e1"},{"author":{"_account_id":1192,"name":"David Kranz","email":"dkranz@redhat.com","username":"david-kranz"},"change_message_id":"03596ac160eaae2ca7d06b2764117f1fa62e4100","unresolved":false,"context_lines":[{"line_number":726,"context_line":"               help\u003d\u0027Name of the backend2 (must be declared in cinder.conf)\u0027,"},{"line_number":727,"context_line":"               deprecated_for_removal\u003dTrue),"},{"line_number":728,"context_line":"    cfg.ListOpt(\u0027backend_names\u0027,"},{"line_number":729,"context_line":"                default\u003d[],"},{"line_number":730,"context_line":"                help\u003d\u0027A list of backend names seperated by comma .\u0027"},{"line_number":731,"context_line":"                     \u0027The backend name must be declared in cinder.conf\u0027,"},{"line_number":732,"context_line":"                deprecated_opts\u003d[cfg.DeprecatedOpt(\u0027BACKEND_1\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"da85f559_7624ef0b","line":729,"in_reply_to":"da85f559_9d5c194c","updated":"2015-11-12 18:54:08.000000000","message":"I think Andrea is saying that the default for the new option should be [BACKEND_1, BACKEND_2] but make the code have the same behavior as before if either of the deprecated options is actually not None.","commit_id":"12352c40db9367c7fe07ebd87d1a562d1c25e7e1"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"f2bd31177b4fea8d46b8b4deb14d4b684e00f7f2","unresolved":false,"context_lines":[{"line_number":726,"context_line":"               help\u003d\u0027Name of the backend2 (must be declared in cinder.conf)\u0027,"},{"line_number":727,"context_line":"               deprecated_for_removal\u003dTrue),"},{"line_number":728,"context_line":"    cfg.ListOpt(\u0027backend_names\u0027,"},{"line_number":729,"context_line":"                default\u003d[],"},{"line_number":730,"context_line":"                help\u003d\u0027A list of backend names seperated by comma .\u0027"},{"line_number":731,"context_line":"                     \u0027The backend name must be declared in cinder.conf\u0027,"},{"line_number":732,"context_line":"                deprecated_opts\u003d[cfg.DeprecatedOpt(\u0027BACKEND_1\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"da85f559_3563dc43","line":729,"in_reply_to":"da85f559_f56c74d1","updated":"2015-11-12 11:13:23.000000000","message":"The root cause is to keep support old style configuration , this is the reason i wrote  \n\"A list of backend names seperated by comma \"\n\nSee code : resource_setup()\ncls.backend_names \u003d CONF.volume.backend_names\n        # support 2 backends names, deprecated_for_removal.\n        if not cls.backend_names:\n            cls.backend_names.append(CONF.volume.backend1_name)\n            cls.backend_names.append(CONF.volume.backend2_name)","commit_id":"12352c40db9367c7fe07ebd87d1a562d1c25e7e1"}]}
