)]}'
{"tempest/scenario/manager.py":[{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"4f14756a2ef7049e6cc9ed09ec1d5dfa8af1d477","unresolved":false,"context_lines":[{"line_number":467,"context_line":"        return snapshot_image"},{"line_number":468,"context_line":""},{"line_number":469,"context_line":"    def nova_volume_attach(self, server, volume_to_attach,"},{"line_number":470,"context_line":"                           device\u003dCONF.compute.volume_device_name):"},{"line_number":471,"context_line":"        volume \u003d self.servers_client.attach_volume("},{"line_number":472,"context_line":"            server[\u0027id\u0027], volumeId\u003dvolume_to_attach[\u0027id\u0027], device\u003d\u0027/dev/%s\u0027"},{"line_number":473,"context_line":"            % device)[\u0027volumeAttachment\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a740942_4599f777","line":470,"updated":"2015-12-09 09:39:33.000000000","message":"I think you should not do that. It\u0027s not likely to cause any real problem here, but it\u0027s still not good practise. The default value is evaluated at the time the function is defined, and the not re-evaluated anymore, so any code that tried to override, or mock that config value would be ignored.\n\nI think you should use device\u003dNone, and in the function if None set it to CONF.compute.volume_device_name.","commit_id":"129ec80d4ce0dd9225a14a53bd6ecc98b409db1f"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"0635defce529d459bf3b717b2c53fffa35ab2b71","unresolved":false,"context_lines":[{"line_number":467,"context_line":"        return snapshot_image"},{"line_number":468,"context_line":""},{"line_number":469,"context_line":"    def nova_volume_attach(self, server, volume_to_attach,"},{"line_number":470,"context_line":"                           device\u003dCONF.compute.volume_device_name):"},{"line_number":471,"context_line":"        volume \u003d self.servers_client.attach_volume("},{"line_number":472,"context_line":"            server[\u0027id\u0027], volumeId\u003dvolume_to_attach[\u0027id\u0027], device\u003d\u0027/dev/%s\u0027"},{"line_number":473,"context_line":"            % device)[\u0027volumeAttachment\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a740942_3e487cb2","line":470,"in_reply_to":"7a740942_4599f777","updated":"2015-12-09 10:23:59.000000000","message":"Good point, will do.","commit_id":"129ec80d4ce0dd9225a14a53bd6ecc98b409db1f"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"b59d1e27fdc5587cf2561ed0b43d649b94ef4fac","unresolved":false,"context_lines":[{"line_number":305,"context_line":"            display_name\u003dsnapshot_name)[\u0027snapshot\u0027]"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"        self.addCleanup("},{"line_number":308,"context_line":"            self.snapshots_client.wait_for_resource_deletion, snap[\u0027id\u0027])"},{"line_number":309,"context_line":"        self.addCleanup(self.snapshots_client.delete_snapshot, snap[\u0027id\u0027])"},{"line_number":310,"context_line":"        self.snapshots_client.wait_for_snapshot_status(snap[\u0027id\u0027], \u0027available\u0027)"},{"line_number":311,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"fa0719c6_a76ddfcd","line":308,"updated":"2016-03-24 12:30:26.000000000","message":"IMHO a helper method would be less confusing than using two add cleanup.","commit_id":"2765807008350778e0399e81be366fef6d6e69a1"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"ead7179f0e4fc75bffec3c91e448766b2c37d58a","unresolved":false,"context_lines":[{"line_number":305,"context_line":"            display_name\u003dsnapshot_name)[\u0027snapshot\u0027]"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"        self.addCleanup("},{"line_number":308,"context_line":"            self.snapshots_client.wait_for_resource_deletion, snap[\u0027id\u0027])"},{"line_number":309,"context_line":"        self.addCleanup(self.snapshots_client.delete_snapshot, snap[\u0027id\u0027])"},{"line_number":310,"context_line":"        self.snapshots_client.wait_for_snapshot_status(snap[\u0027id\u0027], \u0027available\u0027)"},{"line_number":311,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"dab17558_87640db9","line":308,"in_reply_to":"fa0719c6_223a5299","updated":"2016-05-11 10:58:57.000000000","message":"It is not just about re-usability, it is also less confusing.\n\nNow we write \u0027wait\u0027 than \u0027delete\u0027, and we expect it will be executed in the reverse order.\n\nWhen the wait is necessary usually sounds more reasionble to handle it together as one step.","commit_id":"2765807008350778e0399e81be366fef6d6e69a1"},{"author":{"_account_id":97,"name":"Daryl Walleck","email":"daryl.walleck@rackspace.com","username":"dwalleck"},"change_message_id":"013f6ed06f2b65c2d808b318770ac277414ad9aa","unresolved":false,"context_lines":[{"line_number":305,"context_line":"            display_name\u003dsnapshot_name)[\u0027snapshot\u0027]"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"        self.addCleanup("},{"line_number":308,"context_line":"            self.snapshots_client.wait_for_resource_deletion, snap[\u0027id\u0027])"},{"line_number":309,"context_line":"        self.addCleanup(self.snapshots_client.delete_snapshot, snap[\u0027id\u0027])"},{"line_number":310,"context_line":"        self.snapshots_client.wait_for_snapshot_status(snap[\u0027id\u0027], \u0027available\u0027)"},{"line_number":311,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"fa0719c6_223a5299","line":308,"in_reply_to":"fa0719c6_a76ddfcd","updated":"2016-03-24 15:24:30.000000000","message":"I would only add a helper method only if it would be re-used consistently elsewhere in the tests. Creating methods for the sake of two lines of code is questionable.\n\nThat said, is the wait for resource deletion really necessary? Yes, it would alert the user if a snapshot failed to delete, but if that is something we are concerned about, should it be part of the test?","commit_id":"2765807008350778e0399e81be366fef6d6e69a1"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"ae1874d82d73a83068ed9c107e1da77d8f0133b0","unresolved":false,"context_lines":[{"line_number":290,"context_line":"            volume_id\u003dvolume_id, force\u003dforce,"},{"line_number":291,"context_line":"            display_name\u003dsnapshot_name)[\u0027snapshot\u0027]"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"        self.addCleanup("},{"line_number":294,"context_line":"            self.snapshots_client.wait_for_resource_deletion, snap[\u0027id\u0027])"},{"line_number":295,"context_line":"        self.addCleanup(self.snapshots_client.delete_snapshot, snap[\u0027id\u0027])"},{"line_number":296,"context_line":"        waiters.wait_for_snapshot_status(self.snapshots_client,"},{"line_number":297,"context_line":"                                         snap[\u0027id\u0027], \u0027available\u0027)"}],"source_content_type":"text/x-python","patch_set":14,"id":"dada55a8_2f6b80b8","line":294,"range":{"start_line":293,"start_character":0,"end_line":294,"end_character":73},"updated":"2016-07-27 10:21:32.000000000","message":"here, afazekas mentioned before. But I couldn\u0027t find your reply for it.\nDo you think this is better than the suggestion of afazekas?","commit_id":"1fb7495429239a9f8cefcdff61f7cf8c574645c9"}],"tempest/scenario/test_volume_extend.py":[{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"4f14756a2ef7049e6cc9ed09ec1d5dfa8af1d477","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    \"\"\"This test case attempts to reproduce the following steps:"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"     * Create a server, a volume and format the volume"},{"line_number":30,"context_line":"     * Take a snapshot of the formated volume"},{"line_number":31,"context_line":"     * Extend the volume"},{"line_number":32,"context_line":"     * Create two volumes from the snapshot:"},{"line_number":33,"context_line":"        - One with the same size as the snapshoted volume"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a740942_e5dfc30a","line":30,"range":{"start_line":30,"start_character":30,"end_line":30,"end_character":38},"updated":"2015-12-09 09:39:33.000000000","message":"NIT: formatted","commit_id":"129ec80d4ce0dd9225a14a53bd6ecc98b409db1f"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"4f14756a2ef7049e6cc9ed09ec1d5dfa8af1d477","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        - One with the same size as the snapshoted volume"},{"line_number":34,"context_line":"          (before it was extended)"},{"line_number":35,"context_line":"        - One bigger than the resized volume"},{"line_number":36,"context_line":"    * Test that all 3 volumes have the expected size and can be mounted"},{"line_number":37,"context_line":"      (this test that no obvious data corruption happened)"},{"line_number":38,"context_line":"    \"\"\""},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7a740942_68b2ca4d","line":36,"updated":"2015-12-09 09:39:33.000000000","message":"and can be mounted at the same time","commit_id":"129ec80d4ce0dd9225a14a53bd6ecc98b409db1f"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"0635defce529d459bf3b717b2c53fffa35ab2b71","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        - One with the same size as the snapshoted volume"},{"line_number":34,"context_line":"          (before it was extended)"},{"line_number":35,"context_line":"        - One bigger than the resized volume"},{"line_number":36,"context_line":"    * Test that all 3 volumes have the expected size and can be mounted"},{"line_number":37,"context_line":"      (this test that no obvious data corruption happened)"},{"line_number":38,"context_line":"    \"\"\""},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7a740942_3edf1cd7","line":36,"in_reply_to":"7a740942_68b2ca4d","updated":"2015-12-09 10:23:59.000000000","message":"yes ! Will update.","commit_id":"129ec80d4ce0dd9225a14a53bd6ecc98b409db1f"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"4f14756a2ef7049e6cc9ed09ec1d5dfa8af1d477","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        with attach_and_mount(volume, \u0027vdb\u0027, \u0027/mnt/1\u0027):"},{"line_number":130,"context_line":"            with attach_and_mount(small_vol_from_snap, \u0027vdc\u0027, \u0027/mnt/2\u0027):"},{"line_number":131,"context_line":"                with attach_and_mount(large_vol_from_snap, \u0027vdd\u0027, \u0027/mnt/3\u0027):"},{"line_number":132,"context_line":"                    partitions_size \u003d self.parse_partitions_size("},{"line_number":133,"context_line":"                        ssh_client.get_partitions())"},{"line_number":134,"context_line":"                    df_output \u003d ssh_client.exec_command(\u0027df -h\u0027)"},{"line_number":135,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7a740942_484fce33","line":132,"updated":"2015-12-09 09:39:33.000000000","message":"Just curious: mounting the three volumes at the same time is to that can invoke the get_partitions only once, or do you specifically want to test mounting more than one volume?\nEither case it looks ok for me, since you don\u0027t rely on order in the assert.","commit_id":"129ec80d4ce0dd9225a14a53bd6ecc98b409db1f"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"0635defce529d459bf3b717b2c53fffa35ab2b71","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        with attach_and_mount(volume, \u0027vdb\u0027, \u0027/mnt/1\u0027):"},{"line_number":130,"context_line":"            with attach_and_mount(small_vol_from_snap, \u0027vdc\u0027, \u0027/mnt/2\u0027):"},{"line_number":131,"context_line":"                with attach_and_mount(large_vol_from_snap, \u0027vdd\u0027, \u0027/mnt/3\u0027):"},{"line_number":132,"context_line":"                    partitions_size \u003d self.parse_partitions_size("},{"line_number":133,"context_line":"                        ssh_client.get_partitions())"},{"line_number":134,"context_line":"                    df_output \u003d ssh_client.exec_command(\u0027df -h\u0027)"},{"line_number":135,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7a740942_fe68b4f6","line":132,"in_reply_to":"7a740942_484fce33","updated":"2015-12-09 10:23:59.000000000","message":"I did it \"at the same time\" to limit the number of SSH connections (they sometime fail randomly) and to make the test overall somewhat faster.","commit_id":"129ec80d4ce0dd9225a14a53bd6ecc98b409db1f"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"f4d341b4cb0d56895ad54a0390dd6c0724fa59e3","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from tempest import test"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"CONF \u003d config.CONF"},{"line_number":23,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class TestVolumeExtend(manager.ScenarioTest):"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a68dd71_563651b5","line":23,"updated":"2016-01-26 21:31:16.000000000","message":"It looks like this variable is not used anywhere.","commit_id":"d7de2a4bf115e2764d5a5bade865b99d394027f1"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"f4d341b4cb0d56895ad54a0390dd6c0724fa59e3","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        return sizes"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    @test.idempotent_id(\u0027ad77fdf2-8f96-11e5-8aa8-9f946ec46bdc\u0027)"},{"line_number":92,"context_line":"    @test.services(\u0027compute\u0027, \u0027volume\u0027)"},{"line_number":93,"context_line":"    def test_volume_extend(self):"},{"line_number":94,"context_line":"        keypair \u003d self.create_keypair()"},{"line_number":95,"context_line":"        security_groups \u003d [{\u0027name\u0027: self._create_security_group()[\u0027name\u0027]}]"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a68dd71_56173154","line":92,"updated":"2016-01-26 21:31:16.000000000","message":"What about adding the \u0027network\u0027 service here as well?","commit_id":"d7de2a4bf115e2764d5a5bade865b99d394027f1"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"f4d341b4cb0d56895ad54a0390dd6c0724fa59e3","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        original_vol_size \u003d volume[\u0027size\u0027]"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        # SSH to the server"},{"line_number":105,"context_line":"        fip \u003d self.create_floating_ip(server)[\u0027ip\u0027]"},{"line_number":106,"context_line":"        ssh_client \u003d self.get_remote_client("},{"line_number":107,"context_line":"            fip, private_key\u003dkeypair[\u0027private_key\u0027])"},{"line_number":108,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9a68dd71_d61fa107","line":105,"updated":"2016-01-26 21:31:16.000000000","message":"It looks like this test will always use a floating IP and there will be no chance to use fixed IP. I think we should consider the \u0027fixed IP\u0027 case here as well.","commit_id":"d7de2a4bf115e2764d5a5bade865b99d394027f1"},{"author":{"_account_id":13167,"name":"Yogesh","email":"ykshirsa@netapp.com","username":"yogi1"},"change_message_id":"d128b795d1c5b4dc89c85812af19894cd2767c0c","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        - One bigger than the resized volume"},{"line_number":33,"context_line":"    * Test that all 3 volumes have the expected size and can be mounted"},{"line_number":34,"context_line":"      at the same time (this test that no obvious data corruption happened)"},{"line_number":35,"context_line":"    \"\"\""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    @classmethod"},{"line_number":38,"context_line":"    def skip_checks(cls):"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a5de9d1_8491d79b","line":35,"range":{"start_line":35,"start_character":4,"end_line":35,"end_character":7},"updated":"2016-01-28 15:43:34.000000000","message":"It would be more appropriate to move this docstring to the actual test rather than adding at the class level.","commit_id":"5fa746f53f6f8a940132413ad39cafefbb6d3209"}]}
