)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"dc52faf6efda8d019214a5935dc28b6d8b64bdc2","unresolved":false,"context_lines":[{"line_number":25,"context_line":"                           \"iqn.2014-2.org.example:vol1-3\"],"},{"line_number":26,"context_line":"             \"target_lun\": 1,"},{"line_number":27,"context_line":"             \"target_alternative_luns\": [2, 3],"},{"line_number":28,"context_line":"             ...}}}"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"This patch also enables brick library to fail-over to alternative"},{"line_number":31,"context_line":"portals, iqns, and luns."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"da86d52c_f908632a","line":28,"updated":"2015-02-09 04:26:22.000000000","message":"Suggest adding this example to initialize_connection in driver.py. Please also add the example for multipath there.","commit_id":"938c8f88e7b79d830f5eaa922d92fd9c1a47df16"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"5a68fff7dc55af47ca3eafc10f53b59c540e284e","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When the main iSCSI portal is unreachable by network failure etc.,"},{"line_number":10,"context_line":"volume attach will fail even if the array has the other portal"},{"line_number":11,"context_line":"addresses alive. To enable nova-compute and brick to fall-back to"},{"line_number":12,"context_line":"alternative portals, this patch makes Cinder to contains the"},{"line_number":13,"context_line":"multiple portal addresses and correspoinding IQNs and LUNs in"},{"line_number":14,"context_line":"connection_info returned by initialize_connection API."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"ba7be1f8_a287b2b5","line":11,"updated":"2015-02-26 22:04:08.000000000","message":"Should this mention it is only supported by brick and not nova right now? When that changes the comments in the code will need to be updated as well, right?","commit_id":"a3d64ead58f85a202621214d41553f269995d88a"},{"author":{"_account_id":9176,"name":"Tomoki Sekiyama","email":"tomoki.sekiyama@gmail.com","username":"tsekiyama"},"change_message_id":"c2edc5eff171f07d0488820d1a5927b56b8a21ee","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When the main iSCSI portal is unreachable by network failure etc.,"},{"line_number":10,"context_line":"volume attach will fail even if the array has the other portal"},{"line_number":11,"context_line":"addresses alive. To enable nova-compute and brick to fall-back to"},{"line_number":12,"context_line":"alternative portals, this patch makes Cinder to contains the"},{"line_number":13,"context_line":"multiple portal addresses and correspoinding IQNs and LUNs in"},{"line_number":14,"context_line":"connection_info returned by initialize_connection API."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"ba7be1f8_9eb4c2d2","line":11,"in_reply_to":"ba7be1f8_a287b2b5","updated":"2015-02-27 01:01:16.000000000","message":"Added a note that this needs a corresponding patch.","commit_id":"a3d64ead58f85a202621214d41553f269995d88a"}],"cinder/brick/initiator/connector.py":[{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"c41a68b1679d8c2484818e154020117d2208a600","unresolved":false,"context_lines":[{"line_number":254,"context_line":"                        target_props \u003d props"},{"line_number":255,"context_line":"                        break"},{"line_number":256,"context_line":"                else:"},{"line_number":257,"context_line":"                    LOG.warn(_LW(\u0027Failed to login all the iSCSI target.\u0027))"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"            host_devices \u003d self._get_device_path(target_props)"},{"line_number":260,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_59af542a","line":257,"updated":"2014-12-11 04:13:21.000000000","message":"Failed to login to any of the iSCSI targets.","commit_id":"838d2cef95c5017df802b5b5e58bc05d3312de24"},{"author":{"_account_id":9176,"name":"Tomoki Sekiyama","email":"tomoki.sekiyama@gmail.com","username":"tsekiyama"},"change_message_id":"1e2d48bac5e3ab7d2f55c1a8222e5cec1efd1181","unresolved":false,"context_lines":[{"line_number":254,"context_line":"                        target_props \u003d props"},{"line_number":255,"context_line":"                        break"},{"line_number":256,"context_line":"                else:"},{"line_number":257,"context_line":"                    LOG.warn(_LW(\u0027Failed to login all the iSCSI target.\u0027))"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"            host_devices \u003d self._get_device_path(target_props)"},{"line_number":260,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_d4cbf050","line":257,"in_reply_to":"3a961159_59af542a","updated":"2014-12-12 00:05:49.000000000","message":"Replaced the message. Thanks.","commit_id":"838d2cef95c5017df802b5b5e58bc05d3312de24"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"c41a68b1679d8c2484818e154020117d2208a600","unresolved":false,"context_lines":[{"line_number":522,"context_line":"            except putils.ProcessExecutionError as err:"},{"line_number":523,"context_line":"                #as this might be one of many paths,"},{"line_number":524,"context_line":"                #only set successful logins to startup automatically"},{"line_number":525,"context_line":"                if err.exit_code not in [15]:"},{"line_number":526,"context_line":"                    LOG.warn(_LW(\u0027Failed to login iSCSI target %(iqn)s \u0027"},{"line_number":527,"context_line":"                                 \u0027on portal %(portal)s (exit code %(err)s).\u0027),"},{"line_number":528,"context_line":"                             {\u0027iqn\u0027: connection_properties[\u0027target_iqn\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_dc897276","line":525,"updated":"2014-12-11 04:13:21.000000000","message":"Don\u0027t we still need to account for err.exit_code in [15] as we did previously.   And if not, shouldn\u0027t the comment block above this if be changed to reflect the difference ?","commit_id":"838d2cef95c5017df802b5b5e58bc05d3312de24"},{"author":{"_account_id":9176,"name":"Tomoki Sekiyama","email":"tomoki.sekiyama@gmail.com","username":"tsekiyama"},"change_message_id":"1e2d48bac5e3ab7d2f55c1a8222e5cec1efd1181","unresolved":false,"context_lines":[{"line_number":522,"context_line":"            except putils.ProcessExecutionError as err:"},{"line_number":523,"context_line":"                #as this might be one of many paths,"},{"line_number":524,"context_line":"                #only set successful logins to startup automatically"},{"line_number":525,"context_line":"                if err.exit_code not in [15]:"},{"line_number":526,"context_line":"                    LOG.warn(_LW(\u0027Failed to login iSCSI target %(iqn)s \u0027"},{"line_number":527,"context_line":"                                 \u0027on portal %(portal)s (exit code %(err)s).\u0027),"},{"line_number":528,"context_line":"                             {\u0027iqn\u0027: connection_properties[\u0027target_iqn\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_54a380b1","line":525,"in_reply_to":"3a961159_dc897276","updated":"2014-12-12 00:05:49.000000000","message":"OK, I\u0027ll replace the comment above.\n\nThis doesn\u0027t change the behavior around _iscsiadm_update, but just adds LOG.warn and returning False on login failure (err.exit_code \u003d\u003d 15 means \u0027already logging in\u0027, so we should regard this as successful login).","commit_id":"838d2cef95c5017df802b5b5e58bc05d3312de24"}],"cinder/tests/brick/test_brick_connector.py":[{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"0df60c243724716577b5908b46a669a4e66b4706","unresolved":false,"context_lines":[{"line_number":261,"context_line":""},{"line_number":262,"context_line":"        self.assertEqual(expected_commands, self.cmds)"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"    @test.testtools.skipUnless(os.path.exists(\u0027/dev/disk/by-path\u0027),"},{"line_number":265,"context_line":"                               \u0027Test requires /dev/disk/by-path\u0027)"},{"line_number":266,"context_line":"    def test_connect_volume(self):"},{"line_number":267,"context_line":"        self._test_connect_volume({}, [])"}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_a60fe337","line":264,"updated":"2015-02-19 20:27:13.000000000","message":"Can\u0027t we just use /tmp and then clean up, like other tests?","commit_id":"b09d685ef1a6e068cfd588ccfc32d6456e5df19a"}],"cinder/volume/driver.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"dc52faf6efda8d019214a5935dc28b6d8b64bdc2","unresolved":false,"context_lines":[{"line_number":1014,"context_line":""},{"line_number":1015,"context_line":"        Some drivers may return lists of alternative portals, iqns, luns in"},{"line_number":1016,"context_line":"        :target_alternative_portals, :target_alternative_iqns and"},{"line_number":1017,"context_line":"        :target_alternative_luns."},{"line_number":1018,"context_line":"        \"\"\""},{"line_number":1019,"context_line":""},{"line_number":1020,"context_line":"        properties \u003d {}"}],"source_content_type":"text/x-python","patch_set":10,"id":"da86d52c_ee9ed706","line":1017,"updated":"2015-02-09 04:26:22.000000000","message":"Can you add some explanation here to specify that alternative portals are for drivers that support single path to fail over in case of failure on the original path?","commit_id":"938c8f88e7b79d830f5eaa922d92fd9c1a47df16"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"dc52faf6efda8d019214a5935dc28b6d8b64bdc2","unresolved":false,"context_lines":[{"line_number":1130,"context_line":"                    \u0027volume_id\u0027: 1,"},{"line_number":1131,"context_line":"                    \u0027access_mode\u0027: \u0027rw\u0027"},{"line_number":1132,"context_line":"                }"},{"line_number":1133,"context_line":"            }"},{"line_number":1134,"context_line":""},{"line_number":1135,"context_line":"        \"\"\""},{"line_number":1136,"context_line":"        # NOTE(jdg): Yes, this is duplicated in the volume/target"}],"source_content_type":"text/x-python","patch_set":10,"id":"da86d52c_2e0b8f2c","line":1133,"updated":"2015-02-09 04:26:22.000000000","message":"It will be really helpful for driver developers if you can add the new examples of \u0027data\u0027 for alternative path and multipath here.","commit_id":"938c8f88e7b79d830f5eaa922d92fd9c1a47df16"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"7e0fed4a1095edb8b11149d483c081f85b9a7dee","unresolved":false,"context_lines":[{"line_number":1320,"context_line":"                    \u0027target_iqn\u0027: \u0027iqn.2010-10.org.openstack:volume-00000001\u0027,"},{"line_number":1321,"context_line":"                    \u0027target_portal\u0027: \u0027127.0.0.0.1:3260\u0027,"},{"line_number":1322,"context_line":"                    \u0027volume_id\u0027: 1,"},{"line_number":1323,"context_line":"                    \u0027access_mode\u0027: \u0027rw\u0027"},{"line_number":1324,"context_line":"                }"},{"line_number":1325,"context_line":"            }"},{"line_number":1326,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_57e3d332","line":1323,"updated":"2015-02-23 05:02:41.000000000","message":"Rather than introduce two options for the data as shown below, and also to try and preserve format as much as possible; would it be possible do you think to just add another key?\n\nFor example, \u0027data\u0027:{\u0027additional_paths\u0027:[target_discovered: True\n                                                              target_iqn: xxxx\n                                                              target_portal: xxxx\n                                                              ....\n\nThis way we can roll in the change and worry about support on the consumer side \"whenever\" and don\u0027t require any changes to any existing code and even better no need to \"test\" for the different formats.  Just provide the extra connection data if available, then the consumer can easily check if it\u0027s there and use it if available/needed.  Thoughts?","commit_id":"a3723f9327dc9bcdc8a6505d85f7ec9c02098e83"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"fbc6d5cf89bfdeeebf70320b23d3bb8665accf0f","unresolved":false,"context_lines":[{"line_number":1344,"context_line":"        If the driver supports single path to fail over in case of failure on"},{"line_number":1345,"context_line":"        the original path, it returns multiple portals information even when"},{"line_number":1346,"context_line":"        connector[\u0027multipath\u0027] is False. In this case, it returns both"},{"line_number":1347,"context_line":"        singular and plural keys for backward compatibility::"},{"line_number":1348,"context_line":""},{"line_number":1349,"context_line":"            {"},{"line_number":1350,"context_line":"                \u0027driver_volume_type\u0027: \u0027iscsi\u0027"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba7be1f8_c2d666c3","line":1347,"updated":"2015-02-26 21:55:43.000000000","message":"So should the one above and the one below be changed to match what you have in the commit message?  Then just comment that \"if\" a backend supports more than one connection the xxx\u0027s\u0027:[] key will be populated?","commit_id":"a3d64ead58f85a202621214d41553f269995d88a"},{"author":{"_account_id":9176,"name":"Tomoki Sekiyama","email":"tomoki.sekiyama@gmail.com","username":"tsekiyama"},"change_message_id":"c2edc5eff171f07d0488820d1a5927b56b8a21ee","unresolved":false,"context_lines":[{"line_number":1344,"context_line":"        If the driver supports single path to fail over in case of failure on"},{"line_number":1345,"context_line":"        the original path, it returns multiple portals information even when"},{"line_number":1346,"context_line":"        connector[\u0027multipath\u0027] is False. In this case, it returns both"},{"line_number":1347,"context_line":"        singular and plural keys for backward compatibility::"},{"line_number":1348,"context_line":""},{"line_number":1349,"context_line":"            {"},{"line_number":1350,"context_line":"                \u0027driver_volume_type\u0027: \u0027iscsi\u0027"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba7be1f8_1ed7f2ee","line":1347,"in_reply_to":"ba7be1f8_c2d666c3","updated":"2015-02-27 01:01:16.000000000","message":"Now I unified these two so that these always will be the same data structure. Also simplified \"if\" explanation here.","commit_id":"a3d64ead58f85a202621214d41553f269995d88a"}]}
