)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"356ccd44defcdc42f58c40dcc57c2f8ae772a992","unresolved":false,"context_lines":[{"line_number":1,"context_line":"Parent:     b25603c2 (Merge \"Rename SwiftScenarioTest to ObjectStorageScenarioTest\")"},{"line_number":2,"context_line":"Author:     Anthony Lee \u003canthony.mic.lee@hpe.com\u003e"},{"line_number":3,"context_line":"AuthorDate: 2015-03-17 15:07:34 -0700"},{"line_number":4,"context_line":"Commit:     Matt Riedemann \u003cmriedem@us.ibm.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-09-22 09:43:52 -0700"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":31,"id":"ba15a1d1_ed82b151","line":2,"updated":"2015-09-23 16:45:46.000000000","message":"You don\u0027t need to be a co-author if you\u0027re listed as the author of the patch.","commit_id":"99e263968564ab3f7926457d41374a9369dda1e2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"73e9d2760a913b899e27109db1f371fce760201f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"Parent:     b25603c2 (Merge \"Rename SwiftScenarioTest to ObjectStorageScenarioTest\")"},{"line_number":2,"context_line":"Author:     Anthony Lee \u003canthony.mic.lee@hpe.com\u003e"},{"line_number":3,"context_line":"AuthorDate: 2015-03-17 15:07:34 -0700"},{"line_number":4,"context_line":"Commit:     Matt Riedemann \u003cmriedem@us.ibm.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-09-22 09:43:52 -0700"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":31,"id":"9a1a9d01_d834aedf","line":2,"in_reply_to":"ba15a1d1_ed82b151","updated":"2015-09-25 19:33:59.000000000","message":"Hmm, this should probably be jogo...right?  Otherwise he\u0027s not even listed as having credit on this, he\u0027s just the owner in gerrit.","commit_id":"99e263968564ab3f7926457d41374a9369dda1e2"}],"tempest/api/compute/admin/test_live_migration.py":[{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"c2c8b64001ddde46189a7736888681ed61bc46d1","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def _get_an_active_server(self, volume_backed\u003dFalse):"},{"line_number":74,"context_line":"        for server_id in self.created_server_ids:"},{"line_number":75,"context_line":"            # TODO(jogo): keep track if volume backed or not"},{"line_number":76,"context_line":"            if (\u0027ACTIVE\u0027 \u003d\u003d self._get_server_status(server_id) and"},{"line_number":77,"context_line":"                    volume_backed is False):"},{"line_number":78,"context_line":"                return server_id"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa963961_92bb9a72","line":75,"updated":"2015-03-27 15:56:39.000000000","message":"I should resolve this TODO before this is merges","commit_id":"d0d0855b22e867b583c48f84512c46975ee0b9ca"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"4630e8b0e1d9cd8773bae334cb6c2192d39511a1","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        super(LiveBlockMigrationTestJSON, cls).resource_setup()"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        cls.created_server_ids \u003d []  # tuple (server_id, volume_backed)"},{"line_number":40,"context_line":"        cls.created_volume_backed_server_ids \u003d []"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def _get_compute_hostnames(self):"},{"line_number":43,"context_line":"        body \u003d self.admin_hosts_client.list_hosts()"}],"source_content_type":"text/x-python","patch_set":10,"id":"baa041b7_25d25801","line":40,"updated":"2015-04-02 09:11:46.000000000","message":"This variable seems not used ?","commit_id":"542263d704547b43e44d8de934a917266cbc6c23"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"67b9473ddf67d6bc66e98bddeeaccf97fa1fc3ea","unresolved":false,"context_lines":[{"line_number":80,"context_line":"            server \u003d self.create_test_server(wait_until\u003d\"ACTIVE\","},{"line_number":81,"context_line":"                                             volume_backed\u003dvolume_backed)"},{"line_number":82,"context_line":"            server_id \u003d server[\u0027id\u0027]"},{"line_number":83,"context_line":"            self.created_server_ids.append(server_id, volume_backed)"},{"line_number":84,"context_line":"            return server_id"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def _volume_clean_up(self, server_id, volume_id):"}],"source_content_type":"text/x-python","patch_set":10,"id":"baa041b7_858da433","line":83,"updated":"2015-04-02 09:09:05.000000000","message":"You missed some parenthesis here. (append() takes exactly one argument (2 given))","commit_id":"542263d704547b43e44d8de934a917266cbc6c23"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"55062858362bd90e3a360c23bff8959be615a663","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    def resource_setup(cls):"},{"line_number":37,"context_line":"        super(LiveBlockMigrationTestJSON, cls).resource_setup()"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        cls.created_server_ids \u003d []  # tuple (server_id, volume_backed)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def _get_compute_hostnames(self):"},{"line_number":42,"context_line":"        body \u003d self.admin_hosts_client.list_hosts()"}],"source_content_type":"text/x-python","patch_set":11,"id":"5ad0253b_e1d0f1cb","line":39,"updated":"2015-04-28 19:30:32.000000000","message":"Umm, what is this for?","commit_id":"fab34bb7079419e33ecb4d818a9c4f5bc9615263"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"55062858362bd90e3a360c23bff8959be615a663","unresolved":false,"context_lines":[{"line_number":59,"context_line":"            server_id, dest_host,"},{"line_number":60,"context_line":"            # volume backed instances shouldn\u0027t be block migrated"},{"line_number":61,"context_line":"            (CONF.compute_feature_enabled.block_migration_for_live_migration"},{"line_number":62,"context_line":"                and allow_block_migration))"},{"line_number":63,"context_line":"        return body"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def _get_host_other_than(self, host):"}],"source_content_type":"text/x-python","patch_set":11,"id":"5ad0253b_d408152b","line":62,"updated":"2015-04-28 19:30:32.000000000","message":"So this logic seems slightly off to me, if the config flag is false and the param is true, doesn\u0027t that mean we\u0027re not doing what the caller asked for? I think if that happens we should at least log something (although I think failing or skipping will probably be better) saying you can use block migration unless it\u0027s enabled. \n\nGranted that case we should be skipping way beforehand, and I realize this is just a shortut. But this logic tripped me up the first time I saw it, so I think maybe being  a bit more verbose and clear about the intent would be good here.","commit_id":"fab34bb7079419e33ecb4d818a9c4f5bc9615263"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"55062858362bd90e3a360c23bff8959be615a663","unresolved":false,"context_lines":[{"line_number":93,"context_line":"    @testtools.skipIf(not CONF.compute_feature_enabled.live_migration,"},{"line_number":94,"context_line":"                      \u0027Live migration not available\u0027)"},{"line_number":95,"context_line":"    @test.attr(type\u003d\u0027gate\u0027)"},{"line_number":96,"context_line":"    def test_live_migration(self):"},{"line_number":97,"context_line":"        self._test_migration(volume_backed\u003dFalse)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    @test.idempotent_id(\u00275071cf17-3004-4257-ae61-73a84e28badd\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"5ad0253b_1437adb1","line":96,"updated":"2015-04-28 19:30:32.000000000","message":"Nit: I think it might be a bit easier to read if we moved this below the definition of _test_migration() It doesn\u0027t really matter one way or the other though","commit_id":"fab34bb7079419e33ecb4d818a9c4f5bc9615263"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"55062858362bd90e3a360c23bff8959be615a663","unresolved":false,"context_lines":[{"line_number":100,"context_line":"    @testtools.skipIf(not CONF.compute_feature_enabled.live_migration,"},{"line_number":101,"context_line":"                      \u0027Live migration not available\u0027)"},{"line_number":102,"context_line":"    @test.attr(type\u003d\u0027gate\u0027)"},{"line_number":103,"context_line":"    def test_live_volume_backed_migration(self):"},{"line_number":104,"context_line":"        self._test_migration(volume_backed\u003dTrue)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def _test_migration(self, volume_backed):"}],"source_content_type":"text/x-python","patch_set":11,"id":"5ad0253b_d440150a","line":103,"updated":"2015-04-28 19:30:32.000000000","message":"Same for this test too.","commit_id":"fab34bb7079419e33ecb4d818a9c4f5bc9615263"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5c7f8d036c0c4cc926e1730a41e6de954ffd9359","unresolved":false,"context_lines":[{"line_number":125,"context_line":"    @testtools.skipIf(not CONF.compute_feature_enabled."},{"line_number":126,"context_line":"                      block_migrate_cinder_iscsi,"},{"line_number":127,"context_line":"                      \u0027Block Live migration not configured for iSCSI\u0027)"},{"line_number":128,"context_line":"    @test.attr(type\u003d\u0027gate\u0027)"},{"line_number":129,"context_line":"    def test_iscsi_volume(self):"},{"line_number":130,"context_line":"        # Live block migrate an instance to another host"},{"line_number":131,"context_line":"        if len(self._get_compute_hostnames()) \u003c 2:"}],"source_content_type":"text/x-python","patch_set":11,"id":"7aaa499b_dd758b98","line":128,"updated":"2015-04-14 16:36:11.000000000","message":"Don\u0027t we already have live migrate with a volume backed instance here?  The instance isn\u0027t booted from a volume, but a volume is attached prior to live migrate.  This test might run with block migration though...","commit_id":"fab34bb7079419e33ecb4d818a9c4f5bc9615263"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"ff6bb041d7a47529607a47bd63cb701d0d1e32bf","unresolved":false,"context_lines":[{"line_number":125,"context_line":"    @testtools.skipIf(not CONF.compute_feature_enabled."},{"line_number":126,"context_line":"                      block_migrate_cinder_iscsi,"},{"line_number":127,"context_line":"                      \u0027Block Live migration not configured for iSCSI\u0027)"},{"line_number":128,"context_line":"    @test.attr(type\u003d\u0027gate\u0027)"},{"line_number":129,"context_line":"    def test_iscsi_volume(self):"},{"line_number":130,"context_line":"        # Live block migrate an instance to another host"},{"line_number":131,"context_line":"        if len(self._get_compute_hostnames()) \u003c 2:"}],"source_content_type":"text/x-python","patch_set":11,"id":"7aaa499b_b5c08be1","line":128,"in_reply_to":"7aaa499b_dd758b98","updated":"2015-04-14 22:37:54.000000000","message":"this is a separate case and we skip it:\n\nhttp://logs.openstack.org/33/165233/11/experimental/check-tempest-dsvm-aiopcpu-full/4e9d524/console.html.gz#_2015-04-03_18_27_01_268\n\nAlso it turns out nova cannot live *block* migrate attached volumes. You can do regular live migration though.\n\nThis means currently we have no good way to live migrate a image backed instance with an attached volume on a system without a shared filesystem.","commit_id":"fab34bb7079419e33ecb4d818a9c4f5bc9615263"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"4e283eed783b3cfefd660b4061e553a94b065fe3","unresolved":false,"context_lines":[{"line_number":80,"context_line":"            if (\u0027ACTIVE\u0027 \u003d\u003d self._get_server_status(server_id) and"},{"line_number":81,"context_line":"                    volume_backed \u003d\u003d backing):"},{"line_number":82,"context_line":"                return server_id"},{"line_number":83,"context_line":"        else:"},{"line_number":84,"context_line":"            server \u003d self.create_test_server(wait_until\u003d\"ACTIVE\","},{"line_number":85,"context_line":"                                             volume_backed\u003dvolume_backed)"},{"line_number":86,"context_line":"            server_id \u003d server[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":14,"id":"5afe65bd_920c5dee","line":83,"updated":"2015-06-04 12:45:23.000000000","message":"Why not put the extra volume logic here instead of extended the create_server method ?","commit_id":"7e12e603ca4cd4682a943b078b97a70405f8d4df"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"25f84e8a0e289b631a23d4682bfddafffb612624","unresolved":false,"context_lines":[{"line_number":80,"context_line":"            if (\u0027ACTIVE\u0027 \u003d\u003d self._get_server_status(server_id) and"},{"line_number":81,"context_line":"                    volume_backed \u003d\u003d backing):"},{"line_number":82,"context_line":"                return server_id"},{"line_number":83,"context_line":"        else:"},{"line_number":84,"context_line":"            server \u003d self.create_test_server(wait_until\u003d\"ACTIVE\","},{"line_number":85,"context_line":"                                             volume_backed\u003dvolume_backed)"},{"line_number":86,"context_line":"            server_id \u003d server[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":14,"id":"3afb71cf_95e72312","line":83,"in_reply_to":"5afe65bd_920c5dee","updated":"2015-06-05 03:23:12.000000000","message":"I was thinking it would make it easier for other tests to boot volume backed instances.","commit_id":"7e12e603ca4cd4682a943b078b97a70405f8d4df"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1bb2be2850b22e68fb7925b9dd06c4e75699ddeb","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    def resource_setup(cls):"},{"line_number":39,"context_line":"        super(LiveBlockMigrationTestJSON, cls).resource_setup()"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        cls.created_server_ids \u003d []  # list of tuples(server_id, volume_backed)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def _get_compute_hostnames(self):"},{"line_number":44,"context_line":"        body \u003d self.admin_hosts_client.list_hosts()[\u0027hosts\u0027]"}],"source_content_type":"text/x-python","patch_set":29,"id":"ba15a1d1_8805f511","line":41,"updated":"2015-09-17 18:53:57.000000000","message":"Maybe a follow on change, but I\u0027d rather see this as a list of named tuples or something, I just feel that this is going to break us at some point given the name of the variable.","commit_id":"435c8fd88c8808810639b0fb2f80173133070278"},{"author":{"_account_id":11903,"name":"Anthony Lee","email":"anthony.mic.lee@hpe.com","username":"leeantho"},"change_message_id":"666198015acbe6ce4cf9bb512d28ed54a8ff83ac","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    def resource_setup(cls):"},{"line_number":39,"context_line":"        super(LiveBlockMigrationTestJSON, cls).resource_setup()"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        cls.created_server_ids \u003d []  # list of tuples(server_id, volume_backed)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def _get_compute_hostnames(self):"},{"line_number":44,"context_line":"        body \u003d self.admin_hosts_client.list_hosts()[\u0027hosts\u0027]"}],"source_content_type":"text/x-python","patch_set":29,"id":"ba15a1d1_8db840e7","line":41,"in_reply_to":"ba15a1d1_8805f511","updated":"2015-09-21 17:38:30.000000000","message":"Done","commit_id":"435c8fd88c8808810639b0fb2f80173133070278"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e74906e7cc915739c6d5f845ad488a01ced0dfad","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        server_id \u003d self._get_an_active_server()"},{"line_number":104,"context_line":"        actual_host \u003d self._get_host_for_server(server_id)"},{"line_number":105,"context_line":"        target_host \u003d self._get_host_other_than(actual_host)"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        if state \u003d\u003d \u0027PAUSED\u0027:"},{"line_number":108,"context_line":"            self.admin_servers_client.pause_server(server_id)"},{"line_number":109,"context_line":"            waiters.wait_for_server_status(self.admin_servers_client,"}],"source_content_type":"text/x-python","patch_set":30,"id":"ba15a1d1_a6ddf315","side":"PARENT","line":106,"updated":"2015-09-22 15:46:13.000000000","message":"Should remove this unrelated whitespace change.","commit_id":"b25603c2c9c4329edf7852f6930ab90638865f4c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b610a38247f45390f7c2ccd4e42bfa01bdb39c3f","unresolved":false,"context_lines":[{"line_number":126,"context_line":"    @test.idempotent_id(\u00271dce86b8-eb04-4c03-a9d8-9c1dc3ee0c7b\u0027)"},{"line_number":127,"context_line":"    @testtools.skipUnless(CONF.compute_feature_enabled.live_migration,"},{"line_number":128,"context_line":"                          \u0027Live migration not available\u0027)"},{"line_number":129,"context_line":"    def test_live_block_migration(self):"},{"line_number":130,"context_line":"        self._test_live_block_migration()"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    @test.idempotent_id(\u00271e107f21-61b2-4988-8f22-b196e938ab88\u0027)"}],"source_content_type":"text/x-python","patch_set":30,"id":"ba15a1d1_77b6a38b","side":"PARENT","line":129,"updated":"2015-09-22 16:27:21.000000000","message":"We should still call this test_live_block_migration since that\u0027s what it does.","commit_id":"b25603c2c9c4329edf7852f6930ab90638865f4c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e74906e7cc915739c6d5f845ad488a01ced0dfad","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from collections import namedtuple"},{"line_number":18,"context_line":"import testtools"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from tempest.api.compute import base"}],"source_content_type":"text/x-python","patch_set":30,"id":"ba15a1d1_8601cf6c","line":17,"updated":"2015-09-22 15:46:13.000000000","message":"Put a blank line between collections and testtools, since collections is part of the standard library and testtools is 3rd party.\n\nhttp://docs.openstack.org/developer/hacking/#import-order-template","commit_id":"1fa04727cda4308fe02b5572c7232ade1c13f8e6"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e74906e7cc915739c6d5f845ad488a01ced0dfad","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class LiveBlockMigrationTestJSON(base.BaseV2ComputeAdminTest):"},{"line_number":29,"context_line":"    _host_key \u003d \u0027OS-EXT-SRV-ATTR:host\u0027"},{"line_number":30,"context_line":"    CreatedServer \u003d namedtuple(\u0027CreatedServer\u0027,"},{"line_number":31,"context_line":"                               \u0027server_id, volume_backed\u0027)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":30,"id":"ba15a1d1_660cbb94","line":30,"updated":"2015-09-22 15:46:13.000000000","message":"I\u0027d move this outside the class so it\u0027s just at module level scope, then you don\u0027t need to do self.CreatedServer(...).","commit_id":"1fa04727cda4308fe02b5572c7232ade1c13f8e6"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e74906e7cc915739c6d5f845ad488a01ced0dfad","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        return self._get_server_details(server_id)[self._host_key]"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def _migrate_server_to(self, server_id, dest_host,"},{"line_number":63,"context_line":"                           use_block_migration\u003dTrue):"},{"line_number":64,"context_line":"        # volume backed instances shouldn\u0027t be block migrated"},{"line_number":65,"context_line":"        bmflm \u003d (CONF.compute_feature_enabled."},{"line_number":66,"context_line":"                 block_migration_for_live_migration and use_block_migration)"}],"source_content_type":"text/x-python","patch_set":30,"id":"ba15a1d1_f95dcc15","line":63,"updated":"2015-09-22 15:46:13.000000000","message":"Rather than require this kwarg, you have the namedtuple list of created servers, couldn\u0027t you just determine if the server is volume backed or not by finding the CreatedServer namedtuple in created_servers (filter by id) and then check it\u0027s volume_backed value?","commit_id":"1fa04727cda4308fe02b5572c7232ade1c13f8e6"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e74906e7cc915739c6d5f845ad488a01ced0dfad","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        return self._get_server_details(server_id)[\u0027status\u0027]"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def _get_an_active_server(self, volume_backed\u003dFalse):"},{"line_number":81,"context_line":"        for server_id, backing in self.created_servers:"},{"line_number":82,"context_line":"            if (\u0027ACTIVE\u0027 \u003d\u003d self._get_server_status(server_id) and"},{"line_number":83,"context_line":"                    volume_backed \u003d\u003d backing):"},{"line_number":84,"context_line":"                return server_id"}],"source_content_type":"text/x-python","patch_set":30,"id":"ba15a1d1_c6f1076c","line":81,"updated":"2015-09-22 15:46:13.000000000","message":"nit: \u0027backing\u0027 is an odd name.  You can\u0027t call it volume_backed, so maybe vol_backed for the iterator variable?","commit_id":"1fa04727cda4308fe02b5572c7232ade1c13f8e6"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e74906e7cc915739c6d5f845ad488a01ced0dfad","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    def _get_an_active_server(self, volume_backed\u003dFalse):"},{"line_number":81,"context_line":"        for server_id, backing in self.created_servers:"},{"line_number":82,"context_line":"            if (\u0027ACTIVE\u0027 \u003d\u003d self._get_server_status(server_id) and"},{"line_number":83,"context_line":"                    volume_backed \u003d\u003d backing):"},{"line_number":84,"context_line":"                return server_id"},{"line_number":85,"context_line":"        else:"},{"line_number":86,"context_line":"            server \u003d self.create_test_server(wait_until\u003d\"ACTIVE\","}],"source_content_type":"text/x-python","patch_set":30,"id":"ba15a1d1_19de806d","line":83,"updated":"2015-09-22 15:46:13.000000000","message":"This seems sort of unnecessary, given the created_servers list is only ever going to contain volume-backed instances or not volume-backed instances per test run.  It doesn\u0027t really hurt, but it\u0027s kind of redundant.","commit_id":"1fa04727cda4308fe02b5572c7232ade1c13f8e6"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e74906e7cc915739c6d5f845ad488a01ced0dfad","unresolved":false,"context_lines":[{"line_number":138,"context_line":"                         msg)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    @test.idempotent_id(\u00271dce86b8-eb04-4c03-a9d8-9c1dc3ee0c7b\u0027)"},{"line_number":141,"context_line":"    @testtools.skipIf(not CONF.compute_feature_enabled.live_migration,"},{"line_number":142,"context_line":"                      \u0027Live migration not available\u0027)"},{"line_number":143,"context_line":"    def test_live_migration(self):"},{"line_number":144,"context_line":"        self._test_live_migration()"}],"source_content_type":"text/x-python","patch_set":30,"id":"ba15a1d1_7923fca7","line":141,"updated":"2015-09-22 15:46:13.000000000","message":"Why did this need to change from skipUnless to skipIf(not)?  skipUnless does the same thing, and is actually cleaner IMO.","commit_id":"1fa04727cda4308fe02b5572c7232ade1c13f8e6"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e74906e7cc915739c6d5f845ad488a01ced0dfad","unresolved":false,"context_lines":[{"line_number":156,"context_line":"        self._test_live_migration(state\u003d\u0027PAUSED\u0027)"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    @test.idempotent_id(\u00275071cf17-3004-4257-ae61-73a84e28badd\u0027)"},{"line_number":159,"context_line":"    @testtools.skipIf(not CONF.compute_feature_enabled.live_migration,"},{"line_number":160,"context_line":"                      \u0027Live migration not available\u0027)"},{"line_number":161,"context_line":"    def test_volume_backed_live_migration(self):"},{"line_number":162,"context_line":"        self._test_live_migration(volume_backed\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":30,"id":"ba15a1d1_795a1c2c","line":159,"updated":"2015-09-22 15:46:13.000000000","message":"I\u0027d prefer skipUnless over skipIf(not) here.","commit_id":"1fa04727cda4308fe02b5572c7232ade1c13f8e6"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b66830c780ffc931d868ea86312d31cf5cafb30c","unresolved":false,"context_lines":[{"line_number":158,"context_line":"    @test.idempotent_id(\u00275071cf17-3004-4257-ae61-73a84e28badd\u0027)"},{"line_number":159,"context_line":"    @testtools.skipIf(not CONF.compute_feature_enabled.live_migration,"},{"line_number":160,"context_line":"                      \u0027Live migration not available\u0027)"},{"line_number":161,"context_line":"    def test_volume_backed_live_migration(self):"},{"line_number":162,"context_line":"        self._test_live_migration(volume_backed\u003dTrue)"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    @test.idempotent_id(\u0027e19c0cc6-6720-4ed8-be83-b6603ed5c812\u0027)"}],"source_content_type":"text/x-python","patch_set":30,"id":"ba15a1d1_5cd146cc","line":161,"updated":"2015-09-22 16:12:19.000000000","message":"clarkb pointed out in IRC that we also need the service tag so we don\u0027t run this if cinder is not available.","commit_id":"1fa04727cda4308fe02b5572c7232ade1c13f8e6"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fd5e604dfd49df624e89310ce60e6b9b28e02d65","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        super(LiveBlockMigrationTestJSON, cls).resource_setup()"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        # list of CreatedServer namedtuples"},{"line_number":47,"context_line":"        cls.created_servers \u003d []"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def _get_compute_hostnames(self):"},{"line_number":50,"context_line":"        body \u003d self.admin_hosts_client.list_hosts()[\u0027hosts\u0027]"}],"source_content_type":"text/x-python","patch_set":31,"id":"9a1a9d01_78aa42d6","line":47,"updated":"2015-09-25 19:35:13.000000000","message":"I\u0027ll add a TODO to make this not shared in a follow on change.","commit_id":"99e263968564ab3f7926457d41374a9369dda1e2"}],"tempest/api/compute/base.py":[{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"4e283eed783b3cfefd660b4061e553a94b065fe3","unresolved":false,"context_lines":[{"line_number":225,"context_line":"                # delete on terminate to cleanup volume"},{"line_number":226,"context_line":"                \u0027delete_on_termination\u0027: \u00271\u0027}]"},{"line_number":227,"context_line":"            kwargs[\u0027block_device_mapping\u0027] \u003d bd_map"},{"line_number":228,"context_line":"        body \u003d cls.servers_client.create_server("},{"line_number":229,"context_line":"            name, image_id, flavor, **kwargs)"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"        # handle the case of multiple servers"}],"source_content_type":"text/x-python","patch_set":14,"id":"5afe65bd_f26031d1","line":228,"updated":"2015-06-04 12:45:23.000000000","message":"\u0027volume_backed\u0027 should not be passed to this method, since it is not used by nova AFAIK.\n\nProbably it should be passed outside to the kwargs,\nor removed before passing passing it to the create_server.","commit_id":"7e12e603ca4cd4682a943b078b97a70405f8d4df"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"25f84e8a0e289b631a23d4682bfddafffb612624","unresolved":false,"context_lines":[{"line_number":225,"context_line":"                # delete on terminate to cleanup volume"},{"line_number":226,"context_line":"                \u0027delete_on_termination\u0027: \u00271\u0027}]"},{"line_number":227,"context_line":"            kwargs[\u0027block_device_mapping\u0027] \u003d bd_map"},{"line_number":228,"context_line":"        body \u003d cls.servers_client.create_server("},{"line_number":229,"context_line":"            name, image_id, flavor, **kwargs)"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"        # handle the case of multiple servers"}],"source_content_type":"text/x-python","patch_set":14,"id":"3afb71cf_d5dc7b48","line":228,"in_reply_to":"5afe65bd_f26031d1","updated":"2015-06-05 03:23:12.000000000","message":"good catch","commit_id":"7e12e603ca4cd4682a943b078b97a70405f8d4df"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"2bc48148bc8dc10a32af63c9b9f10111bd3222c4","unresolved":false,"context_lines":[{"line_number":192,"context_line":"                              server_group_id)"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    @classmethod"},{"line_number":195,"context_line":"    def create_test_server(cls, **kwargs):"},{"line_number":196,"context_line":"        \"\"\"Wrapper utility that returns a test server.\"\"\""},{"line_number":197,"context_line":"        name \u003d data_utils.rand_name(cls.__name__ + \"-instance\")"},{"line_number":198,"context_line":"        if \u0027name\u0027 in kwargs:"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa32b979_6a9379fb","line":195,"updated":"2015-06-14 15:17:35.000000000","message":"volume_backed should be part of the method signature, with default value False.","commit_id":"0e449801b879a6ab150a8da95686970fd2fd804d"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"2bc48148bc8dc10a32af63c9b9f10111bd3222c4","unresolved":false,"context_lines":[{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    @classmethod"},{"line_number":195,"context_line":"    def create_test_server(cls, **kwargs):"},{"line_number":196,"context_line":"        \"\"\"Wrapper utility that returns a test server.\"\"\""},{"line_number":197,"context_line":"        name \u003d data_utils.rand_name(cls.__name__ + \"-instance\")"},{"line_number":198,"context_line":"        if \u0027name\u0027 in kwargs:"},{"line_number":199,"context_line":"            name \u003d kwargs.pop(\u0027name\u0027)"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa32b979_8a903dee","line":196,"updated":"2015-06-14 15:17:35.000000000","message":"The doc string should describe the special behavior with volume_backed.","commit_id":"0e449801b879a6ab150a8da95686970fd2fd804d"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"2bc48148bc8dc10a32af63c9b9f10111bd3222c4","unresolved":false,"context_lines":[{"line_number":212,"context_line":"            cls.volumes_client.wait_for_volume_status(volume[\u0027id\u0027],"},{"line_number":213,"context_line":"                                                      \u0027available\u0027)"},{"line_number":214,"context_line":"            bd_map \u003d [{"},{"line_number":215,"context_line":"                \u0027device_name\u0027: \u0027vda\u0027,"},{"line_number":216,"context_line":"                \u0027volume_id\u0027: volume[\u0027id\u0027],"},{"line_number":217,"context_line":"                # delete on terminate to cleanup volume"},{"line_number":218,"context_line":"                \u0027delete_on_termination\u0027: \u00271\u0027}]"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa32b979_6aaa991b","line":215,"updated":"2015-06-14 15:17:35.000000000","message":"We have config option for the 2th attached volume_device_name\nprobably we should have for the first one.","commit_id":"0e449801b879a6ab150a8da95686970fd2fd804d"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"75af8de95fe56459cf26148f0bb76c19766d2801","unresolved":false,"context_lines":[{"line_number":213,"context_line":"        tenant_network \u003d cls.get_tenant_network()"},{"line_number":214,"context_line":"        body, servers \u003d compute.create_test_server("},{"line_number":215,"context_line":"            cls.os,"},{"line_number":216,"context_line":"            volume_backed,"},{"line_number":217,"context_line":"            validatable,"},{"line_number":218,"context_line":"            validation_resources\u003dcls.validation_resources,"},{"line_number":219,"context_line":"            tenant_network\u003dtenant_network,"}],"source_content_type":"text/x-python","patch_set":17,"id":"da20952f_f46dc732","line":216,"updated":"2015-09-03 15:55:43.000000000","message":"you will need to qualify this param being passed in.  If you look at the signature, there is only 1 param that isn\u0027t a named argument. clients.  \n\nvolume_backed\u003dvolume_backed\n\nAlso, add any new params at the end of the param list.","commit_id":"ea79b36b6bd4361f01e9ea40dc2fc1fd8070e868"},{"author":{"_account_id":9624,"name":"Ramy Asselin","email":"ramyasselin@yahoo.com","username":"asselin"},"change_message_id":"d9e91d743494a116000ae41a6ede8cff45338203","unresolved":false,"context_lines":[{"line_number":213,"context_line":"        function."},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"        :param validatable: Whether the server will be pingable or sshable."},{"line_number":216,"context_line":"        :param volume_backed: Whether the live migration test migrates volumes."},{"line_number":217,"context_line":"        \"\"\""},{"line_number":218,"context_line":"        tenant_network \u003d cls.get_tenant_network()"},{"line_number":219,"context_line":"        body, servers \u003d compute.create_test_server("}],"source_content_type":"text/x-python","patch_set":24,"id":"da20952f_a0286a86","line":216,"updated":"2015-09-10 17:25:14.000000000","message":"This doc shouldn\u0027t reference any test case. Instead it should simply state the test server is backed by an external volume like in  test_live_migration.py: \"If the instance is volume backed or not.\"","commit_id":"f0898e27aa40466f34bbd994b15ea831d07d6b5f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e09b3577e3ff28f20e51e49dd7fe9aab7d358d4c","unresolved":false,"context_lines":[{"line_number":206,"context_line":"    @classmethod"},{"line_number":207,"context_line":"    def create_test_server(cls, validatable\u003dFalse, **kwargs):"},{"line_number":208,"context_line":"        \"\"\"Wrapper utility that returns a test server."},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"        This wrapper utility calls the common create test server and"},{"line_number":211,"context_line":"        returns a test server. The purpose of this wrapper is to minimize"},{"line_number":212,"context_line":"        the impact on the code of the tests already using this"}],"source_content_type":"text/x-python","patch_set":25,"id":"da20952f_52b115df","side":"PARENT","line":209,"updated":"2015-09-11 02:24:35.000000000","message":"Probably shouldn\u0027t remove this line.","commit_id":"9dd88fdebeb8c59f98f39a67aafad90a8d63b57a"},{"author":{"_account_id":10016,"name":"Joseph Lanoux","email":"joseph.lanoux@hpe.com","username":"lanoux"},"change_message_id":"2dfde8cb5628866739ce071ee38c8c8b64b2a553","unresolved":false,"context_lines":[{"line_number":218,"context_line":"        tenant_network \u003d cls.get_tenant_network()"},{"line_number":219,"context_line":"        body, servers \u003d compute.create_test_server("},{"line_number":220,"context_line":"            cls.os,"},{"line_number":221,"context_line":"            validatable\u003dvalidatable,"},{"line_number":222,"context_line":"            validation_resources\u003dcls.validation_resources,"},{"line_number":223,"context_line":"            tenant_network\u003dtenant_network,"},{"line_number":224,"context_line":"            volume_backed\u003dvolume_backed,"}],"source_content_type":"text/x-python","patch_set":25,"id":"da20952f_b7d73bed","line":221,"updated":"2015-09-11 07:58:25.000000000","message":"If you want your test to do a ssh validation check than you need to pass the validatable parameter from your test. Otherwise, validatable is false by default. So please remove this.","commit_id":"922a43fb1f46ede5ffb8afe16795bf4bd3b53042"},{"author":{"_account_id":9624,"name":"Ramy Asselin","email":"ramyasselin@yahoo.com","username":"asselin"},"change_message_id":"e9d407f156ee629132aef81aaeed3b2986804f41","unresolved":false,"context_lines":[{"line_number":219,"context_line":"        tenant_network \u003d cls.get_tenant_network()"},{"line_number":220,"context_line":"        body, servers \u003d compute.create_test_server("},{"line_number":221,"context_line":"            cls.os,"},{"line_number":222,"context_line":"            validatable,"},{"line_number":223,"context_line":"            validation_resources\u003dcls.validation_resources,"},{"line_number":224,"context_line":"            tenant_network\u003dtenant_network,"},{"line_number":225,"context_line":"            volume_backed\u003dvolume_backed,"}],"source_content_type":"text/x-python","patch_set":26,"id":"da20952f_04c4975d","line":222,"updated":"2015-09-11 19:37:02.000000000","message":"I think you need to delete this too as it\u0027s not an argument. \nhttps://git.openstack.org/cgit/openstack/tempest/tree/tempest/api/compute/base.py#n207","commit_id":"fba172a16725ee760067090e96cf640a01d53644"},{"author":{"_account_id":16939,"name":"Arkadiy Kraminsky","email":"arkadiy.kraminsky@hp.com","username":"arkkra"},"change_message_id":"0efdcce2d38d0154c9fe4f6366120ba90fd17afc","unresolved":false,"context_lines":[{"line_number":219,"context_line":"        tenant_network \u003d cls.get_tenant_network()"},{"line_number":220,"context_line":"        body, servers \u003d compute.create_test_server("},{"line_number":221,"context_line":"            cls.os,"},{"line_number":222,"context_line":"            validatable,"},{"line_number":223,"context_line":"            validation_resources\u003dcls.validation_resources,"},{"line_number":224,"context_line":"            tenant_network\u003dtenant_network,"},{"line_number":225,"context_line":"            volume_backed\u003dvolume_backed,"}],"source_content_type":"text/x-python","patch_set":26,"id":"da20952f_222bcb96","line":222,"in_reply_to":"da20952f_04c4975d","updated":"2015-09-11 21:08:43.000000000","message":"Ramy, it\u0027s calling the create_test_server in http://git.openstack.org/cgit/openstack/tempest/tree/tempest/common/compute.py#n29  Unfortunately one of the many create_test_servers in tempest","commit_id":"fba172a16725ee760067090e96cf640a01d53644"},{"author":{"_account_id":10016,"name":"Joseph Lanoux","email":"joseph.lanoux@hpe.com","username":"lanoux"},"change_message_id":"f7ffb4c2bdcea0d26df7d8321861cf17aa95b0e1","unresolved":false,"context_lines":[{"line_number":219,"context_line":"        tenant_network \u003d cls.get_tenant_network()"},{"line_number":220,"context_line":"        body, servers \u003d compute.create_test_server("},{"line_number":221,"context_line":"            cls.os,"},{"line_number":222,"context_line":"            validatable,"},{"line_number":223,"context_line":"            validation_resources\u003dcls.validation_resources,"},{"line_number":224,"context_line":"            tenant_network\u003dtenant_network,"},{"line_number":225,"context_line":"            volume_backed\u003dvolume_backed,"}],"source_content_type":"text/x-python","patch_set":26,"id":"ba15a1d1_5e4e73c2","line":222,"in_reply_to":"da20952f_222bcb96","updated":"2015-09-14 07:55:52.000000000","message":"FYI, this is not the case anymore. There is a single test_create_server for all the API tests and I\u0027m in the process of migrating the scenario tests to use this common method too.","commit_id":"fba172a16725ee760067090e96cf640a01d53644"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"eaf9c417e9ebb9f89b5c90d25de5c9131db14b98","unresolved":false,"context_lines":[{"line_number":212,"context_line":"        the impact on the code of the tests already using this"},{"line_number":213,"context_line":"        function."},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"        :param validatable: Whether the server will be pingable or sshable."},{"line_number":216,"context_line":"        :param volume_backed: Whether the instance is volume backed or not."},{"line_number":217,"context_line":"        \"\"\""},{"line_number":218,"context_line":"        tenant_network \u003d cls.get_tenant_network()"}],"source_content_type":"text/x-python","patch_set":31,"id":"ba15a1d1_aab25f94","line":215,"updated":"2015-09-23 16:44:56.000000000","message":"Unrelated docstring fix","commit_id":"99e263968564ab3f7926457d41374a9369dda1e2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"73e9d2760a913b899e27109db1f371fce760201f","unresolved":false,"context_lines":[{"line_number":212,"context_line":"        the impact on the code of the tests already using this"},{"line_number":213,"context_line":"        function."},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"        :param validatable: Whether the server will be pingable or sshable."},{"line_number":216,"context_line":"        :param volume_backed: Whether the instance is volume backed or not."},{"line_number":217,"context_line":"        \"\"\""},{"line_number":218,"context_line":"        tenant_network \u003d cls.get_tenant_network()"}],"source_content_type":"text/x-python","patch_set":31,"id":"9a1a9d01_984dd674","line":215,"in_reply_to":"ba15a1d1_aab25f94","updated":"2015-09-25 19:33:59.000000000","message":"Yeah, although if you\u0027re going to add a param docstring for the new one it\u0027d look weird to leave the existing one out.","commit_id":"99e263968564ab3f7926457d41374a9369dda1e2"}],"tempest/common/compute.py":[{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"75af8de95fe56459cf26148f0bb76c19766d2801","unresolved":false,"context_lines":[{"line_number":26,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"def create_test_server(clients, volume_backed\u003dFalse, validatable\u003dFalse,"},{"line_number":30,"context_line":"                       validation_resources\u003dNone, tenant_network\u003dNone,"},{"line_number":31,"context_line":"                       wait_until\u003dNone, **kwargs):"},{"line_number":32,"context_line":"    \"\"\"Common wrapper utility returning a test server."}],"source_content_type":"text/x-python","patch_set":17,"id":"da20952f_b44e6fbf","line":29,"updated":"2015-09-03 15:55:43.000000000","message":"I wouldn\u0027t change the order of the aguments when adding a new argument.  Add this to the end of the list just prior to **kwargs.","commit_id":"ea79b36b6bd4361f01e9ea40dc2fc1fd8070e868"},{"author":{"_account_id":9624,"name":"Ramy Asselin","email":"ramyasselin@yahoo.com","username":"asselin"},"change_message_id":"d9e91d743494a116000ae41a6ede8cff45338203","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    :param tenant_network: Tenant network to be used for creating a server."},{"line_number":42,"context_line":"    :param wait_until: Server status to wait for the server to reach after"},{"line_number":43,"context_line":"    its creation."},{"line_number":44,"context_line":"    :param volume_backed: Whether the live migration test migrates volumes."},{"line_number":45,"context_line":"    :returns a tuple"},{"line_number":46,"context_line":"    \"\"\""},{"line_number":47,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"da20952f_4511605c","line":44,"updated":"2015-09-10 17:25:14.000000000","message":"This doc shouldn\u0027t reference any test case. Instead it should simply state the test server is backed by an external volume like in  test_live_migration.py: \"If the instance is volume backed or not.\"","commit_id":"f0898e27aa40466f34bbd994b15ea831d07d6b5f"},{"author":{"_account_id":9624,"name":"Ramy Asselin","email":"ramyasselin@yahoo.com","username":"asselin"},"change_message_id":"d9e91d743494a116000ae41a6ede8cff45338203","unresolved":false,"context_lines":[{"line_number":86,"context_line":"            if wait_until is None:"},{"line_number":87,"context_line":"                wait_until \u003d \u0027ACTIVE\u0027"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    if volume_backed is True:"},{"line_number":90,"context_line":"        volume_name \u003d data_utils.rand_name(\u0027volume\u0027)"},{"line_number":91,"context_line":"        volume \u003d clients.volumes_client.create_volume("},{"line_number":92,"context_line":"            display_name\u003dvolume_name,"}],"source_content_type":"text/x-python","patch_set":24,"id":"da20952f_600b3225","line":89,"updated":"2015-09-10 17:25:14.000000000","message":"NIT: if volume_backed:","commit_id":"f0898e27aa40466f34bbd994b15ea831d07d6b5f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e09b3577e3ff28f20e51e49dd7fe9aab7d358d4c","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        clients.volumes_client.wait_for_volume_status(volume[\u0027volume\u0027][\u0027id\u0027],"},{"line_number":95,"context_line":"                                                      \u0027available\u0027)"},{"line_number":96,"context_line":"        bd_map \u003d [{"},{"line_number":97,"context_line":"            \u0027device_name\u0027: \u0027vda\u0027,"},{"line_number":98,"context_line":"            \u0027volume_id\u0027: volume[\u0027volume\u0027][\u0027id\u0027],"},{"line_number":99,"context_line":"            # delete on terminate to cleanup volume"},{"line_number":100,"context_line":"            \u0027delete_on_termination\u0027: \u00271\u0027}]"}],"source_content_type":"text/x-python","patch_set":25,"id":"da20952f_f2f8697e","line":97,"updated":"2015-09-11 02:24:35.000000000","message":"Why not CONF.compute.volume_device_name for the device name?\n\nThe nova libvirt driver ignores this in liberty now anyway, so maybe it should just be omitted so the device is automatically calculated.","commit_id":"922a43fb1f46ede5ffb8afe16795bf4bd3b53042"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"e81b4b3c07551f4752e9eea037190c62c98e876a","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        clients.volumes_client.wait_for_volume_status(volume[\u0027volume\u0027][\u0027id\u0027],"},{"line_number":95,"context_line":"                                                      \u0027available\u0027)"},{"line_number":96,"context_line":"        bd_map \u003d [{"},{"line_number":97,"context_line":"            \u0027device_name\u0027: \u0027vda\u0027,"},{"line_number":98,"context_line":"            \u0027volume_id\u0027: volume[\u0027volume\u0027][\u0027id\u0027],"},{"line_number":99,"context_line":"            # delete on terminate to cleanup volume"},{"line_number":100,"context_line":"            \u0027delete_on_termination\u0027: \u00271\u0027}]"}],"source_content_type":"text/x-python","patch_set":25,"id":"da20952f_231a03c7","line":97,"in_reply_to":"da20952f_f2f8697e","updated":"2015-09-11 14:38:57.000000000","message":"I\u0027d suggest to use bdm v2 to do not specify device_name at all.","commit_id":"922a43fb1f46ede5ffb8afe16795bf4bd3b53042"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bb513bb949e3b69c40c27d4d38d9f0da911a24f7","unresolved":false,"context_lines":[{"line_number":100,"context_line":"            \u0027delete_on_termination\u0027: \u00271\u0027}]"},{"line_number":101,"context_line":"        kwargs[\u0027block_device_mapping\u0027] \u003d bd_map"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    body \u003d clients.servers_client.create_server(name, image_id, flavor,"},{"line_number":104,"context_line":"                                                **kwargs)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    # handle the case of multiple servers"}],"source_content_type":"text/x-python","patch_set":25,"id":"da20952f_7260d935","line":103,"updated":"2015-09-11 02:27:07.000000000","message":"If you follow what\u0027s done in test_volume_boot_pattern, the image_id passed in is \u0027\u0027:\n\nhttp://git.openstack.org/cgit/openstack/tempest/tree/tempest/scenario/test_volume_boot_pattern.py#n63","commit_id":"922a43fb1f46ede5ffb8afe16795bf4bd3b53042"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"58f46009b7edd1152579646da664c38a8dbffbd2","unresolved":false,"context_lines":[{"line_number":100,"context_line":"            \u0027delete_on_termination\u0027: \u00271\u0027}]"},{"line_number":101,"context_line":"        kwargs[\u0027block_device_mapping\u0027] \u003d bd_map"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    body \u003d clients.servers_client.create_server(name, image_id, flavor,"},{"line_number":104,"context_line":"                                                **kwargs)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    # handle the case of multiple servers"}],"source_content_type":"text/x-python","patch_set":25,"id":"da20952f_045ed712","line":103,"in_reply_to":"da20952f_7260d935","updated":"2015-09-11 19:30:03.000000000","message":"not really following your statement above.","commit_id":"922a43fb1f46ede5ffb8afe16795bf4bd3b53042"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"62c2c18e379b9d310bf76018f36925445b5447f8","unresolved":false,"context_lines":[{"line_number":99,"context_line":"            \u0027delete_on_termination\u0027: \u00271\u0027}]"},{"line_number":100,"context_line":"        kwargs[\u0027block_device_mapping\u0027] \u003d bd_map"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    body \u003d clients.servers_client.create_server(name, image_id, flavor,"},{"line_number":103,"context_line":"                                                **kwargs)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    # handle the case of multiple servers"}],"source_content_type":"text/x-python","patch_set":26,"id":"ba15a1d1_e94b01af","line":102,"updated":"2015-09-14 15:30:56.000000000","message":"A using of image_id together with bdm to boot from volume was actual in Grizzly to workaround some bug. Currently it\u0027s the deprecated feature. Also legacy bdm is somewhat outdated, though it\u0027s still supported. I think it makes more sense to use bdm v2 for booting from a volume (i.e. you could use image-\u003evolume mapping).\n\nIs there a reason to use the obsolete way here?","commit_id":"fba172a16725ee760067090e96cf640a01d53644"},{"author":{"_account_id":11903,"name":"Anthony Lee","email":"anthony.mic.lee@hpe.com","username":"leeantho"},"change_message_id":"1594399381cb2cc72252c6c0321fc5a5c49c5bc5","unresolved":false,"context_lines":[{"line_number":99,"context_line":"            \u0027delete_on_termination\u0027: \u00271\u0027}]"},{"line_number":100,"context_line":"        kwargs[\u0027block_device_mapping\u0027] \u003d bd_map"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    body \u003d clients.servers_client.create_server(name, image_id, flavor,"},{"line_number":103,"context_line":"                                                **kwargs)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    # handle the case of multiple servers"}],"source_content_type":"text/x-python","patch_set":26,"id":"ba15a1d1_43119751","line":102,"in_reply_to":"ba15a1d1_e94b01af","updated":"2015-09-14 23:56:56.000000000","message":"Done","commit_id":"fba172a16725ee760067090e96cf640a01d53644"},{"author":{"_account_id":9624,"name":"Ramy Asselin","email":"ramyasselin@yahoo.com","username":"asselin"},"change_message_id":"94a49a432a2b058abd456c98374ff2f95134a748","unresolved":false,"context_lines":[{"line_number":101,"context_line":"            \u0027destination_type\u0027: \u0027volume\u0027,"},{"line_number":102,"context_line":"            \u0027boot_index\u0027: 0,"},{"line_number":103,"context_line":"            \u0027delete_on_termination\u0027: True}]"},{"line_number":104,"context_line":"        kwargs[\u0027block_device_mapping_v2\u0027] \u003d bd_map_v2"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    body \u003d clients.servers_client.create_server(name, image_id, flavor,"},{"line_number":107,"context_line":"                                                **kwargs)"}],"source_content_type":"text/x-python","patch_set":28,"id":"ba15a1d1_8349ef8d","line":104,"updated":"2015-09-15 00:26:43.000000000","message":"suggest adding i\nmage_id\u003d\u0027not used\u0027 here and a comment explaining that the actual image used is via the kwargs bd_map_v2 volume uuid.","commit_id":"d6d77a89a7600cf33fff1cae2f9de6a56cf8d00d"},{"author":{"_account_id":11903,"name":"Anthony Lee","email":"anthony.mic.lee@hpe.com","username":"leeantho"},"change_message_id":"cbed10249c36eac6ab8b052613c7ec71adbf5ce6","unresolved":false,"context_lines":[{"line_number":101,"context_line":"            \u0027destination_type\u0027: \u0027volume\u0027,"},{"line_number":102,"context_line":"            \u0027boot_index\u0027: 0,"},{"line_number":103,"context_line":"            \u0027delete_on_termination\u0027: True}]"},{"line_number":104,"context_line":"        kwargs[\u0027block_device_mapping_v2\u0027] \u003d bd_map_v2"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    body \u003d clients.servers_client.create_server(name, image_id, flavor,"},{"line_number":107,"context_line":"                                                **kwargs)"}],"source_content_type":"text/x-python","patch_set":28,"id":"ba15a1d1_463f65b4","line":104,"in_reply_to":"ba15a1d1_8349ef8d","updated":"2015-09-15 00:39:12.000000000","message":"Done","commit_id":"d6d77a89a7600cf33fff1cae2f9de6a56cf8d00d"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"eaf9c417e9ebb9f89b5c90d25de5c9131db14b98","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"def create_test_server(clients, validatable\u003dFalse, validation_resources\u003dNone,"},{"line_number":31,"context_line":"                       tenant_network\u003dNone, wait_until\u003dNone,"},{"line_number":32,"context_line":"                       volume_backed\u003dFalse, **kwargs):"},{"line_number":33,"context_line":"    \"\"\"Common wrapper utility returning a test server."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    This method is a common wrapper returning a test server that can be"}],"source_content_type":"text/x-python","patch_set":31,"id":"ba15a1d1_cae9d380","line":32,"updated":"2015-09-23 16:44:56.000000000","message":"You didn\u0027t really need to add this, the kwargs passthrough would have worked for it but whatever.","commit_id":"99e263968564ab3f7926457d41374a9369dda1e2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"73e9d2760a913b899e27109db1f371fce760201f","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"def create_test_server(clients, validatable\u003dFalse, validation_resources\u003dNone,"},{"line_number":31,"context_line":"                       tenant_network\u003dNone, wait_until\u003dNone,"},{"line_number":32,"context_line":"                       volume_backed\u003dFalse, **kwargs):"},{"line_number":33,"context_line":"    \"\"\"Common wrapper utility returning a test server."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    This method is a common wrapper returning a test server that can be"}],"source_content_type":"text/x-python","patch_set":31,"id":"9a1a9d01_1842263f","line":32,"in_reply_to":"ba15a1d1_cae9d380","updated":"2015-09-25 19:33:59.000000000","message":"Probably following suit with the other kwargs here.","commit_id":"99e263968564ab3f7926457d41374a9369dda1e2"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"eaf9c417e9ebb9f89b5c90d25de5c9131db14b98","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        image_id \u003d \u0027\u0027"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    body \u003d clients.servers_client.create_server(name\u003dname, imageRef\u003dimage_id,"},{"line_number":111,"context_line":"                                                flavorRef\u003dflavor, **kwargs)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    # handle the case of multiple servers"},{"line_number":114,"context_line":"    servers \u003d []"}],"source_content_type":"text/x-python","patch_set":31,"id":"ba15a1d1_8a875bb4","line":111,"updated":"2015-09-23 16:44:56.000000000","message":"Unrelated whitespace change","commit_id":"99e263968564ab3f7926457d41374a9369dda1e2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fd5e604dfd49df624e89310ce60e6b9b28e02d65","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        image_id \u003d \u0027\u0027"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    body \u003d clients.servers_client.create_server(name\u003dname, imageRef\u003dimage_id,"},{"line_number":111,"context_line":"                                                flavorRef\u003dflavor, **kwargs)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    # handle the case of multiple servers"},{"line_number":114,"context_line":"    servers \u003d []"}],"source_content_type":"text/x-python","patch_set":31,"id":"9a1a9d01_989b96c9","line":111,"in_reply_to":"ba15a1d1_8a875bb4","updated":"2015-09-25 19:35:13.000000000","message":"I\u0027ll fix this.","commit_id":"99e263968564ab3f7926457d41374a9369dda1e2"}]}
