)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"dff569828b8e9202d2d77ea7553ad06c6c07eeae","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Implemented admin network support in generic driver"},{"line_number":10,"context_line":"by creating extra ports in service instance."},{"line_number":11,"context_line":"Admin must specify admin_network_id and admin_subnet_id"},{"line_number":12,"context_line":"in driver configuration in manila.conf to create ports"},{"line_number":13,"context_line":"between host and network of choice."},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"dae33548_6d1cd7c1","line":11,"range":{"start_line":11,"start_character":6,"end_line":11,"end_character":19},"updated":"2016-02-16 10:57:12.000000000","message":"Must? According to code it is optional.","commit_id":"d89dafb5a8d67272b923b4cd209c30b3c1931bc4"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"0236b6a8c5cb95252917f5e8af4423016ee8eaa9","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Implemented admin network support in generic driver"},{"line_number":10,"context_line":"by creating extra ports in service instance."},{"line_number":11,"context_line":"Admin must specify admin_network_id and admin_subnet_id"},{"line_number":12,"context_line":"in driver configuration in manila.conf to create ports"},{"line_number":13,"context_line":"between host and network of choice."},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"dae33548_bc31ef0d","line":11,"range":{"start_line":11,"start_character":6,"end_line":11,"end_character":19},"in_reply_to":"dae33548_6d1cd7c1","updated":"2016-02-16 12:27:22.000000000","message":"I will change to \"in order for admin export locations to work, admin must specify\"","commit_id":"d89dafb5a8d67272b923b4cd209c30b3c1931bc4"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"dff569828b8e9202d2d77ea7553ad06c6c07eeae","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Removed deprecated \u0027service_ip\u0027 property of"},{"line_number":19,"context_line":"server backend details."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Implements: blueprint admin-network-generic-driver"},{"line_number":22,"context_line":"Change-Id: I8d8694ac3d83aa12a756112dfefebd7e17e32383"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"dae33548_ad341ffb","line":20,"updated":"2016-02-16 10:57:12.000000000","message":"Would be useful to say that:\n\nService instance is going to have two export locations always and it can consist of following cases:\n\n1) user net port (connect_share_server_to_tenant_network\u003dTrue) + admin port\n\n2) user net port (connect_share_server_to_tenant_network\u003dTrue) + autocreated port for service needs\n\n3) autocreated port for service needs + admin port\n\n4) autocreated port for service needs + autocreated port for service needs\n\nWhere left value is \"user-facing\" IP and right is \"admin/service\" facing one.","commit_id":"d89dafb5a8d67272b923b4cd209c30b3c1931bc4"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"0236b6a8c5cb95252917f5e8af4423016ee8eaa9","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Removed deprecated \u0027service_ip\u0027 property of"},{"line_number":19,"context_line":"server backend details."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Implements: blueprint admin-network-generic-driver"},{"line_number":22,"context_line":"Change-Id: I8d8694ac3d83aa12a756112dfefebd7e17e32383"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"dae33548_fc441775","line":20,"in_reply_to":"dae33548_ad341ffb","updated":"2016-02-16 12:27:22.000000000","message":"It is in the blueprint. I can add it here. \n\nI disagree that anything besides \"admin port\" should use admin_only export location. Autocreated port for service needs does not need an admin export location currently and does not imply it is accessible by admin network as it is.","commit_id":"d89dafb5a8d67272b923b4cd209c30b3c1931bc4"}],"contrib/ci/post_test_hook.sh":[{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"f969f159b1609e5db394a7ce8bc239cabc3c7ee8","unresolved":false,"context_lines":[{"line_number":140,"context_line":"fi"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"if [[ \"$DRIVER\" \u003d\u003d \"generic\" \u0026\u0026 !( is_service_enabled neutron ) ]]; then"},{"line_number":143,"context_line":"    RUN_MANILA_MIGRATION_TESTS\u003dFalse"},{"line_number":144,"context_line":"    iniset $TEMPEST_CONFIG share run_migration_tests False"},{"line_number":145,"context_line":"if [[ \"$DRIVER\" \u003d\u003d \"lvm\"  ]]; then"},{"line_number":146,"context_line":"    MANILA_TEMPEST_CONCURRENCY\u003d8"}],"source_content_type":"text/x-sh","patch_set":5,"id":"3a57f1b5_ca88cec7","line":143,"range":{"start_line":143,"start_character":4,"end_line":143,"end_character":36},"updated":"2016-02-12 16:25:20.000000000","message":"Line 143 is not used.","commit_id":"b7ab4c9c088593bbd93a7c7aa4f1d24b95078d24"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"7f798321e07081d83d5877a69423cd74a788d317","unresolved":false,"context_lines":[{"line_number":140,"context_line":"fi"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"if [[ \"$DRIVER\" \u003d\u003d \"generic\" \u0026\u0026 !( is_service_enabled neutron ) ]]; then"},{"line_number":143,"context_line":"    RUN_MANILA_MIGRATION_TESTS\u003dFalse"},{"line_number":144,"context_line":"    iniset $TEMPEST_CONFIG share run_migration_tests False"},{"line_number":145,"context_line":"if [[ \"$DRIVER\" \u003d\u003d \"lvm\"  ]]; then"},{"line_number":146,"context_line":"    MANILA_TEMPEST_CONCURRENCY\u003d8"}],"source_content_type":"text/x-sh","patch_set":5,"id":"3a57f1b5_bb3922d9","line":143,"range":{"start_line":143,"start_character":4,"end_line":143,"end_character":36},"in_reply_to":"3a57f1b5_ca88cec7","updated":"2016-02-12 16:58:15.000000000","message":"Done","commit_id":"b7ab4c9c088593bbd93a7c7aa4f1d24b95078d24"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"9074442f83c7cc6bab3c9acf46bf79a0fe4b2530","unresolved":false,"context_lines":[{"line_number":139,"context_line":"    fi"},{"line_number":140,"context_line":"fi"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"if [[ \"$DRIVER\" \u003d\u003d \"generic\" \u0026\u0026 !( is_service_enabled neutron ) ]]; then"},{"line_number":143,"context_line":"    iniset $TEMPEST_CONFIG share run_migration_tests False"},{"line_number":144,"context_line":"if [[ \"$DRIVER\" \u003d\u003d \"lvm\"  ]]; then"},{"line_number":145,"context_line":"    MANILA_TEMPEST_CONCURRENCY\u003d8"},{"line_number":146,"context_line":"    RUN_MANILA_CG_TESTS\u003dFalse"}],"source_content_type":"text/x-sh","patch_set":6,"id":"3a57f1b5_cb69a9fa","line":143,"range":{"start_line":142,"start_character":0,"end_line":143,"end_character":58},"updated":"2016-02-12 19:38:37.000000000","message":"This condition should be closed with \"fi\". It broke CI.","commit_id":"2abe6038139834a12ed72885df602eda4a5bdb78"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"18b74f2b527cbda5bc2222ce5f1097e4a9cab1cb","unresolved":false,"context_lines":[{"line_number":139,"context_line":"    fi"},{"line_number":140,"context_line":"fi"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"if [[ \"$DRIVER\" \u003d\u003d \"generic\" \u0026\u0026 !( is_service_enabled neutron ) ]]; then"},{"line_number":143,"context_line":"    iniset $TEMPEST_CONFIG share run_migration_tests False"},{"line_number":144,"context_line":"if [[ \"$DRIVER\" \u003d\u003d \"lvm\"  ]]; then"},{"line_number":145,"context_line":"    MANILA_TEMPEST_CONCURRENCY\u003d8"},{"line_number":146,"context_line":"    RUN_MANILA_CG_TESTS\u003dFalse"}],"source_content_type":"text/x-sh","patch_set":6,"id":"3a57f1b5_a3f571ed","line":143,"range":{"start_line":142,"start_character":0,"end_line":143,"end_character":58},"in_reply_to":"3a57f1b5_cb69a9fa","updated":"2016-02-12 20:29:34.000000000","message":"Done","commit_id":"2abe6038139834a12ed72885df602eda4a5bdb78"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"c7e07025366b4d3ce9378d5989c7eca5e94090d3","unresolved":false,"context_lines":[{"line_number":139,"context_line":"    fi"},{"line_number":140,"context_line":"fi"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"if [[ \"$DRIVER\" \u003d\u003d \"generic\" \u0026\u0026 !( is_service_enabled neutron ) ]]; then"},{"line_number":143,"context_line":"    iniset $TEMPEST_CONFIG share run_migration_tests False"},{"line_number":144,"context_line":"if [[ \"$DRIVER\" \u003d\u003d \"lvm\"  ]]; then"},{"line_number":145,"context_line":"    MANILA_TEMPEST_CONCURRENCY\u003d8"},{"line_number":146,"context_line":"    RUN_MANILA_CG_TESTS\u003dFalse"}],"source_content_type":"text/x-sh","patch_set":7,"id":"3a57f1b5_8b465179","line":143,"range":{"start_line":142,"start_character":0,"end_line":143,"end_character":58},"updated":"2016-02-12 19:39:25.000000000","message":"This condition should be closed with \"fi\". It broke CI.","commit_id":"0d19ee750a9b8df5cc4b7245b5254638224b0a33"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"b34f11ca014a9b9c8b8e324381f33f3472f54006","unresolved":false,"context_lines":[{"line_number":139,"context_line":"    fi"},{"line_number":140,"context_line":"fi"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"if [[ \"$DRIVER\" \u003d\u003d \"generic\" \u0026\u0026 !( is_service_enabled neutron ) ]]; then"},{"line_number":143,"context_line":"    iniset $TEMPEST_CONFIG share run_migration_tests False"},{"line_number":144,"context_line":"if [[ \"$DRIVER\" \u003d\u003d \"lvm\"  ]]; then"},{"line_number":145,"context_line":"    MANILA_TEMPEST_CONCURRENCY\u003d8"},{"line_number":146,"context_line":"    RUN_MANILA_CG_TESTS\u003dFalse"}],"source_content_type":"text/x-sh","patch_set":7,"id":"3a57f1b5_c3d3cd5e","line":143,"range":{"start_line":142,"start_character":0,"end_line":143,"end_character":58},"in_reply_to":"3a57f1b5_8b465179","updated":"2016-02-12 20:30:16.000000000","message":"Done","commit_id":"0d19ee750a9b8df5cc4b7245b5254638224b0a33"}],"devstack/plugin.sh":[{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"f969f159b1609e5db394a7ce8bc239cabc3c7ee8","unresolved":false,"context_lines":[{"line_number":255,"context_line":"# driver, and only if it is configured to mode without handling of share servers."},{"line_number":256,"context_line":"function create_service_share_servers {"},{"line_number":257,"context_line":"    private_net_id\u003d$(nova net-list | grep $PRIVATE_NETWORK_NAME | get_field 1)"},{"line_number":258,"context_line":"    if is_service_enabled neutron; then"},{"line_number":259,"context_line":"        private_subnet_id\u003d$(neutron subnet-show $PRIVATE_SUBNET_NAME | grep \u0027 id \u0027 | get_field 2)"},{"line_number":260,"context_line":"        private_subnet_cidr\u003d$(neutron subnet-show $PRIVATE_SUBNET_NAME | grep \u0027 cidr \u0027 | get_field 2)"},{"line_number":261,"context_line":"    fi"},{"line_number":262,"context_line":"    for BE in ${MANILA_ENABLED_BACKENDS//,/ }; do"},{"line_number":263,"context_line":"        driver_handles_share_servers\u003d$(iniget $MANILA_CONF $BE driver_handles_share_servers)"},{"line_number":264,"context_line":"        share_driver\u003d$(iniget $MANILA_CONF $BE share_driver)"}],"source_content_type":"text/x-sh","patch_set":5,"id":"3a57f1b5_052337a8","line":261,"range":{"start_line":258,"start_character":4,"end_line":261,"end_character":6},"updated":"2016-02-12 16:25:20.000000000","message":"This is used only on lines 284-286, so, it should be called there.","commit_id":"b7ab4c9c088593bbd93a7c7aa4f1d24b95078d24"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"7f798321e07081d83d5877a69423cd74a788d317","unresolved":false,"context_lines":[{"line_number":255,"context_line":"# driver, and only if it is configured to mode without handling of share servers."},{"line_number":256,"context_line":"function create_service_share_servers {"},{"line_number":257,"context_line":"    private_net_id\u003d$(nova net-list | grep $PRIVATE_NETWORK_NAME | get_field 1)"},{"line_number":258,"context_line":"    if is_service_enabled neutron; then"},{"line_number":259,"context_line":"        private_subnet_id\u003d$(neutron subnet-show $PRIVATE_SUBNET_NAME | grep \u0027 id \u0027 | get_field 2)"},{"line_number":260,"context_line":"        private_subnet_cidr\u003d$(neutron subnet-show $PRIVATE_SUBNET_NAME | grep \u0027 cidr \u0027 | get_field 2)"},{"line_number":261,"context_line":"    fi"},{"line_number":262,"context_line":"    for BE in ${MANILA_ENABLED_BACKENDS//,/ }; do"},{"line_number":263,"context_line":"        driver_handles_share_servers\u003d$(iniget $MANILA_CONF $BE driver_handles_share_servers)"},{"line_number":264,"context_line":"        share_driver\u003d$(iniget $MANILA_CONF $BE share_driver)"}],"source_content_type":"text/x-sh","patch_set":5,"id":"3a57f1b5_1b4f166c","line":261,"range":{"start_line":258,"start_character":4,"end_line":261,"end_character":6},"in_reply_to":"3a57f1b5_052337a8","updated":"2016-02-12 16:58:15.000000000","message":"Done","commit_id":"b7ab4c9c088593bbd93a7c7aa4f1d24b95078d24"},{"author":{"_account_id":7102,"name":"Thomas Bechtold","email":"thomas.bechtold@canonical.com","username":"toabctl"},"change_message_id":"527144dee4eeb72f7e8fcf8d4edfe36147f87483","unresolved":false,"context_lines":[{"line_number":254,"context_line":"# create_service_share_servers - creates service Nova VMs, one per generic"},{"line_number":255,"context_line":"# driver, and only if it is configured to mode without handling of share servers."},{"line_number":256,"context_line":"function create_service_share_servers {"},{"line_number":257,"context_line":"    private_net_id\u003d$(nova net-list | grep $PRIVATE_NETWORK_NAME | get_field 1)"},{"line_number":258,"context_line":"    if is_service_enabled neutron; then"},{"line_number":259,"context_line":"        admin_net_id\u003d$(neutron net-create --tenant-id $TENANT_ID admin_net | grep \u0027 id \u0027 | get_field 2)"},{"line_number":260,"context_line":"        admin_subnet_id\u003d$(neutron subnet-create --tenant-id $TENANT_ID --ip_version 4 --no-gateway --name admin_subnet --subnetpool None $admin_net_id $FIXED_RANGE | grep \u0027 id \u0027 | get_field 2)"}],"source_content_type":"text/x-sh","patch_set":20,"id":"bae84128_c6220801","line":257,"updated":"2016-02-22 15:29:07.000000000","message":"Nice that you want to fix this, but unrelated to this change. Makes imo reviewing and backporting more difficult.","commit_id":"5a3d9efd2763a56b41fafb484ff1129006ef293b"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"e202c357028af11a61a5d87487f9b49ecf1f9fe8","unresolved":false,"context_lines":[{"line_number":254,"context_line":"# create_service_share_servers - creates service Nova VMs, one per generic"},{"line_number":255,"context_line":"# driver, and only if it is configured to mode without handling of share servers."},{"line_number":256,"context_line":"function create_service_share_servers {"},{"line_number":257,"context_line":"    private_net_id\u003d$(nova net-list | grep $PRIVATE_NETWORK_NAME | get_field 1)"},{"line_number":258,"context_line":"    if is_service_enabled neutron; then"},{"line_number":259,"context_line":"        admin_net_id\u003d$(neutron net-create --tenant-id $TENANT_ID admin_net | grep \u0027 id \u0027 | get_field 2)"},{"line_number":260,"context_line":"        admin_subnet_id\u003d$(neutron subnet-create --tenant-id $TENANT_ID --ip_version 4 --no-gateway --name admin_subnet --subnetpool None $admin_net_id $FIXED_RANGE | grep \u0027 id \u0027 | get_field 2)"}],"source_content_type":"text/x-sh","patch_set":20,"id":"bae84128_44609ea5","line":257,"in_reply_to":"bae84128_c6220801","updated":"2016-02-23 01:45:18.000000000","message":"Done","commit_id":"5a3d9efd2763a56b41fafb484ff1129006ef293b"},{"author":{"_account_id":7102,"name":"Thomas Bechtold","email":"thomas.bechtold@canonical.com","username":"toabctl"},"change_message_id":"527144dee4eeb72f7e8fcf8d4edfe36147f87483","unresolved":false,"context_lines":[{"line_number":255,"context_line":"# driver, and only if it is configured to mode without handling of share servers."},{"line_number":256,"context_line":"function create_service_share_servers {"},{"line_number":257,"context_line":"    private_net_id\u003d$(nova net-list | grep $PRIVATE_NETWORK_NAME | get_field 1)"},{"line_number":258,"context_line":"    if is_service_enabled neutron; then"},{"line_number":259,"context_line":"        admin_net_id\u003d$(neutron net-create --tenant-id $TENANT_ID admin_net | grep \u0027 id \u0027 | get_field 2)"},{"line_number":260,"context_line":"        admin_subnet_id\u003d$(neutron subnet-create --tenant-id $TENANT_ID --ip_version 4 --no-gateway --name admin_subnet --subnetpool None $admin_net_id $FIXED_RANGE | grep \u0027 id \u0027 | get_field 2)"},{"line_number":261,"context_line":"    fi"}],"source_content_type":"text/x-sh","patch_set":20,"id":"bae84128_46f27870","line":258,"updated":"2016-02-22 15:29:07.000000000","message":"can you move the creation of the net and subnet to line #283 because you may not need the network if you are not reaching the else from #282","commit_id":"5a3d9efd2763a56b41fafb484ff1129006ef293b"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"e202c357028af11a61a5d87487f9b49ecf1f9fe8","unresolved":false,"context_lines":[{"line_number":255,"context_line":"# driver, and only if it is configured to mode without handling of share servers."},{"line_number":256,"context_line":"function create_service_share_servers {"},{"line_number":257,"context_line":"    private_net_id\u003d$(nova net-list | grep $PRIVATE_NETWORK_NAME | get_field 1)"},{"line_number":258,"context_line":"    if is_service_enabled neutron; then"},{"line_number":259,"context_line":"        admin_net_id\u003d$(neutron net-create --tenant-id $TENANT_ID admin_net | grep \u0027 id \u0027 | get_field 2)"},{"line_number":260,"context_line":"        admin_subnet_id\u003d$(neutron subnet-create --tenant-id $TENANT_ID --ip_version 4 --no-gateway --name admin_subnet --subnetpool None $admin_net_id $FIXED_RANGE | grep \u0027 id \u0027 | get_field 2)"},{"line_number":261,"context_line":"    fi"}],"source_content_type":"text/x-sh","patch_set":20,"id":"bae84128_6444c21a","line":258,"in_reply_to":"bae84128_46f27870","updated":"2016-02-23 01:45:18.000000000","message":"Done","commit_id":"5a3d9efd2763a56b41fafb484ff1129006ef293b"},{"author":{"_account_id":7102,"name":"Thomas Bechtold","email":"thomas.bechtold@canonical.com","username":"toabctl"},"change_message_id":"527144dee4eeb72f7e8fcf8d4edfe36147f87483","unresolved":false,"context_lines":[{"line_number":256,"context_line":"function create_service_share_servers {"},{"line_number":257,"context_line":"    private_net_id\u003d$(nova net-list | grep $PRIVATE_NETWORK_NAME | get_field 1)"},{"line_number":258,"context_line":"    if is_service_enabled neutron; then"},{"line_number":259,"context_line":"        admin_net_id\u003d$(neutron net-create --tenant-id $TENANT_ID admin_net | grep \u0027 id \u0027 | get_field 2)"},{"line_number":260,"context_line":"        admin_subnet_id\u003d$(neutron subnet-create --tenant-id $TENANT_ID --ip_version 4 --no-gateway --name admin_subnet --subnetpool None $admin_net_id $FIXED_RANGE | grep \u0027 id \u0027 | get_field 2)"},{"line_number":261,"context_line":"    fi"},{"line_number":262,"context_line":"    for BE in ${MANILA_ENABLED_BACKENDS//,/ }; do"}],"source_content_type":"text/x-sh","patch_set":20,"id":"bae84128_a6270463","line":259,"updated":"2016-02-22 15:29:07.000000000","message":"Use \"neutron net-create --tenant-id $TENANT_ID admin_net -f value -c id\" instead of grep and get_field","commit_id":"5a3d9efd2763a56b41fafb484ff1129006ef293b"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"e202c357028af11a61a5d87487f9b49ecf1f9fe8","unresolved":false,"context_lines":[{"line_number":256,"context_line":"function create_service_share_servers {"},{"line_number":257,"context_line":"    private_net_id\u003d$(nova net-list | grep $PRIVATE_NETWORK_NAME | get_field 1)"},{"line_number":258,"context_line":"    if is_service_enabled neutron; then"},{"line_number":259,"context_line":"        admin_net_id\u003d$(neutron net-create --tenant-id $TENANT_ID admin_net | grep \u0027 id \u0027 | get_field 2)"},{"line_number":260,"context_line":"        admin_subnet_id\u003d$(neutron subnet-create --tenant-id $TENANT_ID --ip_version 4 --no-gateway --name admin_subnet --subnetpool None $admin_net_id $FIXED_RANGE | grep \u0027 id \u0027 | get_field 2)"},{"line_number":261,"context_line":"    fi"},{"line_number":262,"context_line":"    for BE in ${MANILA_ENABLED_BACKENDS//,/ }; do"}],"source_content_type":"text/x-sh","patch_set":20,"id":"bae84128_a44a4a24","line":259,"in_reply_to":"bae84128_a6270463","updated":"2016-02-23 01:45:18.000000000","message":"Done","commit_id":"5a3d9efd2763a56b41fafb484ff1129006ef293b"},{"author":{"_account_id":7102,"name":"Thomas Bechtold","email":"thomas.bechtold@canonical.com","username":"toabctl"},"change_message_id":"527144dee4eeb72f7e8fcf8d4edfe36147f87483","unresolved":false,"context_lines":[{"line_number":256,"context_line":"function create_service_share_servers {"},{"line_number":257,"context_line":"    private_net_id\u003d$(nova net-list | grep $PRIVATE_NETWORK_NAME | get_field 1)"},{"line_number":258,"context_line":"    if is_service_enabled neutron; then"},{"line_number":259,"context_line":"        admin_net_id\u003d$(neutron net-create --tenant-id $TENANT_ID admin_net | grep \u0027 id \u0027 | get_field 2)"},{"line_number":260,"context_line":"        admin_subnet_id\u003d$(neutron subnet-create --tenant-id $TENANT_ID --ip_version 4 --no-gateway --name admin_subnet --subnetpool None $admin_net_id $FIXED_RANGE | grep \u0027 id \u0027 | get_field 2)"},{"line_number":261,"context_line":"    fi"},{"line_number":262,"context_line":"    for BE in ${MANILA_ENABLED_BACKENDS//,/ }; do"},{"line_number":263,"context_line":"        driver_handles_share_servers\u003d$(iniget $MANILA_CONF $BE driver_handles_share_servers)"},{"line_number":264,"context_line":"        share_driver\u003d$(iniget $MANILA_CONF $BE share_driver)"}],"source_content_type":"text/x-sh","patch_set":20,"id":"bae84128_c61cc815","line":261,"range":{"start_line":259,"start_character":103,"end_line":261,"end_character":6},"updated":"2016-02-22 15:29:07.000000000","message":"same here","commit_id":"5a3d9efd2763a56b41fafb484ff1129006ef293b"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"e202c357028af11a61a5d87487f9b49ecf1f9fe8","unresolved":false,"context_lines":[{"line_number":256,"context_line":"function create_service_share_servers {"},{"line_number":257,"context_line":"    private_net_id\u003d$(nova net-list | grep $PRIVATE_NETWORK_NAME | get_field 1)"},{"line_number":258,"context_line":"    if is_service_enabled neutron; then"},{"line_number":259,"context_line":"        admin_net_id\u003d$(neutron net-create --tenant-id $TENANT_ID admin_net | grep \u0027 id \u0027 | get_field 2)"},{"line_number":260,"context_line":"        admin_subnet_id\u003d$(neutron subnet-create --tenant-id $TENANT_ID --ip_version 4 --no-gateway --name admin_subnet --subnetpool None $admin_net_id $FIXED_RANGE | grep \u0027 id \u0027 | get_field 2)"},{"line_number":261,"context_line":"    fi"},{"line_number":262,"context_line":"    for BE in ${MANILA_ENABLED_BACKENDS//,/ }; do"},{"line_number":263,"context_line":"        driver_handles_share_servers\u003d$(iniget $MANILA_CONF $BE driver_handles_share_servers)"},{"line_number":264,"context_line":"        share_driver\u003d$(iniget $MANILA_CONF $BE share_driver)"}],"source_content_type":"text/x-sh","patch_set":20,"id":"bae84128_0454d6c7","line":261,"range":{"start_line":259,"start_character":103,"end_line":261,"end_character":6},"in_reply_to":"bae84128_c61cc815","updated":"2016-02-23 01:45:18.000000000","message":"Done","commit_id":"5a3d9efd2763a56b41fafb484ff1129006ef293b"},{"author":{"_account_id":7102,"name":"Thomas Bechtold","email":"thomas.bechtold@canonical.com","username":"toabctl"},"change_message_id":"527144dee4eeb72f7e8fcf8d4edfe36147f87483","unresolved":false,"context_lines":[{"line_number":276,"context_line":"                vm_id\u003d$(nova show $vm_name | grep \u0027 id \u0027 | get_field 2)"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"                iniset $MANILA_CONF $BE service_instance_name_or_id $vm_id"},{"line_number":279,"context_line":"                iniset $MANILA_CONF $BE service_net_name_or_ip $PRIVATE_NETWORK_NAME"},{"line_number":280,"context_line":"                iniset $MANILA_CONF $BE tenant_net_name_or_ip $PRIVATE_NETWORK_NAME"},{"line_number":281,"context_line":"                iniset $MANILA_CONF $BE migration_data_copy_node_ip $PUBLIC_NETWORK_GATEWAY"},{"line_number":282,"context_line":"            else"}],"source_content_type":"text/x-sh","patch_set":20,"id":"bae84128_667a1cf3","line":279,"updated":"2016-02-22 15:29:07.000000000","message":"same here. unrelated","commit_id":"5a3d9efd2763a56b41fafb484ff1129006ef293b"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"e202c357028af11a61a5d87487f9b49ecf1f9fe8","unresolved":false,"context_lines":[{"line_number":276,"context_line":"                vm_id\u003d$(nova show $vm_name | grep \u0027 id \u0027 | get_field 2)"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"                iniset $MANILA_CONF $BE service_instance_name_or_id $vm_id"},{"line_number":279,"context_line":"                iniset $MANILA_CONF $BE service_net_name_or_ip $PRIVATE_NETWORK_NAME"},{"line_number":280,"context_line":"                iniset $MANILA_CONF $BE tenant_net_name_or_ip $PRIVATE_NETWORK_NAME"},{"line_number":281,"context_line":"                iniset $MANILA_CONF $BE migration_data_copy_node_ip $PUBLIC_NETWORK_GATEWAY"},{"line_number":282,"context_line":"            else"}],"source_content_type":"text/x-sh","patch_set":20,"id":"bae84128_24659ab4","line":279,"in_reply_to":"bae84128_667a1cf3","updated":"2016-02-23 01:45:18.000000000","message":"Done","commit_id":"5a3d9efd2763a56b41fafb484ff1129006ef293b"},{"author":{"_account_id":7102,"name":"Thomas Bechtold","email":"thomas.bechtold@canonical.com","username":"toabctl"},"change_message_id":"527144dee4eeb72f7e8fcf8d4edfe36147f87483","unresolved":false,"context_lines":[{"line_number":277,"context_line":""},{"line_number":278,"context_line":"                iniset $MANILA_CONF $BE service_instance_name_or_id $vm_id"},{"line_number":279,"context_line":"                iniset $MANILA_CONF $BE service_net_name_or_ip $PRIVATE_NETWORK_NAME"},{"line_number":280,"context_line":"                iniset $MANILA_CONF $BE tenant_net_name_or_ip $PRIVATE_NETWORK_NAME"},{"line_number":281,"context_line":"                iniset $MANILA_CONF $BE migration_data_copy_node_ip $PUBLIC_NETWORK_GATEWAY"},{"line_number":282,"context_line":"            else"},{"line_number":283,"context_line":"                if is_service_enabled neutron; then"}],"source_content_type":"text/x-sh","patch_set":20,"id":"bae84128_467d58e6","line":280,"updated":"2016-02-22 15:29:07.000000000","message":"same here. unrelated","commit_id":"5a3d9efd2763a56b41fafb484ff1129006ef293b"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"e202c357028af11a61a5d87487f9b49ecf1f9fe8","unresolved":false,"context_lines":[{"line_number":277,"context_line":""},{"line_number":278,"context_line":"                iniset $MANILA_CONF $BE service_instance_name_or_id $vm_id"},{"line_number":279,"context_line":"                iniset $MANILA_CONF $BE service_net_name_or_ip $PRIVATE_NETWORK_NAME"},{"line_number":280,"context_line":"                iniset $MANILA_CONF $BE tenant_net_name_or_ip $PRIVATE_NETWORK_NAME"},{"line_number":281,"context_line":"                iniset $MANILA_CONF $BE migration_data_copy_node_ip $PUBLIC_NETWORK_GATEWAY"},{"line_number":282,"context_line":"            else"},{"line_number":283,"context_line":"                if is_service_enabled neutron; then"}],"source_content_type":"text/x-sh","patch_set":20,"id":"bae84128_845626cc","line":280,"in_reply_to":"bae84128_467d58e6","updated":"2016-02-23 01:45:18.000000000","message":"Done","commit_id":"5a3d9efd2763a56b41fafb484ff1129006ef293b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"4f1a2b4ba3ec55f5e1fe06beeffcbfac80ea5bd7","unresolved":false,"context_lines":[{"line_number":278,"context_line":"                iniset $MANILA_CONF $BE migration_data_copy_node_ip $PUBLIC_NETWORK_GATEWAY"},{"line_number":279,"context_line":"            else"},{"line_number":280,"context_line":"                if is_service_enabled neutron; then"},{"line_number":281,"context_line":"                    if [ $created_admin_network \u003d\u003d false ]; then"},{"line_number":282,"context_line":"                        admin_net_id\u003d$(neutron net-create --tenant-id $TENANT_ID admin_net | grep \u0027 id \u0027 | get_field 2)"},{"line_number":283,"context_line":"                        admin_subnet_id\u003d$(neutron subnet-create --tenant-id $TENANT_ID --ip_version 4 --no-gateway --name admin_subnet --subnetpool None $admin_net_id $FIXED_RANGE | grep \u0027 id \u0027 | get_field 2)"},{"line_number":284,"context_line":"                        created_admin_network\u003dtrue"}],"source_content_type":"text/x-sh","patch_set":26,"id":"9aed3d3a_3f3f2c88","line":281,"range":{"start_line":281,"start_character":25,"end_line":281,"end_character":56},"updated":"2016-02-29 22:14:04.000000000","message":"it is always False on this step.","commit_id":"bb8b43d80ba01dfca7fb1540ba901b1fa8c4355e"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"3e17604021e615bde27483b2fa13dbfbe98c53b7","unresolved":false,"context_lines":[{"line_number":278,"context_line":"                iniset $MANILA_CONF $BE migration_data_copy_node_ip $PUBLIC_NETWORK_GATEWAY"},{"line_number":279,"context_line":"            else"},{"line_number":280,"context_line":"                if is_service_enabled neutron; then"},{"line_number":281,"context_line":"                    if [ $created_admin_network \u003d\u003d false ]; then"},{"line_number":282,"context_line":"                        admin_net_id\u003d$(neutron net-create --tenant-id $TENANT_ID admin_net | grep \u0027 id \u0027 | get_field 2)"},{"line_number":283,"context_line":"                        admin_subnet_id\u003d$(neutron subnet-create --tenant-id $TENANT_ID --ip_version 4 --no-gateway --name admin_subnet --subnetpool None $admin_net_id $FIXED_RANGE | grep \u0027 id \u0027 | get_field 2)"},{"line_number":284,"context_line":"                        created_admin_network\u003dtrue"}],"source_content_type":"text/x-sh","patch_set":26,"id":"9aed3d3a_bf74dc35","line":281,"range":{"start_line":281,"start_character":25,"end_line":281,"end_character":56},"in_reply_to":"9aed3d3a_3f3f2c88","updated":"2016-02-29 22:17:08.000000000","message":"Hi Valeriy. It is inside a loop. The condition is there to avoid creating admin network twice.","commit_id":"bb8b43d80ba01dfca7fb1540ba901b1fa8c4355e"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"4f1a2b4ba3ec55f5e1fe06beeffcbfac80ea5bd7","unresolved":false,"context_lines":[{"line_number":281,"context_line":"                    if [ $created_admin_network \u003d\u003d false ]; then"},{"line_number":282,"context_line":"                        admin_net_id\u003d$(neutron net-create --tenant-id $TENANT_ID admin_net | grep \u0027 id \u0027 | get_field 2)"},{"line_number":283,"context_line":"                        admin_subnet_id\u003d$(neutron subnet-create --tenant-id $TENANT_ID --ip_version 4 --no-gateway --name admin_subnet --subnetpool None $admin_net_id $FIXED_RANGE | grep \u0027 id \u0027 | get_field 2)"},{"line_number":284,"context_line":"                        created_admin_network\u003dtrue"},{"line_number":285,"context_line":"                    fi"},{"line_number":286,"context_line":"                    iniset $MANILA_CONF $BE admin_network_id $admin_net_id"},{"line_number":287,"context_line":"                    iniset $MANILA_CONF $BE admin_subnet_id $admin_subnet_id"}],"source_content_type":"text/x-sh","patch_set":26,"id":"9aed3d3a_1f44e818","line":284,"range":{"start_line":284,"start_character":24,"end_line":284,"end_character":50},"updated":"2016-02-29 22:14:04.000000000","message":"it is not used.","commit_id":"bb8b43d80ba01dfca7fb1540ba901b1fa8c4355e"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"3e17604021e615bde27483b2fa13dbfbe98c53b7","unresolved":false,"context_lines":[{"line_number":281,"context_line":"                    if [ $created_admin_network \u003d\u003d false ]; then"},{"line_number":282,"context_line":"                        admin_net_id\u003d$(neutron net-create --tenant-id $TENANT_ID admin_net | grep \u0027 id \u0027 | get_field 2)"},{"line_number":283,"context_line":"                        admin_subnet_id\u003d$(neutron subnet-create --tenant-id $TENANT_ID --ip_version 4 --no-gateway --name admin_subnet --subnetpool None $admin_net_id $FIXED_RANGE | grep \u0027 id \u0027 | get_field 2)"},{"line_number":284,"context_line":"                        created_admin_network\u003dtrue"},{"line_number":285,"context_line":"                    fi"},{"line_number":286,"context_line":"                    iniset $MANILA_CONF $BE admin_network_id $admin_net_id"},{"line_number":287,"context_line":"                    iniset $MANILA_CONF $BE admin_subnet_id $admin_subnet_id"}],"source_content_type":"text/x-sh","patch_set":26,"id":"9aed3d3a_df8e002d","line":284,"range":{"start_line":284,"start_character":24,"end_line":284,"end_character":50},"in_reply_to":"9aed3d3a_1f44e818","updated":"2016-02-29 22:17:08.000000000","message":"Hi Valeriy. It is inside a loop. The condition is there to avoid creating admin network twice.","commit_id":"bb8b43d80ba01dfca7fb1540ba901b1fa8c4355e"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"59138b66a139b0ea79ccd65749bb2762c4eee4de","unresolved":false,"context_lines":[{"line_number":281,"context_line":"                    if [ $created_admin_network \u003d\u003d false ]; then"},{"line_number":282,"context_line":"                        admin_net_id\u003d$(neutron net-create --tenant-id $TENANT_ID admin_net | grep \u0027 id \u0027 | get_field 2)"},{"line_number":283,"context_line":"                        admin_subnet_id\u003d$(neutron subnet-create --tenant-id $TENANT_ID --ip_version 4 --no-gateway --name admin_subnet --subnetpool None $admin_net_id $FIXED_RANGE | grep \u0027 id \u0027 | get_field 2)"},{"line_number":284,"context_line":"                        created_admin_network\u003dtrue"},{"line_number":285,"context_line":"                    fi"},{"line_number":286,"context_line":"                    iniset $MANILA_CONF $BE admin_network_id $admin_net_id"},{"line_number":287,"context_line":"                    iniset $MANILA_CONF $BE admin_subnet_id $admin_subnet_id"}],"source_content_type":"text/x-sh","patch_set":26,"id":"9aed3d3a_3fe60cb0","line":284,"range":{"start_line":284,"start_character":24,"end_line":284,"end_character":50},"in_reply_to":"9aed3d3a_df8e002d","updated":"2016-02-29 22:22:09.000000000","message":"Oh, sorry, then it is ok.","commit_id":"bb8b43d80ba01dfca7fb1540ba901b1fa8c4355e"}],"manila/network/linux/ip_lib.py":[{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"b3082cf0264ba9e0772e4585d8d7eb81ffd4cbe1","unresolved":false,"context_lines":[{"line_number":402,"context_line":"        lines \u003d output.split(\u0027\\n\u0027)"},{"line_number":403,"context_line":"        for line in lines:"},{"line_number":404,"context_line":"            items \u003d line.split()"},{"line_number":405,"context_line":"            if len(items) \u003e 0:"},{"line_number":406,"context_line":"                item \u003d {\u0027Destination\u0027: items[0]}"},{"line_number":407,"context_line":"                if items[1] \u003d\u003d \u0027via\u0027:"},{"line_number":408,"context_line":"                    item[\u0027Gateway\u0027] \u003d items[2]"}],"source_content_type":"text/x-python","patch_set":26,"id":"9aed3d3a_70955931","line":405,"range":{"start_line":405,"start_character":11,"end_line":405,"end_character":30},"updated":"2016-03-01 04:58:32.000000000","message":"Could do more checking to avoid index errors below.  That exception is fine as-is if it should never happen.","commit_id":"bb8b43d80ba01dfca7fb1540ba901b1fa8c4355e"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"eb8c48447a094344aaecbcae96f79ecd913821f2","unresolved":false,"context_lines":[{"line_number":402,"context_line":"        lines \u003d output.split(\u0027\\n\u0027)"},{"line_number":403,"context_line":"        for line in lines:"},{"line_number":404,"context_line":"            items \u003d line.split()"},{"line_number":405,"context_line":"            if len(items) \u003e 0:"},{"line_number":406,"context_line":"                item \u003d {\u0027Destination\u0027: items[0]}"},{"line_number":407,"context_line":"                if items[1] \u003d\u003d \u0027via\u0027:"},{"line_number":408,"context_line":"                    item[\u0027Gateway\u0027] \u003d items[2]"}],"source_content_type":"text/x-python","patch_set":26,"id":"7af24918_4d95e53e","line":405,"range":{"start_line":405,"start_character":11,"end_line":405,"end_character":30},"in_reply_to":"9aed3d3a_70955931","updated":"2016-03-01 14:38:24.000000000","message":"Done","commit_id":"bb8b43d80ba01dfca7fb1540ba901b1fa8c4355e"}],"manila/share/driver.py":[{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"7a046408076217ad674810887a2a21b18ef03658","unresolved":false,"context_lines":[{"line_number":347,"context_line":"            path \u003d share_instance[\u0027export_locations\u0027][0][\u0027path\u0027]"},{"line_number":348,"context_line":"            if mount_ip:"},{"line_number":349,"context_line":"                # NOTE(ganso): Does not currently work with hostnames and ipv6."},{"line_number":350,"context_line":"                p \u003d re.compile(\"\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}\")"},{"line_number":351,"context_line":"                path \u003d p.sub(mount_ip, path)"},{"line_number":352,"context_line":"        return path"},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"    def _get_unmount_command(self, context, share_instance, share_server):"}],"source_content_type":"text/x-python","patch_set":15,"id":"dae33548_1351aed8","line":351,"range":{"start_line":350,"start_character":16,"end_line":351,"end_character":44},"updated":"2016-02-17 10:49:14.000000000","message":"No need to invent already invented things:\n\nhttps://github.com/openstack/manila/blob/3155ca01/manila/utils.py#L500","commit_id":"bad3a4f8971576248f947dd5f3c26839c097ae53"},{"author":{"_account_id":7102,"name":"Thomas Bechtold","email":"thomas.bechtold@canonical.com","username":"toabctl"},"change_message_id":"527144dee4eeb72f7e8fcf8d4edfe36147f87483","unresolved":false,"context_lines":[{"line_number":360,"context_line":"            return [\u0027mount\u0027, \u0027-t\u0027, share_instance[\u0027share_proto\u0027].lower()]"},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"    def _get_mount_ip(self, share_instance, share_server):"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"        path \u003d next((x[\u0027path\u0027] for x in share_instance[\u0027export_locations\u0027]"},{"line_number":365,"context_line":"                    if x[\u0027is_admin_only\u0027]), None)"},{"line_number":366,"context_line":"        if not path:"}],"source_content_type":"text/x-python","patch_set":20,"id":"bae84128_c9085b30","line":363,"updated":"2016-02-22 15:29:07.000000000","message":"Not a single test case for this method. And to me it\u0027s not clear what this method should do in what cases.","commit_id":"5a3d9efd2763a56b41fafb484ff1129006ef293b"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"e202c357028af11a61a5d87487f9b49ecf1f9fe8","unresolved":false,"context_lines":[{"line_number":360,"context_line":"            return [\u0027mount\u0027, \u0027-t\u0027, share_instance[\u0027share_proto\u0027].lower()]"},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"    def _get_mount_ip(self, share_instance, share_server):"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"        path \u003d next((x[\u0027path\u0027] for x in share_instance[\u0027export_locations\u0027]"},{"line_number":365,"context_line":"                    if x[\u0027is_admin_only\u0027]), None)"},{"line_number":366,"context_line":"        if not path:"}],"source_content_type":"text/x-python","patch_set":20,"id":"bae84128_2b056213","line":363,"in_reply_to":"bae84128_c9085b30","updated":"2016-02-23 01:45:18.000000000","message":"Please see test_driver.test_get_migration_info. There are 2 test cases. I am including a docstring.","commit_id":"5a3d9efd2763a56b41fafb484ff1129006ef293b"},{"author":{"_account_id":7102,"name":"Thomas Bechtold","email":"thomas.bechtold@canonical.com","username":"toabctl"},"change_message_id":"527144dee4eeb72f7e8fcf8d4edfe36147f87483","unresolved":false,"context_lines":[{"line_number":361,"context_line":""},{"line_number":362,"context_line":"    def _get_mount_ip(self, share_instance, share_server):"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"        path \u003d next((x[\u0027path\u0027] for x in share_instance[\u0027export_locations\u0027]"},{"line_number":365,"context_line":"                    if x[\u0027is_admin_only\u0027]), None)"},{"line_number":366,"context_line":"        if not path:"},{"line_number":367,"context_line":"            mount_ip \u003d self.configuration.safe_get("}],"source_content_type":"text/x-python","patch_set":20,"id":"bae84128_6964af21","line":364,"updated":"2016-02-22 15:29:07.000000000","message":"Hm. next() ? I don\u0027t get this. Aren\u0027t you trying to find the share_instance[\u0027export_locations\u0027][\u0027path\u0027] where share_instance[\u0027export_locations\u0027][\u0027is_admin_only\u0027] is True?","commit_id":"5a3d9efd2763a56b41fafb484ff1129006ef293b"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"e202c357028af11a61a5d87487f9b49ecf1f9fe8","unresolved":false,"context_lines":[{"line_number":361,"context_line":""},{"line_number":362,"context_line":"    def _get_mount_ip(self, share_instance, share_server):"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"        path \u003d next((x[\u0027path\u0027] for x in share_instance[\u0027export_locations\u0027]"},{"line_number":365,"context_line":"                    if x[\u0027is_admin_only\u0027]), None)"},{"line_number":366,"context_line":"        if not path:"},{"line_number":367,"context_line":"            mount_ip \u003d self.configuration.safe_get("}],"source_content_type":"text/x-python","patch_set":20,"id":"bae84128_06197379","line":364,"in_reply_to":"bae84128_6964af21","updated":"2016-02-23 01:45:18.000000000","message":"exactly. next() looks for the first occurrence that matches the conditions specified (\u0027is_admin_only\u0027 \u003d\u003d True in this case).","commit_id":"5a3d9efd2763a56b41fafb484ff1129006ef293b"},{"author":{"_account_id":7102,"name":"Thomas Bechtold","email":"thomas.bechtold@canonical.com","username":"toabctl"},"change_message_id":"527144dee4eeb72f7e8fcf8d4edfe36147f87483","unresolved":false,"context_lines":[{"line_number":366,"context_line":"        if not path:"},{"line_number":367,"context_line":"            mount_ip \u003d self.configuration.safe_get("},{"line_number":368,"context_line":"                \u0027migration_mounting_backend_ip\u0027)"},{"line_number":369,"context_line":"            path \u003d share_instance[\u0027export_locations\u0027][0][\u0027path\u0027]"},{"line_number":370,"context_line":"            if mount_ip:"},{"line_number":371,"context_line":"                # NOTE(ganso): Does not currently work with hostnames and ipv6."},{"line_number":372,"context_line":"                p \u003d re.compile(\"\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}\")"}],"source_content_type":"text/x-python","patch_set":20,"id":"bae84128_2c6475e2","line":369,"updated":"2016-02-22 15:29:07.000000000","message":"Is it possible that there are no export_locations at all? Then this would raise a exception.","commit_id":"5a3d9efd2763a56b41fafb484ff1129006ef293b"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"e202c357028af11a61a5d87487f9b49ecf1f9fe8","unresolved":false,"context_lines":[{"line_number":366,"context_line":"        if not path:"},{"line_number":367,"context_line":"            mount_ip \u003d self.configuration.safe_get("},{"line_number":368,"context_line":"                \u0027migration_mounting_backend_ip\u0027)"},{"line_number":369,"context_line":"            path \u003d share_instance[\u0027export_locations\u0027][0][\u0027path\u0027]"},{"line_number":370,"context_line":"            if mount_ip:"},{"line_number":371,"context_line":"                # NOTE(ganso): Does not currently work with hostnames and ipv6."},{"line_number":372,"context_line":"                p \u003d re.compile(\"\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}\")"}],"source_content_type":"text/x-python","patch_set":20,"id":"bae84128_66767fa5","line":369,"in_reply_to":"bae84128_2c6475e2","updated":"2016-02-23 01:45:18.000000000","message":"Good point. If this throws an exception, the code calling this method will catch and throw ShareMigrationFailed, which is exactly what is intended if a share that is being migrated does not have an export location.","commit_id":"5a3d9efd2763a56b41fafb484ff1129006ef293b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"59138b66a139b0ea79ccd65749bb2762c4eee4de","unresolved":false,"context_lines":[{"line_number":337,"context_line":"    def get_driver_migration_info(self, context, share, share_server):"},{"line_number":338,"context_line":"        \"\"\"Is called to provide necessary driver migration logic."},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"        :param context: The \u0027context.RequestContext\u0027 object for the request."},{"line_number":341,"context_line":"        :param share: Reference to the share being migrated."},{"line_number":342,"context_line":"        :param share_server: Share server model or None."},{"line_number":343,"context_line":"        :return: A dictionary with migration information."},{"line_number":344,"context_line":"        \"\"\""},{"line_number":345,"context_line":"        return None"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"    def get_migration_info(self, context, share, share_server):"}],"source_content_type":"text/x-python","patch_set":26,"id":"9aed3d3a_bfefbce7","line":344,"range":{"start_line":340,"start_character":8,"end_line":344,"end_character":11},"updated":"2016-02-29 22:22:09.000000000","message":"this change looks unrelated to the goal of commit","commit_id":"bb8b43d80ba01dfca7fb1540ba901b1fa8c4355e"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"eb8c48447a094344aaecbcae96f79ecd913821f2","unresolved":false,"context_lines":[{"line_number":337,"context_line":"    def get_driver_migration_info(self, context, share, share_server):"},{"line_number":338,"context_line":"        \"\"\"Is called to provide necessary driver migration logic."},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"        :param context: The \u0027context.RequestContext\u0027 object for the request."},{"line_number":341,"context_line":"        :param share: Reference to the share being migrated."},{"line_number":342,"context_line":"        :param share_server: Share server model or None."},{"line_number":343,"context_line":"        :return: A dictionary with migration information."},{"line_number":344,"context_line":"        \"\"\""},{"line_number":345,"context_line":"        return None"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"    def get_migration_info(self, context, share, share_server):"}],"source_content_type":"text/x-python","patch_set":26,"id":"7af24918_b293284f","line":344,"range":{"start_line":340,"start_character":8,"end_line":344,"end_character":11},"in_reply_to":"9aed3d3a_bfefbce7","updated":"2016-03-01 14:38:24.000000000","message":"Thomas asked for this change, since he was not understanding what the removal of \"service_ip\" was affecting.","commit_id":"bb8b43d80ba01dfca7fb1540ba901b1fa8c4355e"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"59138b66a139b0ea79ccd65749bb2762c4eee4de","unresolved":false,"context_lines":[{"line_number":347,"context_line":"    def get_migration_info(self, context, share, share_server):"},{"line_number":348,"context_line":"        \"\"\"Is called to provide necessary generic migration logic."},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"        :param context: The \u0027context.RequestContext\u0027 object for the request."},{"line_number":351,"context_line":"        :param share: Reference to the share being migrated."},{"line_number":352,"context_line":"        :param share_server: Share server model or None."},{"line_number":353,"context_line":"        :return: A dictionary with migration information."},{"line_number":354,"context_line":"        \"\"\""},{"line_number":355,"context_line":"        mount_cmd \u003d self._get_mount_command(context, share, share_server)"},{"line_number":356,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"9aed3d3a_ffbb04e3","line":353,"range":{"start_line":350,"start_character":7,"end_line":353,"end_character":57},"updated":"2016-02-29 22:22:09.000000000","message":"same here.","commit_id":"bb8b43d80ba01dfca7fb1540ba901b1fa8c4355e"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"eb8c48447a094344aaecbcae96f79ecd913821f2","unresolved":false,"context_lines":[{"line_number":347,"context_line":"    def get_migration_info(self, context, share, share_server):"},{"line_number":348,"context_line":"        \"\"\"Is called to provide necessary generic migration logic."},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"        :param context: The \u0027context.RequestContext\u0027 object for the request."},{"line_number":351,"context_line":"        :param share: Reference to the share being migrated."},{"line_number":352,"context_line":"        :param share_server: Share server model or None."},{"line_number":353,"context_line":"        :return: A dictionary with migration information."},{"line_number":354,"context_line":"        \"\"\""},{"line_number":355,"context_line":"        mount_cmd \u003d self._get_mount_command(context, share, share_server)"},{"line_number":356,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"7af24918_12993c6f","line":353,"range":{"start_line":350,"start_character":7,"end_line":353,"end_character":57},"in_reply_to":"9aed3d3a_ffbb04e3","updated":"2016-03-01 14:38:24.000000000","message":"Thomas asked for this change, since he was not understanding what the removal of \"service_ip\" was affecting.","commit_id":"bb8b43d80ba01dfca7fb1540ba901b1fa8c4355e"}],"manila/share/drivers/generic.py":[{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"d5cd2f9ad49222878fe5411d1037a656db88c629","unresolved":false,"context_lines":[{"line_number":622,"context_line":"        self._mount_device(share, share_server[\u0027backend_details\u0027], volume)"},{"line_number":623,"context_line":"        location \u003d helper.create_export(share_server[\u0027backend_details\u0027],"},{"line_number":624,"context_line":"                                        share[\u0027name\u0027])"},{"line_number":625,"context_line":"        return location"},{"line_number":626,"context_line":""},{"line_number":627,"context_line":"    @ensure_server"},{"line_number":628,"context_line":"    def extend_share(self, share, new_size, share_server\u003dNone):"}],"source_content_type":"text/x-python","patch_set":10,"id":"dae33548_92aa46d3","line":625,"range":{"start_line":625,"start_character":8,"end_line":625,"end_character":23},"updated":"2016-02-15 13:47:49.000000000","message":"this?","commit_id":"3ebcfd0dbdf517aaa12be44b7e1625fa094d2265"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"b01d550a5aef80ced4185a3b44f2faea0cf29fb9","unresolved":false,"context_lines":[{"line_number":622,"context_line":"        self._mount_device(share, share_server[\u0027backend_details\u0027], volume)"},{"line_number":623,"context_line":"        location \u003d helper.create_export(share_server[\u0027backend_details\u0027],"},{"line_number":624,"context_line":"                                        share[\u0027name\u0027])"},{"line_number":625,"context_line":"        return location"},{"line_number":626,"context_line":""},{"line_number":627,"context_line":"    @ensure_server"},{"line_number":628,"context_line":"    def extend_share(self, share, new_size, share_server\u003dNone):"}],"source_content_type":"text/x-python","patch_set":10,"id":"dae33548_c55d18eb","line":625,"range":{"start_line":625,"start_character":8,"end_line":625,"end_character":23},"in_reply_to":"dae33548_92aa46d3","updated":"2016-02-15 18:51:39.000000000","message":"Done","commit_id":"3ebcfd0dbdf517aaa12be44b7e1625fa094d2265"},{"author":{"_account_id":7102,"name":"Thomas Bechtold","email":"thomas.bechtold@canonical.com","username":"toabctl"},"change_message_id":"527144dee4eeb72f7e8fcf8d4edfe36147f87483","unresolved":false,"context_lines":[{"line_number":239,"context_line":"                \"export_location_metadata_example\": \"example\","},{"line_number":240,"context_line":"            },"},{"line_number":241,"context_line":"        }]"},{"line_number":242,"context_line":"        if server_details.get(\u0027admin_ip\u0027):"},{"line_number":243,"context_line":"            admin_location \u003d location.replace("},{"line_number":244,"context_line":"                server_details[\u0027public_address\u0027], server_details[\u0027admin_ip\u0027])"},{"line_number":245,"context_line":"            export_list.append({"}],"source_content_type":"text/x-python","patch_set":20,"id":"bae84128_8f5c93ee","line":242,"updated":"2016-02-22 15:29:07.000000000","message":"Imo it would be cleaner todo this in the helper.create_export() functions.","commit_id":"5a3d9efd2763a56b41fafb484ff1129006ef293b"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"e202c357028af11a61a5d87487f9b49ecf1f9fe8","unresolved":false,"context_lines":[{"line_number":239,"context_line":"                \"export_location_metadata_example\": \"example\","},{"line_number":240,"context_line":"            },"},{"line_number":241,"context_line":"        }]"},{"line_number":242,"context_line":"        if server_details.get(\u0027admin_ip\u0027):"},{"line_number":243,"context_line":"            admin_location \u003d location.replace("},{"line_number":244,"context_line":"                server_details[\u0027public_address\u0027], server_details[\u0027admin_ip\u0027])"},{"line_number":245,"context_line":"            export_list.append({"}],"source_content_type":"text/x-python","patch_set":20,"id":"bae84128_266117d4","line":242,"in_reply_to":"bae84128_8f5c93ee","updated":"2016-02-23 01:45:18.000000000","message":"The helpers may be used by many drivers, it is not guaranteed that they support admin voodoo. It can be done though, but other drivers would go through admin export location logic that would not apply to them.","commit_id":"5a3d9efd2763a56b41fafb484ff1129006ef293b"},{"author":{"_account_id":7102,"name":"Thomas Bechtold","email":"thomas.bechtold@canonical.com","username":"toabctl"},"change_message_id":"527144dee4eeb72f7e8fcf8d4edfe36147f87483","unresolved":false,"context_lines":[{"line_number":613,"context_line":"        self._mount_device(share, share_server[\u0027backend_details\u0027], volume)"},{"line_number":614,"context_line":"        location \u003d helper.create_export(share_server[\u0027backend_details\u0027],"},{"line_number":615,"context_line":"                                        share[\u0027name\u0027])"},{"line_number":616,"context_line":"        export_list \u003d [{"},{"line_number":617,"context_line":"            \"path\": location,"},{"line_number":618,"context_line":"            \"is_admin_only\": False,"},{"line_number":619,"context_line":"            \"metadata\": {"}],"source_content_type":"text/x-python","patch_set":20,"id":"bae84128_2f22a700","line":616,"updated":"2016-02-22 15:29:07.000000000","message":"If you do admin voodoo in the helper, you don\u0027t need this code change here.","commit_id":"5a3d9efd2763a56b41fafb484ff1129006ef293b"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"e202c357028af11a61a5d87487f9b49ecf1f9fe8","unresolved":false,"context_lines":[{"line_number":613,"context_line":"        self._mount_device(share, share_server[\u0027backend_details\u0027], volume)"},{"line_number":614,"context_line":"        location \u003d helper.create_export(share_server[\u0027backend_details\u0027],"},{"line_number":615,"context_line":"                                        share[\u0027name\u0027])"},{"line_number":616,"context_line":"        export_list \u003d [{"},{"line_number":617,"context_line":"            \"path\": location,"},{"line_number":618,"context_line":"            \"is_admin_only\": False,"},{"line_number":619,"context_line":"            \"metadata\": {"}],"source_content_type":"text/x-python","patch_set":20,"id":"bae84128_e6b1ef48","line":616,"in_reply_to":"bae84128_2f22a700","updated":"2016-02-23 01:45:18.000000000","message":"see reply above.","commit_id":"5a3d9efd2763a56b41fafb484ff1129006ef293b"}],"manila/share/drivers/service_instance.py":[{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"d5cd2f9ad49222878fe5411d1037a656db88c629","unresolved":false,"context_lines":[{"line_number":428,"context_line":"            \u0027subnet_id\u0027: server.get(\u0027subnet_id\u0027),"},{"line_number":429,"context_line":"            \u0027password\u0027: self.get_config_option(\u0027service_instance_password\u0027),"},{"line_number":430,"context_line":"            \u0027username\u0027: self.get_config_option(\u0027service_instance_user\u0027),"},{"line_number":431,"context_line":"            \u0027public_address\u0027: server[\u0027public_address\u0027],"},{"line_number":432,"context_line":"            \u0027service_ip\u0027: server[\u0027service_ip\u0027],"},{"line_number":433,"context_line":"        }"},{"line_number":434,"context_line":"        if server.get(\u0027admin_ip\u0027):"}],"source_content_type":"text/x-python","patch_set":10,"id":"dae33548_92f886e7","line":431,"range":{"start_line":431,"start_character":12,"end_line":431,"end_character":55},"updated":"2016-02-15 13:47:49.000000000","message":"This is user address.","commit_id":"3ebcfd0dbdf517aaa12be44b7e1625fa094d2265"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"b01d550a5aef80ced4185a3b44f2faea0cf29fb9","unresolved":false,"context_lines":[{"line_number":428,"context_line":"            \u0027subnet_id\u0027: server.get(\u0027subnet_id\u0027),"},{"line_number":429,"context_line":"            \u0027password\u0027: self.get_config_option(\u0027service_instance_password\u0027),"},{"line_number":430,"context_line":"            \u0027username\u0027: self.get_config_option(\u0027service_instance_user\u0027),"},{"line_number":431,"context_line":"            \u0027public_address\u0027: server[\u0027public_address\u0027],"},{"line_number":432,"context_line":"            \u0027service_ip\u0027: server[\u0027service_ip\u0027],"},{"line_number":433,"context_line":"        }"},{"line_number":434,"context_line":"        if server.get(\u0027admin_ip\u0027):"}],"source_content_type":"text/x-python","patch_set":10,"id":"dae33548_850af0d0","line":431,"range":{"start_line":431,"start_character":12,"end_line":431,"end_character":55},"in_reply_to":"dae33548_92f886e7","updated":"2016-02-15 18:51:39.000000000","message":"Yes.","commit_id":"3ebcfd0dbdf517aaa12be44b7e1625fa094d2265"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"d5cd2f9ad49222878fe5411d1037a656db88c629","unresolved":false,"context_lines":[{"line_number":429,"context_line":"            \u0027password\u0027: self.get_config_option(\u0027service_instance_password\u0027),"},{"line_number":430,"context_line":"            \u0027username\u0027: self.get_config_option(\u0027service_instance_user\u0027),"},{"line_number":431,"context_line":"            \u0027public_address\u0027: server[\u0027public_address\u0027],"},{"line_number":432,"context_line":"            \u0027service_ip\u0027: server[\u0027service_ip\u0027],"},{"line_number":433,"context_line":"        }"},{"line_number":434,"context_line":"        if server.get(\u0027admin_ip\u0027):"},{"line_number":435,"context_line":"            instance_details[\u0027admin_ip\u0027] \u003d server[\u0027admin_ip\u0027]"}],"source_content_type":"text/x-python","patch_set":10,"id":"dae33548_f2c47293","line":432,"range":{"start_line":432,"start_character":12,"end_line":432,"end_character":24},"updated":"2016-02-15 13:47:49.000000000","message":"And this is exactly the one you should update.","commit_id":"3ebcfd0dbdf517aaa12be44b7e1625fa094d2265"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"b01d550a5aef80ced4185a3b44f2faea0cf29fb9","unresolved":false,"context_lines":[{"line_number":429,"context_line":"            \u0027password\u0027: self.get_config_option(\u0027service_instance_password\u0027),"},{"line_number":430,"context_line":"            \u0027username\u0027: self.get_config_option(\u0027service_instance_user\u0027),"},{"line_number":431,"context_line":"            \u0027public_address\u0027: server[\u0027public_address\u0027],"},{"line_number":432,"context_line":"            \u0027service_ip\u0027: server[\u0027service_ip\u0027],"},{"line_number":433,"context_line":"        }"},{"line_number":434,"context_line":"        if server.get(\u0027admin_ip\u0027):"},{"line_number":435,"context_line":"            instance_details[\u0027admin_ip\u0027] \u003d server[\u0027admin_ip\u0027]"}],"source_content_type":"text/x-python","patch_set":10,"id":"dae33548_c514f8f6","line":432,"range":{"start_line":432,"start_character":12,"end_line":432,"end_character":24},"in_reply_to":"dae33548_f2c47293","updated":"2016-02-15 18:51:39.000000000","message":"I removed this. This is not used anymore, it was used to save the IP of host port for share migration before using admin export locations (in Liberty).","commit_id":"3ebcfd0dbdf517aaa12be44b7e1625fa094d2265"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"d5cd2f9ad49222878fe5411d1037a656db88c629","unresolved":false,"context_lines":[{"line_number":431,"context_line":"            \u0027public_address\u0027: server[\u0027public_address\u0027],"},{"line_number":432,"context_line":"            \u0027service_ip\u0027: server[\u0027service_ip\u0027],"},{"line_number":433,"context_line":"        }"},{"line_number":434,"context_line":"        if server.get(\u0027admin_ip\u0027):"},{"line_number":435,"context_line":"            instance_details[\u0027admin_ip\u0027] \u003d server[\u0027admin_ip\u0027]"},{"line_number":436,"context_line":"        if server.get(\u0027router_id\u0027):"},{"line_number":437,"context_line":"            instance_details[\u0027router_id\u0027] \u003d server[\u0027router_id\u0027]"}],"source_content_type":"text/x-python","patch_set":10,"id":"dae33548_7237c2b0","line":434,"range":{"start_line":434,"start_character":23,"end_line":434,"end_character":31},"updated":"2016-02-15 13:47:49.000000000","message":"Duplicates \"service_ip\".\n\nSo, in other words, we always have \"service\" port, and in one of two possible configurations of generic driver (default one) it is the only port and used for users too. So, approach for setting up \"service\" ip/port should be changed and not implemented one more.","commit_id":"3ebcfd0dbdf517aaa12be44b7e1625fa094d2265"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"b01d550a5aef80ced4185a3b44f2faea0cf29fb9","unresolved":false,"context_lines":[{"line_number":431,"context_line":"            \u0027public_address\u0027: server[\u0027public_address\u0027],"},{"line_number":432,"context_line":"            \u0027service_ip\u0027: server[\u0027service_ip\u0027],"},{"line_number":433,"context_line":"        }"},{"line_number":434,"context_line":"        if server.get(\u0027admin_ip\u0027):"},{"line_number":435,"context_line":"            instance_details[\u0027admin_ip\u0027] \u003d server[\u0027admin_ip\u0027]"},{"line_number":436,"context_line":"        if server.get(\u0027router_id\u0027):"},{"line_number":437,"context_line":"            instance_details[\u0027router_id\u0027] \u003d server[\u0027router_id\u0027]"}],"source_content_type":"text/x-python","patch_set":10,"id":"dae33548_05cc2088","line":434,"range":{"start_line":434,"start_character":23,"end_line":434,"end_character":31},"in_reply_to":"dae33548_7237c2b0","updated":"2016-02-15 18:51:39.000000000","message":"does not duplicate anymore. Removed \"service_ip\".\n\nPlease see latest patch.","commit_id":"3ebcfd0dbdf517aaa12be44b7e1625fa094d2265"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"dff569828b8e9202d2d77ea7553ad06c6c07eeae","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        help\u003d\"Allowed values are %s.\" % [NOVA_NAME, NEUTRON_NAME]),"},{"line_number":101,"context_line":"    cfg.StrOpt("},{"line_number":102,"context_line":"        \"admin_network_id\","},{"line_number":103,"context_line":"        default\u003dNone,"},{"line_number":104,"context_line":"        help\u003d\"ID of neutron network used to communicate with admin network,\""},{"line_number":105,"context_line":"             \" to create additional admin export locations on.\"),"},{"line_number":106,"context_line":"    cfg.StrOpt("}],"source_content_type":"text/x-python","patch_set":11,"id":"dae33548_ed858707","line":103,"range":{"start_line":103,"start_character":8,"end_line":103,"end_character":21},"updated":"2016-02-16 10:57:12.000000000","message":"Redundant","commit_id":"d89dafb5a8d67272b923b4cd209c30b3c1931bc4"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"0236b6a8c5cb95252917f5e8af4423016ee8eaa9","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        help\u003d\"Allowed values are %s.\" % [NOVA_NAME, NEUTRON_NAME]),"},{"line_number":101,"context_line":"    cfg.StrOpt("},{"line_number":102,"context_line":"        \"admin_network_id\","},{"line_number":103,"context_line":"        default\u003dNone,"},{"line_number":104,"context_line":"        help\u003d\"ID of neutron network used to communicate with admin network,\""},{"line_number":105,"context_line":"             \" to create additional admin export locations on.\"),"},{"line_number":106,"context_line":"    cfg.StrOpt("}],"source_content_type":"text/x-python","patch_set":11,"id":"dae33548_dc15d349","line":103,"range":{"start_line":103,"start_character":8,"end_line":103,"end_character":21},"in_reply_to":"dae33548_ed858707","updated":"2016-02-16 12:27:22.000000000","message":"I will remove on next patch.","commit_id":"d89dafb5a8d67272b923b4cd209c30b3c1931bc4"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"dff569828b8e9202d2d77ea7553ad06c6c07eeae","unresolved":false,"context_lines":[{"line_number":105,"context_line":"             \" to create additional admin export locations on.\"),"},{"line_number":106,"context_line":"    cfg.StrOpt("},{"line_number":107,"context_line":"        \"admin_subnet_id\","},{"line_number":108,"context_line":"        default\u003dNone,"},{"line_number":109,"context_line":"        help\u003d\"ID of neutron subnet used to communicate with admin network,\""},{"line_number":110,"context_line":"             \" to create additional admin export locations on. \""},{"line_number":111,"context_line":"             \"Related to \u0027admin_network_id\u0027.\"),"}],"source_content_type":"text/x-python","patch_set":11,"id":"dae33548_4d7d931b","line":108,"range":{"start_line":108,"start_character":8,"end_line":108,"end_character":21},"updated":"2016-02-16 10:57:12.000000000","message":"Redundant","commit_id":"d89dafb5a8d67272b923b4cd209c30b3c1931bc4"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"0236b6a8c5cb95252917f5e8af4423016ee8eaa9","unresolved":false,"context_lines":[{"line_number":105,"context_line":"             \" to create additional admin export locations on.\"),"},{"line_number":106,"context_line":"    cfg.StrOpt("},{"line_number":107,"context_line":"        \"admin_subnet_id\","},{"line_number":108,"context_line":"        default\u003dNone,"},{"line_number":109,"context_line":"        help\u003d\"ID of neutron subnet used to communicate with admin network,\""},{"line_number":110,"context_line":"             \" to create additional admin export locations on. \""},{"line_number":111,"context_line":"             \"Related to \u0027admin_network_id\u0027.\"),"}],"source_content_type":"text/x-python","patch_set":11,"id":"dae33548_7c07671c","line":108,"range":{"start_line":108,"start_character":8,"end_line":108,"end_character":21},"in_reply_to":"dae33548_4d7d931b","updated":"2016-02-16 12:27:22.000000000","message":"I will remove on next patch.","commit_id":"d89dafb5a8d67272b923b4cd209c30b3c1931bc4"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"dff569828b8e9202d2d77ea7553ad06c6c07eeae","unresolved":false,"context_lines":[{"line_number":868,"context_line":"                subnet_id\u003dneutron_subnet_id, device_owner\u003d\u0027manila\u0027)"},{"line_number":869,"context_line":"            network_data[\u0027ports\u0027].append(network_data[\u0027public_port\u0027])"},{"line_number":870,"context_line":""},{"line_number":871,"context_line":"        if self.use_service_network:"},{"line_number":872,"context_line":"            network_data[\u0027service_port\u0027] \u003d self.neutron_api.create_port("},{"line_number":873,"context_line":"                self.admin_project_id, self.service_network_id,"},{"line_number":874,"context_line":"                subnet_id\u003dnetwork_data[\u0027service_subnet\u0027][\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":11,"id":"dae33548_0a3c11e1","line":871,"range":{"start_line":871,"start_character":8,"end_line":871,"end_character":36},"updated":"2016-02-16 10:57:12.000000000","message":"\"\"\"\nif not (self.connect_share_server_to_tenant_network and use_admin_port):\n\n    service_port \u003d %create command%\n\n    network_data[\u0027public_port\u0027] \u003d network_data.get(\u0027public_port\u0027, service_port)\n\n    network_data[\u0027admin_port\u0027] \u003d network_data.get(\u0027admin_port\u0027, service_port)\n\n\"\"\"\nwhere \"service_port\" - port in autocreated network by Manila.\n\nAlso, it should be combined with condition on 833-840.","commit_id":"d89dafb5a8d67272b923b4cd209c30b3c1931bc4"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"0236b6a8c5cb95252917f5e8af4423016ee8eaa9","unresolved":false,"context_lines":[{"line_number":868,"context_line":"                subnet_id\u003dneutron_subnet_id, device_owner\u003d\u0027manila\u0027)"},{"line_number":869,"context_line":"            network_data[\u0027ports\u0027].append(network_data[\u0027public_port\u0027])"},{"line_number":870,"context_line":""},{"line_number":871,"context_line":"        if self.use_service_network:"},{"line_number":872,"context_line":"            network_data[\u0027service_port\u0027] \u003d self.neutron_api.create_port("},{"line_number":873,"context_line":"                self.admin_project_id, self.service_network_id,"},{"line_number":874,"context_line":"                subnet_id\u003dnetwork_data[\u0027service_subnet\u0027][\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":11,"id":"dae33548_9047af4a","line":871,"range":{"start_line":871,"start_character":8,"end_line":871,"end_character":36},"in_reply_to":"dae33548_0a3c11e1","updated":"2016-02-16 12:27:22.000000000","message":"Such logic is in LN 721. Service port has a lower priority the way I see because it is not created at all if connect_share_server_to_tenant_network and admin port are used, also, I changed the code order to do so appropriately, so such logic additional to the one in LN 721 would not be needed.\n\nAlso, LN 555 does what you are describing, in choosing the public/admin port appropriately based on what has been created.","commit_id":"d89dafb5a8d67272b923b4cd209c30b3c1931bc4"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"b3082cf0264ba9e0772e4585d8d7eb81ffd4cbe1","unresolved":false,"context_lines":[{"line_number":573,"context_line":"                                       network_data.get("},{"line_number":574,"context_line":"                                           \u0027admin_port\u0027))[\u0027fixed_ips\u0027])"},{"line_number":575,"context_line":"                service_instance[\u0027ip\u0027] \u003d ip[0][\u0027ip_address\u0027]"},{"line_number":576,"context_line":"                public_ip \u003d (network_data.get("},{"line_number":577,"context_line":"                    \u0027public_port\u0027, network_data.get("},{"line_number":578,"context_line":"                        \u0027service_port\u0027))[\u0027fixed_ips\u0027])"},{"line_number":579,"context_line":"                service_instance[\u0027public_address\u0027] \u003d public_ip[0][\u0027ip_address\u0027]"},{"line_number":580,"context_line":"            else:"},{"line_number":581,"context_line":"                net_name \u003d self.network_helper.get_network_name(network_info)"}],"source_content_type":"text/x-python","patch_set":26,"id":"9aed3d3a_7018b9d3","line":578,"range":{"start_line":576,"start_character":29,"end_line":578,"end_character":40},"updated":"2016-03-01 04:58:32.000000000","message":"what if both are None?  Can\u0027t do None[\u0027fixed_ips\u0027]","commit_id":"bb8b43d80ba01dfca7fb1540ba901b1fa8c4355e"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"eb8c48447a094344aaecbcae96f79ecd913821f2","unresolved":false,"context_lines":[{"line_number":573,"context_line":"                                       network_data.get("},{"line_number":574,"context_line":"                                           \u0027admin_port\u0027))[\u0027fixed_ips\u0027])"},{"line_number":575,"context_line":"                service_instance[\u0027ip\u0027] \u003d ip[0][\u0027ip_address\u0027]"},{"line_number":576,"context_line":"                public_ip \u003d (network_data.get("},{"line_number":577,"context_line":"                    \u0027public_port\u0027, network_data.get("},{"line_number":578,"context_line":"                        \u0027service_port\u0027))[\u0027fixed_ips\u0027])"},{"line_number":579,"context_line":"                service_instance[\u0027public_address\u0027] \u003d public_ip[0][\u0027ip_address\u0027]"},{"line_number":580,"context_line":"            else:"},{"line_number":581,"context_line":"                net_name \u003d self.network_helper.get_network_name(network_info)"}],"source_content_type":"text/x-python","patch_set":26,"id":"7af24918_2d097932","line":578,"range":{"start_line":576,"start_character":29,"end_line":578,"end_character":40},"in_reply_to":"9aed3d3a_7018b9d3","updated":"2016-03-01 14:38:24.000000000","message":"one of either must exist. Please refer to supported scenarios in the commit message.","commit_id":"bb8b43d80ba01dfca7fb1540ba901b1fa8c4355e"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"b3082cf0264ba9e0772e4585d8d7eb81ffd4cbe1","unresolved":false,"context_lines":[{"line_number":599,"context_line":"                service_instance[\u0027admin_ip\u0027] \u003d ("},{"line_number":600,"context_line":"                    admin_port[\u0027fixed_ips\u0027][0][\u0027ip_address\u0027])"},{"line_number":601,"context_line":"            except Exception as e:"},{"line_number":602,"context_line":"                LOG.exception(six.text_type(e))"},{"line_number":603,"context_line":"                msg \u003d _(\"Admin port is being used but Admin IP was not found.\")"},{"line_number":604,"context_line":"                raise exception.AdminIPNotFound(reason\u003dmsg)"},{"line_number":605,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"9aed3d3a_b05c017e","line":602,"range":{"start_line":602,"start_character":30,"end_line":602,"end_character":46},"updated":"2016-03-01 04:58:32.000000000","message":"FYI - I\u0027ve found reasons not to do six.text_type(e), but I still haven\u0027t seen an example where it is a good thing.  I\u0027d like to see that. Otherwise I\u0027d recommend not to wrap it.","commit_id":"bb8b43d80ba01dfca7fb1540ba901b1fa8c4355e"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"eb8c48447a094344aaecbcae96f79ecd913821f2","unresolved":false,"context_lines":[{"line_number":599,"context_line":"                service_instance[\u0027admin_ip\u0027] \u003d ("},{"line_number":600,"context_line":"                    admin_port[\u0027fixed_ips\u0027][0][\u0027ip_address\u0027])"},{"line_number":601,"context_line":"            except Exception as e:"},{"line_number":602,"context_line":"                LOG.exception(six.text_type(e))"},{"line_number":603,"context_line":"                msg \u003d _(\"Admin port is being used but Admin IP was not found.\")"},{"line_number":604,"context_line":"                raise exception.AdminIPNotFound(reason\u003dmsg)"},{"line_number":605,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"7af24918_d3b516d1","line":602,"range":{"start_line":602,"start_character":30,"end_line":602,"end_character":46},"in_reply_to":"7af24918_f22ad02b","updated":"2016-03-01 14:38:24.000000000","message":"LOG.exception shows trace when invoked inside a catch block, it does not require an exception as argument.","commit_id":"bb8b43d80ba01dfca7fb1540ba901b1fa8c4355e"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"e03a4b5ac86ae6e11766c2552a25ceebdbc1853e","unresolved":false,"context_lines":[{"line_number":599,"context_line":"                service_instance[\u0027admin_ip\u0027] \u003d ("},{"line_number":600,"context_line":"                    admin_port[\u0027fixed_ips\u0027][0][\u0027ip_address\u0027])"},{"line_number":601,"context_line":"            except Exception as e:"},{"line_number":602,"context_line":"                LOG.exception(six.text_type(e))"},{"line_number":603,"context_line":"                msg \u003d _(\"Admin port is being used but Admin IP was not found.\")"},{"line_number":604,"context_line":"                raise exception.AdminIPNotFound(reason\u003dmsg)"},{"line_number":605,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"7af24918_f22ad02b","line":602,"range":{"start_line":602,"start_character":30,"end_line":602,"end_character":46},"in_reply_to":"9aed3d3a_b05c017e","updated":"2016-03-01 11:47:13.000000000","message":"+1 \"LOG.exception\" is designed to get exceptions as arguments.","commit_id":"bb8b43d80ba01dfca7fb1540ba901b1fa8c4355e"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"eb8c48447a094344aaecbcae96f79ecd913821f2","unresolved":false,"context_lines":[{"line_number":599,"context_line":"                service_instance[\u0027admin_ip\u0027] \u003d ("},{"line_number":600,"context_line":"                    admin_port[\u0027fixed_ips\u0027][0][\u0027ip_address\u0027])"},{"line_number":601,"context_line":"            except Exception as e:"},{"line_number":602,"context_line":"                LOG.exception(six.text_type(e))"},{"line_number":603,"context_line":"                msg \u003d _(\"Admin port is being used but Admin IP was not found.\")"},{"line_number":604,"context_line":"                raise exception.AdminIPNotFound(reason\u003dmsg)"},{"line_number":605,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"7af24918_584be52b","line":602,"range":{"start_line":602,"start_character":30,"end_line":602,"end_character":46},"in_reply_to":"9aed3d3a_b05c017e","updated":"2016-03-01 14:38:24.000000000","message":"Done","commit_id":"bb8b43d80ba01dfca7fb1540ba901b1fa8c4355e"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"b3082cf0264ba9e0772e4585d8d7eb81ffd4cbe1","unresolved":false,"context_lines":[{"line_number":873,"context_line":""},{"line_number":874,"context_line":"        network_data[\u0027ports\u0027] \u003d []"},{"line_number":875,"context_line":""},{"line_number":876,"context_line":"        if self.connect_share_server_to_tenant_network:"},{"line_number":877,"context_line":"            network_data[\u0027public_port\u0027] \u003d self.neutron_api.create_port("},{"line_number":878,"context_line":"                self.admin_project_id, neutron_net_id,"},{"line_number":879,"context_line":"                subnet_id\u003dneutron_subnet_id, device_owner\u003d\u0027manila\u0027)"}],"source_content_type":"text/x-python","patch_set":26,"id":"9aed3d3a_b06fe1fa","line":876,"range":{"start_line":876,"start_character":8,"end_line":876,"end_character":10},"updated":"2016-03-01 04:58:32.000000000","message":"nit. probably clearer if this was made if/else with the above (moving that ports init)","commit_id":"bb8b43d80ba01dfca7fb1540ba901b1fa8c4355e"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"eb8c48447a094344aaecbcae96f79ecd913821f2","unresolved":false,"context_lines":[{"line_number":873,"context_line":""},{"line_number":874,"context_line":"        network_data[\u0027ports\u0027] \u003d []"},{"line_number":875,"context_line":""},{"line_number":876,"context_line":"        if self.connect_share_server_to_tenant_network:"},{"line_number":877,"context_line":"            network_data[\u0027public_port\u0027] \u003d self.neutron_api.create_port("},{"line_number":878,"context_line":"                self.admin_project_id, neutron_net_id,"},{"line_number":879,"context_line":"                subnet_id\u003dneutron_subnet_id, device_owner\u003d\u0027manila\u0027)"}],"source_content_type":"text/x-python","patch_set":26,"id":"7af24918_f82471b0","line":876,"range":{"start_line":876,"start_character":8,"end_line":876,"end_character":10},"in_reply_to":"9aed3d3a_b06fe1fa","updated":"2016-03-01 14:38:24.000000000","message":"Done","commit_id":"bb8b43d80ba01dfca7fb1540ba901b1fa8c4355e"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"b3082cf0264ba9e0772e4585d8d7eb81ffd4cbe1","unresolved":false,"context_lines":[{"line_number":924,"context_line":"    def setup_connectivity_with_service_instances(self):"},{"line_number":925,"context_line":"        \"\"\"Sets up connectivity with service instances."},{"line_number":926,"context_line":""},{"line_number":927,"context_line":"        Creates creating port in service network, creating and setting up"},{"line_number":928,"context_line":"        required network devices."},{"line_number":929,"context_line":"        \"\"\""},{"line_number":930,"context_line":"        if self.use_service_network:"}],"source_content_type":"text/x-python","patch_set":26,"id":"9aed3d3a_b30b6b23","line":927,"range":{"start_line":927,"start_character":8,"end_line":927,"end_character":48},"updated":"2016-03-01 04:58:32.000000000","message":"service network or admin network and an opportunity to fix that \"Creates creating\" verbiage.","commit_id":"bb8b43d80ba01dfca7fb1540ba901b1fa8c4355e"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"eb8c48447a094344aaecbcae96f79ecd913821f2","unresolved":false,"context_lines":[{"line_number":924,"context_line":"    def setup_connectivity_with_service_instances(self):"},{"line_number":925,"context_line":"        \"\"\"Sets up connectivity with service instances."},{"line_number":926,"context_line":""},{"line_number":927,"context_line":"        Creates creating port in service network, creating and setting up"},{"line_number":928,"context_line":"        required network devices."},{"line_number":929,"context_line":"        \"\"\""},{"line_number":930,"context_line":"        if self.use_service_network:"}],"source_content_type":"text/x-python","patch_set":26,"id":"7af24918_58412539","line":927,"range":{"start_line":927,"start_character":8,"end_line":927,"end_character":48},"in_reply_to":"9aed3d3a_b30b6b23","updated":"2016-03-01 14:38:24.000000000","message":"Done","commit_id":"bb8b43d80ba01dfca7fb1540ba901b1fa8c4355e"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"b3082cf0264ba9e0772e4585d8d7eb81ffd4cbe1","unresolved":false,"context_lines":[{"line_number":945,"context_line":"                subnet \u003d self.neutron_api.get_subnet(fixed_ip[\u0027subnet_id\u0027])"},{"line_number":946,"context_line":"                device.route.clear_outdated_routes(subnet[\u0027cidr\u0027])"},{"line_number":947,"context_line":"            self._plug_interface_in_host(interface_name, device, port)"},{"line_number":948,"context_line":""},{"line_number":949,"context_line":"    def _plug_interface_in_host(self, interface_name, device, port):"},{"line_number":950,"context_line":""},{"line_number":951,"context_line":"        self.vif_driver.plug(interface_name, port[\u0027id\u0027], port[\u0027mac_address\u0027])"}],"source_content_type":"text/x-python","patch_set":26,"id":"9aed3d3a_33fe3bae","line":948,"updated":"2016-03-01 04:58:32.000000000","message":"Is is OK that this can do both use_service_network and use_admin_port.  Is it OK that it could do neither?  Line 741 seems to allow both. Not sure about all code paths to here.","commit_id":"bb8b43d80ba01dfca7fb1540ba901b1fa8c4355e"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"eb8c48447a094344aaecbcae96f79ecd913821f2","unresolved":false,"context_lines":[{"line_number":945,"context_line":"                subnet \u003d self.neutron_api.get_subnet(fixed_ip[\u0027subnet_id\u0027])"},{"line_number":946,"context_line":"                device.route.clear_outdated_routes(subnet[\u0027cidr\u0027])"},{"line_number":947,"context_line":"            self._plug_interface_in_host(interface_name, device, port)"},{"line_number":948,"context_line":""},{"line_number":949,"context_line":"    def _plug_interface_in_host(self, interface_name, device, port):"},{"line_number":950,"context_line":""},{"line_number":951,"context_line":"        self.vif_driver.plug(interface_name, port[\u0027id\u0027], port[\u0027mac_address\u0027])"}],"source_content_type":"text/x-python","patch_set":26,"id":"7af24918_58af65e3","line":948,"in_reply_to":"9aed3d3a_33fe3bae","updated":"2016-03-01 14:38:24.000000000","message":"one of either must exist. Please refer to supported scenarios in the commit message.","commit_id":"bb8b43d80ba01dfca7fb1540ba901b1fa8c4355e"}],"manila_tempest_tests/tests/scenario/test_share_basic_ops.py":[{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"d8e2e37018e1098b217fbc8cfabed244cf657a40","unresolved":false,"context_lines":[{"line_number":176,"context_line":"        self.allow_access_ip(self.share[\u0027id\u0027], instance\u003dinstance)"},{"line_number":177,"context_line":"        ssh_client \u003d self.init_ssh(instance)"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"        if utils.is_microversion_supported(\"2.9\"):"},{"line_number":180,"context_line":"            exports \u003d self.shares_v2_client.list_share_export_locations("},{"line_number":181,"context_line":"                self.share[\u0027id\u0027])"},{"line_number":182,"context_line":"            locations \u003d [x[\u0027path\u0027] for x in exports]"}],"source_content_type":"text/x-python","patch_set":26,"id":"9aed3d3a_9ae2c62d","line":179,"range":{"start_line":179,"start_character":11,"end_line":179,"end_character":42},"updated":"2016-02-29 22:29:10.000000000","message":"better to use \"lt\", for case when 2.9 stops being supported.","commit_id":"bb8b43d80ba01dfca7fb1540ba901b1fa8c4355e"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"67a0a022b4efb069c79f68a5e0ca7270cbd665c2","unresolved":false,"context_lines":[{"line_number":176,"context_line":"        self.allow_access_ip(self.share[\u0027id\u0027], instance\u003dinstance)"},{"line_number":177,"context_line":"        ssh_client \u003d self.init_ssh(instance)"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"        if utils.is_microversion_supported(\"2.9\"):"},{"line_number":180,"context_line":"            exports \u003d self.shares_v2_client.list_share_export_locations("},{"line_number":181,"context_line":"                self.share[\u0027id\u0027])"},{"line_number":182,"context_line":"            locations \u003d [x[\u0027path\u0027] for x in exports]"}],"source_content_type":"text/x-python","patch_set":26,"id":"7af24918_0c31150c","line":179,"range":{"start_line":179,"start_character":11,"end_line":179,"end_character":42},"in_reply_to":"9aed3d3a_9ae2c62d","updated":"2016-03-01 14:41:49.000000000","message":"Done","commit_id":"bb8b43d80ba01dfca7fb1540ba901b1fa8c4355e"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"d8e2e37018e1098b217fbc8cfabed244cf657a40","unresolved":false,"context_lines":[{"line_number":200,"context_line":"        self.allow_access_ip(self.share[\u0027id\u0027], instance\u003dinstance1)"},{"line_number":201,"context_line":"        ssh_client_inst1 \u003d self.init_ssh(instance1)"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"        if utils.is_microversion_supported(\"2.9\"):"},{"line_number":204,"context_line":"            exports \u003d self.shares_v2_client.list_share_export_locations("},{"line_number":205,"context_line":"                self.share[\u0027id\u0027])"},{"line_number":206,"context_line":"            locations \u003d [x[\u0027path\u0027] for x in exports]"}],"source_content_type":"text/x-python","patch_set":26,"id":"9aed3d3a_fad15258","line":203,"range":{"start_line":203,"start_character":11,"end_line":203,"end_character":49},"updated":"2016-02-29 22:29:10.000000000","message":"same here.","commit_id":"bb8b43d80ba01dfca7fb1540ba901b1fa8c4355e"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"67a0a022b4efb069c79f68a5e0ca7270cbd665c2","unresolved":false,"context_lines":[{"line_number":200,"context_line":"        self.allow_access_ip(self.share[\u0027id\u0027], instance\u003dinstance1)"},{"line_number":201,"context_line":"        ssh_client_inst1 \u003d self.init_ssh(instance1)"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"        if utils.is_microversion_supported(\"2.9\"):"},{"line_number":204,"context_line":"            exports \u003d self.shares_v2_client.list_share_export_locations("},{"line_number":205,"context_line":"                self.share[\u0027id\u0027])"},{"line_number":206,"context_line":"            locations \u003d [x[\u0027path\u0027] for x in exports]"}],"source_content_type":"text/x-python","patch_set":26,"id":"7af24918_ac4bc1af","line":203,"range":{"start_line":203,"start_character":11,"end_line":203,"end_character":49},"in_reply_to":"9aed3d3a_fad15258","updated":"2016-03-01 14:41:49.000000000","message":"Done","commit_id":"bb8b43d80ba01dfca7fb1540ba901b1fa8c4355e"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"67a0a022b4efb069c79f68a5e0ca7270cbd665c2","unresolved":false,"context_lines":[{"line_number":200,"context_line":"        self.allow_access_ip(self.share[\u0027id\u0027], instance\u003dinstance1)"},{"line_number":201,"context_line":"        ssh_client_inst1 \u003d self.init_ssh(instance1)"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"        if utils.is_microversion_supported(\"2.9\"):"},{"line_number":204,"context_line":"            exports \u003d self.shares_v2_client.list_share_export_locations("},{"line_number":205,"context_line":"                self.share[\u0027id\u0027])"},{"line_number":206,"context_line":"            locations \u003d [x[\u0027path\u0027] for x in exports]"}],"source_content_type":"text/x-python","patch_set":26,"id":"7af24918_ec35c9f7","line":203,"range":{"start_line":203,"start_character":11,"end_line":203,"end_character":49},"in_reply_to":"9aed3d3a_fad15258","updated":"2016-03-01 14:41:49.000000000","message":"Done","commit_id":"bb8b43d80ba01dfca7fb1540ba901b1fa8c4355e"}]}
