)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"1d0c0489c3cf629abbfde062110573202e72327f","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Adding a tool that allows querying of LUNs"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"By running this script a Flask server will be started on a"},{"line_number":10,"context_line":"system that allows the LUNs on that system to be queried."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Possible queries are to get all LUNs on a system or only the"},{"line_number":13,"context_line":"ones associated with a specific volume."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"9a1a9d01_6026f6cf","line":10,"updated":"2015-09-28 00:53:39.000000000","message":"Can you add some more info and clarification to the above, as well as a bit about how this is configured and works?  Is this a flask server installed/configured on a cinder-volume node?  A backend?  Do we need flask at all?\n\nAlso the blueprint referenced doesn\u0027t really have any info, just that it\u0027s a \"placeholder\", might be worth actually explaining the idea here and what problem it\u0027s trying to solve.","commit_id":"750e09fa9d92e50a7aa657fe38dbb868adf791b4"},{"author":{"_account_id":11903,"name":"Anthony Lee","email":"anthony.mic.lee@hpe.com","username":"leeantho"},"change_message_id":"c5dc2fad01627832e34a90dc8a964416504ff4f8","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Adding a tool that allows querying of LUNs"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"By running this script a Flask server will be started on a"},{"line_number":10,"context_line":"system that allows the LUNs on that system to be queried."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Possible queries are to get all LUNs on a system or only the"},{"line_number":13,"context_line":"ones associated with a specific volume."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"5a2ca52d_e8cd00b8","line":10,"in_reply_to":"9a1a9d01_6026f6cf","updated":"2015-10-15 00:04:30.000000000","message":"Done","commit_id":"750e09fa9d92e50a7aa657fe38dbb868adf791b4"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"2d397a8600d99914a447d0f6483248ff5081d152","unresolved":false,"context_lines":[{"line_number":41,"context_line":"\u003cSub Node\u003e"},{"line_number":42,"context_line":"  Flask @ ip:port"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"The user can now query use /get_volume_luns and /get_all_luns"},{"line_number":45,"context_line":"exposed by the Flask server to get the LUN status before and after"},{"line_number":46,"context_line":"they run a test for each node. Ideally this would be done in an"},{"line_number":47,"context_line":"automated fashion with a script (a script that CI could also use)."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"3a29b11f_a25f4240","line":44,"updated":"2015-10-19 20:24:44.000000000","message":"We really shouldn\u0027t use the terminology \"luns\" for the API, because that only makes sense for iSCSI/FC, and not for NFS (or any *FS), RBD, etc. which are also supported by brick.\n\nPlease call this something more generic so it still makes sense when implemented for other types of connectors.","commit_id":"9ed622071899fe2547ef9396c667e0998975ccdb"},{"author":{"_account_id":11903,"name":"Anthony Lee","email":"anthony.mic.lee@hpe.com","username":"leeantho"},"change_message_id":"02328412f82a6ad1e0aa372f328fefa503f0eebb","unresolved":false,"context_lines":[{"line_number":41,"context_line":"\u003cSub Node\u003e"},{"line_number":42,"context_line":"  Flask @ ip:port"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"The user can now query use /get_volume_luns and /get_all_luns"},{"line_number":45,"context_line":"exposed by the Flask server to get the LUN status before and after"},{"line_number":46,"context_line":"they run a test for each node. Ideally this would be done in an"},{"line_number":47,"context_line":"automated fashion with a script (a script that CI could also use)."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"3a29b11f_cbca996e","line":44,"in_reply_to":"3a29b11f_a25f4240","updated":"2015-10-19 21:47:49.000000000","message":"Done","commit_id":"9ed622071899fe2547ef9396c667e0998975ccdb"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"bd06e192392b2eab2aa9e0bae4ac70c90ac8e88f","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"This patch will add a query_volume_paths python script to"},{"line_number":15,"context_line":"os-brick in a tools folder. The script is meant to be run on"},{"line_number":16,"context_line":"cinder-volume nodes and exposes two APIs to users. One is to"},{"line_number":17,"context_line":"query volumes paths for a specific volume and another is to"},{"line_number":18,"context_line":"query all volume paths on a system. This is useful for"},{"line_number":19,"context_line":"environments such as ones performing CI on drivers because they"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"fa69d971_a2d62425","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":60},"updated":"2016-01-08 18:17:22.000000000","message":"Your example runs it on primary-node and secondary-node which seem to be (based on your scenario) nova-compute nodes, so I don\u0027t follow this statement above?\n\nAlso, since cinder-volume nodes don\u0027t have path info I\u0027m kinda confused","commit_id":"1916943a2815582fe62341fb0a802b251bb4d946"},{"author":{"_account_id":11903,"name":"Anthony Lee","email":"anthony.mic.lee@hpe.com","username":"leeantho"},"change_message_id":"c3f24645a9403b0deb99e11ff83af8dc3379a2fa","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"This patch will add a query_volume_paths python script to"},{"line_number":15,"context_line":"os-brick in a tools folder. The script is meant to be run on"},{"line_number":16,"context_line":"cinder-volume nodes and exposes two APIs to users. One is to"},{"line_number":17,"context_line":"query volumes paths for a specific volume and another is to"},{"line_number":18,"context_line":"query all volume paths on a system. This is useful for"},{"line_number":19,"context_line":"environments such as ones performing CI on drivers because they"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"fa69d971_32383b3d","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":60},"in_reply_to":"fa69d971_45b6528b","updated":"2016-01-08 23:27:44.000000000","message":"Done","commit_id":"1916943a2815582fe62341fb0a802b251bb4d946"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"101a7699eac68b0f5b6f172ba0c664f5eed5e9ed","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"This patch will add a query_volume_paths python script to"},{"line_number":15,"context_line":"os-brick in a tools folder. The script is meant to be run on"},{"line_number":16,"context_line":"cinder-volume nodes and exposes two APIs to users. One is to"},{"line_number":17,"context_line":"query volumes paths for a specific volume and another is to"},{"line_number":18,"context_line":"query all volume paths on a system. This is useful for"},{"line_number":19,"context_line":"environments such as ones performing CI on drivers because they"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"fa69d971_45b6528b","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":60},"in_reply_to":"fa69d971_a2d62425","updated":"2016-01-08 18:41:08.000000000","message":"sure, maybe we can clarify this.  One of the scenarios is testing nova attach/detach workflows.  Another is cinder attach/detach worflows as well.","commit_id":"1916943a2815582fe62341fb0a802b251bb4d946"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"bd06e192392b2eab2aa9e0bae4ac70c90ac8e88f","unresolved":false,"context_lines":[{"line_number":27,"context_line":"\u003cPrimary Node\u003e"},{"line_number":28,"context_line":"\u003cSub Node\u003e"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"A user wants to verify that live-migration is working so he/she"},{"line_number":31,"context_line":"can use SSH and this tool:"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"\u003cPrimary Node\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"fa69d971_e2ec1cf5","line":30,"range":{"start_line":30,"start_character":28,"end_line":30,"end_character":32},"updated":"2016-01-08 18:17:22.000000000","message":"can you be explicit about \"live-migration\", I\u0027m assuming that your referring to Instances w/C-Vols and not cinder-volume-live-migration\n\nAlso, not sure what you mean by \"is working\"?  and a user is ssh\u0027ing to where?  To an Instance?  So this is running to an instance?  Sorry, I\u0027m just really not following how this works or what it does.\n\nDo you mean an Admin ssh\u0027s to a compute node and checks this?  Which is tricky as well because in a multi-node compute env he/she doesn\u0027t necessarily know ahed of time where the Instance is migrating too.","commit_id":"1916943a2815582fe62341fb0a802b251bb4d946"},{"author":{"_account_id":11903,"name":"Anthony Lee","email":"anthony.mic.lee@hpe.com","username":"leeantho"},"change_message_id":"c3f24645a9403b0deb99e11ff83af8dc3379a2fa","unresolved":false,"context_lines":[{"line_number":27,"context_line":"\u003cPrimary Node\u003e"},{"line_number":28,"context_line":"\u003cSub Node\u003e"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"A user wants to verify that live-migration is working so he/she"},{"line_number":31,"context_line":"can use SSH and this tool:"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"\u003cPrimary Node\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"fa69d971_722eb3fb","line":30,"range":{"start_line":30,"start_character":28,"end_line":30,"end_character":32},"in_reply_to":"fa69d971_854a0a82","updated":"2016-01-08 23:27:44.000000000","message":"Done","commit_id":"1916943a2815582fe62341fb0a802b251bb4d946"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"101a7699eac68b0f5b6f172ba0c664f5eed5e9ed","unresolved":false,"context_lines":[{"line_number":27,"context_line":"\u003cPrimary Node\u003e"},{"line_number":28,"context_line":"\u003cSub Node\u003e"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"A user wants to verify that live-migration is working so he/she"},{"line_number":31,"context_line":"can use SSH and this tool:"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"\u003cPrimary Node\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"fa69d971_854a0a82","line":30,"range":{"start_line":30,"start_character":28,"end_line":30,"end_character":32},"in_reply_to":"fa69d971_e2ec1cf5","updated":"2016-01-08 18:41:08.000000000","message":"I believe by \u0027is working\u0027 in the context of this tool, he means that after detaching on the source host, the paths are gone, and that the destination host has all the expected paths show up there.   \n\nNeeds clarification for sure.","commit_id":"1916943a2815582fe62341fb0a802b251bb4d946"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"bd06e192392b2eab2aa9e0bae4ac70c90ac8e88f","unresolved":false,"context_lines":[{"line_number":37,"context_line":"  to get desired info."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"The user can use the tool to get volume path status before and"},{"line_number":40,"context_line":"after they run a test for each node. Ideally this would be done"},{"line_number":41,"context_line":"in an automated fashion with a script (a script that CI could"},{"line_number":42,"context_line":"also use). The automated script would be able to verify volume"},{"line_number":43,"context_line":"path status much quicker than manually checking each node\u0027s"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"fa69d971_229f9451","line":40,"range":{"start_line":40,"start_character":0,"end_line":40,"end_character":63},"updated":"2016-01-08 18:17:22.000000000","message":"before and after running \u0027what\u0027 test for each node?  What are they testing here?","commit_id":"1916943a2815582fe62341fb0a802b251bb4d946"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"101a7699eac68b0f5b6f172ba0c664f5eed5e9ed","unresolved":false,"context_lines":[{"line_number":37,"context_line":"  to get desired info."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"The user can use the tool to get volume path status before and"},{"line_number":40,"context_line":"after they run a test for each node. Ideally this would be done"},{"line_number":41,"context_line":"in an automated fashion with a script (a script that CI could"},{"line_number":42,"context_line":"also use). The automated script would be able to verify volume"},{"line_number":43,"context_line":"path status much quicker than manually checking each node\u0027s"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"fa69d971_255a3e51","line":40,"range":{"start_line":40,"start_character":0,"end_line":40,"end_character":63},"in_reply_to":"fa69d971_229f9451","updated":"2016-01-08 18:41:08.000000000","message":"attach/detach related tests.   \n\nneeds clarification in the text here.","commit_id":"1916943a2815582fe62341fb0a802b251bb4d946"},{"author":{"_account_id":11903,"name":"Anthony Lee","email":"anthony.mic.lee@hpe.com","username":"leeantho"},"change_message_id":"c3f24645a9403b0deb99e11ff83af8dc3379a2fa","unresolved":false,"context_lines":[{"line_number":37,"context_line":"  to get desired info."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"The user can use the tool to get volume path status before and"},{"line_number":40,"context_line":"after they run a test for each node. Ideally this would be done"},{"line_number":41,"context_line":"in an automated fashion with a script (a script that CI could"},{"line_number":42,"context_line":"also use). The automated script would be able to verify volume"},{"line_number":43,"context_line":"path status much quicker than manually checking each node\u0027s"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"fa69d971_1235f744","line":40,"range":{"start_line":40,"start_character":0,"end_line":40,"end_character":63},"in_reply_to":"fa69d971_255a3e51","updated":"2016-01-08 23:27:44.000000000","message":"Done","commit_id":"1916943a2815582fe62341fb0a802b251bb4d946"}],"tools/query_volume_paths.py":[{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"ff3751fcb4d80736d5e65f700539faa2bcfa81f8","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2013 OpenStack Foundation."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_ff14c544","line":1,"updated":"2015-07-21 18:19:28.000000000","message":"this year","commit_id":"62dde87d4568fd4620565261a9ac2a815ea11678"},{"author":{"_account_id":11903,"name":"Anthony Lee","email":"anthony.mic.lee@hpe.com","username":"leeantho"},"change_message_id":"4f10e358e157f86a4b159cfc419d3fd79e637e94","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2013 OpenStack Foundation."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_acedb3b8","line":1,"in_reply_to":"3a50d1a3_ff14c544","updated":"2015-07-21 21:54:56.000000000","message":"Done","commit_id":"62dde87d4568fd4620565261a9ac2a815ea11678"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"ff3751fcb4d80736d5e65f700539faa2bcfa81f8","unresolved":false,"context_lines":[{"line_number":22,"context_line":"Usage:"},{"line_number":23,"context_line":"    # start the flask server (optionally, define port for the server)"},{"line_number":24,"context_line":"    python query_volume_paths.py -port 5005"},{"line_number":25,"context_line":"    # using an external client call either of the APIs"},{"line_number":26,"context_line":"\"\"\""},{"line_number":27,"context_line":"from cinderclient.v2 import client"},{"line_number":28,"context_line":"from os_brick.initiator import connector"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_7f4e7570","line":25,"updated":"2015-07-21 18:19:28.000000000","message":"probably should say something about needing the cinder client installed.","commit_id":"62dde87d4568fd4620565261a9ac2a815ea11678"},{"author":{"_account_id":11903,"name":"Anthony Lee","email":"anthony.mic.lee@hpe.com","username":"leeantho"},"change_message_id":"4f10e358e157f86a4b159cfc419d3fd79e637e94","unresolved":false,"context_lines":[{"line_number":22,"context_line":"Usage:"},{"line_number":23,"context_line":"    # start the flask server (optionally, define port for the server)"},{"line_number":24,"context_line":"    python query_volume_paths.py -port 5005"},{"line_number":25,"context_line":"    # using an external client call either of the APIs"},{"line_number":26,"context_line":"\"\"\""},{"line_number":27,"context_line":"from cinderclient.v2 import client"},{"line_number":28,"context_line":"from os_brick.initiator import connector"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_4c2d0ffd","line":25,"in_reply_to":"3a50d1a3_7f4e7570","updated":"2015-07-21 21:54:56.000000000","message":"Done","commit_id":"62dde87d4568fd4620565261a9ac2a815ea11678"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"ff3751fcb4d80736d5e65f700539faa2bcfa81f8","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    Using a POST request volume, connection_info and root_helper must be sent."},{"line_number":68,"context_line":"    \"\"\""},{"line_number":69,"context_line":"    print(\"Doing some pre-verification...\")"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    data \u003d json.loads(request.data)"},{"line_number":72,"context_line":"    volume_id \u003d data[\u0027volume_id\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_1fcbb173","line":69,"updated":"2015-07-21 18:19:28.000000000","message":"LOG....","commit_id":"62dde87d4568fd4620565261a9ac2a815ea11678"},{"author":{"_account_id":11903,"name":"Anthony Lee","email":"anthony.mic.lee@hpe.com","username":"leeantho"},"change_message_id":"4f10e358e157f86a4b159cfc419d3fd79e637e94","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    Using a POST request volume, connection_info and root_helper must be sent."},{"line_number":68,"context_line":"    \"\"\""},{"line_number":69,"context_line":"    print(\"Doing some pre-verification...\")"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    data \u003d json.loads(request.data)"},{"line_number":72,"context_line":"    volume_id \u003d data[\u0027volume_id\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_0f6cd9ce","line":69,"in_reply_to":"3a50d1a3_1fcbb173","updated":"2015-07-21 21:54:56.000000000","message":"Done","commit_id":"62dde87d4568fd4620565261a9ac2a815ea11678"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"ff3751fcb4d80736d5e65f700539faa2bcfa81f8","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    # Use os_brick to get needed connection properties."},{"line_number":103,"context_line":"    connector_props \u003d connector.get_connector_properties(ROOT_HELPER, None,"},{"line_number":104,"context_line":"                                                         False, False)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    # Call out to the driver\u0027s initialize_connection to get connection_info."},{"line_number":107,"context_line":"    connection_info \u003d cinder.volumes.initialize_connection(volume_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_df51c9d9","line":104,"updated":"2015-07-21 18:19:28.000000000","message":"maybe this should set the multipath to True and enforce multipath keep it as False","commit_id":"62dde87d4568fd4620565261a9ac2a815ea11678"},{"author":{"_account_id":11903,"name":"Anthony Lee","email":"anthony.mic.lee@hpe.com","username":"leeantho"},"change_message_id":"4f10e358e157f86a4b159cfc419d3fd79e637e94","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    # Use os_brick to get needed connection properties."},{"line_number":103,"context_line":"    connector_props \u003d connector.get_connector_properties(ROOT_HELPER, None,"},{"line_number":104,"context_line":"                                                         False, False)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    # Call out to the driver\u0027s initialize_connection to get connection_info."},{"line_number":107,"context_line":"    connection_info \u003d cinder.volumes.initialize_connection(volume_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_ef672de7","line":104,"in_reply_to":"3a50d1a3_df51c9d9","updated":"2015-07-21 21:54:56.000000000","message":"Done","commit_id":"62dde87d4568fd4620565261a9ac2a815ea11678"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"a7ae299680bd8c928e5f5b5bdcf62f65c820a3e7","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2015 OpenStack Foundation."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":11,"id":"5a2ca52d_80a4f307","line":1,"updated":"2015-10-17 05:12:46.000000000","message":"Copyright attribution to the Foundation should only be made if you are working directly as a Foundation employee.","commit_id":"363ce18da19b75c93724843ab9cc156b4971ca4f"},{"author":{"_account_id":11903,"name":"Anthony Lee","email":"anthony.mic.lee@hpe.com","username":"leeantho"},"change_message_id":"d8a66e59245894ac4ea0b373466de7e7d3032d48","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2015 OpenStack Foundation."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a29b11f_ebabd587","line":1,"in_reply_to":"5a2ca52d_80a4f307","updated":"2015-10-19 21:47:58.000000000","message":"Done","commit_id":"363ce18da19b75c93724843ab9cc156b4971ca4f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"51d5be9ea4623400fde8e874074a66fe01d82f07","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    # using an external client call either of the APIs"},{"line_number":28,"context_line":"\"\"\""},{"line_number":29,"context_line":"from cinderclient.v2 import client"},{"line_number":30,"context_line":"from os_brick.initiator import connector"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"import argparse"},{"line_number":33,"context_line":"import json"}],"source_content_type":"text/x-python","patch_set":15,"id":"da85f559_b7d3e2d4","line":30,"updated":"2015-11-15 02:38:20.000000000","message":"Imports should be stdlibs, third party libs, local imports.","commit_id":"b9a18e1190c489c6a4c5bde51cf6ece2f2b14976"},{"author":{"_account_id":11903,"name":"Anthony Lee","email":"anthony.mic.lee@hpe.com","username":"leeantho"},"change_message_id":"605f57f89b75f467defc425e16d4c76915ee5da9","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    # using an external client call either of the APIs"},{"line_number":28,"context_line":"\"\"\""},{"line_number":29,"context_line":"from cinderclient.v2 import client"},{"line_number":30,"context_line":"from os_brick.initiator import connector"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"import argparse"},{"line_number":33,"context_line":"import json"}],"source_content_type":"text/x-python","patch_set":15,"id":"5a710552_fb5c31ef","line":30,"in_reply_to":"da85f559_b7d3e2d4","updated":"2015-12-17 16:20:11.000000000","message":"Done","commit_id":"b9a18e1190c489c6a4c5bde51cf6ece2f2b14976"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"5f6e986a131dc529ee0e28cc6dd3a4b1531e7112","unresolved":false,"context_lines":[{"line_number":38,"context_line":"from flask import request"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"parser \u003d argparse.ArgumentParser()"},{"line_number":41,"context_line":"parser.add_argument(\"-u\", \"--username\", help\u003d\"username\","},{"line_number":42,"context_line":"                    default\u003dos.environ[\u0027OS_USERNAME\u0027])"},{"line_number":43,"context_line":"parser.add_argument(\"-p\", \"--password\", help\u003d\"password\","},{"line_number":44,"context_line":"                    default\u003dos.environ[\u0027OS_PASSWORD\u0027])"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba8a016a_b7351547","line":41,"updated":"2015-11-17 17:27:55.000000000","message":"we should also make these the same as the rest of the OpenStack standard param names.\n\n--os-username","commit_id":"b9a18e1190c489c6a4c5bde51cf6ece2f2b14976"},{"author":{"_account_id":11903,"name":"Anthony Lee","email":"anthony.mic.lee@hpe.com","username":"leeantho"},"change_message_id":"605f57f89b75f467defc425e16d4c76915ee5da9","unresolved":false,"context_lines":[{"line_number":38,"context_line":"from flask import request"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"parser \u003d argparse.ArgumentParser()"},{"line_number":41,"context_line":"parser.add_argument(\"-u\", \"--username\", help\u003d\"username\","},{"line_number":42,"context_line":"                    default\u003dos.environ[\u0027OS_USERNAME\u0027])"},{"line_number":43,"context_line":"parser.add_argument(\"-p\", \"--password\", help\u003d\"password\","},{"line_number":44,"context_line":"                    default\u003dos.environ[\u0027OS_PASSWORD\u0027])"}],"source_content_type":"text/x-python","patch_set":15,"id":"5a710552_7b74c1fc","line":41,"in_reply_to":"ba8a016a_b7351547","updated":"2015-12-17 16:20:11.000000000","message":"Done","commit_id":"b9a18e1190c489c6a4c5bde51cf6ece2f2b14976"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"5f6e986a131dc529ee0e28cc6dd3a4b1531e7112","unresolved":false,"context_lines":[{"line_number":40,"context_line":"parser \u003d argparse.ArgumentParser()"},{"line_number":41,"context_line":"parser.add_argument(\"-u\", \"--username\", help\u003d\"username\","},{"line_number":42,"context_line":"                    default\u003dos.environ[\u0027OS_USERNAME\u0027])"},{"line_number":43,"context_line":"parser.add_argument(\"-p\", \"--password\", help\u003d\"password\","},{"line_number":44,"context_line":"                    default\u003dos.environ[\u0027OS_PASSWORD\u0027])"},{"line_number":45,"context_line":"parser.add_argument(\"-t\", \"--tenant\", help\u003d\"tenant name\","},{"line_number":46,"context_line":"                    default\u003dos.environ[\u0027OS_TENANT_NAME\u0027])"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba8a016a_77400da6","line":43,"updated":"2015-11-17 17:27:55.000000000","message":"--os-password","commit_id":"b9a18e1190c489c6a4c5bde51cf6ece2f2b14976"},{"author":{"_account_id":11903,"name":"Anthony Lee","email":"anthony.mic.lee@hpe.com","username":"leeantho"},"change_message_id":"605f57f89b75f467defc425e16d4c76915ee5da9","unresolved":false,"context_lines":[{"line_number":40,"context_line":"parser \u003d argparse.ArgumentParser()"},{"line_number":41,"context_line":"parser.add_argument(\"-u\", \"--username\", help\u003d\"username\","},{"line_number":42,"context_line":"                    default\u003dos.environ[\u0027OS_USERNAME\u0027])"},{"line_number":43,"context_line":"parser.add_argument(\"-p\", \"--password\", help\u003d\"password\","},{"line_number":44,"context_line":"                    default\u003dos.environ[\u0027OS_PASSWORD\u0027])"},{"line_number":45,"context_line":"parser.add_argument(\"-t\", \"--tenant\", help\u003d\"tenant name\","},{"line_number":46,"context_line":"                    default\u003dos.environ[\u0027OS_TENANT_NAME\u0027])"}],"source_content_type":"text/x-python","patch_set":15,"id":"5a710552_1b601d35","line":43,"in_reply_to":"ba8a016a_77400da6","updated":"2015-12-17 16:20:11.000000000","message":"Done","commit_id":"b9a18e1190c489c6a4c5bde51cf6ece2f2b14976"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"5f6e986a131dc529ee0e28cc6dd3a4b1531e7112","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                    default\u003dos.environ[\u0027OS_USERNAME\u0027])"},{"line_number":43,"context_line":"parser.add_argument(\"-p\", \"--password\", help\u003d\"password\","},{"line_number":44,"context_line":"                    default\u003dos.environ[\u0027OS_PASSWORD\u0027])"},{"line_number":45,"context_line":"parser.add_argument(\"-t\", \"--tenant\", help\u003d\"tenant name\","},{"line_number":46,"context_line":"                    default\u003dos.environ[\u0027OS_TENANT_NAME\u0027])"},{"line_number":47,"context_line":"parser.add_argument(\"-a\", \"--auth-url\", help\u003d\"auth url\","},{"line_number":48,"context_line":"                    default\u003dos.environ[\u0027OS_AUTH_URL\u0027])"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba8a016a_171661a7","line":45,"updated":"2015-11-17 17:27:55.000000000","message":"--os-tenant-name","commit_id":"b9a18e1190c489c6a4c5bde51cf6ece2f2b14976"},{"author":{"_account_id":11903,"name":"Anthony Lee","email":"anthony.mic.lee@hpe.com","username":"leeantho"},"change_message_id":"605f57f89b75f467defc425e16d4c76915ee5da9","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                    default\u003dos.environ[\u0027OS_USERNAME\u0027])"},{"line_number":43,"context_line":"parser.add_argument(\"-p\", \"--password\", help\u003d\"password\","},{"line_number":44,"context_line":"                    default\u003dos.environ[\u0027OS_PASSWORD\u0027])"},{"line_number":45,"context_line":"parser.add_argument(\"-t\", \"--tenant\", help\u003d\"tenant name\","},{"line_number":46,"context_line":"                    default\u003dos.environ[\u0027OS_TENANT_NAME\u0027])"},{"line_number":47,"context_line":"parser.add_argument(\"-a\", \"--auth-url\", help\u003d\"auth url\","},{"line_number":48,"context_line":"                    default\u003dos.environ[\u0027OS_AUTH_URL\u0027])"}],"source_content_type":"text/x-python","patch_set":15,"id":"5a710552_3b65d944","line":45,"in_reply_to":"ba8a016a_171661a7","updated":"2015-12-17 16:20:11.000000000","message":"Done","commit_id":"b9a18e1190c489c6a4c5bde51cf6ece2f2b14976"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"5f6e986a131dc529ee0e28cc6dd3a4b1531e7112","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                    default\u003dos.environ[\u0027OS_PASSWORD\u0027])"},{"line_number":45,"context_line":"parser.add_argument(\"-t\", \"--tenant\", help\u003d\"tenant name\","},{"line_number":46,"context_line":"                    default\u003dos.environ[\u0027OS_TENANT_NAME\u0027])"},{"line_number":47,"context_line":"parser.add_argument(\"-a\", \"--auth-url\", help\u003d\"auth url\","},{"line_number":48,"context_line":"                    default\u003dos.environ[\u0027OS_AUTH_URL\u0027])"},{"line_number":49,"context_line":"parser.add_argument(\"-r\", \"--root-helper\", help\u003d\"root helper\","},{"line_number":50,"context_line":"                    default\u003d\"sudo\")"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba8a016a_7727ad12","line":47,"updated":"2015-11-17 17:27:55.000000000","message":"--os-auth-url","commit_id":"b9a18e1190c489c6a4c5bde51cf6ece2f2b14976"},{"author":{"_account_id":11903,"name":"Anthony Lee","email":"anthony.mic.lee@hpe.com","username":"leeantho"},"change_message_id":"605f57f89b75f467defc425e16d4c76915ee5da9","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                    default\u003dos.environ[\u0027OS_PASSWORD\u0027])"},{"line_number":45,"context_line":"parser.add_argument(\"-t\", \"--tenant\", help\u003d\"tenant name\","},{"line_number":46,"context_line":"                    default\u003dos.environ[\u0027OS_TENANT_NAME\u0027])"},{"line_number":47,"context_line":"parser.add_argument(\"-a\", \"--auth-url\", help\u003d\"auth url\","},{"line_number":48,"context_line":"                    default\u003dos.environ[\u0027OS_AUTH_URL\u0027])"},{"line_number":49,"context_line":"parser.add_argument(\"-r\", \"--root-helper\", help\u003d\"root helper\","},{"line_number":50,"context_line":"                    default\u003d\"sudo\")"}],"source_content_type":"text/x-python","patch_set":15,"id":"5a710552_fb5e7175","line":47,"in_reply_to":"ba8a016a_7727ad12","updated":"2015-12-17 16:20:11.000000000","message":"Done","commit_id":"b9a18e1190c489c6a4c5bde51cf6ece2f2b14976"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"51d5be9ea4623400fde8e874074a66fe01d82f07","unresolved":false,"context_lines":[{"line_number":48,"context_line":"                    default\u003dos.environ[\u0027OS_AUTH_URL\u0027])"},{"line_number":49,"context_line":"parser.add_argument(\"-r\", \"--root-helper\", help\u003d\"root helper\","},{"line_number":50,"context_line":"                    default\u003d\"sudo\")"},{"line_number":51,"context_line":"parser.add_argument(\"-o\", \"--port\", help\u003d\"port that flask server will use.\","},{"line_number":52,"context_line":"                    default\u003d5002, type\u003dint)"},{"line_number":53,"context_line":"parser.add_argument(\"-d\", \"--debug\", help\u003d\"enable debugging.\", default\u003dFalse,"},{"line_number":54,"context_line":"                    action\u003d\"store_true\")"}],"source_content_type":"text/x-python","patch_set":15,"id":"da85f559_57db96ed","line":51,"updated":"2015-11-15 02:38:20.000000000","message":"s/port/Port/","commit_id":"b9a18e1190c489c6a4c5bde51cf6ece2f2b14976"},{"author":{"_account_id":11903,"name":"Anthony Lee","email":"anthony.mic.lee@hpe.com","username":"leeantho"},"change_message_id":"605f57f89b75f467defc425e16d4c76915ee5da9","unresolved":false,"context_lines":[{"line_number":48,"context_line":"                    default\u003dos.environ[\u0027OS_AUTH_URL\u0027])"},{"line_number":49,"context_line":"parser.add_argument(\"-r\", \"--root-helper\", help\u003d\"root helper\","},{"line_number":50,"context_line":"                    default\u003d\"sudo\")"},{"line_number":51,"context_line":"parser.add_argument(\"-o\", \"--port\", help\u003d\"port that flask server will use.\","},{"line_number":52,"context_line":"                    default\u003d5002, type\u003dint)"},{"line_number":53,"context_line":"parser.add_argument(\"-d\", \"--debug\", help\u003d\"enable debugging.\", default\u003dFalse,"},{"line_number":54,"context_line":"                    action\u003d\"store_true\")"}],"source_content_type":"text/x-python","patch_set":15,"id":"5a710552_9b540d55","line":51,"in_reply_to":"da85f559_57db96ed","updated":"2015-12-17 16:20:11.000000000","message":"Done","commit_id":"b9a18e1190c489c6a4c5bde51cf6ece2f2b14976"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"51d5be9ea4623400fde8e874074a66fe01d82f07","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                    default\u003d\"sudo\")"},{"line_number":51,"context_line":"parser.add_argument(\"-o\", \"--port\", help\u003d\"port that flask server will use.\","},{"line_number":52,"context_line":"                    default\u003d5002, type\u003dint)"},{"line_number":53,"context_line":"parser.add_argument(\"-d\", \"--debug\", help\u003d\"enable debugging.\", default\u003dFalse,"},{"line_number":54,"context_line":"                    action\u003d\"store_true\")"},{"line_number":55,"context_line":"args \u003d parser.parse_args()"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"da85f559_77d6dac4","line":53,"updated":"2015-11-15 02:38:20.000000000","message":"s/enable/Enable/","commit_id":"b9a18e1190c489c6a4c5bde51cf6ece2f2b14976"},{"author":{"_account_id":11903,"name":"Anthony Lee","email":"anthony.mic.lee@hpe.com","username":"leeantho"},"change_message_id":"605f57f89b75f467defc425e16d4c76915ee5da9","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                    default\u003d\"sudo\")"},{"line_number":51,"context_line":"parser.add_argument(\"-o\", \"--port\", help\u003d\"port that flask server will use.\","},{"line_number":52,"context_line":"                    default\u003d5002, type\u003dint)"},{"line_number":53,"context_line":"parser.add_argument(\"-d\", \"--debug\", help\u003d\"enable debugging.\", default\u003dFalse,"},{"line_number":54,"context_line":"                    action\u003d\"store_true\")"},{"line_number":55,"context_line":"args \u003d parser.parse_args()"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"5a710552_5b4ea5c2","line":53,"in_reply_to":"da85f559_77d6dac4","updated":"2015-12-17 16:20:11.000000000","message":"Done","commit_id":"b9a18e1190c489c6a4c5bde51cf6ece2f2b14976"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"0fbdc9f87e7edfeb7a0de56fd438a61c2fca3029","unresolved":false,"context_lines":[{"line_number":50,"context_line":"parser.add_argument(\"-v\", \"--volume-id\", help\u003d\"Volume ID\", default\u003dNone)"},{"line_number":51,"context_line":"parser.add_argument(\"-m\", \"--use-multipath\", help\u003d\"Multipath enabled\","},{"line_number":52,"context_line":"                    default\u003dFalse, action\u003d\"store_true\")"},{"line_number":53,"context_line":"parser.add_argument(\"-y\", \"--volume-type\", help\u003d\"Volume type\", default\u003d\"ISCSI\")"},{"line_number":54,"context_line":"args \u003d parser.parse_args()"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"USERNAME \u003d args.os_username"}],"source_content_type":"text/x-python","patch_set":16,"id":"3a7e1126_d7f2126f","line":53,"updated":"2015-12-18 00:20:38.000000000","message":"I think we should rename this to protocol.   I was confused after running the script why I had to specify cinder volume type :)","commit_id":"9885ef6aad98dbd0cd523d1809be8d7b15c6908b"},{"author":{"_account_id":11903,"name":"Anthony Lee","email":"anthony.mic.lee@hpe.com","username":"leeantho"},"change_message_id":"350e1cddf87bf44c26d9ad7145fbc575316a0282","unresolved":false,"context_lines":[{"line_number":50,"context_line":"parser.add_argument(\"-v\", \"--volume-id\", help\u003d\"Volume ID\", default\u003dNone)"},{"line_number":51,"context_line":"parser.add_argument(\"-m\", \"--use-multipath\", help\u003d\"Multipath enabled\","},{"line_number":52,"context_line":"                    default\u003dFalse, action\u003d\"store_true\")"},{"line_number":53,"context_line":"parser.add_argument(\"-y\", \"--volume-type\", help\u003d\"Volume type\", default\u003d\"ISCSI\")"},{"line_number":54,"context_line":"args \u003d parser.parse_args()"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"USERNAME \u003d args.os_username"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa69d971_c86664ec","line":53,"in_reply_to":"3a7e1126_d7f2126f","updated":"2016-01-06 22:16:06.000000000","message":"Done","commit_id":"9885ef6aad98dbd0cd523d1809be8d7b15c6908b"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"bd06e192392b2eab2aa9e0bae4ac70c90ac8e88f","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Description:"},{"line_number":19,"context_line":"    Displays either all volume paths on the current system or only the"},{"line_number":20,"context_line":"    volume paths for a specified volume on the system."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Usage:"},{"line_number":23,"context_line":"    # Install the python-cinderclient if it is not already present"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa69d971_c249d8d1","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":54},"updated":"2016-01-08 18:17:22.000000000","message":"So do you mean like \"/dev/disk/by-path/xxxxxx\" here?  If so why not just  simply os.path.exists /dev/disk/by-path and grep out the target IQN?","commit_id":"1916943a2815582fe62341fb0a802b251bb4d946"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"101a7699eac68b0f5b6f172ba0c664f5eed5e9ed","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Description:"},{"line_number":19,"context_line":"    Displays either all volume paths on the current system or only the"},{"line_number":20,"context_line":"    volume paths for a specified volume on the system."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Usage:"},{"line_number":23,"context_line":"    # Install the python-cinderclient if it is not already present"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa69d971_45ddf240","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":54},"in_reply_to":"fa69d971_c249d8d1","updated":"2016-01-08 18:41:08.000000000","message":"os-brick already has an API for fetching the paths for a particular volume.  The idea here is to fetch that list for a particular volume before a detach.  Then get the entire list of iSCSI volumes after detach and make sure all the paths are gone.","commit_id":"1916943a2815582fe62341fb0a802b251bb4d946"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"bd06e192392b2eab2aa9e0bae4ac70c90ac8e88f","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Usage:"},{"line_number":23,"context_line":"    # Install the python-cinderclient if it is not already present"},{"line_number":24,"context_line":"    sudo apt-get install python-cinderclient"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    # Display all volume paths on the current system"},{"line_number":27,"context_line":"    python query_volume_paths.py"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa69d971_42d168cc","line":24,"range":{"start_line":24,"start_character":0,"end_line":24,"end_character":44},"updated":"2016-01-08 18:17:22.000000000","message":"apt-get?  What if I run cent-os... and why not pip?  And again I\u0027m confused, \"where\" this is running, shouldn\u0027t we already have python-cinderclient?  Also if I\u0027ve installed brick and it needs cinderclient shouldn\u0027t that just be added to it\u0027s requirements?","commit_id":"1916943a2815582fe62341fb0a802b251bb4d946"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"101a7699eac68b0f5b6f172ba0c664f5eed5e9ed","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Usage:"},{"line_number":23,"context_line":"    # Install the python-cinderclient if it is not already present"},{"line_number":24,"context_line":"    sudo apt-get install python-cinderclient"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    # Display all volume paths on the current system"},{"line_number":27,"context_line":"    python query_volume_paths.py"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa69d971_45e8927c","line":24,"range":{"start_line":24,"start_character":0,"end_line":24,"end_character":44},"in_reply_to":"fa69d971_42d168cc","updated":"2016-01-08 18:41:08.000000000","message":"So I see what you are saying here.  Maybe os-brick isn\u0027t the right place for this tool.  This is just a tool that\u0027s meant to help diagnose possible issues and/or help test volume paths for attached volumes.   \n\nOne of the ideas behind this tool is to try and verify paths being removed from a system after detach happens.  So the order of ops would be:\n1) attach a volume\n2) use this to show the list of paths on the host for that volume.\n3) detach the volume\n4) verify that the paths are now gone.\n\nThis can be useful during live migration, or normal attach/detach workflows.   I guess why we even discuss live-migration in this context is historical.  We\u0027ve seen many issues with nova live migration where paths were wrong, not discovered or not removed throughout the process.  This tool isn\u0027t specific to live migration related workflows, but can be used in that context.","commit_id":"1916943a2815582fe62341fb0a802b251bb4d946"},{"author":{"_account_id":11903,"name":"Anthony Lee","email":"anthony.mic.lee@hpe.com","username":"leeantho"},"change_message_id":"c3f24645a9403b0deb99e11ff83af8dc3379a2fa","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Usage:"},{"line_number":23,"context_line":"    # Install the python-cinderclient if it is not already present"},{"line_number":24,"context_line":"    sudo apt-get install python-cinderclient"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    # Display all volume paths on the current system"},{"line_number":27,"context_line":"    python query_volume_paths.py"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa69d971_d23f5f23","line":24,"range":{"start_line":24,"start_character":0,"end_line":24,"end_character":44},"in_reply_to":"fa69d971_45e8927c","updated":"2016-01-08 23:27:44.000000000","message":"Done","commit_id":"1916943a2815582fe62341fb0a802b251bb4d946"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"bd06e192392b2eab2aa9e0bae4ac70c90ac8e88f","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        enforce_multipath\u003dFalse)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    # Call out to the driver\u0027s initialize_connection to get connection_info."},{"line_number":91,"context_line":"    connection_info \u003d cinder.volumes.initialize_connection(volume_id,"},{"line_number":92,"context_line":"                                                           connector_props)"},{"line_number":93,"context_line":"    protocol \u003d connection_info[\u0027driver_volume_type\u0027]"},{"line_number":94,"context_line":"    conn \u003d connector.InitiatorConnector.factory(protocol, ROOT_HELPER,"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa69d971_c2fc7840","line":91,"range":{"start_line":91,"start_character":0,"end_line":91,"end_character":69},"updated":"2016-01-08 18:17:22.000000000","message":"Are you sure this is safe, calling init_connection again on an already attached volume?  Initialize_connection \"does\" things","commit_id":"1916943a2815582fe62341fb0a802b251bb4d946"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"101a7699eac68b0f5b6f172ba0c664f5eed5e9ed","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        enforce_multipath\u003dFalse)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    # Call out to the driver\u0027s initialize_connection to get connection_info."},{"line_number":91,"context_line":"    connection_info \u003d cinder.volumes.initialize_connection(volume_id,"},{"line_number":92,"context_line":"                                                           connector_props)"},{"line_number":93,"context_line":"    protocol \u003d connection_info[\u0027driver_volume_type\u0027]"},{"line_number":94,"context_line":"    conn \u003d connector.InitiatorConnector.factory(protocol, ROOT_HELPER,"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa69d971_65291637","line":91,"range":{"start_line":91,"start_character":0,"end_line":91,"end_character":69},"in_reply_to":"fa69d971_c2fc7840","updated":"2016-01-08 18:41:08.000000000","message":"Nova already does this for live migration process.  Nova calls cinder\u0027s initialize_connection to fetch the connection_info, for already attached volumes.  initialize_connection is/should be safe to call multiple times for the same already attached volume.","commit_id":"1916943a2815582fe62341fb0a802b251bb4d946"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"bd06e192392b2eab2aa9e0bae4ac70c90ac8e88f","unresolved":false,"context_lines":[{"line_number":91,"context_line":"    connection_info \u003d cinder.volumes.initialize_connection(volume_id,"},{"line_number":92,"context_line":"                                                           connector_props)"},{"line_number":93,"context_line":"    protocol \u003d connection_info[\u0027driver_volume_type\u0027]"},{"line_number":94,"context_line":"    conn \u003d connector.InitiatorConnector.factory(protocol, ROOT_HELPER,"},{"line_number":95,"context_line":"                                                use_multipath\u003duse_multipath)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    return connection_info, conn"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa69d971_62a26c4d","line":94,"range":{"start_line":94,"start_character":0,"end_line":94,"end_character":70},"updated":"2016-01-08 18:17:22.000000000","message":"why aer we creating a connector object?","commit_id":"1916943a2815582fe62341fb0a802b251bb4d946"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"101a7699eac68b0f5b6f172ba0c664f5eed5e9ed","unresolved":false,"context_lines":[{"line_number":91,"context_line":"    connection_info \u003d cinder.volumes.initialize_connection(volume_id,"},{"line_number":92,"context_line":"                                                           connector_props)"},{"line_number":93,"context_line":"    protocol \u003d connection_info[\u0027driver_volume_type\u0027]"},{"line_number":94,"context_line":"    conn \u003d connector.InitiatorConnector.factory(protocol, ROOT_HELPER,"},{"line_number":95,"context_line":"                                                use_multipath\u003duse_multipath)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    return connection_info, conn"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa69d971_e56746b5","line":94,"range":{"start_line":94,"start_character":0,"end_line":94,"end_character":70},"in_reply_to":"fa69d971_62a26c4d","updated":"2016-01-08 18:41:08.000000000","message":"We need the correct connector to find the paths for that connector type.  For example, we want to get the paths for an FC volume.  only the FC connector can do that.","commit_id":"1916943a2815582fe62341fb0a802b251bb4d946"}]}
