)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"33663c1c1169eadab172d25df9411c5760d38f4a","unresolved":false,"context_lines":[{"line_number":13,"context_line":"* FC support"},{"line_number":14,"context_line":"* improved iSCSI MPIO support"},{"line_number":15,"context_line":"* simplified volume connect/disconnect workflow"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: Ib21947141aadca1fa6cb99afc07a175ce14d192e"},{"line_number":18,"context_line":"Depends-On: I19dfc8dd2e9e8a1b17675b55c63de903804480e4"},{"line_number":19,"context_line":"Implements: blueprint hyperv-use-os-brick"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"5a8bc5a2_0ab3a898","line":16,"updated":"2016-09-27 17:43:27.000000000","message":"Since you are deprecating config options, you should also have a DocImpact.\n\nDocImpact: Deprecates config options.","commit_id":"21f4f9c120c303b864b2f41c3984904ea4de116a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7e0891a568081d15e02eddde40db57e7fcc1fe73","unresolved":false,"context_lines":[{"line_number":13,"context_line":"* FC support"},{"line_number":14,"context_line":"* improved iSCSI MPIO support"},{"line_number":15,"context_line":"* simplified volume connect/disconnect workflow"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: Ib21947141aadca1fa6cb99afc07a175ce14d192e"},{"line_number":18,"context_line":"Depends-On: I19dfc8dd2e9e8a1b17675b55c63de903804480e4"},{"line_number":19,"context_line":"Implements: blueprint hyperv-use-os-brick"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"5a8bc5a2_d468748a","line":16,"in_reply_to":"5a8bc5a2_0ab3a898","updated":"2016-09-28 02:15:40.000000000","message":"You don\u0027t need DocImpact for config option changes, just a release note. The DocImpact tag creates a bug in nova and we wouldn\u0027t actually have anything to do with it since config options are auto-generated.","commit_id":"21f4f9c120c303b864b2f41c3984904ea4de116a"}],"nova/conf/hyperv.py":[{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"719f24a29bff7b028991975c30d6e14e6eb61d44","unresolved":false,"context_lines":[{"line_number":126,"context_line":"                \u0027mounted_disk_query_retry_count\u0027,"},{"line_number":127,"context_line":"                default\u003d10,"},{"line_number":128,"context_line":"                deprecated_for_removal\u003dTrue,"},{"line_number":129,"context_line":"                help\u003d\"\"\""},{"line_number":130,"context_line":"Mounted disk query retry count"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"The number of times to retry checking for a disk mounted via iSCSI."}],"source_content_type":"text/x-python","patch_set":8,"id":"7aa08908_ecb520ed","line":129,"updated":"2016-06-13 17:57:30.000000000","message":"Can you also please use deprecated_reason?","commit_id":"2e5fa6f9b3956197e8ae1131baf75d586ddbc2e3"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"719f24a29bff7b028991975c30d6e14e6eb61d44","unresolved":false,"context_lines":[{"line_number":154,"context_line":"                \u0027mounted_disk_query_retry_interval\u0027,"},{"line_number":155,"context_line":"                default\u003d5,"},{"line_number":156,"context_line":"                deprecated_for_removal\u003dTrue,"},{"line_number":157,"context_line":"                help\u003d\"\"\""},{"line_number":158,"context_line":"Mounted disk query retry interval"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"Interval between checks for a mounted iSCSI disk, in seconds."}],"source_content_type":"text/x-python","patch_set":8,"id":"7aa08908_4ccf147f","line":157,"updated":"2016-06-13 17:57:30.000000000","message":"Same","commit_id":"2e5fa6f9b3956197e8ae1131baf75d586ddbc2e3"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"719f24a29bff7b028991975c30d6e14e6eb61d44","unresolved":false,"context_lines":[{"line_number":366,"context_line":"volume_attach_retry_count_opt \u003d cfg.IntOpt(\u0027volume_attach_retry_count\u0027,"},{"line_number":367,"context_line":"                default\u003d10,"},{"line_number":368,"context_line":"                deprecated_for_removal\u003dTrue,"},{"line_number":369,"context_line":"                help\u003d\"\"\""},{"line_number":370,"context_line":"Volume attach retry count"},{"line_number":371,"context_line":""},{"line_number":372,"context_line":"The number of times to retry to attach a volume. This option is used"}],"source_content_type":"text/x-python","patch_set":8,"id":"7aa08908_2ccc4888","line":369,"updated":"2016-06-13 17:57:30.000000000","message":"same","commit_id":"2e5fa6f9b3956197e8ae1131baf75d586ddbc2e3"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"719f24a29bff7b028991975c30d6e14e6eb61d44","unresolved":false,"context_lines":[{"line_number":393,"context_line":"volume_attach_retry_interval_opt \u003d cfg.IntOpt(\u0027volume_attach_retry_interval\u0027,"},{"line_number":394,"context_line":"                default\u003d5,"},{"line_number":395,"context_line":"                deprecated_for_removal\u003dTrue,"},{"line_number":396,"context_line":"                help\u003d\"\"\""},{"line_number":397,"context_line":"Volume attach retry interval"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"Interval between volume attachment attempts, in seconds."}],"source_content_type":"text/x-python","patch_set":8,"id":"7aa08908_8cc57c5d","line":396,"updated":"2016-06-13 17:57:30.000000000","message":"same","commit_id":"2e5fa6f9b3956197e8ae1131baf75d586ddbc2e3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8ba212f9d2a3aa26d4fb542db2077dbf361ca14c","unresolved":false,"context_lines":[{"line_number":81,"context_line":"    cfg.IntOpt(\u0027mounted_disk_query_retry_count\u0027,"},{"line_number":82,"context_line":"        default\u003d10,"},{"line_number":83,"context_line":"        min\u003d0,"},{"line_number":84,"context_line":"        deprecated_for_removal\u003dTrue,"},{"line_number":85,"context_line":"        help\u003d\"\"\""},{"line_number":86,"context_line":"Mounted disk query retry count"},{"line_number":87,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"5a8bc5a2_f0c6fc47","line":84,"updated":"2016-09-23 21:33:19.000000000","message":"You should add deprecated_reason and deprecated_since kwargs.\n\nYou should also have a release note for the deprecated config options here.","commit_id":"9d21b2ef07e70c922568616e54dc2cebb84210bf"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"b63a23395b70c6f6530f9c7a90ada1c56dccd747","unresolved":false,"context_lines":[{"line_number":81,"context_line":"    cfg.IntOpt(\u0027mounted_disk_query_retry_count\u0027,"},{"line_number":82,"context_line":"        default\u003d10,"},{"line_number":83,"context_line":"        min\u003d0,"},{"line_number":84,"context_line":"        deprecated_for_removal\u003dTrue,"},{"line_number":85,"context_line":"        help\u003d\"\"\""},{"line_number":86,"context_line":"Mounted disk query retry count"},{"line_number":87,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"5a8bc5a2_4bc6ed9a","line":84,"in_reply_to":"5a8bc5a2_f0c6fc47","updated":"2016-09-26 12:52:01.000000000","message":"Sure, I\u0027m going to include this in the following patch set.","commit_id":"9d21b2ef07e70c922568616e54dc2cebb84210bf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8ba212f9d2a3aa26d4fb542db2077dbf361ca14c","unresolved":false,"context_lines":[{"line_number":104,"context_line":"    cfg.IntOpt(\u0027mounted_disk_query_retry_interval\u0027,"},{"line_number":105,"context_line":"        default\u003d5,"},{"line_number":106,"context_line":"        min\u003d0,"},{"line_number":107,"context_line":"        deprecated_for_removal\u003dTrue,"},{"line_number":108,"context_line":"        help\u003d\"\"\""},{"line_number":109,"context_line":"Mounted disk query retry interval"},{"line_number":110,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"5a8bc5a2_10c60848","line":107,"updated":"2016-09-23 21:33:19.000000000","message":"You should add deprecated_reason and deprecated_since kwargs.","commit_id":"9d21b2ef07e70c922568616e54dc2cebb84210bf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8ba212f9d2a3aa26d4fb542db2077dbf361ca14c","unresolved":false,"context_lines":[{"line_number":258,"context_line":"    cfg.IntOpt(\u0027volume_attach_retry_count\u0027,"},{"line_number":259,"context_line":"        default\u003d10,"},{"line_number":260,"context_line":"        min\u003d0,"},{"line_number":261,"context_line":"        deprecated_for_removal\u003dTrue,"},{"line_number":262,"context_line":"        help\u003d\"\"\""},{"line_number":263,"context_line":"Volume attach retry count"},{"line_number":264,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"5a8bc5a2_30c1442f","line":261,"updated":"2016-09-23 21:33:19.000000000","message":"You should add deprecated_reason and deprecated_since kwargs.","commit_id":"9d21b2ef07e70c922568616e54dc2cebb84210bf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8ba212f9d2a3aa26d4fb542db2077dbf361ca14c","unresolved":false,"context_lines":[{"line_number":281,"context_line":"    cfg.IntOpt(\u0027volume_attach_retry_interval\u0027,"},{"line_number":282,"context_line":"        default\u003d5,"},{"line_number":283,"context_line":"        min\u003d0,"},{"line_number":284,"context_line":"        deprecated_for_removal\u003dTrue,"},{"line_number":285,"context_line":"        help\u003d\"\"\""},{"line_number":286,"context_line":"Volume attach retry interval"},{"line_number":287,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"5a8bc5a2_50ded011","line":284,"updated":"2016-09-23 21:33:19.000000000","message":"You should add deprecated_reason and deprecated_since kwargs.","commit_id":"9d21b2ef07e70c922568616e54dc2cebb84210bf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8ba212f9d2a3aa26d4fb542db2077dbf361ca14c","unresolved":false,"context_lines":[{"line_number":329,"context_line":"    cfg.BoolOpt(\u0027use_multipath_io\u0027,"},{"line_number":330,"context_line":"                default\u003dFalse,"},{"line_number":331,"context_line":"                help\u003d\"\"\""},{"line_number":332,"context_line":"Use mulipath connections when attaching iSCSI or FC disks."},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"This requires the Multipath IO Windows feature to be enabled. MPIO must be"},{"line_number":335,"context_line":"configured to claim such devices."}],"source_content_type":"text/x-python","patch_set":10,"id":"5a8bc5a2_70e10cd0","line":332,"range":{"start_line":332,"start_character":4,"end_line":332,"end_character":12},"updated":"2016-09-23 21:33:19.000000000","message":"multipath","commit_id":"9d21b2ef07e70c922568616e54dc2cebb84210bf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8ba212f9d2a3aa26d4fb542db2077dbf361ca14c","unresolved":false,"context_lines":[{"line_number":339,"context_line":"                help\u003d\"\"\""},{"line_number":340,"context_line":"List of iSCSI initiators that will be used for estabilishing iSCSI sessions."},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"If none is specified, the Microsoft iSCSI initiator service will choose the"},{"line_number":343,"context_line":"initiator."},{"line_number":344,"context_line":"\"\"\")"},{"line_number":345,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a8bc5a2_30d8641d","line":342,"range":{"start_line":342,"start_character":8,"end_line":342,"end_character":10},"updated":"2016-09-23 21:33:19.000000000","message":"are","commit_id":"9d21b2ef07e70c922568616e54dc2cebb84210bf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a9ef02ee4b867ce66be0e6bf96d1d129394b360b","unresolved":false,"context_lines":[{"line_number":78,"context_line":"different CPU features and checked during instance creation"},{"line_number":79,"context_line":"in order to limit the CPU features used by the instance."},{"line_number":80,"context_line":"\"\"\"),"},{"line_number":81,"context_line":"    cfg.IntOpt(\u0027mounted_disk_query_retry_count\u0027,"},{"line_number":82,"context_line":"        default\u003d10,"},{"line_number":83,"context_line":"        min\u003d0,"},{"line_number":84,"context_line":"        help\u003d\"\"\""}],"source_content_type":"text/x-python","patch_set":18,"id":"9a629dbe_a4e6b0e5","line":81,"updated":"2016-11-10 22:16:04.000000000","message":"In PS15 this was deprecated for removal, why isn\u0027t that the case anymore?","commit_id":"ee6d2a4cc2efa2f4334bdfb2676203cdddc29429"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a9ef02ee4b867ce66be0e6bf96d1d129394b360b","unresolved":false,"context_lines":[{"line_number":95,"context_line":"* Time interval between disk mount retries is declared with"},{"line_number":96,"context_line":"  \"mounted_disk_query_retry_interval\" option."},{"line_number":97,"context_line":"\"\"\"),"},{"line_number":98,"context_line":"    cfg.IntOpt(\u0027mounted_disk_query_retry_interval\u0027,"},{"line_number":99,"context_line":"        default\u003d5,"},{"line_number":100,"context_line":"        min\u003d0,"},{"line_number":101,"context_line":"        help\u003d\"\"\""}],"source_content_type":"text/x-python","patch_set":18,"id":"9a629dbe_c4000469","line":98,"updated":"2016-11-10 22:16:04.000000000","message":"ditto this was deprecated earlier.","commit_id":"ee6d2a4cc2efa2f4334bdfb2676203cdddc29429"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a9ef02ee4b867ce66be0e6bf96d1d129394b360b","unresolved":false,"context_lines":[{"line_number":248,"context_line":"  configuration drive usage with Hyper-V, such as force_config_drive."},{"line_number":249,"context_line":"* Currently, the only accepted config_drive_format is \u0027iso9660\u0027."},{"line_number":250,"context_line":"\"\"\"),"},{"line_number":251,"context_line":"    cfg.IntOpt(\u0027volume_attach_retry_count\u0027,"},{"line_number":252,"context_line":"        default\u003d10,"},{"line_number":253,"context_line":"        min\u003d0,"},{"line_number":254,"context_line":"        help\u003d\"\"\""}],"source_content_type":"text/x-python","patch_set":18,"id":"9a629dbe_642e58fc","line":251,"updated":"2016-11-10 22:16:04.000000000","message":"ditto","commit_id":"ee6d2a4cc2efa2f4334bdfb2676203cdddc29429"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a9ef02ee4b867ce66be0e6bf96d1d129394b360b","unresolved":false,"context_lines":[{"line_number":265,"context_line":"* Time interval between attachment attempts is declared with"},{"line_number":266,"context_line":"  volume_attach_retry_interval option."},{"line_number":267,"context_line":"\"\"\"),"},{"line_number":268,"context_line":"    cfg.IntOpt(\u0027volume_attach_retry_interval\u0027,"},{"line_number":269,"context_line":"        default\u003d5,"},{"line_number":270,"context_line":"        min\u003d0,"},{"line_number":271,"context_line":"        help\u003d\"\"\""}],"source_content_type":"text/x-python","patch_set":18,"id":"9a629dbe_a434f049","line":268,"updated":"2016-11-10 22:16:04.000000000","message":"and this","commit_id":"ee6d2a4cc2efa2f4334bdfb2676203cdddc29429"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"de37bc48c8b3ad9a7d39c07fd55ec9c005eb08e8","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        help\u003d\"\"\""},{"line_number":85,"context_line":"Mounted disk query retry count"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"The number of times to retry checking for a disk mounted via iSCSI."},{"line_number":88,"context_line":"During long stress runs the WMI query that is looking for the iSCSI"},{"line_number":89,"context_line":"device number can incorrectly return no data. If the query is"},{"line_number":90,"context_line":"retried the appropriate data can then be obtained. The query runs"},{"line_number":91,"context_line":"until the device can be found or the retry count is reached."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"Possible values:"},{"line_number":94,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"7a77a97e_c85b1f86","side":"PARENT","line":91,"range":{"start_line":87,"start_character":57,"end_line":91,"end_character":60},"updated":"2016-11-16 14:22:29.000000000","message":"Why is this all removed?","commit_id":"5158ca7dcffd583dc8dd7c29b0a9a595d7de7dcf"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"bc818d4f455d0d5ca8b1e5f9ffac097079c5da44","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        help\u003d\"\"\""},{"line_number":85,"context_line":"Mounted disk query retry count"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"The number of times to retry checking for a disk mounted via iSCSI."},{"line_number":88,"context_line":"During long stress runs the WMI query that is looking for the iSCSI"},{"line_number":89,"context_line":"device number can incorrectly return no data. If the query is"},{"line_number":90,"context_line":"retried the appropriate data can then be obtained. The query runs"},{"line_number":91,"context_line":"until the device can be found or the retry count is reached."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"Possible values:"},{"line_number":94,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"7a77a97e_f65b5c2c","side":"PARENT","line":91,"range":{"start_line":87,"start_character":57,"end_line":91,"end_character":60},"in_reply_to":"7a77a97e_c85b1f86","updated":"2016-11-16 15:37:03.000000000","message":"WMI is no longer used so this explanation was a bit off.","commit_id":"5158ca7dcffd583dc8dd7c29b0a9a595d7de7dcf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"de37bc48c8b3ad9a7d39c07fd55ec9c005eb08e8","unresolved":false,"context_lines":[{"line_number":259,"context_line":"        help\u003d\"\"\""},{"line_number":260,"context_line":"Volume attach retry count"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"The number of times to retry to attach a volume. This option is used"},{"line_number":263,"context_line":"to avoid incorrectly returned no data when the system is under load."},{"line_number":264,"context_line":"Volume attachment is retried until success or the given retry count"},{"line_number":265,"context_line":"is reached. To prepare the Hyper-V node to be able to attach to"},{"line_number":266,"context_line":"volumes provided by cinder you must first make sure the Windows iSCSI"},{"line_number":267,"context_line":"initiator service is running and started automatically."},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"Possible values:"},{"line_number":270,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"7a77a97e_4850ef5d","side":"PARENT","line":267,"range":{"start_line":262,"start_character":29,"end_line":267,"end_character":55},"updated":"2016-11-16 14:22:29.000000000","message":"Why is this all removed?","commit_id":"5158ca7dcffd583dc8dd7c29b0a9a595d7de7dcf"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"bc818d4f455d0d5ca8b1e5f9ffac097079c5da44","unresolved":false,"context_lines":[{"line_number":259,"context_line":"        help\u003d\"\"\""},{"line_number":260,"context_line":"Volume attach retry count"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"The number of times to retry to attach a volume. This option is used"},{"line_number":263,"context_line":"to avoid incorrectly returned no data when the system is under load."},{"line_number":264,"context_line":"Volume attachment is retried until success or the given retry count"},{"line_number":265,"context_line":"is reached. To prepare the Hyper-V node to be able to attach to"},{"line_number":266,"context_line":"volumes provided by cinder you must first make sure the Windows iSCSI"},{"line_number":267,"context_line":"initiator service is running and started automatically."},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"Possible values:"},{"line_number":270,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"7a77a97e_d6d2e0d1","side":"PARENT","line":267,"range":{"start_line":262,"start_character":29,"end_line":267,"end_character":55},"in_reply_to":"7a77a97e_4850ef5d","updated":"2016-11-16 15:37:03.000000000","message":"Well, at least the iSCSI part should be removed since this option now applies to any connection type.","commit_id":"5158ca7dcffd583dc8dd7c29b0a9a595d7de7dcf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"de37bc48c8b3ad9a7d39c07fd55ec9c005eb08e8","unresolved":false,"context_lines":[{"line_number":95,"context_line":"* Time interval between disk mount retries is declared with"},{"line_number":96,"context_line":"  \"mounted_disk_query_retry_interval\" option."},{"line_number":97,"context_line":"\"\"\"),"},{"line_number":98,"context_line":"    cfg.IntOpt(\u0027mounted_disk_query_retry_interval\u0027,"},{"line_number":99,"context_line":"        default\u003d5,"},{"line_number":100,"context_line":"        min\u003d0,"},{"line_number":101,"context_line":"        help\u003d\"\"\""}],"source_content_type":"text/x-python","patch_set":19,"id":"7a77a97e_c8e95f82","line":98,"updated":"2016-11-16 14:22:29.000000000","message":"I don\u0027t see this used anymore.","commit_id":"4823faeeb9ed5fab237ac3518625a0c09f261c7b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"551716d158ecda95146bda8e4e722e83d5b4478c","unresolved":false,"context_lines":[{"line_number":95,"context_line":"* Time interval between disk mount retries is declared with"},{"line_number":96,"context_line":"  \"mounted_disk_query_retry_interval\" option."},{"line_number":97,"context_line":"\"\"\"),"},{"line_number":98,"context_line":"    cfg.IntOpt(\u0027mounted_disk_query_retry_interval\u0027,"},{"line_number":99,"context_line":"        default\u003d5,"},{"line_number":100,"context_line":"        min\u003d0,"},{"line_number":101,"context_line":"        help\u003d\"\"\""}],"source_content_type":"text/x-python","patch_set":19,"id":"7a77a97e_f36e032e","line":98,"in_reply_to":"7a77a97e_76e4ac3a","updated":"2016-11-16 17:20:01.000000000","message":"Up to you. I wouldn\u0027t block this on waiting for os-brick to use it, but if you don\u0027t plan on passing it to os-brick then I think we should deprecate it for removal as unused, or at the very least add a TODO that this either needs to be used or deprecated at some point when you want to make that decision.","commit_id":"4823faeeb9ed5fab237ac3518625a0c09f261c7b"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"bc818d4f455d0d5ca8b1e5f9ffac097079c5da44","unresolved":false,"context_lines":[{"line_number":95,"context_line":"* Time interval between disk mount retries is declared with"},{"line_number":96,"context_line":"  \"mounted_disk_query_retry_interval\" option."},{"line_number":97,"context_line":"\"\"\"),"},{"line_number":98,"context_line":"    cfg.IntOpt(\u0027mounted_disk_query_retry_interval\u0027,"},{"line_number":99,"context_line":"        default\u003d5,"},{"line_number":100,"context_line":"        min\u003d0,"},{"line_number":101,"context_line":"        help\u003d\"\"\""}],"source_content_type":"text/x-python","patch_set":19,"id":"7a77a97e_76e4ac3a","line":98,"in_reply_to":"7a77a97e_c8e95f82","updated":"2016-11-16 15:37:03.000000000","message":"I was thinking that this could still be valuable and was considering passing it to os-brick at some point.\n\nI guess I can either deprecate it for now, or pass it to os-brick right away (which ignores unknown arguments) and start using it there afterwards.\n\nSeems like a minor thing, not worth postponing this patch waiting for the os-brick side. For the record, other os-brick connectors will just raise the retry interval exponentially.","commit_id":"4823faeeb9ed5fab237ac3518625a0c09f261c7b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"de37bc48c8b3ad9a7d39c07fd55ec9c005eb08e8","unresolved":false,"context_lines":[{"line_number":320,"context_line":"This requires the Multipath IO Windows feature to be enabled. MPIO must be"},{"line_number":321,"context_line":"configured to claim such devices."},{"line_number":322,"context_line":"\"\"\"),"},{"line_number":323,"context_line":"    cfg.ListOpt(\u0027iscsi_initiator_list\u0027,"},{"line_number":324,"context_line":"                default\u003d[],"},{"line_number":325,"context_line":"                help\u003d\"\"\""},{"line_number":326,"context_line":"List of iSCSI initiators that will be used for estabilishing iSCSI sessions."}],"source_content_type":"text/x-python","patch_set":19,"id":"7a77a97e_c8131f65","line":323,"updated":"2016-11-16 14:22:29.000000000","message":"I don\u0027t see any unit test using this with actual values.","commit_id":"4823faeeb9ed5fab237ac3518625a0c09f261c7b"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"bc818d4f455d0d5ca8b1e5f9ffac097079c5da44","unresolved":false,"context_lines":[{"line_number":320,"context_line":"This requires the Multipath IO Windows feature to be enabled. MPIO must be"},{"line_number":321,"context_line":"configured to claim such devices."},{"line_number":322,"context_line":"\"\"\"),"},{"line_number":323,"context_line":"    cfg.ListOpt(\u0027iscsi_initiator_list\u0027,"},{"line_number":324,"context_line":"                default\u003d[],"},{"line_number":325,"context_line":"                help\u003d\"\"\""},{"line_number":326,"context_line":"List of iSCSI initiators that will be used for estabilishing iSCSI sessions."}],"source_content_type":"text/x-python","patch_set":19,"id":"7a77a97e_7603cc0f","line":323,"in_reply_to":"7a77a97e_c8131f65","updated":"2016-11-16 15:37:03.000000000","message":"Adding an unit test for that right away.","commit_id":"4823faeeb9ed5fab237ac3518625a0c09f261c7b"}],"nova/tests/unit/virt/hyperv/test_volumeops.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8ba212f9d2a3aa26d4fb542db2077dbf361ca14c","unresolved":false,"context_lines":[{"line_number":85,"context_line":"    @mock.patch.object(volumeops.VolumeOps, \u0027_get_volume_driver\u0027)"},{"line_number":86,"context_line":"    def test_attach_volume_exc(self, mock_get_volume_driver):"},{"line_number":87,"context_line":"        fake_volume_driver \u003d mock_get_volume_driver.return_value"},{"line_number":88,"context_line":"        fake_volume_driver.attach_volume.side_effect \u003d exception.NovaException"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        self.assertRaises(exception.NovaException,"},{"line_number":91,"context_line":"                          self._volumeops.attach_volume,"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a8bc5a2_d0f90082","line":88,"range":{"start_line":88,"start_character":55,"end_line":88,"end_character":78},"updated":"2016-09-23 21:33:19.000000000","message":"nit: I prefer using test.TestingException for stuff like this so we don\u0027t mask actual NovaExceptions that are raised up from the driver.","commit_id":"9d21b2ef07e70c922568616e54dc2cebb84210bf"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"b63a23395b70c6f6530f9c7a90ada1c56dccd747","unresolved":false,"context_lines":[{"line_number":85,"context_line":"    @mock.patch.object(volumeops.VolumeOps, \u0027_get_volume_driver\u0027)"},{"line_number":86,"context_line":"    def test_attach_volume_exc(self, mock_get_volume_driver):"},{"line_number":87,"context_line":"        fake_volume_driver \u003d mock_get_volume_driver.return_value"},{"line_number":88,"context_line":"        fake_volume_driver.attach_volume.side_effect \u003d exception.NovaException"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        self.assertRaises(exception.NovaException,"},{"line_number":91,"context_line":"                          self._volumeops.attach_volume,"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a8bc5a2_2b444119","line":88,"range":{"start_line":88,"start_character":55,"end_line":88,"end_character":78},"in_reply_to":"5a8bc5a2_d0f90082","updated":"2016-09-26 12:52:01.000000000","message":"Makes sense, I was not aware of this.","commit_id":"9d21b2ef07e70c922568616e54dc2cebb84210bf"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"33663c1c1169eadab172d25df9411c5760d38f4a","unresolved":false,"context_lines":[{"line_number":422,"context_line":"            mock.sentinel.instance_name, mock.sentinel.disk_bus)"},{"line_number":423,"context_line":""},{"line_number":424,"context_line":"    def test_attach_volume_image_file(self):"},{"line_number":425,"context_line":"        self._test_attach_volume(is_block_dev\u003dTrue)"},{"line_number":426,"context_line":""},{"line_number":427,"context_line":"    def test_attach_volume_block_dev(self):"},{"line_number":428,"context_line":"        self._test_attach_volume()"}],"source_content_type":"text/x-python","patch_set":12,"id":"5a8bc5a2_a5bf47ce","line":425,"updated":"2016-09-27 17:43:27.000000000","message":"it is true by default.","commit_id":"21f4f9c120c303b864b2f41c3984904ea4de116a"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"0c2c95db9901ad4ce3221e857440172d8403bb2f","unresolved":false,"context_lines":[{"line_number":422,"context_line":"            mock.sentinel.instance_name, mock.sentinel.disk_bus)"},{"line_number":423,"context_line":""},{"line_number":424,"context_line":"    def test_attach_volume_image_file(self):"},{"line_number":425,"context_line":"        self._test_attach_volume(is_block_dev\u003dTrue)"},{"line_number":426,"context_line":""},{"line_number":427,"context_line":"    def test_attach_volume_block_dev(self):"},{"line_number":428,"context_line":"        self._test_attach_volume()"}],"source_content_type":"text/x-python","patch_set":12,"id":"5a8bc5a2_3bbb3310","line":425,"in_reply_to":"5a8bc5a2_a5bf47ce","updated":"2016-09-28 10:18:15.000000000","message":"Done","commit_id":"21f4f9c120c303b864b2f41c3984904ea4de116a"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"33663c1c1169eadab172d25df9411c5760d38f4a","unresolved":false,"context_lines":[{"line_number":547,"context_line":""},{"line_number":548,"context_line":"        mock_detach.assert_called_once_with("},{"line_number":549,"context_line":"            self._FAKE_CONN_INFO,"},{"line_number":550,"context_line":"            instance_name\u003dmock.sentinel.instance_name)"}],"source_content_type":"text/x-python","patch_set":12,"id":"5a8bc5a2_c57a9376","line":550,"updated":"2016-09-27 17:43:27.000000000","message":"I would move these 2 tests above test_set_disk_qos_specs, so the order is the same as in SMBFSVolumeDriver.","commit_id":"21f4f9c120c303b864b2f41c3984904ea4de116a"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"0c2c95db9901ad4ce3221e857440172d8403bb2f","unresolved":false,"context_lines":[{"line_number":547,"context_line":""},{"line_number":548,"context_line":"        mock_detach.assert_called_once_with("},{"line_number":549,"context_line":"            self._FAKE_CONN_INFO,"},{"line_number":550,"context_line":"            instance_name\u003dmock.sentinel.instance_name)"}],"source_content_type":"text/x-python","patch_set":12,"id":"5a8bc5a2_fbf54bcb","line":550,"in_reply_to":"5a8bc5a2_c57a9376","updated":"2016-09-28 10:18:15.000000000","message":"Done","commit_id":"21f4f9c120c303b864b2f41c3984904ea4de116a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fbcb5309f68286283e33948f85ef41844da6331f","unresolved":false,"context_lines":[{"line_number":523,"context_line":"        # We need to reload the module so that the updated config"},{"line_number":524,"context_line":"        # option may be used. We\u0027ll restore the previous object"},{"line_number":525,"context_line":"        # afterwards so that the mocks are not affected."},{"line_number":526,"context_line":"        volumeops_path \u003d \u0027nova.virt.hyperv.volumeops\u0027"},{"line_number":527,"context_line":"        del sys.modules[volumeops_path]"},{"line_number":528,"context_line":"        _volumeops \u003d importlib.import_module(volumeops_path)"},{"line_number":529,"context_line":""},{"line_number":530,"context_line":"        vol_driver \u003d _volumeops.ISCSIVolumeDriver()"}],"source_content_type":"text/x-python","patch_set":20,"id":"7a77a97e_aa2dbb47","line":527,"range":{"start_line":526,"start_character":8,"end_line":527,"end_character":39},"updated":"2016-11-17 15:02:46.000000000","message":"This seems like it could really mess with concurrently running unit tests...","commit_id":"104c44691d860e6d5e8f710cda527ffd4606712e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fbcb5309f68286283e33948f85ef41844da6331f","unresolved":false,"context_lines":[{"line_number":532,"context_line":"        self.assertEqual(expected_extra_conn_args,"},{"line_number":533,"context_line":"                         vol_driver._extra_connector_args)"},{"line_number":534,"context_line":""},{"line_number":535,"context_line":"        sys.modules[volumeops_path] \u003d volumeops"},{"line_number":536,"context_line":""},{"line_number":537,"context_line":""},{"line_number":538,"context_line":"class SMBFSVolumeDriverTestCase(test_base.HyperVBaseTestCase):"}],"source_content_type":"text/x-python","patch_set":20,"id":"7a77a97e_eab17302","line":535,"updated":"2016-11-17 15:02:46.000000000","message":"This should be done in an addCleanup in case the assertion above fails. So you\u0027d want to have this in the addCleanup right after deleting the sys.module above.","commit_id":"104c44691d860e6d5e8f710cda527ffd4606712e"}],"nova/virt/hyperv/volumeops.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8ba212f9d2a3aa26d4fb542db2077dbf361ca14c","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        self.volume_drivers \u003d {\u0027smbfs\u0027: SMBFSVolumeDriver(),"},{"line_number":48,"context_line":"                               \u0027iscsi\u0027: ISCSIVolumeDriver(),"},{"line_number":49,"context_line":"                               \u0027fibre_channel\u0027: FCVolumeDriver()}"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def _get_volume_driver(self, connection_info):"},{"line_number":52,"context_line":"        driver_type \u003d connection_info.get(\u0027driver_volume_type\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a8bc5a2_507a50f2","line":49,"updated":"2016-09-23 21:33:19.000000000","message":"Doesn\u0027t this also mean that hyper-v supports FC now? If that\u0027s the case, then you should have a release note for this stating the new feature support and anything that goes with that.","commit_id":"9d21b2ef07e70c922568616e54dc2cebb84210bf"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"b63a23395b70c6f6530f9c7a90ada1c56dccd747","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        self.volume_drivers \u003d {\u0027smbfs\u0027: SMBFSVolumeDriver(),"},{"line_number":48,"context_line":"                               \u0027iscsi\u0027: ISCSIVolumeDriver(),"},{"line_number":49,"context_line":"                               \u0027fibre_channel\u0027: FCVolumeDriver()}"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def _get_volume_driver(self, connection_info):"},{"line_number":52,"context_line":"        driver_type \u003d connection_info.get(\u0027driver_volume_type\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a8bc5a2_0be5c5da","line":49,"in_reply_to":"5a8bc5a2_507a50f2","updated":"2016-09-26 12:52:01.000000000","message":"Yep. Sure.","commit_id":"9d21b2ef07e70c922568616e54dc2cebb84210bf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8ba212f9d2a3aa26d4fb542db2077dbf361ca14c","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    def attach_volume(self, connection_info, instance_name,"},{"line_number":62,"context_line":"                      disk_bus\u003dconstants.CTRL_TYPE_SCSI):"},{"line_number":63,"context_line":"        LOG.debug(\"Attaching volume: %(connection_info)s to %(instance_name)s\","},{"line_number":64,"context_line":"                  {\u0027connection_info\u0027: connection_info,"},{"line_number":65,"context_line":"                   \u0027instance_name\u0027: instance_name})"},{"line_number":66,"context_line":"        volume_driver \u003d self._get_volume_driver(connection_info)"},{"line_number":67,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"5a8bc5a2_1079a8f6","line":64,"range":{"start_line":64,"start_character":38,"end_line":64,"end_character":53},"updated":"2016-09-23 21:33:19.000000000","message":"I believe this can have credentials in it, so you should probably call strutils.mask_password on this first.","commit_id":"9d21b2ef07e70c922568616e54dc2cebb84210bf"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"b63a23395b70c6f6530f9c7a90ada1c56dccd747","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    def attach_volume(self, connection_info, instance_name,"},{"line_number":62,"context_line":"                      disk_bus\u003dconstants.CTRL_TYPE_SCSI):"},{"line_number":63,"context_line":"        LOG.debug(\"Attaching volume: %(connection_info)s to %(instance_name)s\","},{"line_number":64,"context_line":"                  {\u0027connection_info\u0027: connection_info,"},{"line_number":65,"context_line":"                   \u0027instance_name\u0027: instance_name})"},{"line_number":66,"context_line":"        volume_driver \u003d self._get_volume_driver(connection_info)"},{"line_number":67,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"5a8bc5a2_eb0a5989","line":64,"range":{"start_line":64,"start_character":38,"end_line":64,"end_character":53},"in_reply_to":"5a8bc5a2_1079a8f6","updated":"2016-09-26 12:52:01.000000000","message":"Makes sense.","commit_id":"9d21b2ef07e70c922568616e54dc2cebb84210bf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8ba212f9d2a3aa26d4fb542db2077dbf361ca14c","unresolved":false,"context_lines":[{"line_number":71,"context_line":"                                        disk_bus)"},{"line_number":72,"context_line":"        except Exception:"},{"line_number":73,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":74,"context_line":"                LOG.error(_LE(\u0027Unable to attach volume to instance %s\u0027),"},{"line_number":75,"context_line":"                          instance_name)"},{"line_number":76,"context_line":"                volume_driver.disconnect_volume(connection_info)"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"5a8bc5a2_b05e3474","line":74,"updated":"2016-09-23 21:33:19.000000000","message":"Throw the volume id or something in here for context.","commit_id":"9d21b2ef07e70c922568616e54dc2cebb84210bf"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"b63a23395b70c6f6530f9c7a90ada1c56dccd747","unresolved":false,"context_lines":[{"line_number":71,"context_line":"                                        disk_bus)"},{"line_number":72,"context_line":"        except Exception:"},{"line_number":73,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":74,"context_line":"                LOG.error(_LE(\u0027Unable to attach volume to instance %s\u0027),"},{"line_number":75,"context_line":"                          instance_name)"},{"line_number":76,"context_line":"                volume_driver.disconnect_volume(connection_info)"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"5a8bc5a2_46cc246a","line":74,"in_reply_to":"5a8bc5a2_b05e3474","updated":"2016-09-26 12:52:01.000000000","message":"I guess we can stick to logging the connection_info dict.","commit_id":"9d21b2ef07e70c922568616e54dc2cebb84210bf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8ba212f9d2a3aa26d4fb542db2077dbf361ca14c","unresolved":false,"context_lines":[{"line_number":87,"context_line":"    def detach_volume(self, connection_info, instance_name):"},{"line_number":88,"context_line":"        LOG.debug(\"Detaching volume: %(connection_info)s \""},{"line_number":89,"context_line":"                  \"from %(instance_name)s\","},{"line_number":90,"context_line":"                  {\u0027connection_info\u0027: connection_info,"},{"line_number":91,"context_line":"                   \u0027instance_name\u0027: instance_name})"},{"line_number":92,"context_line":"        volume_driver \u003d self._get_volume_driver(connection_info)"},{"line_number":93,"context_line":"        volume_driver.detach_volume(connection_info, instance_name)"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a8bc5a2_f050bc60","line":90,"range":{"start_line":90,"start_character":38,"end_line":90,"end_character":53},"updated":"2016-09-23 21:33:19.000000000","message":"same as above","commit_id":"9d21b2ef07e70c922568616e54dc2cebb84210bf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8ba212f9d2a3aa26d4fb542db2077dbf361ca14c","unresolved":false,"context_lines":[{"line_number":117,"context_line":"            root_helper\u003dNone,"},{"line_number":118,"context_line":"            my_ip\u003dCONF.my_block_storage_ip,"},{"line_number":119,"context_line":"            multipath\u003dCONF.hyperv.use_multipath_io,"},{"line_number":120,"context_line":"            enforce_multipath\u003dTrue,"},{"line_number":121,"context_line":"            host\u003dCONF.host)"},{"line_number":122,"context_line":"        return conn"},{"line_number":123,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"5a8bc5a2_304b04b2","line":120,"range":{"start_line":120,"start_character":12,"end_line":120,"end_character":34},"updated":"2016-09-23 21:33:19.000000000","message":"What does this do? Does it make multipath required?","commit_id":"9d21b2ef07e70c922568616e54dc2cebb84210bf"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"b63a23395b70c6f6530f9c7a90ada1c56dccd747","unresolved":false,"context_lines":[{"line_number":117,"context_line":"            root_helper\u003dNone,"},{"line_number":118,"context_line":"            my_ip\u003dCONF.my_block_storage_ip,"},{"line_number":119,"context_line":"            multipath\u003dCONF.hyperv.use_multipath_io,"},{"line_number":120,"context_line":"            enforce_multipath\u003dTrue,"},{"line_number":121,"context_line":"            host\u003dCONF.host)"},{"line_number":122,"context_line":"        return conn"},{"line_number":123,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"5a8bc5a2_4bb26d95","line":120,"range":{"start_line":120,"start_character":12,"end_line":120,"end_character":34},"in_reply_to":"5a8bc5a2_304b04b2","updated":"2016-09-26 12:52:01.000000000","message":"The name may be a bit misleading, but that will ensure that an exception is raised if multipath is requested but not supported by the host.","commit_id":"9d21b2ef07e70c922568616e54dc2cebb84210bf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8ba212f9d2a3aa26d4fb542db2077dbf361ca14c","unresolved":false,"context_lines":[{"line_number":275,"context_line":"        super(SMBFSVolumeDriver, self).disconnect_volume(*args, **kwargs)"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"class FCVolumeDriver(BaseVolumeDriver):"},{"line_number":279,"context_line":"    _is_block_dev \u003d True"},{"line_number":280,"context_line":"    _protocol \u003d \u0027fibre_channel\u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a8bc5a2_50197087","line":278,"range":{"start_line":278,"start_character":6,"end_line":278,"end_character":20},"updated":"2016-09-23 21:33:19.000000000","message":"Not unit tests for this guy?","commit_id":"9d21b2ef07e70c922568616e54dc2cebb84210bf"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"b63a23395b70c6f6530f9c7a90ada1c56dccd747","unresolved":false,"context_lines":[{"line_number":275,"context_line":"        super(SMBFSVolumeDriver, self).disconnect_volume(*args, **kwargs)"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"class FCVolumeDriver(BaseVolumeDriver):"},{"line_number":279,"context_line":"    _is_block_dev \u003d True"},{"line_number":280,"context_line":"    _protocol \u003d \u0027fibre_channel\u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a8bc5a2_cb191d8a","line":278,"range":{"start_line":278,"start_character":6,"end_line":278,"end_character":20},"in_reply_to":"5a8bc5a2_50197087","updated":"2016-09-26 12:52:01.000000000","message":"Not much to test here. Maybe we could make some assertions on the overridden attributes.","commit_id":"9d21b2ef07e70c922568616e54dc2cebb84210bf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"53bd96b845ce3763c518f3a5a563e5a7c7c76e7a","unresolved":false,"context_lines":[{"line_number":192,"context_line":"                          \"iSCSI authentication method: %(auth_method)s.\"),"},{"line_number":193,"context_line":"                      {\u0027target_iqn\u0027: target_iqn,"},{"line_number":194,"context_line":"                       \u0027auth_method\u0027: auth_method})"},{"line_number":195,"context_line":"            raise exception.UnsupportedBDMVolumeAuthMethod("},{"line_number":196,"context_line":"                auth_method\u003dauth_method)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"        # Check if we already logged in"}],"source_content_type":"text/x-python","patch_set":15,"id":"9a629dbe_9226c5cc","side":"PARENT","line":195,"range":{"start_line":195,"start_character":28,"end_line":195,"end_character":58},"updated":"2016-11-08 16:50:32.000000000","message":"Here is an example of where we used to raise a nova-specific exception but now we\u0027re going to be leaking up library-specific exceptions to the compute manager.","commit_id":"5158ca7dcffd583dc8dd7c29b0a9a595d7de7dcf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"53bd96b845ce3763c518f3a5a563e5a7c7c76e7a","unresolved":false,"context_lines":[{"line_number":401,"context_line":"            LOG.exception(_LE(\u0027Attach volume failed to %(instance_name)s: \u0027"},{"line_number":402,"context_line":"                              \u0027%(exn)s\u0027), {\u0027instance_name\u0027: instance_name,"},{"line_number":403,"context_line":"                                           \u0027exn\u0027: exn})"},{"line_number":404,"context_line":"            raise exception.VolumeAttachFailed("},{"line_number":405,"context_line":"                volume_id\u003dconnection_info[\u0027data\u0027][\u0027volume_id\u0027],"},{"line_number":406,"context_line":"                reason\u003dexn.message)"},{"line_number":407,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"9a629dbe_6d0dd436","side":"PARENT","line":404,"range":{"start_line":404,"start_character":28,"end_line":404,"end_character":46},"updated":"2016-11-08 16:50:32.000000000","message":"Similar complaint here, we\u0027ve gone from raising nova-specific exceptions to library-specific exceptions.","commit_id":"5158ca7dcffd583dc8dd7c29b0a9a595d7de7dcf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"53bd96b845ce3763c518f3a5a563e5a7c7c76e7a","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        self.volume_drivers \u003d {\u0027smbfs\u0027: SMBFSVolumeDriver(),"},{"line_number":49,"context_line":"                               \u0027iscsi\u0027: ISCSIVolumeDriver(),"},{"line_number":50,"context_line":"                               \u0027fibre_channel\u0027: FCVolumeDriver()}"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def _get_volume_driver(self, connection_info):"},{"line_number":53,"context_line":"        driver_type \u003d connection_info.get(\u0027driver_volume_type\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"9a629dbe_f2baa109","line":50,"range":{"start_line":50,"start_character":32,"end_line":50,"end_character":45},"updated":"2016-11-08 16:50:32.000000000","message":"nit: you have a constants module for hyper-v, you could store these keys there as they are also used in the volume drivers. That could also happen in a later cleanup patch.","commit_id":"ff5c54c761cb9728a27f6c6192a6e414d5b19934"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"f55310da8b29c9d6045a86feb396c7bb090f7ae8","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        self.volume_drivers \u003d {\u0027smbfs\u0027: SMBFSVolumeDriver(),"},{"line_number":49,"context_line":"                               \u0027iscsi\u0027: ISCSIVolumeDriver(),"},{"line_number":50,"context_line":"                               \u0027fibre_channel\u0027: FCVolumeDriver()}"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def _get_volume_driver(self, connection_info):"},{"line_number":53,"context_line":"        driver_type \u003d connection_info.get(\u0027driver_volume_type\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"9a629dbe_edff24a8","line":50,"range":{"start_line":50,"start_character":32,"end_line":50,"end_character":45},"in_reply_to":"9a629dbe_f2baa109","updated":"2016-11-09 09:49:35.000000000","message":"Makes sense.","commit_id":"ff5c54c761cb9728a27f6c6192a6e414d5b19934"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"53bd96b845ce3763c518f3a5a563e5a7c7c76e7a","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            if qos_specs:"},{"line_number":77,"context_line":"                volume_driver.set_disk_qos_specs(connection_info,"},{"line_number":78,"context_line":"                                                 qos_specs)"},{"line_number":79,"context_line":"        except Exception:"},{"line_number":80,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":81,"context_line":"                LOG.error("},{"line_number":82,"context_line":"                    _LE(\"Unable to attach volume %(connection_info)s \""}],"source_content_type":"text/x-python","patch_set":15,"id":"9a629dbe_92b16592","line":79,"updated":"2016-11-08 16:50:32.000000000","message":"Seems we should handle something more specific here.","commit_id":"ff5c54c761cb9728a27f6c6192a6e414d5b19934"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"f55310da8b29c9d6045a86feb396c7bb090f7ae8","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            if qos_specs:"},{"line_number":77,"context_line":"                volume_driver.set_disk_qos_specs(connection_info,"},{"line_number":78,"context_line":"                                                 qos_specs)"},{"line_number":79,"context_line":"        except Exception:"},{"line_number":80,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":81,"context_line":"                LOG.error("},{"line_number":82,"context_line":"                    _LE(\"Unable to attach volume %(connection_info)s \""}],"source_content_type":"text/x-python","patch_set":15,"id":"9a629dbe_1172b2ad","line":79,"in_reply_to":"9a629dbe_92b16592","updated":"2016-11-09 09:49:35.000000000","message":"I wanted to make sure that if this fails for whatever reason, we\u0027re always disconnecting the volume.","commit_id":"ff5c54c761cb9728a27f6c6192a6e414d5b19934"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"53bd96b845ce3763c518f3a5a563e5a7c7c76e7a","unresolved":false,"context_lines":[{"line_number":77,"context_line":"                volume_driver.set_disk_qos_specs(connection_info,"},{"line_number":78,"context_line":"                                                 qos_specs)"},{"line_number":79,"context_line":"        except Exception:"},{"line_number":80,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":81,"context_line":"                LOG.error("},{"line_number":82,"context_line":"                    _LE(\"Unable to attach volume %(connection_info)s \""},{"line_number":83,"context_line":"                        \"to instance %(instance_name)s.\"),"}],"source_content_type":"text/x-python","patch_set":15,"id":"9a629dbe_324ed996","line":80,"updated":"2016-11-08 16:50:32.000000000","message":"I think this was probably a problem with the existing code, but it looks like we\u0027re probably leaking os-brick and/or os-win exceptions up out of this code. We should really be trapping and converting library-specific exceptions to nova-specific exceptions because that\u0027s what the compute manager is going to be handling, if anything.","commit_id":"ff5c54c761cb9728a27f6c6192a6e414d5b19934"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"40f2c2d4e7212667b634ae6e47220b89ded5cfc9","unresolved":false,"context_lines":[{"line_number":77,"context_line":"                volume_driver.set_disk_qos_specs(connection_info,"},{"line_number":78,"context_line":"                                                 qos_specs)"},{"line_number":79,"context_line":"        except Exception:"},{"line_number":80,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":81,"context_line":"                LOG.error("},{"line_number":82,"context_line":"                    _LE(\"Unable to attach volume %(connection_info)s \""},{"line_number":83,"context_line":"                        \"to instance %(instance_name)s.\"),"}],"source_content_type":"text/x-python","patch_set":15,"id":"9a629dbe_5acd1f5c","line":80,"in_reply_to":"9a629dbe_1471c0e0","updated":"2016-11-08 18:23:34.000000000","message":"I agree with that, I was just addressing the os-win part. :)\n\nBut now that I think about it, are os-brick exceptions handled in any way in the libvirt driver? I haven\u0027t checked yet.","commit_id":"ff5c54c761cb9728a27f6c6192a6e414d5b19934"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"f55310da8b29c9d6045a86feb396c7bb090f7ae8","unresolved":false,"context_lines":[{"line_number":77,"context_line":"                volume_driver.set_disk_qos_specs(connection_info,"},{"line_number":78,"context_line":"                                                 qos_specs)"},{"line_number":79,"context_line":"        except Exception:"},{"line_number":80,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":81,"context_line":"                LOG.error("},{"line_number":82,"context_line":"                    _LE(\"Unable to attach volume %(connection_info)s \""},{"line_number":83,"context_line":"                        \"to instance %(instance_name)s.\"),"}],"source_content_type":"text/x-python","patch_set":15,"id":"9a629dbe_170d4237","line":80,"in_reply_to":"9a629dbe_1471c0e0","updated":"2016-11-09 09:49:35.000000000","message":"Makes sense. I\u0027m going to make sure we\u0027re raising a Nova exception here.","commit_id":"ff5c54c761cb9728a27f6c6192a6e414d5b19934"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"fefbc7827284116604956fcb444ad6196debd0b4","unresolved":false,"context_lines":[{"line_number":77,"context_line":"                volume_driver.set_disk_qos_specs(connection_info,"},{"line_number":78,"context_line":"                                                 qos_specs)"},{"line_number":79,"context_line":"        except Exception:"},{"line_number":80,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":81,"context_line":"                LOG.error("},{"line_number":82,"context_line":"                    _LE(\"Unable to attach volume %(connection_info)s \""},{"line_number":83,"context_line":"                        \"to instance %(instance_name)s.\"),"}],"source_content_type":"text/x-python","patch_set":15,"id":"9a629dbe_b1602637","line":80,"in_reply_to":"9a629dbe_324ed996","updated":"2016-11-08 17:16:44.000000000","message":"os-win exceptions are already caught and converted at the HyperVDriver level.","commit_id":"ff5c54c761cb9728a27f6c6192a6e414d5b19934"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"dce5cedb29074c2f38358018c30404a1b6123051","unresolved":false,"context_lines":[{"line_number":77,"context_line":"                volume_driver.set_disk_qos_specs(connection_info,"},{"line_number":78,"context_line":"                                                 qos_specs)"},{"line_number":79,"context_line":"        except Exception:"},{"line_number":80,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":81,"context_line":"                LOG.error("},{"line_number":82,"context_line":"                    _LE(\"Unable to attach volume %(connection_info)s \""},{"line_number":83,"context_line":"                        \"to instance %(instance_name)s.\"),"}],"source_content_type":"text/x-python","patch_set":15,"id":"9a629dbe_1471c0e0","line":80,"in_reply_to":"9a629dbe_b1602637","updated":"2016-11-08 17:48:03.000000000","message":"OK, but os-brick exceptions aren\u0027t.","commit_id":"ff5c54c761cb9728a27f6c6192a6e414d5b19934"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"53bd96b845ce3763c518f3a5a563e5a7c7c76e7a","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                     \u0027instance_name\u0027: instance_name})"},{"line_number":87,"context_line":"                volume_driver.disconnect_volume(connection_info)"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    def disconnect_volumes(self, block_device_info):"},{"line_number":90,"context_line":"        mapping \u003d driver.block_device_info_get_mapping(block_device_info)"},{"line_number":91,"context_line":"        for vol in mapping:"},{"line_number":92,"context_line":"            self.disconnect_volume(vol[\u0027connection_info\u0027])"}],"source_content_type":"text/x-python","patch_set":15,"id":"9a629dbe_32641948","line":89,"range":{"start_line":89,"start_character":8,"end_line":89,"end_character":26},"updated":"2016-11-08 16:50:32.000000000","message":"Moving the methods around really clutters up the diff on this review. It\u0027s one thing to remove unused methods, but in this case the old side and new side of the diff have a disconnect_volumes method, you just changed how it works, but also moved it - which makes it look new in the diff. This isn\u0027t a huge deal, but it really makes reviewing this harder, which is detrimental when you want to get more core reviewers to look at this and get it in as fast as possible. There are several cases of this in this change, including renaming methods - maybe those are needed, or maybe they are just itches you wanted to scratch, but those could arguably be done in a later cleanup/refactor patch that doesn\u0027t have functional changes in it.","commit_id":"ff5c54c761cb9728a27f6c6192a6e414d5b19934"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"f55310da8b29c9d6045a86feb396c7bb090f7ae8","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                     \u0027instance_name\u0027: instance_name})"},{"line_number":87,"context_line":"                volume_driver.disconnect_volume(connection_info)"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    def disconnect_volumes(self, block_device_info):"},{"line_number":90,"context_line":"        mapping \u003d driver.block_device_info_get_mapping(block_device_info)"},{"line_number":91,"context_line":"        for vol in mapping:"},{"line_number":92,"context_line":"            self.disconnect_volume(vol[\u0027connection_info\u0027])"}],"source_content_type":"text/x-python","patch_set":15,"id":"9a629dbe_37b16690","line":89,"range":{"start_line":89,"start_character":8,"end_line":89,"end_character":26},"in_reply_to":"9a629dbe_32641948","updated":"2016-11-09 09:49:35.000000000","message":"I agree on the moved methods.\n\nThe idea is that I\u0027ve ended up refactoring this module and tried to get it as clean as possible, even if this means doing some changes that seem quite unrelated at first.","commit_id":"ff5c54c761cb9728a27f6c6192a6e414d5b19934"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"53bd96b845ce3763c518f3a5a563e5a7c7c76e7a","unresolved":false,"context_lines":[{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    def get_volume_connector(self):"},{"line_number":128,"context_line":"        conn \u003d connector.get_connector_properties("},{"line_number":129,"context_line":"            root_helper\u003dNone,"},{"line_number":130,"context_line":"            my_ip\u003dCONF.my_block_storage_ip,"},{"line_number":131,"context_line":"            multipath\u003dCONF.hyperv.use_multipath_io,"},{"line_number":132,"context_line":"            enforce_multipath\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":15,"id":"9a629dbe_72a931df","line":129,"range":{"start_line":129,"start_character":24,"end_line":129,"end_character":28},"updated":"2016-11-08 16:50:32.000000000","message":"Why is this None? The nova root helper is passed in here in the case of the libvirt driver:\n\nhttps://github.com/openstack/nova/blob/a6053dd608a96ae57521a74b0d6f0f24d7efe75c/nova/virt/libvirt/driver.py#L1057\n\nI believe that was needed because the nova root helper has the compute.filters rootwrap config which os-brick needs to run commands as root.","commit_id":"ff5c54c761cb9728a27f6c6192a6e414d5b19934"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"dce5cedb29074c2f38358018c30404a1b6123051","unresolved":false,"context_lines":[{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    def get_volume_connector(self):"},{"line_number":128,"context_line":"        conn \u003d connector.get_connector_properties("},{"line_number":129,"context_line":"            root_helper\u003dNone,"},{"line_number":130,"context_line":"            my_ip\u003dCONF.my_block_storage_ip,"},{"line_number":131,"context_line":"            multipath\u003dCONF.hyperv.use_multipath_io,"},{"line_number":132,"context_line":"            enforce_multipath\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":15,"id":"9a629dbe_947dd0b3","line":129,"range":{"start_line":129,"start_character":24,"end_line":129,"end_character":28},"in_reply_to":"9a629dbe_72a931df","updated":"2016-11-08 17:48:03.000000000","message":"Apparently the root_helper isn\u0027t used in the os-brick windows connectors, it\u0027s just there to maintain the signature.\n\nIf you respin please add a comment explaining that.","commit_id":"ff5c54c761cb9728a27f6c6192a6e414d5b19934"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"f55310da8b29c9d6045a86feb396c7bb090f7ae8","unresolved":false,"context_lines":[{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    def get_volume_connector(self):"},{"line_number":128,"context_line":"        conn \u003d connector.get_connector_properties("},{"line_number":129,"context_line":"            root_helper\u003dNone,"},{"line_number":130,"context_line":"            my_ip\u003dCONF.my_block_storage_ip,"},{"line_number":131,"context_line":"            multipath\u003dCONF.hyperv.use_multipath_io,"},{"line_number":132,"context_line":"            enforce_multipath\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":15,"id":"9a629dbe_77abde1d","line":129,"range":{"start_line":129,"start_character":24,"end_line":129,"end_character":28},"in_reply_to":"9a629dbe_947dd0b3","updated":"2016-11-09 09:49:35.000000000","message":"Sure.","commit_id":"ff5c54c761cb9728a27f6c6192a6e414d5b19934"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"53bd96b845ce3763c518f3a5a563e5a7c7c76e7a","unresolved":false,"context_lines":[{"line_number":161,"context_line":"        # as IOPS allocation units."},{"line_number":162,"context_line":"        return ("},{"line_number":163,"context_line":"            (no_bytes + constants.IOPS_BASE_SIZE - 1) //"},{"line_number":164,"context_line":"             constants.IOPS_BASE_SIZE)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    @staticmethod"},{"line_number":167,"context_line":"    def validate_qos_specs(qos_specs, supported_qos_specs):"}],"source_content_type":"text/x-python","patch_set":15,"id":"9a629dbe_f2f8e14b","line":164,"updated":"2016-11-08 16:50:32.000000000","message":"unrelated cleanup","commit_id":"ff5c54c761cb9728a27f6c6192a6e414d5b19934"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"f55310da8b29c9d6045a86feb396c7bb090f7ae8","unresolved":false,"context_lines":[{"line_number":161,"context_line":"        # as IOPS allocation units."},{"line_number":162,"context_line":"        return ("},{"line_number":163,"context_line":"            (no_bytes + constants.IOPS_BASE_SIZE - 1) //"},{"line_number":164,"context_line":"             constants.IOPS_BASE_SIZE)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    @staticmethod"},{"line_number":167,"context_line":"    def validate_qos_specs(qos_specs, supported_qos_specs):"}],"source_content_type":"text/x-python","patch_set":15,"id":"9a629dbe_977dd2b3","line":164,"in_reply_to":"9a629dbe_f2f8e14b","updated":"2016-11-09 09:49:35.000000000","message":"Done","commit_id":"ff5c54c761cb9728a27f6c6192a6e414d5b19934"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"53bd96b845ce3763c518f3a5a563e5a7c7c76e7a","unresolved":false,"context_lines":[{"line_number":191,"context_line":"        if not self._conn:"},{"line_number":192,"context_line":"            self._conn \u003d connector.InitiatorConnector.factory("},{"line_number":193,"context_line":"                protocol\u003dself._protocol,"},{"line_number":194,"context_line":"                root_helper\u003dNone,"},{"line_number":195,"context_line":"                use_multipath\u003dCONF.hyperv.use_multipath_io,"},{"line_number":196,"context_line":"                **self._extra_connector_args)"},{"line_number":197,"context_line":"        return self._conn"}],"source_content_type":"text/x-python","patch_set":15,"id":"9a629dbe_f251c1d9","line":194,"range":{"start_line":194,"start_character":28,"end_line":194,"end_character":32},"updated":"2016-11-08 16:50:32.000000000","message":"same question here about the root helper","commit_id":"ff5c54c761cb9728a27f6c6192a6e414d5b19934"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"53bd96b845ce3763c518f3a5a563e5a7c7c76e7a","unresolved":false,"context_lines":[{"line_number":305,"context_line":"    def attach_volume(self, *args, **kwargs):"},{"line_number":306,"context_line":"        super(SMBFSVolumeDriver, self).attach_volume(*args, **kwargs)"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"    @export_path_synchronized"},{"line_number":309,"context_line":"    def disconnect_volume(self, *args, **kwargs):"},{"line_number":310,"context_line":"        # We synchronize those operations based on the share path in order to"},{"line_number":311,"context_line":"        # avoid the situation when a SMB share is unmounted while a volume"}],"source_content_type":"text/x-python","patch_set":15,"id":"9a629dbe_520d0d8f","line":308,"updated":"2016-11-08 16:50:32.000000000","message":"This seems like an unrelated fix to the os-brick change...","commit_id":"ff5c54c761cb9728a27f6c6192a6e414d5b19934"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"f55310da8b29c9d6045a86feb396c7bb090f7ae8","unresolved":false,"context_lines":[{"line_number":305,"context_line":"    def attach_volume(self, *args, **kwargs):"},{"line_number":306,"context_line":"        super(SMBFSVolumeDriver, self).attach_volume(*args, **kwargs)"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"    @export_path_synchronized"},{"line_number":309,"context_line":"    def disconnect_volume(self, *args, **kwargs):"},{"line_number":310,"context_line":"        # We synchronize those operations based on the share path in order to"},{"line_number":311,"context_line":"        # avoid the situation when a SMB share is unmounted while a volume"}],"source_content_type":"text/x-python","patch_set":15,"id":"9a629dbe_291c9011","line":308,"in_reply_to":"9a629dbe_520d0d8f","updated":"2016-11-09 09:49:35.000000000","message":"Not really, attach_volume/_unmount_smb_share were already synchronized based on the share location.","commit_id":"ff5c54c761cb9728a27f6c6192a6e414d5b19934"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a9ef02ee4b867ce66be0e6bf96d1d129394b360b","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def attach_volume(self, connection_info, instance_name,"},{"line_number":67,"context_line":"                      disk_bus\u003dconstants.CTRL_TYPE_SCSI):"},{"line_number":68,"context_line":"        tries_left \u003d CONF.hyperv.volume_attach_retry_count + 1"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        while tries_left:"},{"line_number":71,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a629dbe_e4dee8db","line":68,"updated":"2016-11-10 22:16:04.000000000","message":"This doesn\u0027t seem to be related to the os-brick integration...or at least it\u0027s being used differently now...","commit_id":"ee6d2a4cc2efa2f4334bdfb2676203cdddc29429"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"3e78b39d3fefca5159d61349860b109444dae0d9","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def attach_volume(self, connection_info, instance_name,"},{"line_number":67,"context_line":"                      disk_bus\u003dconstants.CTRL_TYPE_SCSI):"},{"line_number":68,"context_line":"        tries_left \u003d CONF.hyperv.volume_attach_retry_count + 1"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        while tries_left:"},{"line_number":71,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a629dbe_5853f438","line":68,"in_reply_to":"9a629dbe_e4dee8db","updated":"2016-11-10 22:58:10.000000000","message":"So, we\u0027ve decided to keep those config options as those could still be useful, although slightly changing the semantics.\n\nBefore, we had two config options setting retry counts, both used when fetching iSCSI disk paths and a bit too tied to the implementation. Now mounted_disk_query_retry_count is passed to os-brick and used as the number of rescans.","commit_id":"ee6d2a4cc2efa2f4334bdfb2676203cdddc29429"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a9ef02ee4b867ce66be0e6bf96d1d129394b360b","unresolved":false,"context_lines":[{"line_number":67,"context_line":"                      disk_bus\u003dconstants.CTRL_TYPE_SCSI):"},{"line_number":68,"context_line":"        tries_left \u003d CONF.hyperv.volume_attach_retry_count + 1"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        while tries_left:"},{"line_number":71,"context_line":"            try:"},{"line_number":72,"context_line":"                self._attach_volume(connection_info,"},{"line_number":73,"context_line":"                                    instance_name,"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a629dbe_24770003","line":70,"updated":"2016-11-10 22:16:04.000000000","message":"nit: I\u0027m sure have some kind of retry looping call type thing in oslo libs somewhere, might be cleaner to use something like one of those, but it\u0027s not a big deal.","commit_id":"ee6d2a4cc2efa2f4334bdfb2676203cdddc29429"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a9ef02ee4b867ce66be0e6bf96d1d129394b360b","unresolved":false,"context_lines":[{"line_number":75,"context_line":"                break"},{"line_number":76,"context_line":"            except Exception as ex:"},{"line_number":77,"context_line":"                tries_left -\u003d 1"},{"line_number":78,"context_line":"                LOG.exception("},{"line_number":79,"context_line":"                    _LE(\"Failed to attach volume %(connection_info)s \""},{"line_number":80,"context_line":"                        \"to instance %(instance_name)s. \""},{"line_number":81,"context_line":"                        \"Tries left: %(tries_left)s.\"),"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a629dbe_04011c38","line":78,"range":{"start_line":78,"start_character":20,"end_line":78,"end_character":29},"updated":"2016-11-10 22:16:04.000000000","message":"I\u0027m not totally sure if we should be logging this at error level and stacktracing, should an operator get paged for this? Warning might be more appropriate.","commit_id":"ee6d2a4cc2efa2f4334bdfb2676203cdddc29429"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"3e78b39d3fefca5159d61349860b109444dae0d9","unresolved":false,"context_lines":[{"line_number":75,"context_line":"                break"},{"line_number":76,"context_line":"            except Exception as ex:"},{"line_number":77,"context_line":"                tries_left -\u003d 1"},{"line_number":78,"context_line":"                LOG.exception("},{"line_number":79,"context_line":"                    _LE(\"Failed to attach volume %(connection_info)s \""},{"line_number":80,"context_line":"                        \"to instance %(instance_name)s. \""},{"line_number":81,"context_line":"                        \"Tries left: %(tries_left)s.\"),"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a629dbe_bb088a29","line":78,"range":{"start_line":78,"start_character":20,"end_line":78,"end_character":29},"in_reply_to":"9a629dbe_04011c38","updated":"2016-11-10 22:58:10.000000000","message":"Thought about this but wanted to have the original trace being logged as it may be useful for debugging. I guess we could have a warning and log the full trace only if this fails after the last attempt.","commit_id":"ee6d2a4cc2efa2f4334bdfb2676203cdddc29429"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d3f475b2ac258457e81c39551b748b46a9e3cefb","unresolved":false,"context_lines":[{"line_number":75,"context_line":"                break"},{"line_number":76,"context_line":"            except Exception as ex:"},{"line_number":77,"context_line":"                tries_left -\u003d 1"},{"line_number":78,"context_line":"                LOG.exception("},{"line_number":79,"context_line":"                    _LE(\"Failed to attach volume %(connection_info)s \""},{"line_number":80,"context_line":"                        \"to instance %(instance_name)s. \""},{"line_number":81,"context_line":"                        \"Tries left: %(tries_left)s.\"),"}],"source_content_type":"text/x-python","patch_set":18,"id":"7a77a97e_484b8fc9","line":78,"range":{"start_line":78,"start_character":20,"end_line":78,"end_character":29},"in_reply_to":"9a629dbe_bb088a29","updated":"2016-11-16 14:16:27.000000000","message":"Yeah we definitely don\u0027t want to be logging error stacktraces in a loop which might end up succeeding.","commit_id":"ee6d2a4cc2efa2f4334bdfb2676203cdddc29429"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a9ef02ee4b867ce66be0e6bf96d1d129394b360b","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                    self.disconnect_volume(connection_info)"},{"line_number":89,"context_line":"                    raise exception.VolumeAttachFailed("},{"line_number":90,"context_line":"                        volume_id\u003dconnection_info[\u0027serial\u0027],"},{"line_number":91,"context_line":"                        reason\u003dex)"},{"line_number":92,"context_line":"                else:"},{"line_number":93,"context_line":"                    time.sleep(CONF.hyperv.volume_attach_retry_interval)"},{"line_number":94,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"9a629dbe_6498181d","line":91,"range":{"start_line":91,"start_character":31,"end_line":91,"end_character":33},"updated":"2016-11-10 22:16:04.000000000","message":"Hmm, not sure if this should be wrapped in six.text_type(ex) first.","commit_id":"ee6d2a4cc2efa2f4334bdfb2676203cdddc29429"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"3e78b39d3fefca5159d61349860b109444dae0d9","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                    self.disconnect_volume(connection_info)"},{"line_number":89,"context_line":"                    raise exception.VolumeAttachFailed("},{"line_number":90,"context_line":"                        volume_id\u003dconnection_info[\u0027serial\u0027],"},{"line_number":91,"context_line":"                        reason\u003dex)"},{"line_number":92,"context_line":"                else:"},{"line_number":93,"context_line":"                    time.sleep(CONF.hyperv.volume_attach_retry_interval)"},{"line_number":94,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"9a629dbe_5b468e4f","line":91,"range":{"start_line":91,"start_character":31,"end_line":91,"end_character":33},"in_reply_to":"9a629dbe_6498181d","updated":"2016-11-10 22:58:10.000000000","message":"Well, this will be converted to a string anyway during formatting so I guess it should be safe.","commit_id":"ee6d2a4cc2efa2f4334bdfb2676203cdddc29429"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a9ef02ee4b867ce66be0e6bf96d1d129394b360b","unresolved":false,"context_lines":[{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    def get_volume_connector(self):"},{"line_number":145,"context_line":"        conn \u003d connector.get_connector_properties("},{"line_number":146,"context_line":"            root_helper\u003dNone,"},{"line_number":147,"context_line":"            my_ip\u003dCONF.my_block_storage_ip,"},{"line_number":148,"context_line":"            multipath\u003dCONF.hyperv.use_multipath_io,"},{"line_number":149,"context_line":"            enforce_multipath\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a629dbe_249380fb","line":146,"range":{"start_line":146,"start_character":12,"end_line":146,"end_character":28},"updated":"2016-11-10 22:16:04.000000000","message":"Please add a comment in here about why this is None.","commit_id":"ee6d2a4cc2efa2f4334bdfb2676203cdddc29429"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"3e78b39d3fefca5159d61349860b109444dae0d9","unresolved":false,"context_lines":[{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    def get_volume_connector(self):"},{"line_number":145,"context_line":"        conn \u003d connector.get_connector_properties("},{"line_number":146,"context_line":"            root_helper\u003dNone,"},{"line_number":147,"context_line":"            my_ip\u003dCONF.my_block_storage_ip,"},{"line_number":148,"context_line":"            multipath\u003dCONF.hyperv.use_multipath_io,"},{"line_number":149,"context_line":"            enforce_multipath\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a629dbe_5b8bee67","line":146,"range":{"start_line":146,"start_character":12,"end_line":146,"end_character":28},"in_reply_to":"9a629dbe_249380fb","updated":"2016-11-10 22:58:10.000000000","message":"Missed that, sure.","commit_id":"ee6d2a4cc2efa2f4334bdfb2676203cdddc29429"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"de37bc48c8b3ad9a7d39c07fd55ec9c005eb08e8","unresolved":false,"context_lines":[{"line_number":149,"context_line":"                                                actual_disk_path)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    def get_volume_connector(self):"},{"line_number":152,"context_line":"        # Note(lpetrut): the Windows os-brick connectors"},{"line_number":153,"context_line":"        # do not use a root helper."},{"line_number":154,"context_line":"        conn \u003d connector.get_connector_properties("},{"line_number":155,"context_line":"            root_helper\u003dNone,"}],"source_content_type":"text/x-python","patch_set":19,"id":"7a77a97e_285bb355","line":152,"range":{"start_line":152,"start_character":10,"end_line":152,"end_character":14},"updated":"2016-11-16 14:22:29.000000000","message":"nit: s/Note/NOTE/","commit_id":"4823faeeb9ed5fab237ac3518625a0c09f261c7b"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"bc818d4f455d0d5ca8b1e5f9ffac097079c5da44","unresolved":false,"context_lines":[{"line_number":149,"context_line":"                                                actual_disk_path)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    def get_volume_connector(self):"},{"line_number":152,"context_line":"        # Note(lpetrut): the Windows os-brick connectors"},{"line_number":153,"context_line":"        # do not use a root helper."},{"line_number":154,"context_line":"        conn \u003d connector.get_connector_properties("},{"line_number":155,"context_line":"            root_helper\u003dNone,"}],"source_content_type":"text/x-python","patch_set":19,"id":"7a77a97e_57224a01","line":152,"range":{"start_line":152,"start_character":10,"end_line":152,"end_character":14},"in_reply_to":"7a77a97e_285bb355","updated":"2016-11-16 15:37:03.000000000","message":"Done","commit_id":"4823faeeb9ed5fab237ac3518625a0c09f261c7b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fbcb5309f68286283e33948f85ef41844da6331f","unresolved":false,"context_lines":[{"line_number":310,"context_line":"class ISCSIVolumeDriver(BaseVolumeDriver):"},{"line_number":311,"context_line":"    _is_block_dev \u003d True"},{"line_number":312,"context_line":"    _protocol \u003d constants.STORAGE_PROTOCOL_ISCSI"},{"line_number":313,"context_line":"    _extra_connector_args \u003d dict("},{"line_number":314,"context_line":"        initiator_list\u003dCONF.hyperv.iscsi_initiator_list)"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"class SMBFSVolumeDriver(BaseVolumeDriver):"}],"source_content_type":"text/x-python","patch_set":20,"id":"7a77a97e_8abf1fa9","line":314,"range":{"start_line":313,"start_character":4,"end_line":314,"end_character":56},"updated":"2016-11-17 15:02:46.000000000","message":"To avoid that nasty test with deleting the module and reloading it, couldn\u0027t we move this into an __init__ method?","commit_id":"104c44691d860e6d5e8f710cda527ffd4606712e"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"6fb33a13d1a9ca81c9d5805e46e9c6459d63dce7","unresolved":false,"context_lines":[{"line_number":310,"context_line":"class ISCSIVolumeDriver(BaseVolumeDriver):"},{"line_number":311,"context_line":"    _is_block_dev \u003d True"},{"line_number":312,"context_line":"    _protocol \u003d constants.STORAGE_PROTOCOL_ISCSI"},{"line_number":313,"context_line":"    _extra_connector_args \u003d dict("},{"line_number":314,"context_line":"        initiator_list\u003dCONF.hyperv.iscsi_initiator_list)"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"class SMBFSVolumeDriver(BaseVolumeDriver):"}],"source_content_type":"text/x-python","patch_set":20,"id":"7a77a97e_2412ba09","line":314,"range":{"start_line":313,"start_character":4,"end_line":314,"end_character":56},"in_reply_to":"7a77a97e_8abf1fa9","updated":"2016-11-17 16:31:46.000000000","message":"Sure, that makes sense. I just wanted to have this as clean/easier to read as possible but this sounds like the safest approach.","commit_id":"104c44691d860e6d5e8f710cda527ffd4606712e"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"27a1957ac52b982128bad7e58ec1e558aaf79732","unresolved":false,"context_lines":[{"line_number":78,"context_line":"                if not tries_left:"},{"line_number":79,"context_line":"                    LOG.exception("},{"line_number":80,"context_line":"                        _LE(\"Failed to attach volume %(connection_info)s \""},{"line_number":81,"context_line":"                            \"to instance %(instance_name)s. \"),"},{"line_number":82,"context_line":"                        {\u0027connection_info\u0027: strutils.mask_dict_password("},{"line_number":83,"context_line":"                             connection_info),"},{"line_number":84,"context_line":"                         \u0027instance_name\u0027: instance_name})"}],"source_content_type":"text/x-python","patch_set":21,"id":"7a77a97e_27cd1c31","line":81,"range":{"start_line":81,"start_character":59,"end_line":81,"end_character":60},"updated":"2016-11-18 23:28:26.000000000","message":"super nit: unnecessary space, maybe this part would be copied from line 93.","commit_id":"758a32f7cef6c675b35c04dd8d276c918be188dd"}],"releasenotes/notes/bp-hyperv-use-os-brick-bf576a5bc97f0ea2.yaml":[{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"33663c1c1169eadab172d25df9411c5760d38f4a","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    related operations."},{"line_number":5,"context_line":"features:"},{"line_number":6,"context_line":"  - Attaching volumes over fibre channel on a passthrough"},{"line_number":7,"context_line":"  basis"},{"line_number":8,"context_line":"  - Improved iSCSI MPIO support, by connecting to multiple"},{"line_number":9,"context_line":"  iSCSI targets/portals when available and allowing using"},{"line_number":10,"context_line":"  a predefined list of initiator HBAs"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"5a8bc5a2_d4aecb7f","line":7,"updated":"2016-09-27 17:43:27.000000000","message":"you could end it with a .","commit_id":"21f4f9c120c303b864b2f41c3984904ea4de116a"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"0c2c95db9901ad4ce3221e857440172d8403bb2f","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    related operations."},{"line_number":5,"context_line":"features:"},{"line_number":6,"context_line":"  - Attaching volumes over fibre channel on a passthrough"},{"line_number":7,"context_line":"  basis"},{"line_number":8,"context_line":"  - Improved iSCSI MPIO support, by connecting to multiple"},{"line_number":9,"context_line":"  iSCSI targets/portals when available and allowing using"},{"line_number":10,"context_line":"  a predefined list of initiator HBAs"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"5a8bc5a2_3b9c1369","line":7,"in_reply_to":"5a8bc5a2_d4aecb7f","updated":"2016-09-28 10:18:15.000000000","message":"Done","commit_id":"21f4f9c120c303b864b2f41c3984904ea4de116a"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"33663c1c1169eadab172d25df9411c5760d38f4a","unresolved":false,"context_lines":[{"line_number":7,"context_line":"  basis"},{"line_number":8,"context_line":"  - Improved iSCSI MPIO support, by connecting to multiple"},{"line_number":9,"context_line":"  iSCSI targets/portals when available and allowing using"},{"line_number":10,"context_line":"  a predefined list of initiator HBAs"},{"line_number":11,"context_line":"deprecations:"},{"line_number":12,"context_line":"  - |"},{"line_number":13,"context_line":"    The following config options have been deprecated due"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"5a8bc5a2_14cd9365","line":10,"updated":"2016-09-27 17:43:27.000000000","message":"ditto.","commit_id":"21f4f9c120c303b864b2f41c3984904ea4de116a"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"0c2c95db9901ad4ce3221e857440172d8403bb2f","unresolved":false,"context_lines":[{"line_number":7,"context_line":"  basis"},{"line_number":8,"context_line":"  - Improved iSCSI MPIO support, by connecting to multiple"},{"line_number":9,"context_line":"  iSCSI targets/portals when available and allowing using"},{"line_number":10,"context_line":"  a predefined list of initiator HBAs"},{"line_number":11,"context_line":"deprecations:"},{"line_number":12,"context_line":"  - |"},{"line_number":13,"context_line":"    The following config options have been deprecated due"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"5a8bc5a2_5b871f12","line":10,"in_reply_to":"5a8bc5a2_14cd9365","updated":"2016-09-28 10:18:15.000000000","message":"Done","commit_id":"21f4f9c120c303b864b2f41c3984904ea4de116a"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"33663c1c1169eadab172d25df9411c5760d38f4a","unresolved":false,"context_lines":[{"line_number":18,"context_line":"    - mounted_disk_query_retry_count"},{"line_number":19,"context_line":"    - mounted_disk_query_retry_interval"},{"line_number":20,"context_line":"    - volume_attach_retry_interval"},{"line_number":21,"context_line":"    - volume_attach_retry_count"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"5a8bc5a2_74ec17bb","line":21,"updated":"2016-09-27 17:43:27.000000000","message":"hm, i think it would be nice to mention that those config options are in the hyperv section, somehow.","commit_id":"21f4f9c120c303b864b2f41c3984904ea4de116a"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"0c2c95db9901ad4ce3221e857440172d8403bb2f","unresolved":false,"context_lines":[{"line_number":18,"context_line":"    - mounted_disk_query_retry_count"},{"line_number":19,"context_line":"    - mounted_disk_query_retry_interval"},{"line_number":20,"context_line":"    - volume_attach_retry_interval"},{"line_number":21,"context_line":"    - volume_attach_retry_count"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"5a8bc5a2_bb866311","line":21,"in_reply_to":"5a8bc5a2_74ec17bb","updated":"2016-09-28 10:18:15.000000000","message":"Done","commit_id":"21f4f9c120c303b864b2f41c3984904ea4de116a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ce915786ce31ec10dfe496e1adaae9a4d1b128b6","unresolved":false,"context_lines":[{"line_number":13,"context_line":"  - |"},{"line_number":14,"context_line":"    The following config options from the \u0027hyperv\u0027 group"},{"line_number":15,"context_line":"    have been deprecated due to the fact that WMI is no"},{"line_number":16,"context_line":"    longer used when connecting iSCSI volumes and sporadic"},{"line_number":17,"context_line":"    initiator errors are now handled at a more granular"},{"line_number":18,"context_line":"    level by os-win."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"    - mounted_disk_query_retry_count"},{"line_number":21,"context_line":"    - mounted_disk_query_retry_interval"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"9a629dbe_7c2ae82d","line":18,"range":{"start_line":16,"start_character":46,"end_line":18,"end_character":20},"updated":"2016-11-08 15:55:33.000000000","message":"Is there a specific change in os-win you can point to for this? I\u0027d like to know that the minimum required version of os-win in ocata contains the change for this statement.","commit_id":"ff5c54c761cb9728a27f6c6192a6e414d5b19934"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"53bd96b845ce3763c518f3a5a563e5a7c7c76e7a","unresolved":false,"context_lines":[{"line_number":13,"context_line":"  - |"},{"line_number":14,"context_line":"    The following config options from the \u0027hyperv\u0027 group"},{"line_number":15,"context_line":"    have been deprecated due to the fact that WMI is no"},{"line_number":16,"context_line":"    longer used when connecting iSCSI volumes and sporadic"},{"line_number":17,"context_line":"    initiator errors are now handled at a more granular"},{"line_number":18,"context_line":"    level by os-win."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"    - mounted_disk_query_retry_count"},{"line_number":21,"context_line":"    - mounted_disk_query_retry_interval"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"9a629dbe_6d5b142f","line":18,"range":{"start_line":16,"start_character":46,"end_line":18,"end_character":20},"in_reply_to":"9a629dbe_7c1028a9","updated":"2016-11-08 16:50:32.000000000","message":"OK thanks.","commit_id":"ff5c54c761cb9728a27f6c6192a6e414d5b19934"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"1a2d341a6c51fad062ee5a21809c41eb303776b8","unresolved":false,"context_lines":[{"line_number":13,"context_line":"  - |"},{"line_number":14,"context_line":"    The following config options from the \u0027hyperv\u0027 group"},{"line_number":15,"context_line":"    have been deprecated due to the fact that WMI is no"},{"line_number":16,"context_line":"    longer used when connecting iSCSI volumes and sporadic"},{"line_number":17,"context_line":"    initiator errors are now handled at a more granular"},{"line_number":18,"context_line":"    level by os-win."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"    - mounted_disk_query_retry_count"},{"line_number":21,"context_line":"    - mounted_disk_query_retry_interval"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"9a629dbe_7c1028a9","line":18,"range":{"start_line":16,"start_character":46,"end_line":18,"end_character":20},"in_reply_to":"9a629dbe_7c2ae82d","updated":"2016-11-08 16:02:37.000000000","message":"Sure, we\u0027ve refactored the way in which os-win interacts with the MS iSCSI initiator in Mitaka. The according change is included in the current minimum os-win version (0.2.3): https://github.com/openstack/os-win/commit/b72790bacfd356021b2dd870ade6c9c216fd14a0","commit_id":"ff5c54c761cb9728a27f6c6192a6e414d5b19934"}]}
