)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"6623251b64b7c6cb2b14762c75d97f462f1e6bf9","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This changeset incorporate the changes to use ISCSIDiscovery return"},{"line_number":10,"context_line":"code changes done for pypowervm."},{"line_number":11,"context_line":"Changes allows using the Traditional and SDE environment for ISCSI"},{"line_number":12,"context_line":"operation."},{"line_number":13,"context_line":"Changes allows handling the LUN id for multiple volume attachment."},{"line_number":14,"context_line":"Changes allows fixing the Duplicate atom failure during Detach"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"ff0f0b1f_c95a6f81","line":11,"range":{"start_line":11,"start_character":0,"end_line":11,"end_character":14},"updated":"2017-05-24 13:08:59.000000000","message":"either \"Changes allow\" or \"Change allows\". Here and the next several sentences.","commit_id":"d1467fd6d807fb1b09aea6750213f670a4f4883e"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"27ec475a4665f27c0cf69477c1b86e40dc3472d5","unresolved":false,"context_lines":[{"line_number":10,"context_line":"code changes done for pypowervm."},{"line_number":11,"context_line":"Changes allows using the Traditional and SDE environment for ISCSI"},{"line_number":12,"context_line":"operation."},{"line_number":13,"context_line":"Changes allows handling the LUN id for multiple volume attachment."},{"line_number":14,"context_line":"Changes allows fixing the Duplicate atom failure during Detach"},{"line_number":15,"context_line":"revert."},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"1f1a1f67_1e40a406","line":13,"updated":"2017-07-18 21:08:29.000000000","message":"changes for LUN id seem to be the only thing being done here. Should the lines above and below this be removed from the commit message, or am I missing something, or do we have more work to do for those things?","commit_id":"b564e6412ad8f32fe7c8c1013396ede598683cb2"}],"nova_powervm/conf/powervm.py":[{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"a1433e5fee2fbf0455d93190eb0925fc248e9cd9","unresolved":false,"context_lines":[{"line_number":150,"context_line":"                help\u003d\"Use multipath connections when attaching iSCSI\"),"},{"line_number":151,"context_line":"    cfg.StrOpt(\u0027iscsi_iface\u0027,"},{"line_number":152,"context_line":"               default\u003d\u0027default\u0027,"},{"line_number":153,"context_line":"               help\u003d\"The iface_name to used for iscsi connections. \")"},{"line_number":154,"context_line":"]"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"# NPIV Options.  Only applicable if the \u0027fc_attach_strategy\u0027 is set to \u0027npiv\u0027."}],"source_content_type":"text/x-python","patch_set":14,"id":"5f4e5783_b2b35998","line":153,"updated":"2017-10-13 20:41:53.000000000","message":"iface_name? Probably need to describe that a little better for operators to understand.\n\nalso, s/used/use/ and drop the space after the period.","commit_id":"f7fbe0fbfcdd11d1fee97064d60af4f2e017c3c7"},{"author":{"_account_id":21099,"name":"Taylor Jakobson","email":"tjakobs@us.ibm.com","username":"tjakobs"},"change_message_id":"1ddae55176e132adc449d0e23bae2d682ee2bab7","unresolved":false,"context_lines":[{"line_number":150,"context_line":"                help\u003d\"Use multipath connections when attaching iSCSI\"),"},{"line_number":151,"context_line":"    cfg.StrOpt(\u0027iscsi_iface\u0027,"},{"line_number":152,"context_line":"               default\u003d\u0027default\u0027,"},{"line_number":153,"context_line":"               help\u003d\"The iface_name to used for iscsi connections. \")"},{"line_number":154,"context_line":"]"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"# NPIV Options.  Only applicable if the \u0027fc_attach_strategy\u0027 is set to \u0027npiv\u0027."}],"source_content_type":"text/x-python","patch_set":14,"id":"3f4b6375_a03cc392","line":153,"in_reply_to":"5f4e5783_b2b35998","updated":"2017-10-26 22:07:51.000000000","message":"Done","commit_id":"f7fbe0fbfcdd11d1fee97064d60af4f2e017c3c7"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"1d63868cb974a0f6b396b5fb921744781738d241","unresolved":false,"context_lines":[{"line_number":149,"context_line":"                default\u003dFalse,"},{"line_number":150,"context_line":"                help\u003d\"Use multipath connections when attaching iSCSI\"),"},{"line_number":151,"context_line":"    cfg.StrOpt(\u0027iscsi_iface\u0027,"},{"line_number":152,"context_line":"               default\u003d\u0027default\u0027,"},{"line_number":153,"context_line":"               help\u003d\"The iSCSI transport iface to use to connect to target in \""},{"line_number":154,"context_line":"                    \"case offload support is desired. Do not confuse the \""},{"line_number":155,"context_line":"                    \"iscsi_iface parameter to be provided here with the \""}],"source_content_type":"text/x-python","patch_set":15,"id":"3f4b6375_6d1fd46b","line":152,"updated":"2017-10-27 13:01:08.000000000","message":"I think we\u0027ll have to remove this default and handle it in code, so that the default can vary between \u0027default\u0027 for iscsi connection_info[\u0027driver_volume_type\u0027] and \u0027iser\u0027 for iser driver_volume_type","commit_id":"aa47cb4a345d07647470dd48e97a6795a7324519"},{"author":{"_account_id":21099,"name":"Taylor Jakobson","email":"tjakobs@us.ibm.com","username":"tjakobs"},"change_message_id":"663f660dd0fcb04a361fa15af9d8caeed7910ec1","unresolved":false,"context_lines":[{"line_number":149,"context_line":"                default\u003dFalse,"},{"line_number":150,"context_line":"                help\u003d\"Use multipath connections when attaching iSCSI\"),"},{"line_number":151,"context_line":"    cfg.StrOpt(\u0027iscsi_iface\u0027,"},{"line_number":152,"context_line":"               default\u003d\u0027default\u0027,"},{"line_number":153,"context_line":"               help\u003d\"The iSCSI transport iface to use to connect to target in \""},{"line_number":154,"context_line":"                    \"case offload support is desired. Do not confuse the \""},{"line_number":155,"context_line":"                    \"iscsi_iface parameter to be provided here with the \""}],"source_content_type":"text/x-python","patch_set":15,"id":"3f4b6375_642feaa7","line":152,"in_reply_to":"3f4b6375_6d1fd46b","updated":"2017-10-27 15:37:45.000000000","message":"Done","commit_id":"aa47cb4a345d07647470dd48e97a6795a7324519"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"1d63868cb974a0f6b396b5fb921744781738d241","unresolved":false,"context_lines":[{"line_number":153,"context_line":"               help\u003d\"The iSCSI transport iface to use to connect to target in \""},{"line_number":154,"context_line":"                    \"case offload support is desired. Do not confuse the \""},{"line_number":155,"context_line":"                    \"iscsi_iface parameter to be provided here with the \""},{"line_number":156,"context_line":"                    \"actual transport name.\")"},{"line_number":157,"context_line":"]"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"# NPIV Options.  Only applicable if the \u0027fc_attach_strategy\u0027 is set to \u0027npiv\u0027."}],"source_content_type":"text/x-python","patch_set":15,"id":"3f4b6375_0d106056","line":156,"updated":"2017-10-27 13:01:08.000000000","message":"If we remove the default above, we should document in the help what the behavior will be if this property is not set.","commit_id":"aa47cb4a345d07647470dd48e97a6795a7324519"},{"author":{"_account_id":21099,"name":"Taylor Jakobson","email":"tjakobs@us.ibm.com","username":"tjakobs"},"change_message_id":"663f660dd0fcb04a361fa15af9d8caeed7910ec1","unresolved":false,"context_lines":[{"line_number":153,"context_line":"               help\u003d\"The iSCSI transport iface to use to connect to target in \""},{"line_number":154,"context_line":"                    \"case offload support is desired. Do not confuse the \""},{"line_number":155,"context_line":"                    \"iscsi_iface parameter to be provided here with the \""},{"line_number":156,"context_line":"                    \"actual transport name.\")"},{"line_number":157,"context_line":"]"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"# NPIV Options.  Only applicable if the \u0027fc_attach_strategy\u0027 is set to \u0027npiv\u0027."}],"source_content_type":"text/x-python","patch_set":15,"id":"3f4b6375_84542623","line":156,"in_reply_to":"3f4b6375_0d106056","updated":"2017-10-27 15:37:45.000000000","message":"Done","commit_id":"aa47cb4a345d07647470dd48e97a6795a7324519"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"4c1108d54b410b5a9df2e5690a058364299228c4","unresolved":false,"context_lines":[{"line_number":149,"context_line":"                default\u003dFalse,"},{"line_number":150,"context_line":"                help\u003d\"Use multipath connections when attaching iSCSI\"),"},{"line_number":151,"context_line":"    cfg.StrOpt(\u0027iscsi_iface\u0027,"},{"line_number":152,"context_line":"               help\u003d\"The iSCSI transport iface to use to connect to target in \""},{"line_number":153,"context_line":"                    \"case offload support is desired. Do not confuse the \""},{"line_number":154,"context_line":"                    \"iscsi_iface parameter to be provided here with the \""},{"line_number":155,"context_line":"                    \"actual transport name. The \u0027default\u0027 iface will be used \""}],"source_content_type":"text/x-python","patch_set":17,"id":"3f4b6375_adef571b","line":152,"range":{"start_line":152,"start_character":41,"end_line":152,"end_character":46},"updated":"2017-11-03 14:20:18.000000000","message":"Is \"iface\" a term known by ISCSI people?  Or is it short for \"interface\"?","commit_id":"28beba1a05cbebd7937251610ead1f057b39dec7"},{"author":{"_account_id":21099,"name":"Taylor Jakobson","email":"tjakobs@us.ibm.com","username":"tjakobs"},"change_message_id":"15d084133b7235ac8c42fb06703647d4d613178c","unresolved":false,"context_lines":[{"line_number":149,"context_line":"                default\u003dFalse,"},{"line_number":150,"context_line":"                help\u003d\"Use multipath connections when attaching iSCSI\"),"},{"line_number":151,"context_line":"    cfg.StrOpt(\u0027iscsi_iface\u0027,"},{"line_number":152,"context_line":"               help\u003d\"The iSCSI transport iface to use to connect to target in \""},{"line_number":153,"context_line":"                    \"case offload support is desired. Do not confuse the \""},{"line_number":154,"context_line":"                    \"iscsi_iface parameter to be provided here with the \""},{"line_number":155,"context_line":"                    \"actual transport name. The \u0027default\u0027 iface will be used \""}],"source_content_type":"text/x-python","patch_set":17,"id":"3f4b6375_7e36a353","line":152,"range":{"start_line":152,"start_character":41,"end_line":152,"end_character":46},"in_reply_to":"3f4b6375_adef571b","updated":"2017-11-03 20:13:44.000000000","message":"iface is a term known by iSCSI people.","commit_id":"28beba1a05cbebd7937251610ead1f057b39dec7"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"4c1108d54b410b5a9df2e5690a058364299228c4","unresolved":false,"context_lines":[{"line_number":152,"context_line":"               help\u003d\"The iSCSI transport iface to use to connect to target in \""},{"line_number":153,"context_line":"                    \"case offload support is desired. Do not confuse the \""},{"line_number":154,"context_line":"                    \"iscsi_iface parameter to be provided here with the \""},{"line_number":155,"context_line":"                    \"actual transport name. The \u0027default\u0027 iface will be used \""},{"line_number":156,"context_line":"                    \"if this option is empty and the driver_volume_type is \""},{"line_number":157,"context_line":"                    \"iscsi.\")"},{"line_number":158,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f4b6375_2de36736","line":155,"range":{"start_line":155,"start_character":49,"end_line":155,"end_character":56},"updated":"2017-11-03 14:20:18.000000000","message":"Should we make the default \u0027default\u0027 then?","commit_id":"28beba1a05cbebd7937251610ead1f057b39dec7"},{"author":{"_account_id":21099,"name":"Taylor Jakobson","email":"tjakobs@us.ibm.com","username":"tjakobs"},"change_message_id":"dea7a30017b15c2d45c95f2995bcd6af531dc147","unresolved":false,"context_lines":[{"line_number":152,"context_line":"               help\u003d\"The iSCSI transport iface to use to connect to target in \""},{"line_number":153,"context_line":"                    \"case offload support is desired. Do not confuse the \""},{"line_number":154,"context_line":"                    \"iscsi_iface parameter to be provided here with the \""},{"line_number":155,"context_line":"                    \"actual transport name. The \u0027default\u0027 iface will be used \""},{"line_number":156,"context_line":"                    \"if this option is empty and the driver_volume_type is \""},{"line_number":157,"context_line":"                    \"iscsi.\")"},{"line_number":158,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":17,"id":"1f485f77_437a4288","line":155,"range":{"start_line":155,"start_character":49,"end_line":155,"end_character":56},"in_reply_to":"1f485f77_9e28a434","updated":"2017-11-14 18:47:42.000000000","message":"Done","commit_id":"28beba1a05cbebd7937251610ead1f057b39dec7"},{"author":{"_account_id":21099,"name":"Taylor Jakobson","email":"tjakobs@us.ibm.com","username":"tjakobs"},"change_message_id":"15d084133b7235ac8c42fb06703647d4d613178c","unresolved":false,"context_lines":[{"line_number":152,"context_line":"               help\u003d\"The iSCSI transport iface to use to connect to target in \""},{"line_number":153,"context_line":"                    \"case offload support is desired. Do not confuse the \""},{"line_number":154,"context_line":"                    \"iscsi_iface parameter to be provided here with the \""},{"line_number":155,"context_line":"                    \"actual transport name. The \u0027default\u0027 iface will be used \""},{"line_number":156,"context_line":"                    \"if this option is empty and the driver_volume_type is \""},{"line_number":157,"context_line":"                    \"iscsi.\")"},{"line_number":158,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f4b6375_67b97377","line":155,"range":{"start_line":155,"start_character":49,"end_line":155,"end_character":56},"in_reply_to":"3f4b6375_2de36736","updated":"2017-11-03 20:13:44.000000000","message":"I\u0027m down to default \u0027default\u0027, that\u0027s what the code is doing anyways. As long as the help text explains that it will only be used in the iscsi case since it won\u0027t be used for iser, which it does right now.\n@edmondsw thoughts? You had handling it in code before.","commit_id":"28beba1a05cbebd7937251610ead1f057b39dec7"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"041065594fb67ff562d4308761a0c97d5ad5d5ef","unresolved":false,"context_lines":[{"line_number":152,"context_line":"               help\u003d\"The iSCSI transport iface to use to connect to target in \""},{"line_number":153,"context_line":"                    \"case offload support is desired. Do not confuse the \""},{"line_number":154,"context_line":"                    \"iscsi_iface parameter to be provided here with the \""},{"line_number":155,"context_line":"                    \"actual transport name. The \u0027default\u0027 iface will be used \""},{"line_number":156,"context_line":"                    \"if this option is empty and the driver_volume_type is \""},{"line_number":157,"context_line":"                    \"iscsi.\")"},{"line_number":158,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":17,"id":"1f485f77_9e28a434","line":155,"range":{"start_line":155,"start_character":49,"end_line":155,"end_character":56},"in_reply_to":"3f4b6375_67b97377","updated":"2017-11-13 23:41:36.000000000","message":"yeah, if you think of this conf option as only applying when connection_type is iscsi (i.e. not when it\u0027s iser) then it does make sense to put the default here instead of buried in the code.","commit_id":"28beba1a05cbebd7937251610ead1f057b39dec7"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"4c1108d54b410b5a9df2e5690a058364299228c4","unresolved":false,"context_lines":[{"line_number":153,"context_line":"                    \"case offload support is desired. Do not confuse the \""},{"line_number":154,"context_line":"                    \"iscsi_iface parameter to be provided here with the \""},{"line_number":155,"context_line":"                    \"actual transport name. The \u0027default\u0027 iface will be used \""},{"line_number":156,"context_line":"                    \"if this option is empty and the driver_volume_type is \""},{"line_number":157,"context_line":"                    \"iscsi.\")"},{"line_number":158,"context_line":"]"},{"line_number":159,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"3f4b6375_cdd7334b","line":156,"range":{"start_line":156,"start_character":53,"end_line":156,"end_character":71},"updated":"2017-11-03 14:20:18.000000000","message":"What\u0027s this?  Presumably another conf option.  Please mention what section it\u0027s in.","commit_id":"28beba1a05cbebd7937251610ead1f057b39dec7"},{"author":{"_account_id":21099,"name":"Taylor Jakobson","email":"tjakobs@us.ibm.com","username":"tjakobs"},"change_message_id":"dea7a30017b15c2d45c95f2995bcd6af531dc147","unresolved":false,"context_lines":[{"line_number":153,"context_line":"                    \"case offload support is desired. Do not confuse the \""},{"line_number":154,"context_line":"                    \"iscsi_iface parameter to be provided here with the \""},{"line_number":155,"context_line":"                    \"actual transport name. The \u0027default\u0027 iface will be used \""},{"line_number":156,"context_line":"                    \"if this option is empty and the driver_volume_type is \""},{"line_number":157,"context_line":"                    \"iscsi.\")"},{"line_number":158,"context_line":"]"},{"line_number":159,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1f485f77_835f1a0d","line":156,"range":{"start_line":156,"start_character":53,"end_line":156,"end_character":71},"in_reply_to":"1f485f77_bed6c026","updated":"2017-11-14 18:47:42.000000000","message":"Done","commit_id":"28beba1a05cbebd7937251610ead1f057b39dec7"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"041065594fb67ff562d4308761a0c97d5ad5d5ef","unresolved":false,"context_lines":[{"line_number":153,"context_line":"                    \"case offload support is desired. Do not confuse the \""},{"line_number":154,"context_line":"                    \"iscsi_iface parameter to be provided here with the \""},{"line_number":155,"context_line":"                    \"actual transport name. The \u0027default\u0027 iface will be used \""},{"line_number":156,"context_line":"                    \"if this option is empty and the driver_volume_type is \""},{"line_number":157,"context_line":"                    \"iscsi.\")"},{"line_number":158,"context_line":"]"},{"line_number":159,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1f485f77_bed6c026","line":156,"range":{"start_line":156,"start_character":53,"end_line":156,"end_character":71},"in_reply_to":"3f4b6375_2a0b422a","updated":"2017-11-13 23:41:36.000000000","message":"Just remove the whole sentence since we\u0027re adding the default.","commit_id":"28beba1a05cbebd7937251610ead1f057b39dec7"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"30c5b7e0a62659fef7cb032f8da8e406d4f47c3c","unresolved":false,"context_lines":[{"line_number":153,"context_line":"                    \"case offload support is desired. Do not confuse the \""},{"line_number":154,"context_line":"                    \"iscsi_iface parameter to be provided here with the \""},{"line_number":155,"context_line":"                    \"actual transport name. The \u0027default\u0027 iface will be used \""},{"line_number":156,"context_line":"                    \"if this option is empty and the driver_volume_type is \""},{"line_number":157,"context_line":"                    \"iscsi.\")"},{"line_number":158,"context_line":"]"},{"line_number":159,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"3f4b6375_2a0b422a","line":156,"range":{"start_line":156,"start_character":53,"end_line":156,"end_character":71},"in_reply_to":"3f4b6375_7e8463d3","updated":"2017-11-03 21:30:44.000000000","message":"Okay, maybe that\u0027s worth mentioning here.  \"...and the driver_volume_type in the connection_info is iscsi.\"  Or, you know, not, if that\u0027s a thing that\u0027s obvious to people in the know.","commit_id":"28beba1a05cbebd7937251610ead1f057b39dec7"},{"author":{"_account_id":21099,"name":"Taylor Jakobson","email":"tjakobs@us.ibm.com","username":"tjakobs"},"change_message_id":"15d084133b7235ac8c42fb06703647d4d613178c","unresolved":false,"context_lines":[{"line_number":153,"context_line":"                    \"case offload support is desired. Do not confuse the \""},{"line_number":154,"context_line":"                    \"iscsi_iface parameter to be provided here with the \""},{"line_number":155,"context_line":"                    \"actual transport name. The \u0027default\u0027 iface will be used \""},{"line_number":156,"context_line":"                    \"if this option is empty and the driver_volume_type is \""},{"line_number":157,"context_line":"                    \"iscsi.\")"},{"line_number":158,"context_line":"]"},{"line_number":159,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"3f4b6375_7e8463d3","line":156,"range":{"start_line":156,"start_character":53,"end_line":156,"end_character":71},"in_reply_to":"3f4b6375_cdd7334b","updated":"2017-11-03 20:13:44.000000000","message":"\"driver_volume_type\" is a field in the connection_info object we get from cinder","commit_id":"28beba1a05cbebd7937251610ead1f057b39dec7"}],"nova_powervm/tests/virt/powervm/volume/test_iscsi.py":[{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"29cbac744ee375143fa1ad624a5e9812260bea58","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        @mock.patch(\u0027nova_powervm.virt.powervm.vm.get_pvm_uuid\u0027)"},{"line_number":52,"context_line":"        @mock.patch(\u0027pypowervm.tasks.partition.get_mgmt_partition\u0027,"},{"line_number":53,"context_line":"                    autospec\u003dTrue)"},{"line_number":54,"context_line":"        @mock.patch(\u0027pypowervm.tasks.hdisk.discover_iscsi_initiator\u0027,"},{"line_number":55,"context_line":"                    autospec\u003dTrue)"},{"line_number":56,"context_line":"        def init_vol_adpt(mock_initiator, mock_mgmt_part, mock_pvm_uuid,"},{"line_number":57,"context_line":"                          mock_vios):"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f436f4f_345523c7","side":"PARENT","line":54,"updated":"2017-08-11 13:45:08.000000000","message":"need a UT for when this raises JobRequestFailed","commit_id":"00dedba9d0c7a685d969a968e241a50366440727"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"f5408847752c3b4fa10b33bdbab8f26588805b1f","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        @mock.patch(\u0027nova_powervm.virt.powervm.vm.get_pvm_uuid\u0027)"},{"line_number":52,"context_line":"        @mock.patch(\u0027pypowervm.tasks.partition.get_mgmt_partition\u0027,"},{"line_number":53,"context_line":"                    autospec\u003dTrue)"},{"line_number":54,"context_line":"        @mock.patch(\u0027pypowervm.tasks.hdisk.discover_iscsi_initiator\u0027,"},{"line_number":55,"context_line":"                    autospec\u003dTrue)"},{"line_number":56,"context_line":"        def init_vol_adpt(mock_initiator, mock_mgmt_part, mock_pvm_uuid,"},{"line_number":57,"context_line":"                          mock_vios):"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f436f4f_f99b0715","side":"PARENT","line":54,"in_reply_to":"9f436f4f_345523c7","updated":"2017-08-11 20:56:54.000000000","message":"ignore this... see comments in ps8","commit_id":"00dedba9d0c7a685d969a968e241a50366440727"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"29cbac744ee375143fa1ad624a5e9812260bea58","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        @mock.patch(\u0027nova_powervm.virt.powervm.vm.get_pvm_uuid\u0027)"},{"line_number":52,"context_line":"        @mock.patch(\u0027pypowervm.tasks.partition.get_mgmt_partition\u0027,"},{"line_number":53,"context_line":"                    autospec\u003dTrue)"},{"line_number":54,"context_line":"        @mock.patch(\u0027pypowervm.tasks.hdisk.discover_iscsi_initiator\u0027,"},{"line_number":55,"context_line":"                    autospec\u003dTrue)"},{"line_number":56,"context_line":"        def init_vol_adpt(mock_initiator, mock_mgmt_part, mock_pvm_uuid,"},{"line_number":57,"context_line":"                          mock_vios):"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f436f4f_f460bba7","line":54,"updated":"2017-08-11 13:45:08.000000000","message":"add a UT for when this raises JobRequestFailed","commit_id":"a55e0d240bb1795c3f5c13b7b2a41173f7c9c42d"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"f5408847752c3b4fa10b33bdbab8f26588805b1f","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        @mock.patch(\u0027nova_powervm.virt.powervm.vm.get_pvm_uuid\u0027)"},{"line_number":52,"context_line":"        @mock.patch(\u0027pypowervm.tasks.partition.get_mgmt_partition\u0027,"},{"line_number":53,"context_line":"                    autospec\u003dTrue)"},{"line_number":54,"context_line":"        @mock.patch(\u0027pypowervm.tasks.hdisk.discover_iscsi_initiator\u0027,"},{"line_number":55,"context_line":"                    autospec\u003dTrue)"},{"line_number":56,"context_line":"        def init_vol_adpt(mock_initiator, mock_mgmt_part, mock_pvm_uuid,"},{"line_number":57,"context_line":"                          mock_vios):"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f436f4f_f9f66763","line":54,"in_reply_to":"9f436f4f_f460bba7","updated":"2017-08-11 20:56:54.000000000","message":"nova-powervm just surfaces this back up to its caller, so there\u0027s not much to UT here...","commit_id":"a55e0d240bb1795c3f5c13b7b2a41173f7c9c42d"}],"nova_powervm/virt/powervm/driver.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"4c1108d54b410b5a9df2e5690a058364299228c4","unresolved":false,"context_lines":[{"line_number":1085,"context_line":"            self.adapter, self.host_uuid, instance)"},{"line_number":1086,"context_line":"        if wwpn_list is not None:"},{"line_number":1087,"context_line":"            connector[\"wwpns\"] \u003d wwpn_list"},{"line_number":1088,"context_line":"        connector[\"multipath\"] \u003d CONF.powervm.iscsi_multipath"},{"line_number":1089,"context_line":"        connector[\u0027host\u0027] \u003d vol_attach.get_hostname_for_volume(instance)"},{"line_number":1090,"context_line":"        connector[\u0027initiator\u0027] \u003d vol_attach.get_iscsi_initiator(self.adapter)"},{"line_number":1091,"context_line":"        return connector"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f4b6375_ad5637cd","line":1088,"range":{"start_line":1088,"start_character":8,"end_line":1088,"end_character":30},"updated":"2017-11-03 14:20:18.000000000","message":"We should either set this only if we\u0027re iscsi, or name the conf option generically.","commit_id":"28beba1a05cbebd7937251610ead1f057b39dec7"},{"author":{"_account_id":21099,"name":"Taylor Jakobson","email":"tjakobs@us.ibm.com","username":"tjakobs"},"change_message_id":"dea7a30017b15c2d45c95f2995bcd6af531dc147","unresolved":false,"context_lines":[{"line_number":1085,"context_line":"            self.adapter, self.host_uuid, instance)"},{"line_number":1086,"context_line":"        if wwpn_list is not None:"},{"line_number":1087,"context_line":"            connector[\"wwpns\"] \u003d wwpn_list"},{"line_number":1088,"context_line":"        connector[\"multipath\"] \u003d CONF.powervm.iscsi_multipath"},{"line_number":1089,"context_line":"        connector[\u0027host\u0027] \u003d vol_attach.get_hostname_for_volume(instance)"},{"line_number":1090,"context_line":"        connector[\u0027initiator\u0027] \u003d vol_attach.get_iscsi_initiator(self.adapter)"},{"line_number":1091,"context_line":"        return connector"}],"source_content_type":"text/x-python","patch_set":17,"id":"1f485f77_beffc932","line":1088,"range":{"start_line":1088,"start_character":8,"end_line":1088,"end_character":30},"in_reply_to":"1f485f77_3ecbf072","updated":"2017-11-14 18:47:42.000000000","message":"Done","commit_id":"28beba1a05cbebd7937251610ead1f057b39dec7"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"041065594fb67ff562d4308761a0c97d5ad5d5ef","unresolved":false,"context_lines":[{"line_number":1085,"context_line":"            self.adapter, self.host_uuid, instance)"},{"line_number":1086,"context_line":"        if wwpn_list is not None:"},{"line_number":1087,"context_line":"            connector[\"wwpns\"] \u003d wwpn_list"},{"line_number":1088,"context_line":"        connector[\"multipath\"] \u003d CONF.powervm.iscsi_multipath"},{"line_number":1089,"context_line":"        connector[\u0027host\u0027] \u003d vol_attach.get_hostname_for_volume(instance)"},{"line_number":1090,"context_line":"        connector[\u0027initiator\u0027] \u003d vol_attach.get_iscsi_initiator(self.adapter)"},{"line_number":1091,"context_line":"        return connector"}],"source_content_type":"text/x-python","patch_set":17,"id":"1f485f77_3ecbf072","line":1088,"range":{"start_line":1088,"start_character":8,"end_line":1088,"end_character":30},"in_reply_to":"3f4b6375_ad5637cd","updated":"2017-11-13 23:41:36.000000000","message":"yeah, good catch. Shouldn\u0027t have iscsi-specific stuff in this file.","commit_id":"28beba1a05cbebd7937251610ead1f057b39dec7"}],"nova_powervm/virt/powervm/slot.py":[{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"041065594fb67ff562d4308761a0c97d5ad5d5ef","unresolved":false,"context_lines":[{"line_number":28,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"_SLOT_KEY \u003d \"CLIENT_SLOT_DATA\""},{"line_number":31,"context_line":"_SLOT_VOLUME_TYPES \u003d [\u0027vscsi\u0027, \u0027fileio\u0027, \u0027rbd\u0027, \u0027iscsi\u0027]"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"def build_slot_mgr(instance, store_api, adapter\u003dNone, vol_drv_iter\u003dNone):"}],"source_content_type":"text/x-python","patch_set":17,"id":"1f485f77_7eae0899","line":31,"range":{"start_line":31,"start_character":0,"end_line":31,"end_character":5},"updated":"2017-11-13 23:41:36.000000000","message":"why does this have _SLOT in its name?","commit_id":"28beba1a05cbebd7937251610ead1f057b39dec7"},{"author":{"_account_id":21099,"name":"Taylor Jakobson","email":"tjakobs@us.ibm.com","username":"tjakobs"},"change_message_id":"dea7a30017b15c2d45c95f2995bcd6af531dc147","unresolved":false,"context_lines":[{"line_number":28,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"_SLOT_KEY \u003d \"CLIENT_SLOT_DATA\""},{"line_number":31,"context_line":"_SLOT_VOLUME_TYPES \u003d [\u0027vscsi\u0027, \u0027fileio\u0027, \u0027rbd\u0027, \u0027iscsi\u0027]"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"def build_slot_mgr(instance, store_api, adapter\u003dNone, vol_drv_iter\u003dNone):"}],"source_content_type":"text/x-python","patch_set":17,"id":"1f485f77_43f4825b","line":31,"range":{"start_line":31,"start_character":0,"end_line":31,"end_character":5},"in_reply_to":"1f485f77_7eae0899","updated":"2017-11-14 18:47:42.000000000","message":"This isn\u0027t all the volume types, just the ones that support the slot manager.\n\u0027npiv\u0027 is the only volume_type not add to this list","commit_id":"28beba1a05cbebd7937251610ead1f057b39dec7"}],"nova_powervm/virt/powervm/volume/iscsi.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"f3d3c7aa91ac4a3cf71bfec346be0ba9144926ca","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        user \u003d conn_data.get(\"auth_username\", None)"},{"line_number":101,"context_line":"        target_name \u003d \"ISCSI-\" + iqn.split(\":\")[1] + str(lun)"},{"line_number":102,"context_line":"        iscsi_data \u003d hdisk.ISCSIInputData(host_ip, user, password, iqn,"},{"line_number":103,"context_line":"                                          lun, transport_type)"},{"line_number":104,"context_line":"        device_name, udid \u003d hdisk.discover_iscsi("},{"line_number":105,"context_line":"            self.adapter, vios_w.uuid, iscsi_data)"},{"line_number":106,"context_line":"        slot, lua \u003d slot_mgr.build_map.get_vscsi_slot(vios_w, device_name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_6c1431a1","line":103,"range":{"start_line":103,"start_character":47,"end_line":103,"end_character":61},"updated":"2017-05-30 15:28:05.000000000","message":"kwargs should be named.","commit_id":"d1467fd6d807fb1b09aea6750213f670a4f4883e"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"e297a38249bf8852b1ccc59b1c110251c0406cfe","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        transport_type \u003d self.connection_info[\"driver_volume_type\"]"},{"line_number":95,"context_line":"        host_ip \u003d self.connection_info[\"data\"][\"target_portal\"]"},{"line_number":96,"context_line":"        iqn \u003d self.connection_info[\"data\"][\"target_iqn\"]"},{"line_number":97,"context_line":"        lun \u003d self.connection_info[\"data\"][\"target_lun\"]"},{"line_number":98,"context_line":"        conn_data \u003d self.connection_info[\"data\"]"},{"line_number":99,"context_line":"        password \u003d conn_data.get(\"auth_password\", None)"},{"line_number":100,"context_line":"        user \u003d conn_data.get(\"auth_username\", None)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7f231b9d_eedcb575","line":97,"updated":"2017-06-12 14:42:53.000000000","message":"If we\u0027re guaranteed to always have a lun, this is fine. Please confirm that is the case, else we\u0027ll need to use .get() here. Same for the rows above. I hope we always have this, though, right?","commit_id":"b564e6412ad8f32fe7c8c1013396ede598683cb2"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"27ec475a4665f27c0cf69477c1b86e40dc3472d5","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        transport_type \u003d self.connection_info[\"driver_volume_type\"]"},{"line_number":95,"context_line":"        host_ip \u003d self.connection_info[\"data\"][\"target_portal\"]"},{"line_number":96,"context_line":"        iqn \u003d self.connection_info[\"data\"][\"target_iqn\"]"},{"line_number":97,"context_line":"        lun \u003d self.connection_info[\"data\"][\"target_lun\"]"},{"line_number":98,"context_line":"        conn_data \u003d self.connection_info[\"data\"]"},{"line_number":99,"context_line":"        password \u003d conn_data.get(\"auth_password\", None)"},{"line_number":100,"context_line":"        user \u003d conn_data.get(\"auth_username\", None)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1f1a1f67_6398251b","line":97,"in_reply_to":"1f1a1f67_0f192f84","updated":"2017-07-18 21:08:29.000000000","message":"To be clear... I\u0027m fine with what you have (not using get) if target_lun is always going to be there. I only recommend using get if we need to allow for cases where it\u0027s not there. And I hope we don\u0027t.","commit_id":"b564e6412ad8f32fe7c8c1013396ede598683cb2"},{"author":{"_account_id":14806,"name":"Chhavi Agarwal","email":"chhagarw@in.ibm.com","username":"chhagarw"},"change_message_id":"0200e2aebbad6230de466a57c840c18ebe628613","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        transport_type \u003d self.connection_info[\"driver_volume_type\"]"},{"line_number":95,"context_line":"        host_ip \u003d self.connection_info[\"data\"][\"target_portal\"]"},{"line_number":96,"context_line":"        iqn \u003d self.connection_info[\"data\"][\"target_iqn\"]"},{"line_number":97,"context_line":"        lun \u003d self.connection_info[\"data\"][\"target_lun\"]"},{"line_number":98,"context_line":"        conn_data \u003d self.connection_info[\"data\"]"},{"line_number":99,"context_line":"        password \u003d conn_data.get(\"auth_password\", None)"},{"line_number":100,"context_line":"        user \u003d conn_data.get(\"auth_username\", None)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1f1a1f67_0f192f84","line":97,"in_reply_to":"7f231b9d_eedcb575","updated":"2017-07-13 11:30:33.000000000","message":"target_lun should be there in the connection_info, initialize connection passes. We can change to use get for safer side.","commit_id":"b564e6412ad8f32fe7c8c1013396ede598683cb2"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"e297a38249bf8852b1ccc59b1c110251c0406cfe","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        iqn \u003d self.connection_info[\"data\"][\"target_iqn\"]"},{"line_number":97,"context_line":"        lun \u003d self.connection_info[\"data\"][\"target_lun\"]"},{"line_number":98,"context_line":"        conn_data \u003d self.connection_info[\"data\"]"},{"line_number":99,"context_line":"        password \u003d conn_data.get(\"auth_password\", None)"},{"line_number":100,"context_line":"        user \u003d conn_data.get(\"auth_username\", None)"},{"line_number":101,"context_line":"        target_name \u003d \"ISCSI-\" + iqn.split(\":\")[1] + str(lun)"},{"line_number":102,"context_line":"        device_name, udid \u003d hdisk.discover_iscsi("}],"source_content_type":"text/x-python","patch_set":7,"id":"7f231b9d_4eee0923","line":99,"range":{"start_line":99,"start_character":50,"end_line":99,"end_character":54},"updated":"2017-06-12 14:42:53.000000000","message":"FYI, None is the default for .get(), so you don\u0027t need to specify it explicitly.","commit_id":"b564e6412ad8f32fe7c8c1013396ede598683cb2"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"e297a38249bf8852b1ccc59b1c110251c0406cfe","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        conn_data \u003d self.connection_info[\"data\"]"},{"line_number":99,"context_line":"        password \u003d conn_data.get(\"auth_password\", None)"},{"line_number":100,"context_line":"        user \u003d conn_data.get(\"auth_username\", None)"},{"line_number":101,"context_line":"        target_name \u003d \"ISCSI-\" + iqn.split(\":\")[1] + str(lun)"},{"line_number":102,"context_line":"        device_name, udid \u003d hdisk.discover_iscsi("},{"line_number":103,"context_line":"            self.adapter, host_ip, user, password, iqn, vios_w.uuid,"},{"line_number":104,"context_line":"            transport_type\u003dtransport_type, lunid\u003dlun)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7f231b9d_cb21ebb6","line":101,"updated":"2017-06-12 14:42:53.000000000","message":"shouldn\u0027t we have some kind of separator character between iqn and lun so they don\u0027t run together?","commit_id":"b564e6412ad8f32fe7c8c1013396ede598683cb2"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"27ec475a4665f27c0cf69477c1b86e40dc3472d5","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        conn_data \u003d self.connection_info[\"data\"]"},{"line_number":99,"context_line":"        password \u003d conn_data.get(\"auth_password\", None)"},{"line_number":100,"context_line":"        user \u003d conn_data.get(\"auth_username\", None)"},{"line_number":101,"context_line":"        target_name \u003d \"ISCSI-\" + iqn.split(\":\")[1] + str(lun)"},{"line_number":102,"context_line":"        device_name, udid \u003d hdisk.discover_iscsi("},{"line_number":103,"context_line":"            self.adapter, host_ip, user, password, iqn, vios_w.uuid,"},{"line_number":104,"context_line":"            transport_type\u003dtransport_type, lunid\u003dlun)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1f1a1f67_a3919df3","line":101,"in_reply_to":"1f1a1f67_3209f02b","updated":"2017-07-18 21:08:29.000000000","message":"thanks. I think that will also drive a corresponding change in the UT.","commit_id":"b564e6412ad8f32fe7c8c1013396ede598683cb2"},{"author":{"_account_id":14806,"name":"Chhavi Agarwal","email":"chhagarw@in.ibm.com","username":"chhagarw"},"change_message_id":"0200e2aebbad6230de466a57c840c18ebe628613","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        conn_data \u003d self.connection_info[\"data\"]"},{"line_number":99,"context_line":"        password \u003d conn_data.get(\"auth_password\", None)"},{"line_number":100,"context_line":"        user \u003d conn_data.get(\"auth_username\", None)"},{"line_number":101,"context_line":"        target_name \u003d \"ISCSI-\" + iqn.split(\":\")[1] + str(lun)"},{"line_number":102,"context_line":"        device_name, udid \u003d hdisk.discover_iscsi("},{"line_number":103,"context_line":"            self.adapter, host_ip, user, password, iqn, vios_w.uuid,"},{"line_number":104,"context_line":"            transport_type\u003dtransport_type, lunid\u003dlun)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1f1a1f67_3209f02b","line":101,"in_reply_to":"7f231b9d_cb21ebb6","updated":"2017-07-13 11:30:33.000000000","message":"can add _ to make it more clear","commit_id":"b564e6412ad8f32fe7c8c1013396ede598683cb2"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"72be42f63548db22bd8462945c5addcd57c3f199","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        password \u003d conn_data.get(\"auth_password\", None)"},{"line_number":100,"context_line":"        user \u003d conn_data.get(\"auth_username\", None)"},{"line_number":101,"context_line":"        target_name \u003d \"ISCSI-\" + iqn.split(\":\")[1] + str(lun)"},{"line_number":102,"context_line":"        device_name, udid \u003d hdisk.discover_iscsi("},{"line_number":103,"context_line":"            self.adapter, host_ip, user, password, iqn, vios_w.uuid,"},{"line_number":104,"context_line":"            transport_type\u003dtransport_type, lunid\u003dlun)"},{"line_number":105,"context_line":"        slot, lua \u003d slot_mgr.build_map.get_vscsi_slot(vios_w, device_name)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1f1a1f67_7eeaf8d7","line":102,"updated":"2017-07-18 22:04:25.000000000","message":"seems like we need to try/except for ISCSIDiscoveryFailed here. If we do that, though, we\u0027ll need to require the new pypowervm version that adds that exception, and I think we were trying to avoid that?","commit_id":"b564e6412ad8f32fe7c8c1013396ede598683cb2"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"15222622408944f2e1c950373cbd3af9bdcfa3de","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        password \u003d conn_data.get(\"auth_password\", None)"},{"line_number":100,"context_line":"        user \u003d conn_data.get(\"auth_username\", None)"},{"line_number":101,"context_line":"        target_name \u003d \"ISCSI-\" + iqn.split(\":\")[1] + str(lun)"},{"line_number":102,"context_line":"        device_name, udid \u003d hdisk.discover_iscsi("},{"line_number":103,"context_line":"            self.adapter, host_ip, user, password, iqn, vios_w.uuid,"},{"line_number":104,"context_line":"            transport_type\u003dtransport_type, lunid\u003dlun)"},{"line_number":105,"context_line":"        slot, lua \u003d slot_mgr.build_map.get_vscsi_slot(vios_w, device_name)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1f1a1f67_d7b6408b","line":102,"in_reply_to":"1f1a1f67_74dbf44e","updated":"2017-07-20 20:18:31.000000000","message":"Yes, agree.  1.1.6 is released and making its way through g-r now.","commit_id":"b564e6412ad8f32fe7c8c1013396ede598683cb2"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"4882d1ee60eb2a51da9048fc015061dfbe028752","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        password \u003d conn_data.get(\"auth_password\", None)"},{"line_number":100,"context_line":"        user \u003d conn_data.get(\"auth_username\", None)"},{"line_number":101,"context_line":"        target_name \u003d \"ISCSI-\" + iqn.split(\":\")[1] + str(lun)"},{"line_number":102,"context_line":"        device_name, udid \u003d hdisk.discover_iscsi("},{"line_number":103,"context_line":"            self.adapter, host_ip, user, password, iqn, vios_w.uuid,"},{"line_number":104,"context_line":"            transport_type\u003dtransport_type, lunid\u003dlun)"},{"line_number":105,"context_line":"        slot, lua \u003d slot_mgr.build_map.get_vscsi_slot(vios_w, device_name)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1f1a1f67_74dbf44e","line":102,"in_reply_to":"1f1a1f67_7eeaf8d7","updated":"2017-07-20 14:53:08.000000000","message":"we have to require the new pypowervm version anyway in order to start passing lunid, so it does seem like we should start try/except for the new exception class.","commit_id":"b564e6412ad8f32fe7c8c1013396ede598683cb2"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"e297a38249bf8852b1ccc59b1c110251c0406cfe","unresolved":false,"context_lines":[{"line_number":187,"context_line":"                                         device_name, slot_mgr)"},{"line_number":188,"context_line":"                target_iqn \u003d self.connection_info[\"data\"][\"target_iqn\"]"},{"line_number":189,"context_line":"                target_lun \u003d self.connection_info[\"data\"][\"target_lun\"]"},{"line_number":190,"context_line":"                target_name \u003d target_iqn + \u0027_\u0027 + str(target_lun)"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"                def logout():"},{"line_number":193,"context_line":"                    hdisk.remove_iscsi(self.adapter, target_iqn, vios_w.uuid)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7f231b9d_2b6dff03","line":190,"updated":"2017-06-12 14:42:53.000000000","message":"shouldn\u0027t this be consistent with line 101?","commit_id":"b564e6412ad8f32fe7c8c1013396ede598683cb2"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"27ec475a4665f27c0cf69477c1b86e40dc3472d5","unresolved":false,"context_lines":[{"line_number":187,"context_line":"                                         device_name, slot_mgr)"},{"line_number":188,"context_line":"                target_iqn \u003d self.connection_info[\"data\"][\"target_iqn\"]"},{"line_number":189,"context_line":"                target_lun \u003d self.connection_info[\"data\"][\"target_lun\"]"},{"line_number":190,"context_line":"                target_name \u003d target_iqn + \u0027_\u0027 + str(target_lun)"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"                def logout():"},{"line_number":193,"context_line":"                    hdisk.remove_iscsi(self.adapter, target_iqn, vios_w.uuid)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1f1a1f67_e3b43582","line":190,"in_reply_to":"1f1a1f67_9219e47a","updated":"2017-07-18 21:08:29.000000000","message":"it\u0027s been a few days but I haven\u0027t seen a new patch set that changes this yet...","commit_id":"b564e6412ad8f32fe7c8c1013396ede598683cb2"},{"author":{"_account_id":14806,"name":"Chhavi Agarwal","email":"chhagarw@in.ibm.com","username":"chhagarw"},"change_message_id":"0200e2aebbad6230de466a57c840c18ebe628613","unresolved":false,"context_lines":[{"line_number":187,"context_line":"                                         device_name, slot_mgr)"},{"line_number":188,"context_line":"                target_iqn \u003d self.connection_info[\"data\"][\"target_iqn\"]"},{"line_number":189,"context_line":"                target_lun \u003d self.connection_info[\"data\"][\"target_lun\"]"},{"line_number":190,"context_line":"                target_name \u003d target_iqn + \u0027_\u0027 + str(target_lun)"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"                def logout():"},{"line_number":193,"context_line":"                    hdisk.remove_iscsi(self.adapter, target_iqn, vios_w.uuid)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1f1a1f67_9219e47a","line":190,"in_reply_to":"7f231b9d_2b6dff03","updated":"2017-07-13 11:30:33.000000000","message":"Done","commit_id":"b564e6412ad8f32fe7c8c1013396ede598683cb2"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"72be42f63548db22bd8462945c5addcd57c3f199","unresolved":false,"context_lines":[{"line_number":190,"context_line":"                target_name \u003d target_iqn + \u0027_\u0027 + str(target_lun)"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"                def logout():"},{"line_number":193,"context_line":"                    hdisk.remove_iscsi(self.adapter, target_iqn, vios_w.uuid)"},{"line_number":194,"context_line":"                self.stg_ftsk.add_post_execute(task.FunctorTask("},{"line_number":195,"context_line":"                    logout, name\u003d\u0027remove_iSCSI_%s_%s\u0027 % (vios_w.uuid,"},{"line_number":196,"context_line":"                                                         target_name)))"}],"source_content_type":"text/x-python","patch_set":7,"id":"1f1a1f67_becd3086","line":193,"updated":"2017-07-18 22:04:25.000000000","message":"seems like we need to try/except for ISCSILogoutFailed here. If we do that, though, we\u0027ll need to require the new pypowervm version that adds that exception, and I think we were trying to avoid that?","commit_id":"b564e6412ad8f32fe7c8c1013396ede598683cb2"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"4882d1ee60eb2a51da9048fc015061dfbe028752","unresolved":false,"context_lines":[{"line_number":190,"context_line":"                target_name \u003d target_iqn + \u0027_\u0027 + str(target_lun)"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"                def logout():"},{"line_number":193,"context_line":"                    hdisk.remove_iscsi(self.adapter, target_iqn, vios_w.uuid)"},{"line_number":194,"context_line":"                self.stg_ftsk.add_post_execute(task.FunctorTask("},{"line_number":195,"context_line":"                    logout, name\u003d\u0027remove_iSCSI_%s_%s\u0027 % (vios_w.uuid,"},{"line_number":196,"context_line":"                                                         target_name)))"}],"source_content_type":"text/x-python","patch_set":7,"id":"1f1a1f67_94bfb0cf","line":193,"in_reply_to":"1f1a1f67_becd3086","updated":"2017-07-20 14:53:08.000000000","message":"we have to require the new pypowervm version anyway in order to start passing lunid on discover_iscsi above, so it does seem like we should start try/except for the new exception class.","commit_id":"b564e6412ad8f32fe7c8c1013396ede598683cb2"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"e297a38249bf8852b1ccc59b1c110251c0406cfe","unresolved":false,"context_lines":[{"line_number":192,"context_line":"                def logout():"},{"line_number":193,"context_line":"                    hdisk.remove_iscsi(self.adapter, target_iqn, vios_w.uuid)"},{"line_number":194,"context_line":"                self.stg_ftsk.add_post_execute(task.FunctorTask("},{"line_number":195,"context_line":"                    logout, name\u003d\u0027remove_iSCSI_%s_%s\u0027 % (vios_w.uuid,"},{"line_number":196,"context_line":"                                                         target_name)))"},{"line_number":197,"context_line":"            # Found a valid element to remove"},{"line_number":198,"context_line":"            return True"},{"line_number":199,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":7,"id":"7f231b9d_0b9ec355","line":196,"range":{"start_line":195,"start_character":57,"end_line":196,"end_character":68},"updated":"2017-06-12 14:42:53.000000000","message":"is there a good reason to have these arguments in the reverse order from line 193, and to use target_name instead of target_iqn?","commit_id":"b564e6412ad8f32fe7c8c1013396ede598683cb2"},{"author":{"_account_id":14806,"name":"Chhavi Agarwal","email":"chhagarw@in.ibm.com","username":"chhagarw"},"change_message_id":"0200e2aebbad6230de466a57c840c18ebe628613","unresolved":false,"context_lines":[{"line_number":192,"context_line":"                def logout():"},{"line_number":193,"context_line":"                    hdisk.remove_iscsi(self.adapter, target_iqn, vios_w.uuid)"},{"line_number":194,"context_line":"                self.stg_ftsk.add_post_execute(task.FunctorTask("},{"line_number":195,"context_line":"                    logout, name\u003d\u0027remove_iSCSI_%s_%s\u0027 % (vios_w.uuid,"},{"line_number":196,"context_line":"                                                         target_name)))"},{"line_number":197,"context_line":"            # Found a valid element to remove"},{"line_number":198,"context_line":"            return True"},{"line_number":199,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":7,"id":"1f1a1f67_b263c0dc","line":196,"range":{"start_line":195,"start_character":57,"end_line":196,"end_character":68},"in_reply_to":"7f231b9d_0b9ec355","updated":"2017-07-13 11:30:33.000000000","message":"to avoid duplicate task error in case of mapped on both the vios. this use case will need more changes for graceful detach,\nwhich was not covered as a part of this review","commit_id":"b564e6412ad8f32fe7c8c1013396ede598683cb2"},{"author":{"_account_id":14806,"name":"Chhavi Agarwal","email":"chhagarw@in.ibm.com","username":"chhagarw"},"change_message_id":"e05a8437ebca828d327326935418b0a3864c3520","unresolved":false,"context_lines":[{"line_number":103,"context_line":"            device_name, udid \u003d hdisk.discover_iscsi("},{"line_number":104,"context_line":"                self.adapter, host_ip, user, password, iqn, vios_w.uuid,"},{"line_number":105,"context_line":"                transport_type\u003dtransport_type, lunid\u003dlun)"},{"line_number":106,"context_line":"        except pvm_exc.ISCSIDiscoveryFailed as e:"},{"line_number":107,"context_line":"            LOG.warning(e)"},{"line_number":108,"context_line":"        if device_name is not None and udid is not None:"},{"line_number":109,"context_line":"            slot, lua \u003d slot_mgr.build_map.get_vscsi_slot(vios_w, device_name)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f436f4f_422a3b90","line":106,"updated":"2017-08-11 05:07:12.000000000","message":"this method can also raise the JobRequestFailed exception in case the command execution failed for some other reason, so that also needs to be handled.","commit_id":"a55e0d240bb1795c3f5c13b7b2a41173f7c9c42d"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"29cbac744ee375143fa1ad624a5e9812260bea58","unresolved":false,"context_lines":[{"line_number":103,"context_line":"            device_name, udid \u003d hdisk.discover_iscsi("},{"line_number":104,"context_line":"                self.adapter, host_ip, user, password, iqn, vios_w.uuid,"},{"line_number":105,"context_line":"                transport_type\u003dtransport_type, lunid\u003dlun)"},{"line_number":106,"context_line":"        except pvm_exc.ISCSIDiscoveryFailed as e:"},{"line_number":107,"context_line":"            LOG.warning(e)"},{"line_number":108,"context_line":"        if device_name is not None and udid is not None:"},{"line_number":109,"context_line":"            slot, lua \u003d slot_mgr.build_map.get_vscsi_slot(vios_w, device_name)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f436f4f_a15f9770","line":106,"in_reply_to":"9f436f4f_422a3b90","updated":"2017-08-11 13:45:08.000000000","message":"Boo... you\u0027re right, but I wish we\u0027d caught that when we were developing the pypowervm changes. This is not advertised in its docstring.\n\nHad better add UTs for both ISCSIDiscoveryFailed and JobRequestFailed cases.","commit_id":"a55e0d240bb1795c3f5c13b7b2a41173f7c9c42d"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"f5408847752c3b4fa10b33bdbab8f26588805b1f","unresolved":false,"context_lines":[{"line_number":103,"context_line":"            device_name, udid \u003d hdisk.discover_iscsi("},{"line_number":104,"context_line":"                self.adapter, host_ip, user, password, iqn, vios_w.uuid,"},{"line_number":105,"context_line":"                transport_type\u003dtransport_type, lunid\u003dlun)"},{"line_number":106,"context_line":"        except pvm_exc.ISCSIDiscoveryFailed as e:"},{"line_number":107,"context_line":"            LOG.warning(e)"},{"line_number":108,"context_line":"        if device_name is not None and udid is not None:"},{"line_number":109,"context_line":"            slot, lua \u003d slot_mgr.build_map.get_vscsi_slot(vios_w, device_name)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f436f4f_d9af237b","line":106,"in_reply_to":"9f436f4f_a15f9770","updated":"2017-08-11 20:56:54.000000000","message":"Done","commit_id":"a55e0d240bb1795c3f5c13b7b2a41173f7c9c42d"},{"author":{"_account_id":14806,"name":"Chhavi Agarwal","email":"chhagarw@in.ibm.com","username":"chhagarw"},"change_message_id":"e05a8437ebca828d327326935418b0a3864c3520","unresolved":false,"context_lines":[{"line_number":196,"context_line":""},{"line_number":197,"context_line":"                def logout():"},{"line_number":198,"context_line":"                    try:"},{"line_number":199,"context_line":"                        hdisk.remove_iscsi(self.adapter, target_iqn,"},{"line_number":200,"context_line":"                                           vios_w.uuid)"},{"line_number":201,"context_line":"                    except pvm_exc.ISCSILogoutFailed as e:"},{"line_number":202,"context_line":"                        LOG.warning(e)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f436f4f_e55a59f1","line":199,"updated":"2017-08-11 05:07:12.000000000","message":"during disconnect our current pypowervm code, just do the logout which is not proper if we want to detach a single lun.\n\nI think we need to have the functionality similar to what we have in os_brick iscsi connector\nhttps://github.com/openstack/os-brick/blob/master/os_brick/initiator/connectors/iscsi.py#L817\n\n- get the iscsi device names\n- remove the connection\n- logout\n- delete the iscsi devices links\n\nlets verify the behavior with multi detach testing, and then we can check what more is needed,","commit_id":"a55e0d240bb1795c3f5c13b7b2a41173f7c9c42d"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"f5408847752c3b4fa10b33bdbab8f26588805b1f","unresolved":false,"context_lines":[{"line_number":196,"context_line":""},{"line_number":197,"context_line":"                def logout():"},{"line_number":198,"context_line":"                    try:"},{"line_number":199,"context_line":"                        hdisk.remove_iscsi(self.adapter, target_iqn,"},{"line_number":200,"context_line":"                                           vios_w.uuid)"},{"line_number":201,"context_line":"                    except pvm_exc.ISCSILogoutFailed as e:"},{"line_number":202,"context_line":"                        LOG.warning(e)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f436f4f_99cd1b68","line":199,"in_reply_to":"9f436f4f_74416b39","updated":"2017-08-11 20:56:54.000000000","message":"I\u0027m leaning toward making that a separate patch set, and leaving this one dedicated to attach.","commit_id":"a55e0d240bb1795c3f5c13b7b2a41173f7c9c42d"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"29cbac744ee375143fa1ad624a5e9812260bea58","unresolved":false,"context_lines":[{"line_number":196,"context_line":""},{"line_number":197,"context_line":"                def logout():"},{"line_number":198,"context_line":"                    try:"},{"line_number":199,"context_line":"                        hdisk.remove_iscsi(self.adapter, target_iqn,"},{"line_number":200,"context_line":"                                           vios_w.uuid)"},{"line_number":201,"context_line":"                    except pvm_exc.ISCSILogoutFailed as e:"},{"line_number":202,"context_line":"                        LOG.warning(e)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f436f4f_74416b39","line":199,"in_reply_to":"9f436f4f_e55a59f1","updated":"2017-08-11 13:45:08.000000000","message":"yep, that\u0027s next on the todo list...","commit_id":"a55e0d240bb1795c3f5c13b7b2a41173f7c9c42d"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"29cbac744ee375143fa1ad624a5e9812260bea58","unresolved":false,"context_lines":[{"line_number":198,"context_line":"                    try:"},{"line_number":199,"context_line":"                        hdisk.remove_iscsi(self.adapter, target_iqn,"},{"line_number":200,"context_line":"                                           vios_w.uuid)"},{"line_number":201,"context_line":"                    except pvm_exc.ISCSILogoutFailed as e:"},{"line_number":202,"context_line":"                        LOG.warning(e)"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"                self.stg_ftsk.add_post_execute(task.FunctorTask("}],"source_content_type":"text/x-python","patch_set":8,"id":"9f436f4f_f4d2fb5b","line":201,"updated":"2017-08-11 13:45:08.000000000","message":"add UTs for both ISCSIDiscoveryFailed and JobRequestFailed cases.","commit_id":"a55e0d240bb1795c3f5c13b7b2a41173f7c9c42d"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"f5408847752c3b4fa10b33bdbab8f26588805b1f","unresolved":false,"context_lines":[{"line_number":198,"context_line":"                    try:"},{"line_number":199,"context_line":"                        hdisk.remove_iscsi(self.adapter, target_iqn,"},{"line_number":200,"context_line":"                                           vios_w.uuid)"},{"line_number":201,"context_line":"                    except pvm_exc.ISCSILogoutFailed as e:"},{"line_number":202,"context_line":"                        LOG.warning(e)"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"                self.stg_ftsk.add_post_execute(task.FunctorTask("}],"source_content_type":"text/x-python","patch_set":8,"id":"9f436f4f_19ba4bc0","line":201,"in_reply_to":"9f436f4f_f4d2fb5b","updated":"2017-08-11 20:56:54.000000000","message":"Done for discovery. Logout failure, which is what we\u0027re currently doing here on disconnect, probably shouldn\u0027t be more than a log message, so there\u0027s no need to UT that. What we need to UT during disconnect is detach, which as Chhavi noted isn\u0027t implemented yet.","commit_id":"a55e0d240bb1795c3f5c13b7b2a41173f7c9c42d"},{"author":{"_account_id":14532,"name":"Gerald McBrearty","email":"gfm@us.ibm.com","username":"gfm"},"change_message_id":"8b27a56cb1f61f935c2e11aec4ea0bbdc941b5e8","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        iqn \u003d self.connection_info[\"data\"][\"target_iqn\"]"},{"line_number":97,"context_line":"        lun \u003d self.connection_info[\"data\"][\"target_lun\"]"},{"line_number":98,"context_line":"        conn_data \u003d self.connection_info[\"data\"]"},{"line_number":99,"context_line":"        password \u003d conn_data.get(\"auth_password\")"},{"line_number":100,"context_line":"        user \u003d conn_data.get(\"auth_username\")"},{"line_number":101,"context_line":"        target_name \u003d \"ISCSI-%s_%s\" % (iqn.split(\":\")[1], str(lun))"},{"line_number":102,"context_line":"        device_name \u003d None"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f436f4f_ce4cd2c9","line":99,"updated":"2017-08-14 19:35:57.000000000","message":"There are some other properties that os-brick uses\n\ndiscovery_auth_password\ndiccovery_auth_username\n\nCan we pass those also?","commit_id":"2c16266b71892407a52d6b37187fe801d063b1ce"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"688781a00ef46c7da17f72d875766d2c73ecb19c","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        iqn \u003d self.connection_info[\"data\"][\"target_iqn\"]"},{"line_number":97,"context_line":"        lun \u003d self.connection_info[\"data\"][\"target_lun\"]"},{"line_number":98,"context_line":"        conn_data \u003d self.connection_info[\"data\"]"},{"line_number":99,"context_line":"        password \u003d conn_data.get(\"auth_password\")"},{"line_number":100,"context_line":"        user \u003d conn_data.get(\"auth_username\")"},{"line_number":101,"context_line":"        target_name \u003d \"ISCSI-%s_%s\" % (iqn.split(\":\")[1], str(lun))"},{"line_number":102,"context_line":"        device_name \u003d None"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f436f4f_8915a49e","line":99,"in_reply_to":"9f436f4f_ce4cd2c9","updated":"2017-08-14 21:18:17.000000000","message":"There are also auth_method and discovery_auth_method... probably need those as well?\n\nI think the answer is that we need pvm-rest changes, and then pypowervm changes, and then yes...","commit_id":"2c16266b71892407a52d6b37187fe801d063b1ce"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"a1433e5fee2fbf0455d93190eb0925fc248e9cd9","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        \"\"\"List of pypowervm XAGs needed to support this adapter.\"\"\""},{"line_number":63,"context_line":"        return [pvm_const.XAG.VIO_SMAP]"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def _is_multipath(self):"},{"line_number":66,"context_line":"        return self.connection_info[\"connector\"].get(\"multipath\", False)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def pre_live_migration_on_destination(self, mig_data):"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f4e5783_126a2ded","line":65,"updated":"2017-10-13 20:41:53.000000000","message":"seems like an odd place to stick this method...","commit_id":"f7fbe0fbfcdd11d1fee97064d60af4f2e017c3c7"},{"author":{"_account_id":21099,"name":"Taylor Jakobson","email":"tjakobs@us.ibm.com","username":"tjakobs"},"change_message_id":"1ddae55176e132adc449d0e23bae2d682ee2bab7","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        \"\"\"List of pypowervm XAGs needed to support this adapter.\"\"\""},{"line_number":63,"context_line":"        return [pvm_const.XAG.VIO_SMAP]"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def _is_multipath(self):"},{"line_number":66,"context_line":"        return self.connection_info[\"connector\"].get(\"multipath\", False)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def pre_live_migration_on_destination(self, mig_data):"}],"source_content_type":"text/x-python","patch_set":14,"id":"3f4b6375_20288c32","line":65,"in_reply_to":"5f4e5783_126a2ded","updated":"2017-10-26 22:07:51.000000000","message":"Moved next to other private methods","commit_id":"f7fbe0fbfcdd11d1fee97064d60af4f2e017c3c7"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"a1433e5fee2fbf0455d93190eb0925fc248e9cd9","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        :returns: LUN or None"},{"line_number":94,"context_line":"        \"\"\""},{"line_number":95,"context_line":"        device_name \u003d udid \u003d None"},{"line_number":96,"context_line":"        if self._is_multipath():"},{"line_number":97,"context_line":"            device_name, udid \u003d self._discover_vol("},{"line_number":98,"context_line":"                vios_w, self.connection_info[\"data\"])"},{"line_number":99,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f4e5783_ed96903e","line":96,"updated":"2017-10-13 20:41:53.000000000","message":"isn\u0027t this backwards? I thought you\u0027d need _iterate_all_targets when _is_multipath \u003d\u003d True.","commit_id":"f7fbe0fbfcdd11d1fee97064d60af4f2e017c3c7"},{"author":{"_account_id":21099,"name":"Taylor Jakobson","email":"tjakobs@us.ibm.com","username":"tjakobs"},"change_message_id":"1ddae55176e132adc449d0e23bae2d682ee2bab7","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        :returns: LUN or None"},{"line_number":94,"context_line":"        \"\"\""},{"line_number":95,"context_line":"        device_name \u003d udid \u003d None"},{"line_number":96,"context_line":"        if self._is_multipath():"},{"line_number":97,"context_line":"            device_name, udid \u003d self._discover_vol("},{"line_number":98,"context_line":"                vios_w, self.connection_info[\"data\"])"},{"line_number":99,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":14,"id":"3f4b6375_c0c2d885","line":96,"in_reply_to":"5f4e5783_ed96903e","updated":"2017-10-26 22:07:51.000000000","message":"The REST API has special logic for iterating over target when multipath is selected. This logic includes running discovery (when applicable) and using default iqns/luns if needed.\n\n_iterate_all_targets only returns well defined tuples of (portal, iqn, lun). I\u0027m not sure what the use case would be for multiple targets in a single path environment though.","commit_id":"f7fbe0fbfcdd11d1fee97064d60af4f2e017c3c7"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"a1433e5fee2fbf0455d93190eb0925fc248e9cd9","unresolved":false,"context_lines":[{"line_number":208,"context_line":"                lun \u003d conn_data.get(\"target_luns\","},{"line_number":209,"context_line":"                                    conn_data.get(\"target_lun\"))"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"                def logout():"},{"line_number":212,"context_line":"                    try:"},{"line_number":213,"context_line":"                        hdisk.remove_iscsi("},{"line_number":214,"context_line":"                            self.adapter, iqn, vios_w.uuid, lun\u003dlun,"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f4e5783_2d227601","line":211,"range":{"start_line":211,"start_character":20,"end_line":211,"end_character":26},"updated":"2017-10-13 20:41:53.000000000","message":"this is remove now, not logout","commit_id":"f7fbe0fbfcdd11d1fee97064d60af4f2e017c3c7"},{"author":{"_account_id":21099,"name":"Taylor Jakobson","email":"tjakobs@us.ibm.com","username":"tjakobs"},"change_message_id":"1ddae55176e132adc449d0e23bae2d682ee2bab7","unresolved":false,"context_lines":[{"line_number":208,"context_line":"                lun \u003d conn_data.get(\"target_luns\","},{"line_number":209,"context_line":"                                    conn_data.get(\"target_lun\"))"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"                def logout():"},{"line_number":212,"context_line":"                    try:"},{"line_number":213,"context_line":"                        hdisk.remove_iscsi("},{"line_number":214,"context_line":"                            self.adapter, iqn, vios_w.uuid, lun\u003dlun,"}],"source_content_type":"text/x-python","patch_set":14,"id":"3f4b6375_80bce005","line":211,"range":{"start_line":211,"start_character":20,"end_line":211,"end_character":26},"in_reply_to":"5f4e5783_2d227601","updated":"2017-10-26 22:07:51.000000000","message":"Done","commit_id":"f7fbe0fbfcdd11d1fee97064d60af4f2e017c3c7"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"a1433e5fee2fbf0455d93190eb0925fc248e9cd9","unresolved":false,"context_lines":[{"line_number":214,"context_line":"                            self.adapter, iqn, vios_w.uuid, lun\u003dlun,"},{"line_number":215,"context_line":"                            transport\u003dself.transport_type, portal\u003dportal,"},{"line_number":216,"context_line":"                            multipath\u003dself._is_multipath())"},{"line_number":217,"context_line":"                    except pvm_exc.ISCSIRemoveFailed as e:"},{"line_number":218,"context_line":"                        LOG.warning(e)"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"                self.stg_ftsk.add_post_execute(task.FunctorTask("}],"source_content_type":"text/x-python","patch_set":14,"id":"5f4e5783_ad4098a6","line":217,"updated":"2017-10-13 20:41:53.000000000","message":"may also get JobRequestFailed here","commit_id":"f7fbe0fbfcdd11d1fee97064d60af4f2e017c3c7"},{"author":{"_account_id":21099,"name":"Taylor Jakobson","email":"tjakobs@us.ibm.com","username":"tjakobs"},"change_message_id":"1ddae55176e132adc449d0e23bae2d682ee2bab7","unresolved":false,"context_lines":[{"line_number":214,"context_line":"                            self.adapter, iqn, vios_w.uuid, lun\u003dlun,"},{"line_number":215,"context_line":"                            transport\u003dself.transport_type, portal\u003dportal,"},{"line_number":216,"context_line":"                            multipath\u003dself._is_multipath())"},{"line_number":217,"context_line":"                    except pvm_exc.ISCSIRemoveFailed as e:"},{"line_number":218,"context_line":"                        LOG.warning(e)"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"                self.stg_ftsk.add_post_execute(task.FunctorTask("}],"source_content_type":"text/x-python","patch_set":14,"id":"3f4b6375_e073947f","line":217,"in_reply_to":"5f4e5783_ad4098a6","updated":"2017-10-26 22:07:51.000000000","message":"Done","commit_id":"f7fbe0fbfcdd11d1fee97064d60af4f2e017c3c7"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"a1433e5fee2fbf0455d93190eb0925fc248e9cd9","unresolved":false,"context_lines":[{"line_number":249,"context_line":"                       \u0027instance_name\u0027: self.instance.name}"},{"line_number":250,"context_line":"            raise p_exc.VolumeDetachFailed(**ex_args)"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"    def _discover_vol(self, vios_w, props):"},{"line_number":253,"context_line":"        portal \u003d props.get(\"target_portals\", props.get(\"target_portal\"))"},{"line_number":254,"context_line":"        iqn \u003d props.get(\"target_iqns\", props.get(\"target_iqn\"))"},{"line_number":255,"context_line":"        lun \u003d props.get(\"target_luns\", props.get(\"target_lun\"))"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f4e5783_b2611908","line":252,"updated":"2017-10-13 20:41:53.000000000","message":"let\u0027s co-locate this method with the other discovery method above for easier readability.","commit_id":"f7fbe0fbfcdd11d1fee97064d60af4f2e017c3c7"},{"author":{"_account_id":21099,"name":"Taylor Jakobson","email":"tjakobs@us.ibm.com","username":"tjakobs"},"change_message_id":"1ddae55176e132adc449d0e23bae2d682ee2bab7","unresolved":false,"context_lines":[{"line_number":249,"context_line":"                       \u0027instance_name\u0027: self.instance.name}"},{"line_number":250,"context_line":"            raise p_exc.VolumeDetachFailed(**ex_args)"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"    def _discover_vol(self, vios_w, props):"},{"line_number":253,"context_line":"        portal \u003d props.get(\"target_portals\", props.get(\"target_portal\"))"},{"line_number":254,"context_line":"        iqn \u003d props.get(\"target_iqns\", props.get(\"target_iqn\"))"},{"line_number":255,"context_line":"        lun \u003d props.get(\"target_luns\", props.get(\"target_lun\"))"}],"source_content_type":"text/x-python","patch_set":14,"id":"3f4b6375_e0f834c5","line":252,"in_reply_to":"5f4e5783_b2611908","updated":"2017-10-26 22:07:51.000000000","message":"Done","commit_id":"f7fbe0fbfcdd11d1fee97064d60af4f2e017c3c7"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"a1433e5fee2fbf0455d93190eb0925fc248e9cd9","unresolved":false,"context_lines":[{"line_number":270,"context_line":"        except (pvm_exc.ISCSIDiscoveryFailed, pvm_exc.JobRequestFailed) as e:"},{"line_number":271,"context_line":"            LOG.warning(e)"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"    def is_volume_on_vios(self, vios_w):"},{"line_number":274,"context_line":"        \"\"\"Returns whether or not the volume is on a VIOS."},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        :param vios_w: The Virtual I/O Server wrapper."}],"source_content_type":"text/x-python","patch_set":14,"id":"5f4e5783_cda7540b","line":273,"updated":"2017-10-13 20:41:53.000000000","message":"let\u0027s move this up top with the other non-private methods (i.e. those that don\u0027t start with _)","commit_id":"f7fbe0fbfcdd11d1fee97064d60af4f2e017c3c7"},{"author":{"_account_id":21099,"name":"Taylor Jakobson","email":"tjakobs@us.ibm.com","username":"tjakobs"},"change_message_id":"1ddae55176e132adc449d0e23bae2d682ee2bab7","unresolved":false,"context_lines":[{"line_number":270,"context_line":"        except (pvm_exc.ISCSIDiscoveryFailed, pvm_exc.JobRequestFailed) as e:"},{"line_number":271,"context_line":"            LOG.warning(e)"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"    def is_volume_on_vios(self, vios_w):"},{"line_number":274,"context_line":"        \"\"\"Returns whether or not the volume is on a VIOS."},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        :param vios_w: The Virtual I/O Server wrapper."}],"source_content_type":"text/x-python","patch_set":14,"id":"3f4b6375_602e8444","line":273,"in_reply_to":"5f4e5783_cda7540b","updated":"2017-10-26 22:07:51.000000000","message":"Done","commit_id":"f7fbe0fbfcdd11d1fee97064d60af4f2e017c3c7"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"0510f5745a29299ecc7b6d19a4e578ec46897a84","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        try:"},{"line_number":113,"context_line":"            return hdisk.discover_iscsi("},{"line_number":114,"context_line":"                self.adapter, portal, user, password, iqn, vios_w.uuid,"},{"line_number":115,"context_line":"                iface_name\u003dself.iface_name, lunid\u003dlun, auth\u003dauth,"},{"line_number":116,"context_line":"                discovery_auth\u003ddiscovery_auth,"},{"line_number":117,"context_line":"                discovery_username\u003ddiscovery_username,"},{"line_number":118,"context_line":"                discovery_password\u003ddiscovery_password,"}],"source_content_type":"text/x-python","patch_set":16,"id":"3f4b6375_fc3ae2e4","line":115,"updated":"2017-11-01 15:30:29.000000000","message":"will work because these are kwargs, but better to swap iface_name and lunid to match the method definition ordering.","commit_id":"7c1c7b8d729c6a503c3ddaabaa176d2691496841"},{"author":{"_account_id":21099,"name":"Taylor Jakobson","email":"tjakobs@us.ibm.com","username":"tjakobs"},"change_message_id":"3d6b6b1727b031d032775f352906dd53b88fc11e","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        try:"},{"line_number":113,"context_line":"            return hdisk.discover_iscsi("},{"line_number":114,"context_line":"                self.adapter, portal, user, password, iqn, vios_w.uuid,"},{"line_number":115,"context_line":"                iface_name\u003dself.iface_name, lunid\u003dlun, auth\u003dauth,"},{"line_number":116,"context_line":"                discovery_auth\u003ddiscovery_auth,"},{"line_number":117,"context_line":"                discovery_username\u003ddiscovery_username,"},{"line_number":118,"context_line":"                discovery_password\u003ddiscovery_password,"}],"source_content_type":"text/x-python","patch_set":16,"id":"3f4b6375_c29bc063","line":115,"in_reply_to":"3f4b6375_fc3ae2e4","updated":"2017-11-01 15:50:46.000000000","message":"Done","commit_id":"7c1c7b8d729c6a503c3ddaabaa176d2691496841"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"4c1108d54b410b5a9df2e5690a058364299228c4","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        if connection_info[\u0027driver_volume_type\u0027] \u003d\u003d \u0027iser\u0027:"},{"line_number":54,"context_line":"            self.iface_name \u003d \u0027iser\u0027"},{"line_number":55,"context_line":"        else:"},{"line_number":56,"context_line":"            self.iface_name \u003d CONF.powervm.iscsi_iface or \u0027default\u0027"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    @classmethod"},{"line_number":59,"context_line":"    def vol_type(cls):"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f4b6375_8ddedb3b","line":56,"range":{"start_line":56,"start_character":30,"end_line":56,"end_character":67},"updated":"2017-11-03 14:20:18.000000000","message":"Yeah, make the default \u0027default\u0027 in the conf.","commit_id":"28beba1a05cbebd7937251610ead1f057b39dec7"},{"author":{"_account_id":21099,"name":"Taylor Jakobson","email":"tjakobs@us.ibm.com","username":"tjakobs"},"change_message_id":"dea7a30017b15c2d45c95f2995bcd6af531dc147","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        if connection_info[\u0027driver_volume_type\u0027] \u003d\u003d \u0027iser\u0027:"},{"line_number":54,"context_line":"            self.iface_name \u003d \u0027iser\u0027"},{"line_number":55,"context_line":"        else:"},{"line_number":56,"context_line":"            self.iface_name \u003d CONF.powervm.iscsi_iface or \u0027default\u0027"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    @classmethod"},{"line_number":59,"context_line":"    def vol_type(cls):"}],"source_content_type":"text/x-python","patch_set":17,"id":"1f485f77_a3fe9634","line":56,"range":{"start_line":56,"start_character":30,"end_line":56,"end_character":67},"in_reply_to":"1f485f77_7e872811","updated":"2017-11-14 18:47:42.000000000","message":"Done","commit_id":"28beba1a05cbebd7937251610ead1f057b39dec7"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"041065594fb67ff562d4308761a0c97d5ad5d5ef","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        if connection_info[\u0027driver_volume_type\u0027] \u003d\u003d \u0027iser\u0027:"},{"line_number":54,"context_line":"            self.iface_name \u003d \u0027iser\u0027"},{"line_number":55,"context_line":"        else:"},{"line_number":56,"context_line":"            self.iface_name \u003d CONF.powervm.iscsi_iface or \u0027default\u0027"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    @classmethod"},{"line_number":59,"context_line":"    def vol_type(cls):"}],"source_content_type":"text/x-python","patch_set":17,"id":"1f485f77_7e872811","line":56,"range":{"start_line":56,"start_character":30,"end_line":56,"end_character":67},"in_reply_to":"3f4b6375_8ddedb3b","updated":"2017-11-13 23:41:36.000000000","message":"+1","commit_id":"28beba1a05cbebd7937251610ead1f057b39dec7"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"4c1108d54b410b5a9df2e5690a058364299228c4","unresolved":false,"context_lines":[{"line_number":154,"context_line":"            device_name \u003d \u0027/dev/\u0027 + device_name"},{"line_number":155,"context_line":"            iqn \u003d self.connection_info[\"data\"][\"target_iqn\"]"},{"line_number":156,"context_line":"            lun \u003d self.connection_info[\"data\"][\"target_lun\"]"},{"line_number":157,"context_line":"            target_name \u003d \"ISCSI-%s_%s\" % (iqn.split(\":\")[1], str(lun))"},{"line_number":158,"context_line":"            # Found a hdisk on this Virtual I/O Server.  Add the action to"},{"line_number":159,"context_line":"            # map it to the VM when the stg_ftsk is executed."},{"line_number":160,"context_line":"            with lockutils.lock(hash(self)):"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f4b6375_6d95df3f","line":157,"range":{"start_line":157,"start_character":66,"end_line":157,"end_character":69},"updated":"2017-11-03 14:20:18.000000000","message":"Is lun always an int?  If so, you could use %d and not do the conversion here.  But if it\u0027s maybe int, maybe str, then this is best.","commit_id":"28beba1a05cbebd7937251610ead1f057b39dec7"},{"author":{"_account_id":21099,"name":"Taylor Jakobson","email":"tjakobs@us.ibm.com","username":"tjakobs"},"change_message_id":"15d084133b7235ac8c42fb06703647d4d613178c","unresolved":false,"context_lines":[{"line_number":154,"context_line":"            device_name \u003d \u0027/dev/\u0027 + device_name"},{"line_number":155,"context_line":"            iqn \u003d self.connection_info[\"data\"][\"target_iqn\"]"},{"line_number":156,"context_line":"            lun \u003d self.connection_info[\"data\"][\"target_lun\"]"},{"line_number":157,"context_line":"            target_name \u003d \"ISCSI-%s_%s\" % (iqn.split(\":\")[1], str(lun))"},{"line_number":158,"context_line":"            # Found a hdisk on this Virtual I/O Server.  Add the action to"},{"line_number":159,"context_line":"            # map it to the VM when the stg_ftsk is executed."},{"line_number":160,"context_line":"            with lockutils.lock(hash(self)):"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f4b6375_5e04074a","line":157,"range":{"start_line":157,"start_character":66,"end_line":157,"end_character":69},"in_reply_to":"3f4b6375_6d95df3f","updated":"2017-11-03 20:13:44.000000000","message":"It\u0027s probably always going to be an int, but I can\u0027t say it will always be an int. That is up to the individual cinder driver, unless there is documentation stating a standard for what goes in the connection_info... But if there is, I haven\u0027t seen it","commit_id":"28beba1a05cbebd7937251610ead1f057b39dec7"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"4c1108d54b410b5a9df2e5690a058364299228c4","unresolved":false,"context_lines":[{"line_number":302,"context_line":"                                                         \u0027target_luns\u0027)]):"},{"line_number":303,"context_line":"            return zip(connection_properties[\u0027target_portals\u0027],"},{"line_number":304,"context_line":"                       connection_properties[\u0027target_iqns\u0027],"},{"line_number":305,"context_line":"                       connection_properties[\u0027target_luns\u0027])"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"        return [(connection_properties[\u0027target_portal\u0027],"},{"line_number":308,"context_line":"                 connection_properties[\u0027target_iqn\u0027],"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f4b6375_edb8afc8","line":305,"range":{"start_line":305,"start_character":23,"end_line":305,"end_character":58},"updated":"2017-11-03 14:20:18.000000000","message":"Is this guaranteed to be there?  (I ask because of L309.)  If it\u0027s not there, the zip will quit early.","commit_id":"28beba1a05cbebd7937251610ead1f057b39dec7"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"30c5b7e0a62659fef7cb032f8da8e406d4f47c3c","unresolved":false,"context_lines":[{"line_number":302,"context_line":"                                                         \u0027target_luns\u0027)]):"},{"line_number":303,"context_line":"            return zip(connection_properties[\u0027target_portals\u0027],"},{"line_number":304,"context_line":"                       connection_properties[\u0027target_iqns\u0027],"},{"line_number":305,"context_line":"                       connection_properties[\u0027target_luns\u0027])"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"        return [(connection_properties[\u0027target_portal\u0027],"},{"line_number":308,"context_line":"                 connection_properties[\u0027target_iqn\u0027],"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f4b6375_ea276ac6","line":305,"range":{"start_line":305,"start_character":23,"end_line":305,"end_character":58},"in_reply_to":"3f4b6375_3e86ebba","updated":"2017-11-03 21:30:44.000000000","message":"Duh, thanks.","commit_id":"28beba1a05cbebd7937251610ead1f057b39dec7"},{"author":{"_account_id":21099,"name":"Taylor Jakobson","email":"tjakobs@us.ibm.com","username":"tjakobs"},"change_message_id":"15d084133b7235ac8c42fb06703647d4d613178c","unresolved":false,"context_lines":[{"line_number":302,"context_line":"                                                         \u0027target_luns\u0027)]):"},{"line_number":303,"context_line":"            return zip(connection_properties[\u0027target_portals\u0027],"},{"line_number":304,"context_line":"                       connection_properties[\u0027target_iqns\u0027],"},{"line_number":305,"context_line":"                       connection_properties[\u0027target_luns\u0027])"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"        return [(connection_properties[\u0027target_portal\u0027],"},{"line_number":308,"context_line":"                 connection_properties[\u0027target_iqn\u0027],"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f4b6375_3e86ebba","line":305,"range":{"start_line":305,"start_character":23,"end_line":305,"end_character":58},"in_reply_to":"3f4b6375_edb8afc8","updated":"2017-11-03 20:13:44.000000000","message":"\u0027target_luns\u0027 is not guaranteed to be in the connection_properties, but it is guaranteed to be in L305 (see L300-L303)","commit_id":"28beba1a05cbebd7937251610ead1f057b39dec7"}]}
