)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"370de3946070ac34ab8ab06703b97b275b6b791a","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Rushil Chugh \u003crushil@netapp.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-05-04 18:24:39 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Avoid LUN ID collisions in iSCSI drivers"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Previously, the logic to calculate the LUN ID only considered a single attached"},{"line_number":10,"context_line":"host. Because multiple hosts can be attached to a LUN, the logic needs to"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3acd31a7_8890ce44","line":7,"updated":"2015-05-04 18:28:00.000000000","message":"....in Netapp iSCSI drivers","commit_id":"d6243ce69517d98a5a444452aa6476adaf9c7840"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"fb3315ddf116f4f8bfdf047a91bec67f25566632","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Rushil Chugh \u003crushil@netapp.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-05-04 18:24:39 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Avoid LUN ID collisions in iSCSI drivers"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Previously, the logic to calculate the LUN ID only considered a single attached"},{"line_number":10,"context_line":"host. Because multiple hosts can be attached to a LUN, the logic needs to"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3acd31a7_28d53ab8","line":7,"in_reply_to":"3acd31a7_8890ce44","updated":"2015-05-04 18:34:51.000000000","message":"Done","commit_id":"d6243ce69517d98a5a444452aa6476adaf9c7840"}],"cinder/tests/unit/volume/drivers/netapp/eseries/fakes.py":[{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"4825c1e99b513e68f8d191df8199dca081df9e24","unresolved":false,"context_lines":[{"line_number":122,"context_line":"    \u0027hostTypeIndex\u0027: 6,"},{"line_number":123,"context_line":"    \u0027hostSidePorts\u0027: [{"},{"line_number":124,"context_line":"        \u0027label\u0027: \u0027NewStore\u0027, \u0027type\u0027: \u0027iscsi\u0027,"},{"line_number":125,"context_line":"        \u0027address\u0027: INITIATOR_NAME_3}]"},{"line_number":126,"context_line":"}"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"7a016987_50a43a49","line":125,"updated":"2015-05-24 06:51:38.000000000","message":"Extra comma needed at the end - http://docs.openstack.org/developer/hacking/#dictionaries-lists This also applies to the other dicts below.","commit_id":"ffb6e050666ec09df3758c9f89ea055ddae72e77"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"17111476536568f586671c9505fd23ed8ca18b3a","unresolved":false,"context_lines":[{"line_number":122,"context_line":"    \u0027hostTypeIndex\u0027: 6,"},{"line_number":123,"context_line":"    \u0027hostSidePorts\u0027: [{"},{"line_number":124,"context_line":"        \u0027label\u0027: \u0027NewStore\u0027, \u0027type\u0027: \u0027iscsi\u0027,"},{"line_number":125,"context_line":"        \u0027address\u0027: INITIATOR_NAME_3}]"},{"line_number":126,"context_line":"}"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"7a016987_8af13298","line":125,"in_reply_to":"7a016987_50a43a49","updated":"2015-05-26 18:23:15.000000000","message":"Done","commit_id":"ffb6e050666ec09df3758c9f89ea055ddae72e77"}],"cinder/tests/unit/volume/drivers/netapp/eseries/test_host_mapper.py":[{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"7c0fb30e2edfedf382a998ded0eb01e715997920","unresolved":false,"context_lines":[{"line_number":244,"context_line":""},{"line_number":245,"context_line":"    def test_map_volume_to_single_host_volume_already_mapped_to_target_host("},{"line_number":246,"context_line":"            self):"},{"line_number":247,"context_line":"        \"\"\"Should be a no-op\"\"\""},{"line_number":248,"context_line":"        self.mock_object(self.client, \u0027create_volume_mapping\u0027,"},{"line_number":249,"context_line":"                         mock.Mock())"},{"line_number":250,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3acd31a7_71a89ddb","line":247,"updated":"2015-05-05 14:29:02.000000000","message":"Need a \".\" by the end of this comment.","commit_id":"91e6549af4abadd34bf04dff686f3fd67ef48901"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"a243b291696aa4532e40525fe29d7b5ecbf5f999","unresolved":false,"context_lines":[{"line_number":244,"context_line":""},{"line_number":245,"context_line":"    def test_map_volume_to_single_host_volume_already_mapped_to_target_host("},{"line_number":246,"context_line":"            self):"},{"line_number":247,"context_line":"        \"\"\"Should be a no-op\"\"\""},{"line_number":248,"context_line":"        self.mock_object(self.client, \u0027create_volume_mapping\u0027,"},{"line_number":249,"context_line":"                         mock.Mock())"},{"line_number":250,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3acd31a7_870d3bea","line":247,"in_reply_to":"3acd31a7_71a89ddb","updated":"2015-05-05 15:13:41.000000000","message":"This method was not touched as part of this patchset. And spinning another patchset just to fix a period seems pedantic.","commit_id":"91e6549af4abadd34bf04dff686f3fd67ef48901"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"7c0fb30e2edfedf382a998ded0eb01e715997920","unresolved":false,"context_lines":[{"line_number":281,"context_line":""},{"line_number":282,"context_line":"    def test_map_volume_to_single_host_volume_mapped_to_multiattach_host_group_and_migrating(  # noqa"},{"line_number":283,"context_line":"            self):"},{"line_number":284,"context_line":"        \"\"\"Should raise error saying multiattach not enabled\"\"\""},{"line_number":285,"context_line":"        fake_mapping_to_other_host \u003d copy.deepcopy("},{"line_number":286,"context_line":"            eseries_fakes.VOLUME_MAPPING)"},{"line_number":287,"context_line":"        fake_mapping_to_other_host[\u0027mapRef\u0027] \u003d \\"}],"source_content_type":"text/x-python","patch_set":4,"id":"3acd31a7_917a1976","line":284,"updated":"2015-05-05 14:29:02.000000000","message":"Same.","commit_id":"91e6549af4abadd34bf04dff686f3fd67ef48901"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"a243b291696aa4532e40525fe29d7b5ecbf5f999","unresolved":false,"context_lines":[{"line_number":281,"context_line":""},{"line_number":282,"context_line":"    def test_map_volume_to_single_host_volume_mapped_to_multiattach_host_group_and_migrating(  # noqa"},{"line_number":283,"context_line":"            self):"},{"line_number":284,"context_line":"        \"\"\"Should raise error saying multiattach not enabled\"\"\""},{"line_number":285,"context_line":"        fake_mapping_to_other_host \u003d copy.deepcopy("},{"line_number":286,"context_line":"            eseries_fakes.VOLUME_MAPPING)"},{"line_number":287,"context_line":"        fake_mapping_to_other_host[\u0027mapRef\u0027] \u003d \\"}],"source_content_type":"text/x-python","patch_set":4,"id":"3acd31a7_47fcc3b7","line":284,"in_reply_to":"3acd31a7_917a1976","updated":"2015-05-05 15:13:41.000000000","message":"Same as above.","commit_id":"91e6549af4abadd34bf04dff686f3fd67ef48901"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"7c0fb30e2edfedf382a998ded0eb01e715997920","unresolved":false,"context_lines":[{"line_number":301,"context_line":""},{"line_number":302,"context_line":"    def test_map_volume_to_single_host_volume_mapped_to_multiattach_host_group_and_attached(  # noqa"},{"line_number":303,"context_line":"            self):"},{"line_number":304,"context_line":"        \"\"\"Should raise error saying multiattach not enabled\"\"\""},{"line_number":305,"context_line":"        fake_mapping_to_other_host \u003d copy.deepcopy("},{"line_number":306,"context_line":"            eseries_fakes.VOLUME_MAPPING)"},{"line_number":307,"context_line":"        fake_mapping_to_other_host[\u0027mapRef\u0027] \u003d \\"}],"source_content_type":"text/x-python","patch_set":4,"id":"3acd31a7_3196a593","line":304,"updated":"2015-05-05 14:29:02.000000000","message":"Same.","commit_id":"91e6549af4abadd34bf04dff686f3fd67ef48901"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"a243b291696aa4532e40525fe29d7b5ecbf5f999","unresolved":false,"context_lines":[{"line_number":301,"context_line":""},{"line_number":302,"context_line":"    def test_map_volume_to_single_host_volume_mapped_to_multiattach_host_group_and_attached(  # noqa"},{"line_number":303,"context_line":"            self):"},{"line_number":304,"context_line":"        \"\"\"Should raise error saying multiattach not enabled\"\"\""},{"line_number":305,"context_line":"        fake_mapping_to_other_host \u003d copy.deepcopy("},{"line_number":306,"context_line":"            eseries_fakes.VOLUME_MAPPING)"},{"line_number":307,"context_line":"        fake_mapping_to_other_host[\u0027mapRef\u0027] \u003d \\"}],"source_content_type":"text/x-python","patch_set":4,"id":"3acd31a7_e7fe2fad","line":304,"in_reply_to":"3acd31a7_3196a593","updated":"2015-05-05 15:13:41.000000000","message":"Same as above.","commit_id":"91e6549af4abadd34bf04dff686f3fd67ef48901"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"7c0fb30e2edfedf382a998ded0eb01e715997920","unresolved":false,"context_lines":[{"line_number":320,"context_line":"        self.assertIn(\u0027multiattach is disabled\u0027, six.text_type(err))"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"    def test_map_volume_to_single_host_volume_mapped_to_another_host(self):"},{"line_number":323,"context_line":"        \"\"\"Should raise error saying multiattach not enabled\"\"\""},{"line_number":324,"context_line":"        fake_mapping_to_other_host \u003d copy.deepcopy("},{"line_number":325,"context_line":"            eseries_fakes.VOLUME_MAPPING)"},{"line_number":326,"context_line":"        fake_mapping_to_other_host[\u0027mapRef\u0027] \u003d eseries_fakes.HOST_2["}],"source_content_type":"text/x-python","patch_set":4,"id":"3acd31a7_118f2976","line":323,"updated":"2015-05-05 14:29:02.000000000","message":"Same.","commit_id":"91e6549af4abadd34bf04dff686f3fd67ef48901"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"a243b291696aa4532e40525fe29d7b5ecbf5f999","unresolved":false,"context_lines":[{"line_number":320,"context_line":"        self.assertIn(\u0027multiattach is disabled\u0027, six.text_type(err))"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"    def test_map_volume_to_single_host_volume_mapped_to_another_host(self):"},{"line_number":323,"context_line":"        \"\"\"Should raise error saying multiattach not enabled\"\"\""},{"line_number":324,"context_line":"        fake_mapping_to_other_host \u003d copy.deepcopy("},{"line_number":325,"context_line":"            eseries_fakes.VOLUME_MAPPING)"},{"line_number":326,"context_line":"        fake_mapping_to_other_host[\u0027mapRef\u0027] \u003d eseries_fakes.HOST_2["}],"source_content_type":"text/x-python","patch_set":4,"id":"3acd31a7_c72e9342","line":323,"in_reply_to":"3acd31a7_118f2976","updated":"2015-05-05 15:13:41.000000000","message":"Same as above.","commit_id":"91e6549af4abadd34bf04dff686f3fd67ef48901"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"617de1df4bbfe4c170104c51d43385446dcb4be2","unresolved":false,"context_lines":[{"line_number":580,"context_line":""},{"line_number":581,"context_line":"    def test_get_unused_lun_ids(self):"},{"line_number":582,"context_line":"        unused_lun_ids \u003d host_mapper._get_unused_lun_ids(FAKE_MAPPINGS)"},{"line_number":583,"context_line":"        self.assertEqual(unused_lun_ids, set(range(2, 256)))"},{"line_number":584,"context_line":""},{"line_number":585,"context_line":"    def test_get_unused_lun_id_counter(self):"},{"line_number":586,"context_line":"        used_lun_id_count \u003d host_mapper._get_used_lun_id_counter("}],"source_content_type":"text/x-python","patch_set":10,"id":"7a016987_8b4f3133","line":583,"updated":"2015-05-22 20:10:40.000000000","message":"Please, change order of assertEqual arguments to: expected, actual.","commit_id":"ffb6e050666ec09df3758c9f89ea055ddae72e77"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"17111476536568f586671c9505fd23ed8ca18b3a","unresolved":false,"context_lines":[{"line_number":580,"context_line":""},{"line_number":581,"context_line":"    def test_get_unused_lun_ids(self):"},{"line_number":582,"context_line":"        unused_lun_ids \u003d host_mapper._get_unused_lun_ids(FAKE_MAPPINGS)"},{"line_number":583,"context_line":"        self.assertEqual(unused_lun_ids, set(range(2, 256)))"},{"line_number":584,"context_line":""},{"line_number":585,"context_line":"    def test_get_unused_lun_id_counter(self):"},{"line_number":586,"context_line":"        used_lun_id_count \u003d host_mapper._get_used_lun_id_counter("}],"source_content_type":"text/x-python","patch_set":10,"id":"7a016987_2a08fe90","line":583,"in_reply_to":"7a016987_8b4f3133","updated":"2015-05-26 18:23:15.000000000","message":"Done","commit_id":"ffb6e050666ec09df3758c9f89ea055ddae72e77"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"4825c1e99b513e68f8d191df8199dca081df9e24","unresolved":false,"context_lines":[{"line_number":585,"context_line":"    def test_get_unused_lun_id_counter(self):"},{"line_number":586,"context_line":"        used_lun_id_count \u003d host_mapper._get_used_lun_id_counter("},{"line_number":587,"context_line":"            FAKE_MAPPINGS)"},{"line_number":588,"context_line":"        self.assertEqual(used_lun_id_count, FAKE_USED_LUN_ID_DICT)"},{"line_number":589,"context_line":""},{"line_number":590,"context_line":"    def test_get_unused_lun_ids_used_up_luns(self):"},{"line_number":591,"context_line":"        unused_lun_ids \u003d host_mapper._get_unused_lun_ids("}],"source_content_type":"text/x-python","patch_set":10,"id":"7a016987_106922f9","line":588,"updated":"2015-05-24 06:51:38.000000000","message":"Please change the order of arguments here also.","commit_id":"ffb6e050666ec09df3758c9f89ea055ddae72e77"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"17111476536568f586671c9505fd23ed8ca18b3a","unresolved":false,"context_lines":[{"line_number":585,"context_line":"    def test_get_unused_lun_id_counter(self):"},{"line_number":586,"context_line":"        used_lun_id_count \u003d host_mapper._get_used_lun_id_counter("},{"line_number":587,"context_line":"            FAKE_MAPPINGS)"},{"line_number":588,"context_line":"        self.assertEqual(used_lun_id_count, FAKE_USED_LUN_ID_DICT)"},{"line_number":589,"context_line":""},{"line_number":590,"context_line":"    def test_get_unused_lun_ids_used_up_luns(self):"},{"line_number":591,"context_line":"        unused_lun_ids \u003d host_mapper._get_unused_lun_ids("}],"source_content_type":"text/x-python","patch_set":10,"id":"7a016987_4a033a77","line":588,"in_reply_to":"7a016987_106922f9","updated":"2015-05-26 18:23:15.000000000","message":"Done","commit_id":"ffb6e050666ec09df3758c9f89ea055ddae72e77"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"4825c1e99b513e68f8d191df8199dca081df9e24","unresolved":false,"context_lines":[{"line_number":590,"context_line":"    def test_get_unused_lun_ids_used_up_luns(self):"},{"line_number":591,"context_line":"        unused_lun_ids \u003d host_mapper._get_unused_lun_ids("},{"line_number":592,"context_line":"            FAKE_USED_UP_MAPPINGS)"},{"line_number":593,"context_line":"        self.assertEqual(unused_lun_ids, FAKE_UNUSED_LUN_ID)"},{"line_number":594,"context_line":""},{"line_number":595,"context_line":"    def test_get_lun_id_counter_used_up_luns(self):"},{"line_number":596,"context_line":"        used_lun_ids \u003d host_mapper._get_used_lun_id_counter("}],"source_content_type":"text/x-python","patch_set":10,"id":"7a016987_f06b26ef","line":593,"updated":"2015-05-24 06:51:38.000000000","message":"Same as above.","commit_id":"ffb6e050666ec09df3758c9f89ea055ddae72e77"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"17111476536568f586671c9505fd23ed8ca18b3a","unresolved":false,"context_lines":[{"line_number":590,"context_line":"    def test_get_unused_lun_ids_used_up_luns(self):"},{"line_number":591,"context_line":"        unused_lun_ids \u003d host_mapper._get_unused_lun_ids("},{"line_number":592,"context_line":"            FAKE_USED_UP_MAPPINGS)"},{"line_number":593,"context_line":"        self.assertEqual(unused_lun_ids, FAKE_UNUSED_LUN_ID)"},{"line_number":594,"context_line":""},{"line_number":595,"context_line":"    def test_get_lun_id_counter_used_up_luns(self):"},{"line_number":596,"context_line":"        used_lun_ids \u003d host_mapper._get_used_lun_id_counter("}],"source_content_type":"text/x-python","patch_set":10,"id":"7a016987_8ada5216","line":593,"in_reply_to":"7a016987_f06b26ef","updated":"2015-05-26 18:23:15.000000000","message":"Done","commit_id":"ffb6e050666ec09df3758c9f89ea055ddae72e77"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"4825c1e99b513e68f8d191df8199dca081df9e24","unresolved":false,"context_lines":[{"line_number":595,"context_line":"    def test_get_lun_id_counter_used_up_luns(self):"},{"line_number":596,"context_line":"        used_lun_ids \u003d host_mapper._get_used_lun_id_counter("},{"line_number":597,"context_line":"            FAKE_USED_UP_MAPPINGS)"},{"line_number":598,"context_line":"        self.assertEqual(used_lun_ids, FAKE_USED_UP_LUN_ID_DICT)"},{"line_number":599,"context_line":""},{"line_number":600,"context_line":"    def test_host_not_full(self):"},{"line_number":601,"context_line":"        fake_host \u003d copy.deepcopy(eseries_fakes.HOST)"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a016987_d06eeafe","line":598,"updated":"2015-05-24 06:51:38.000000000","message":"Same as above.","commit_id":"ffb6e050666ec09df3758c9f89ea055ddae72e77"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"17111476536568f586671c9505fd23ed8ca18b3a","unresolved":false,"context_lines":[{"line_number":595,"context_line":"    def test_get_lun_id_counter_used_up_luns(self):"},{"line_number":596,"context_line":"        used_lun_ids \u003d host_mapper._get_used_lun_id_counter("},{"line_number":597,"context_line":"            FAKE_USED_UP_MAPPINGS)"},{"line_number":598,"context_line":"        self.assertEqual(used_lun_ids, FAKE_USED_UP_LUN_ID_DICT)"},{"line_number":599,"context_line":""},{"line_number":600,"context_line":"    def test_host_not_full(self):"},{"line_number":601,"context_line":"        fake_host \u003d copy.deepcopy(eseries_fakes.HOST)"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a016987_cad04afa","line":598,"in_reply_to":"7a016987_d06eeafe","updated":"2015-05-26 18:23:15.000000000","message":"Done","commit_id":"ffb6e050666ec09df3758c9f89ea055ddae72e77"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"4825c1e99b513e68f8d191df8199dca081df9e24","unresolved":false,"context_lines":[{"line_number":661,"context_line":""},{"line_number":662,"context_line":"    def test_get_lun_by_mapping(self):"},{"line_number":663,"context_line":"        used_luns \u003d host_mapper._get_used_lun_ids_for_mappings(FAKE_MAPPINGS)"},{"line_number":664,"context_line":"        self.assertEqual(used_luns, set([0, 1]))"},{"line_number":665,"context_line":""},{"line_number":666,"context_line":"    def test_get_lun_by_mapping_no_mapping(self):"},{"line_number":667,"context_line":"        used_luns \u003d host_mapper._get_used_lun_ids_for_mappings([])"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a016987_b07a4ebb","line":664,"updated":"2015-05-24 06:51:38.000000000","message":"Same as above.","commit_id":"ffb6e050666ec09df3758c9f89ea055ddae72e77"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"17111476536568f586671c9505fd23ed8ca18b3a","unresolved":false,"context_lines":[{"line_number":661,"context_line":""},{"line_number":662,"context_line":"    def test_get_lun_by_mapping(self):"},{"line_number":663,"context_line":"        used_luns \u003d host_mapper._get_used_lun_ids_for_mappings(FAKE_MAPPINGS)"},{"line_number":664,"context_line":"        self.assertEqual(used_luns, set([0, 1]))"},{"line_number":665,"context_line":""},{"line_number":666,"context_line":"    def test_get_lun_by_mapping_no_mapping(self):"},{"line_number":667,"context_line":"        used_luns \u003d host_mapper._get_used_lun_ids_for_mappings([])"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a016987_aafe2e36","line":664,"in_reply_to":"7a016987_b07a4ebb","updated":"2015-05-26 18:23:15.000000000","message":"Done","commit_id":"ffb6e050666ec09df3758c9f89ea055ddae72e77"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"4825c1e99b513e68f8d191df8199dca081df9e24","unresolved":false,"context_lines":[{"line_number":665,"context_line":""},{"line_number":666,"context_line":"    def test_get_lun_by_mapping_no_mapping(self):"},{"line_number":667,"context_line":"        used_luns \u003d host_mapper._get_used_lun_ids_for_mappings([])"},{"line_number":668,"context_line":"        self.assertEqual(used_luns, set([0]))"},{"line_number":669,"context_line":""},{"line_number":670,"context_line":"    def test_lun_id_available_on_host(self):"},{"line_number":671,"context_line":"        fake_host \u003d copy.deepcopy(eseries_fakes.HOST)"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a016987_907512cc","line":668,"updated":"2015-05-24 06:51:38.000000000","message":"Same as above.","commit_id":"ffb6e050666ec09df3758c9f89ea055ddae72e77"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"17111476536568f586671c9505fd23ed8ca18b3a","unresolved":false,"context_lines":[{"line_number":665,"context_line":""},{"line_number":666,"context_line":"    def test_get_lun_by_mapping_no_mapping(self):"},{"line_number":667,"context_line":"        used_luns \u003d host_mapper._get_used_lun_ids_for_mappings([])"},{"line_number":668,"context_line":"        self.assertEqual(used_luns, set([0]))"},{"line_number":669,"context_line":""},{"line_number":670,"context_line":"    def test_lun_id_available_on_host(self):"},{"line_number":671,"context_line":"        fake_host \u003d copy.deepcopy(eseries_fakes.HOST)"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a016987_8afb7247","line":668,"in_reply_to":"7a016987_907512cc","updated":"2015-05-26 18:23:15.000000000","message":"Done","commit_id":"ffb6e050666ec09df3758c9f89ea055ddae72e77"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"4825c1e99b513e68f8d191df8199dca081df9e24","unresolved":false,"context_lines":[{"line_number":670,"context_line":"    def test_lun_id_available_on_host(self):"},{"line_number":671,"context_line":"        fake_host \u003d copy.deepcopy(eseries_fakes.HOST)"},{"line_number":672,"context_line":"        self.assertTrue(host_mapper._is_lun_id_available_on_host("},{"line_number":673,"context_line":"            self.client, fake_host, FAKE_UNUSED_LUN_ID))"},{"line_number":674,"context_line":""},{"line_number":675,"context_line":"    def test_no_lun_id_available_on_host(self):"},{"line_number":676,"context_line":"        fake_host \u003d copy.deepcopy(eseries_fakes.HOST_3)"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a016987_7080568b","line":673,"updated":"2015-05-24 06:51:38.000000000","message":"Same as above.","commit_id":"ffb6e050666ec09df3758c9f89ea055ddae72e77"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"17111476536568f586671c9505fd23ed8ca18b3a","unresolved":false,"context_lines":[{"line_number":670,"context_line":"    def test_lun_id_available_on_host(self):"},{"line_number":671,"context_line":"        fake_host \u003d copy.deepcopy(eseries_fakes.HOST)"},{"line_number":672,"context_line":"        self.assertTrue(host_mapper._is_lun_id_available_on_host("},{"line_number":673,"context_line":"            self.client, fake_host, FAKE_UNUSED_LUN_ID))"},{"line_number":674,"context_line":""},{"line_number":675,"context_line":"    def test_no_lun_id_available_on_host(self):"},{"line_number":676,"context_line":"        fake_host \u003d copy.deepcopy(eseries_fakes.HOST_3)"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a016987_aa850eae","line":673,"in_reply_to":"7a016987_7080568b","updated":"2015-05-26 18:23:15.000000000","message":"This is an assertTrue call. I don\u0027t think so there is going to be any change in the order of arguments here.","commit_id":"ffb6e050666ec09df3758c9f89ea055ddae72e77"}],"cinder/volume/drivers/netapp/eseries/host_mapper.py":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"6f66f03ef2cc12dfea42959813dd1bcf397b360e","unresolved":false,"context_lines":[{"line_number":162,"context_line":"        unused_luns \u003d _get_unused_lun_ids(mappings)"},{"line_number":163,"context_line":"        if unused_luns:"},{"line_number":164,"context_line":"            chosen_lun \u003d random.sample(unused_luns, 1)"},{"line_number":165,"context_line":"            return chosen_lun[0]"},{"line_number":166,"context_line":"        if multiattach_enabled:"},{"line_number":167,"context_line":"            msg \u003d _(\"No unused LUN IDs are available on the host; \""},{"line_number":168,"context_line":"                    \"multiattach is enabled which requires that all LUN IDs \""}],"source_content_type":"text/x-python","patch_set":1,"id":"3acd31a7_d2cd815e","line":165,"updated":"2015-05-01 14:34:45.000000000","message":"Stylistic comment....This is kind-of confusing to read.  I guess if there are no unused_luns it falls through to the exception.  This would be easier to follow if it were put in an else: block.","commit_id":"bec2d96c4baa1709fef9e82899d82e504c404d9f"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"370de3946070ac34ab8ab06703b97b275b6b791a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"﻿# Copyright (c) 2015 Alex Meade.  All Rights Reserved."},{"line_number":2,"context_line":"# Copyright (c) 2015 Rushil Chugh. All Rights reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":5,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":3,"id":"3acd31a7_48b196e0","line":2,"updated":"2015-05-04 18:28:00.000000000","message":"Is this really necessary ?","commit_id":"d6243ce69517d98a5a444452aa6476adaf9c7840"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"b300fe05843a73b35641c2637d008c29a05bfab8","unresolved":false,"context_lines":[{"line_number":1,"context_line":"﻿# Copyright (c) 2015 Alex Meade.  All Rights Reserved."},{"line_number":2,"context_line":"# Copyright (c) 2015 Rushil Chugh. All Rights reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":5,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":3,"id":"3acd31a7_c87806f5","line":2,"in_reply_to":"3acd31a7_48b196e0","updated":"2015-05-04 18:33:52.000000000","message":"This is done as instructed by NetApp Legal. If there are significant changes, we have been told to add our names to the Copyright by NetApp Legal.","commit_id":"d6243ce69517d98a5a444452aa6476adaf9c7840"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"9d2186106237c03d606c7b23969cdbbb2459b53f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"﻿# Copyright (c) 2015 Alex Meade.  All Rights Reserved."},{"line_number":2,"context_line":"# Copyright (c) 2015 Rushil Chugh. All Rights reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":5,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":4,"id":"3acd31a7_28ec1a8e","line":2,"updated":"2015-05-04 18:35:23.000000000","message":"This is still here....why?","commit_id":"91e6549af4abadd34bf04dff686f3fd67ef48901"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"a243b291696aa4532e40525fe29d7b5ecbf5f999","unresolved":false,"context_lines":[{"line_number":1,"context_line":"﻿# Copyright (c) 2015 Alex Meade.  All Rights Reserved."},{"line_number":2,"context_line":"# Copyright (c) 2015 Rushil Chugh. All Rights reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":5,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":4,"id":"3acd31a7_474e033c","line":2,"in_reply_to":"3acd31a7_28ec1a8e","updated":"2015-05-05 15:13:41.000000000","message":"Done","commit_id":"91e6549af4abadd34bf04dff686f3fd67ef48901"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"617de1df4bbfe4c170104c51d43385446dcb4be2","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import random"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from collections import Counter"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from oslo_log import log as logging"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"7a016987_6b6195a8","line":21,"updated":"2015-05-22 20:10:40.000000000","message":"Please, import modules, not objects","commit_id":"ffb6e050666ec09df3758c9f89ea055ddae72e77"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"17111476536568f586671c9505fd23ed8ca18b3a","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import random"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from collections import Counter"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from oslo_log import log as logging"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"7a016987_2acb5e20","line":21,"in_reply_to":"7a016987_6b6195a8","updated":"2015-05-26 18:23:15.000000000","message":"Done","commit_id":"ffb6e050666ec09df3758c9f89ea055ddae72e77"}],"cinder/volume/drivers/netapp/eseries/iscsi.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c617787ce91a86162896bb4c3fff2609aa8890d4","unresolved":false,"context_lines":[{"line_number":617,"context_line":"        else:"},{"line_number":618,"context_line":"            mapping \u003d host_mapper.map_volume_to_single_host("},{"line_number":619,"context_line":"                self._client, volume, eseries_vol, host, current_map,"},{"line_number":620,"context_line":"                self.configuration.netapp_enable_multiattach)"},{"line_number":621,"context_line":""},{"line_number":622,"context_line":"        lun_id \u003d mapping[\u0027lun\u0027]"},{"line_number":623,"context_line":"        msg \u003d _(\"Mapped volume %(id)s to the initiator %(initiator_name)s.\")"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a0c5dc1_1e520668","line":620,"updated":"2015-05-13 04:54:36.000000000","message":"Is this a different option compared to multiattach in Cinder?","commit_id":"0bdcb7e20782cbc4731baedf5c9f38ef740a3410"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"98a3f2262e881b1a74d2b6a606d2afedcb2435c5","unresolved":false,"context_lines":[{"line_number":617,"context_line":"        else:"},{"line_number":618,"context_line":"            mapping \u003d host_mapper.map_volume_to_single_host("},{"line_number":619,"context_line":"                self._client, volume, eseries_vol, host, current_map,"},{"line_number":620,"context_line":"                self.configuration.netapp_enable_multiattach)"},{"line_number":621,"context_line":""},{"line_number":622,"context_line":"        lun_id \u003d mapping[\u0027lun\u0027]"},{"line_number":623,"context_line":"        msg \u003d _(\"Mapped volume %(id)s to the initiator %(initiator_name)s.\")"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_5b5e76ea","line":620,"in_reply_to":"9a0c5dc1_1e520668","updated":"2015-05-14 14:11:25.000000000","message":"netapp_enable_multiattach can work both as doing multiattach during live migration and similar to multiattach in cinder. It is different but it serves the same purpose along with doing multiattach during live migration.","commit_id":"0bdcb7e20782cbc4731baedf5c9f38ef740a3410"}],"cinder/volume/drivers/netapp/eseries/utils.py":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"6f66f03ef2cc12dfea42959813dd1bcf397b360e","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"MULTI_ATTACH_HOST_GROUP_NAME \u003d \u0027cinder-multi-attach\u0027"},{"line_number":30,"context_line":"NULL_REF \u003d \u00270000000000000000000000000000000000000000\u0027"},{"line_number":31,"context_line":"MAX_LUNS_PER_HOST \u003d 256"},{"line_number":32,"context_line":"MAX_LUNS_PER_HOST_GROUP \u003d 256"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3acd31a7_121099a7","line":31,"updated":"2015-05-01 14:34:45.000000000","message":"Why the change here?","commit_id":"bec2d96c4baa1709fef9e82899d82e504c404d9f"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"0c881448e40de73f24d292b591002756f15eecf2","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"MULTI_ATTACH_HOST_GROUP_NAME \u003d \u0027cinder-multi-attach\u0027"},{"line_number":30,"context_line":"NULL_REF \u003d \u00270000000000000000000000000000000000000000\u0027"},{"line_number":31,"context_line":"MAX_LUNS_PER_HOST \u003d 256"},{"line_number":32,"context_line":"MAX_LUNS_PER_HOST_GROUP \u003d 256"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3acd31a7_08e95ee6","line":31,"in_reply_to":"3acd31a7_0f15e83e","updated":"2015-05-04 18:23:22.000000000","message":"It sounds like you need to rename this variable.  MAX_LUNS_PER_HOST\u003d256 doesn\u0027t match with your statement of supporting 255 hosts...?","commit_id":"bec2d96c4baa1709fef9e82899d82e504c404d9f"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"04d9d4c7564ae4b9b6abdfcb2ec4123a71bd8ef8","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"MULTI_ATTACH_HOST_GROUP_NAME \u003d \u0027cinder-multi-attach\u0027"},{"line_number":30,"context_line":"NULL_REF \u003d \u00270000000000000000000000000000000000000000\u0027"},{"line_number":31,"context_line":"MAX_LUNS_PER_HOST \u003d 256"},{"line_number":32,"context_line":"MAX_LUNS_PER_HOST_GROUP \u003d 256"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3acd31a7_adbaaa21","line":31,"in_reply_to":"3acd31a7_121099a7","updated":"2015-05-01 14:48:46.000000000","message":"There is a change here as the range function iterates from 0 to n-1 lun ids. With Eseries backend, we have at maximum 255 hosts supported, thus we need 256(256-1\u003d255) versus 255(255-1\u003d254). With 255 MAX_LUNS_PER_HOST we would be missing out on LUN_ID 255.","commit_id":"bec2d96c4baa1709fef9e82899d82e504c404d9f"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"b9d4b458d5422f2c40b8b20665bef93becc61bf6","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"MULTI_ATTACH_HOST_GROUP_NAME \u003d \u0027cinder-multi-attach\u0027"},{"line_number":30,"context_line":"NULL_REF \u003d \u00270000000000000000000000000000000000000000\u0027"},{"line_number":31,"context_line":"MAX_LUNS_PER_HOST \u003d 256"},{"line_number":32,"context_line":"MAX_LUNS_PER_HOST_GROUP \u003d 256"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3acd31a7_0f15e83e","line":31,"in_reply_to":"3acd31a7_adbaaa21","updated":"2015-05-04 16:42:52.000000000","message":"If you can mention this in the commit message that would be good.  Otherwise it wasn\u0027t obvious why this changed.  Thanks!","commit_id":"bec2d96c4baa1709fef9e82899d82e504c404d9f"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"f098c71bd03b35deee3cf57d4bd4660926c81357","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"MULTI_ATTACH_HOST_GROUP_NAME \u003d \u0027cinder-multi-attach\u0027"},{"line_number":30,"context_line":"NULL_REF \u003d \u00270000000000000000000000000000000000000000\u0027"},{"line_number":31,"context_line":"MAX_LUNS_PER_HOST \u003d 256"},{"line_number":32,"context_line":"MAX_LUNS_PER_HOST_GROUP \u003d 256"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3acd31a7_ea4173aa","line":31,"updated":"2015-05-04 21:03:57.000000000","message":"Having this set to the \"wrong\" value to fix where it is used seems like the wrong thing to do, and will result in more complexity later (if not broken code).\n\nThis should really remain 255 and the calculation should be changed where it is used, if the max luns per host is still 255.","commit_id":"91e6549af4abadd34bf04dff686f3fd67ef48901"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"d07b52fc89f98e14605f81d5da8449f79ce02d7b","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"MULTI_ATTACH_HOST_GROUP_NAME \u003d \u0027cinder-multi-attach\u0027"},{"line_number":30,"context_line":"NULL_REF \u003d \u00270000000000000000000000000000000000000000\u0027"},{"line_number":31,"context_line":"MAX_LUNS_PER_HOST \u003d 256"},{"line_number":32,"context_line":"MAX_LUNS_PER_HOST_GROUP \u003d 256"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3acd31a7_96b20f05","line":31,"in_reply_to":"3acd31a7_ea4173aa","updated":"2015-05-05 14:12:07.000000000","message":"The value of MAX_LUNS_PER_HOST is 256. It goes from 0 to 255 which counts to 256. This value was incorrect in the patch that got merged and hence a correction is being made here.","commit_id":"91e6549af4abadd34bf04dff686f3fd67ef48901"}],"cinder/volume/drivers/nfs.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"d2c71f34ea35b9e9fe6adfab1cdfb0ab85e2b5bc","unresolved":false,"context_lines":[{"line_number":134,"context_line":""},{"line_number":135,"context_line":"            LOG.error(msg)"},{"line_number":136,"context_line":"            raise exception.InvalidConfigurationValue(msg)"},{"line_number":137,"context_line":"        if not ((self.configuration.nfs_used_ratio \u003e 0) and"},{"line_number":138,"context_line":"                (self.configuration.nfs_used_ratio \u003c\u003d 1)):"},{"line_number":139,"context_line":"            msg \u003d _(\"NFS config \u0027nfs_used_ratio\u0027 invalid.  Must be \u003e 0 \""},{"line_number":140,"context_line":"                    \"and \u003c\u003d 1.0: %s\") % self.configuration.nfs_used_ratio"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a0c5dc1_f76f6c90","line":137,"updated":"2015-05-12 17:18:11.000000000","message":"Bad merge","commit_id":"b2200ded5cb633ec5552cac9c8b8958196eabfc9"}]}
