)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"0d012e5d7e35601291525343f8df2ba3209f1e33","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Anju Tiwari \u003canju.tiwari@nectechnologies.in\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-01-29 16:52:11 +0530"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Moved negative test to a different file"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Here added a different file to store"},{"line_number":10,"context_line":"negative tests of migration."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAUH%2F%2BDzc%3D","line":7,"updated":"2014-01-30 15:35:19.000000000","message":"I think this 1st line is too generic. It\u0027s good to add \u0027migration\u0027 word into this.","commit_id":"f95ce7f14b7091078cc8be1bc5e73a3dcc61a9d6"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"b6fed9908048d57b38d1c8598d08d4fb487b15e5","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Moved negative test to a different file"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Here added a different file to store"},{"line_number":10,"context_line":"negative tests of migration."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I1791265882d0fd748445c39884906983068b5179"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAUH%2F%2BHSU%3D","line":10,"updated":"2014-01-30 01:23:05.000000000","message":"Partially implements blueprint negative-test-files\n\nis necessary here.","commit_id":"f95ce7f14b7091078cc8be1bc5e73a3dcc61a9d6"}],"tempest/api/compute/test_live_block_migration.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"b6fed9908048d57b38d1c8598d08d4fb487b15e5","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import random"},{"line_number":17,"context_line":"import string"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import testtools"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2BHR4%3D","side":"PARENT","line":16,"updated":"2014-01-30 01:23:05.000000000","message":"this import seems unnecessary because of moving it to negative file.","commit_id":"dd33245c773068b05acbe85042aa600f1d6cecbd"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"8aa4d180ce24b429267b2b67146b3477f3c79372","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    @testtools.skipIf(not CONF.compute_feature_enabled.live_migration,"},{"line_number":103,"context_line":"                      \u0027Live migration not available\u0027)"},{"line_number":104,"context_line":"    @attr(type\u003d\u0027gate\u0027)"},{"line_number":105,"context_line":"    def test_invalid_host_for_migration(self):"},{"line_number":106,"context_line":"        # Migrating to an invalid host should not change the status"},{"line_number":107,"context_line":"        server_id \u003d self._get_an_active_server()"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUX%2F%2FTUI%3D","line":104,"updated":"2014-02-14 04:43:51.000000000","message":"Why did you return this method here?\nYou moved this to test_live_block_migration_negative.py in patch set 2.","commit_id":"ee6a948cb6f0017c92f3571273b4d32c7900ed94"}],"tempest/api/compute/test_live_block_migration_negative.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"b6fed9908048d57b38d1c8598d08d4fb487b15e5","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def _get_non_existing_host_name(self):"},{"line_number":62,"context_line":"        random_name \u003d \u0027\u0027.join("},{"line_number":63,"context_line":"            random.choice(string.ascii_uppercase) for x in range(20))"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        self.assertNotIn(random_name, self._get_compute_hostnames())"},{"line_number":66,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2BHRA%3D","line":63,"updated":"2014-01-30 01:23:05.000000000","message":"We have similar method data_utils.rand_name() already.\nSo please use data_utils.rand_name() instead of random.choice.","commit_id":"f95ce7f14b7091078cc8be1bc5e73a3dcc61a9d6"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"b6fed9908048d57b38d1c8598d08d4fb487b15e5","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        random_name \u003d \u0027\u0027.join("},{"line_number":63,"context_line":"            random.choice(string.ascii_uppercase) for x in range(20))"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        self.assertNotIn(random_name, self._get_compute_hostnames())"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        return random_name"},{"line_number":68,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2BHOk%3D","line":65,"updated":"2014-01-30 01:23:05.000000000","message":"I know this line is not changed by you, but this assert seems invalid.\n\nIf created name is duplicated with the existing hostname, we should retry the other name create again instead of assert because that is not a problem.\n\nor how about calling just data_utils.rand_uuid() as non existing hostname?\nThe return value of data_utils.rand_uuid() fits to hostname rule(RFC952). If doing it, we can remove _get_compute_hostnames() and make the code clean.","commit_id":"f95ce7f14b7091078cc8be1bc5e73a3dcc61a9d6"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"b6fed9908048d57b38d1c8598d08d4fb487b15e5","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    def _get_server_status(self, server_id):"},{"line_number":70,"context_line":"        return self._get_server_details(server_id)[\u0027status\u0027]"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def _get_an_active_server(self):"},{"line_number":73,"context_line":"        for server_id in self.created_server_ids:"},{"line_number":74,"context_line":"            if \u0027ACTIVE\u0027 \u003d\u003d self._get_server_status(server_id):"},{"line_number":75,"context_line":"                return server_id"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2BHMA%3D","line":72,"updated":"2014-01-30 01:23:05.000000000","message":"This method is overkill for this test file, because the file includes test_invalid_host_for_migration only and the test needs one server only.\nSo how about calling self.create_test_server(wait_until\u003d\"ACTIVE\") in test_invalid_host_for_migration instead?\nThat would make the code clean, I guess.","commit_id":"f95ce7f14b7091078cc8be1bc5e73a3dcc61a9d6"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"b6fed9908048d57b38d1c8598d08d4fb487b15e5","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        for server_id in cls.created_server_ids:"},{"line_number":100,"context_line":"            cls.servers_client.delete_server(server_id)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        super(LiveBlockMigrationTestJSON, cls).tearDownClass()"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"class LiveBlockMigrationNegativeTestXML(LiveBlockMigrationNegativeTestJSON):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2BHMU%3D","line":102,"updated":"2014-01-30 01:23:05.000000000","message":"This tearDownClass() is not necessary, because the created servers with create_test_server() will be removed with clear_servers(). \n\nref: tempest/api/compute/base.py .","commit_id":"f95ce7f14b7091078cc8be1bc5e73a3dcc61a9d6"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"6e58edb86d83bb5bf4fce13ae2e2e8dbcc3eecd9","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        return body"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    @testtools.skipIf(not CONF.compute_feature_enabled.live_migration,"},{"line_number":50,"context_line":"                      \u0027Live migration not available\u0027)"},{"line_number":51,"context_line":"    @attr(type\u003d[\u0027negative\u0027, \u0027gate\u0027])"},{"line_number":52,"context_line":"    def test_invalid_host_for_migration(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F9aAs%3D","line":49,"updated":"2014-02-07 05:05:01.000000000","message":"Could you move this skipIf() into setUpClass()?","commit_id":"fb8440f2015d48175ac881d2284826d1d4f05d85"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"1ff1159fd1c7160156cf3b4f4fbb1d0699eb9962","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    _host_key \u003d \u0027OS-EXT-SRV-ATTR:host\u0027"},{"line_number":29,"context_line":"    _interface \u003d \u0027json\u0027"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    live_migartion \u003d CONF.compute_feature_enabled.live_migration"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    @classmethod"},{"line_number":34,"context_line":"    def setUpClass(cls):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUX%2F%2FSE8%3D","line":31,"updated":"2014-02-14 08:40:19.000000000","message":"typo?","commit_id":"5cfc330ff3e15889e3452f280b8c02e78f170d36"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"b5c613b4f49b0f949ae763d1dfd2b26164a5935e","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from tempest.common.utils import data_utils"},{"line_number":20,"context_line":"from tempest import config"},{"line_number":21,"context_line":"from tempest import exceptions"},{"line_number":22,"context_line":"from tempest.test import attr"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"CONF \u003d config.CONF"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUX%2F%2FGpw%3D","line":22,"updated":"2014-02-17 05:04:51.000000000","message":"here should be\n\n from tempest import test\n\nfor importing a module only. It is ok to apply this to this file only, you don\u0027t need to apply it to the existing files(test_live_block_migration.py) because of the patch scope.","commit_id":"386f12a60af5d77aa32df0fd68601cf5e85121f4"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"b5c613b4f49b0f949ae763d1dfd2b26164a5935e","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    @classmethod"},{"line_number":34,"context_line":"    def setUpClass(cls):"},{"line_number":35,"context_line":"        super(LiveBlockMigrationNegativeTestJSON, cls).setUpClass()"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        cls.admin_hosts_client \u003d cls.os_adm.hosts_client"},{"line_number":38,"context_line":"        cls.admin_servers_client \u003d cls.os_adm.servers_client"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUX%2F%2FGqI%3D","line":35,"updated":"2014-02-17 05:04:51.000000000","message":"instead of specifying \"CONF.compute_feature_enabled.live_migration\" of skip_if deco of each test, please add\n\n if not CONF.compute_feature_enabled.live_migration:\n    raise self.skipException(\u0027Live migration is not enabled\u0027)\n\nhere for the readability.\nIt is ok to apply this to this file only, you don\u0027t need to apply it to the existing files(test_live_block_migration.py) because of the patch scope.\n\na good sample is https://review.openstack.org/#/c/68033/11/tempest/api/compute/v3/test_cold_migration.py","commit_id":"386f12a60af5d77aa32df0fd68601cf5e85121f4"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"68c46c7ec0499fdb5f96fa2b059f06b6f8f23047","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        cls.admin_hosts_client \u003d cls.os_adm.hosts_client"},{"line_number":36,"context_line":"        cls.admin_servers_client \u003d cls.os_adm.servers_client"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        cls.created_server_ids \u003d []"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def _migrate_server_to(self, server_id, dest_host):"},{"line_number":41,"context_line":"        _resp, body \u003d self.admin_servers_client.live_migrate_server("}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUX%2F%2B4Ok%3D","line":38,"updated":"2014-02-18 13:20:34.000000000","message":"This is unused?","commit_id":"a0ce325c6e10cd569b734566cdee00b58928e9c1"},{"author":{"_account_id":8085,"name":"anju Tiwari","email":"anjutiwari5@gmail.com","username":"Anju"},"change_message_id":"412bb47d714734d110a91f8d9d8e66abb4fa981e","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        cls.admin_hosts_client \u003d cls.os_adm.hosts_client"},{"line_number":36,"context_line":"        cls.admin_servers_client \u003d cls.os_adm.servers_client"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        cls.created_server_ids \u003d []"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def _migrate_server_to(self, server_id, dest_host):"},{"line_number":41,"context_line":"        _resp, body \u003d self.admin_servers_client.live_migrate_server("}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUX%2F%2ByRY%3D","line":38,"in_reply_to":"AAAAUX%2F%2B4Ok%3D","updated":"2014-02-19 03:22:17.000000000","message":"Thanks Cyeoh","commit_id":"a0ce325c6e10cd569b734566cdee00b58928e9c1"}],"tempest/api/compute/v3/test_live_block_migration_negative.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"b6fed9908048d57b38d1c8598d08d4fb487b15e5","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import random"},{"line_number":17,"context_line":"import string"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import testtools"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2BHL0%3D","line":16,"updated":"2014-01-30 01:23:05.000000000","message":"The same comments as non-v3 test file.","commit_id":"f95ce7f14b7091078cc8be1bc5e73a3dcc61a9d6"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"6e58edb86d83bb5bf4fce13ae2e2e8dbcc3eecd9","unresolved":false,"context_lines":[{"line_number":47,"context_line":"            block_migration_for_live_migration)"},{"line_number":48,"context_line":"        return body"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    @testtools.skipIf(not CONF.compute_feature_enabled.live_migration,"},{"line_number":51,"context_line":"                      \u0027Live migration not available\u0027)"},{"line_number":52,"context_line":"    @attr(type\u003d[\u0027negative\u0027, \u0027gate\u0027])"},{"line_number":53,"context_line":"    def test_invalid_host_for_migration(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F9aAo%3D","line":50,"updated":"2014-02-07 05:05:01.000000000","message":"diito as v2","commit_id":"fb8440f2015d48175ac881d2284826d1d4f05d85"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"1ff1159fd1c7160156cf3b4f4fbb1d0699eb9962","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    _host_key \u003d \u0027os-extended-server-attributes:host\u0027"},{"line_number":30,"context_line":"    _interface \u003d \u0027json\u0027"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    live_migartion \u003d CONF.compute_feature_enabled.live_migration"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    @classmethod"},{"line_number":35,"context_line":"    def setUpClass(cls):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUX%2F%2FSFA%3D","line":32,"updated":"2014-02-14 08:40:19.000000000","message":"typo?","commit_id":"5cfc330ff3e15889e3452f280b8c02e78f170d36"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"b5c613b4f49b0f949ae763d1dfd2b26164a5935e","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from tempest.common.utils import data_utils"},{"line_number":21,"context_line":"from tempest import config"},{"line_number":22,"context_line":"from tempest import exceptions"},{"line_number":23,"context_line":"from tempest.test import attr"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"CONF \u003d config.CONF"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUX%2F%2FGpo%3D","line":23,"updated":"2014-02-17 05:04:51.000000000","message":"ditto","commit_id":"386f12a60af5d77aa32df0fd68601cf5e85121f4"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"b5c613b4f49b0f949ae763d1dfd2b26164a5935e","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    live_migration \u003d CONF.compute_feature_enabled.live_migration"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    @classmethod"},{"line_number":35,"context_line":"    def setUpClass(cls):"},{"line_number":36,"context_line":"        super(LiveBlockMigrationV3NegativeTest, cls).setUpClass()"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        cls.admin_hosts_client \u003d cls.hosts_admin_client"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUX%2F%2FGqE%3D","line":35,"updated":"2014-02-17 05:04:51.000000000","message":"ditto","commit_id":"386f12a60af5d77aa32df0fd68601cf5e85121f4"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"68c46c7ec0499fdb5f96fa2b059f06b6f8f23047","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        cls.admin_hosts_client \u003d cls.hosts_admin_client"},{"line_number":37,"context_line":"        cls.admin_servers_client \u003d cls.servers_admin_client"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        cls.created_server_ids \u003d []"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def _migrate_server_to(self, server_id, dest_host):"},{"line_number":42,"context_line":"        _resp, body \u003d self.admin_servers_client.live_migrate_server("}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUX%2F%2B4Ow%3D","line":39,"updated":"2014-02-18 13:20:34.000000000","message":"This is unused?","commit_id":"a0ce325c6e10cd569b734566cdee00b58928e9c1"}]}
