)]}'
{"lib/keystone":[{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"6fddb42337c9a4b68f8205a949abdef1c93794aa","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"# Set up additional extensions, such as oauth1, endpoint_filter"},{"line_number":45,"context_line":"# Example of KEYSTONE_ADDITIONAL_EXTENSIONS\u003doauth1,endpoint_filter"},{"line_number":46,"context_line":"KEYSTONE_ADDITIONAL_EXTENSIONS\u003d${KEYSTONE_ADDITIONAL_EXTENSIONS:-}"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"# Select the backend for Keystone\u0027s service catalog"},{"line_number":49,"context_line":"KEYSTONE_CATALOG_BACKEND\u003d${KEYSTONE_CATALOG_BACKEND:-sql}"}],"source_content_type":"application/octet-stream","patch_set":6,"id":"3ae8d1ca_2a78982a","line":46,"updated":"2014-05-28 19:42:11.000000000","message":"Unfortunately, the endpoint filter needs a bit more work than just adding it to the extensions list, it needs a specific catalog SQL driver. Suggest not using that as part of the example comment (perhaps we should make endpoint filtering \"not-an-exention\")","commit_id":"777b8acaa55554687d904db15e6880d1bc06a795"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"c37abd54977d97fd8ea5d8741c8d87b45f782e0f","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"# Set up additional extensions, such as oauth1, endpoint_filter"},{"line_number":45,"context_line":"# Example of KEYSTONE_ADDITIONAL_EXTENSIONS\u003doauth1,endpoint_filter"},{"line_number":46,"context_line":"KEYSTONE_ADDITIONAL_EXTENSIONS\u003d${KEYSTONE_ADDITIONAL_EXTENSIONS:-}"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"# Select the backend for Keystone\u0027s service catalog"},{"line_number":49,"context_line":"KEYSTONE_CATALOG_BACKEND\u003d${KEYSTONE_CATALOG_BACKEND:-sql}"}],"source_content_type":"application/octet-stream","patch_set":6,"id":"3ae8d1ca_8ac8cc23","line":46,"in_reply_to":"3ae8d1ca_2a78982a","updated":"2014-05-28 19:45:42.000000000","message":"good point, oauth1 and federation?","commit_id":"777b8acaa55554687d904db15e6880d1bc06a795"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"6fddb42337c9a4b68f8205a949abdef1c93794aa","unresolved":false,"context_lines":[{"line_number":153,"context_line":"    fi"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    # Add keystone extension into keystone v3 application pipeline"},{"line_number":156,"context_line":"    IFS\u003d\u0027,\u0027 read -ra EXT_VALUES \u003c\u003c\u003c \"$KEYSTONE_ADDITIONAL_EXTENSIONS\""},{"line_number":157,"context_line":"    for extension_value in \"${EXT_VALUES[@]}\" ; do"},{"line_number":158,"context_line":"        if [[ ! -n \"${extension_value}\" ]]; then"},{"line_number":159,"context_line":"            continue"}],"source_content_type":"application/octet-stream","patch_set":6,"id":"3ae8d1ca_8aa28cac","line":156,"updated":"2014-05-28 19:42:11.000000000","message":"Suggest naming this \"KEYSTONE_EXTENSIONS\" instead of \"KEYSTONE_ADDITIONAL_EXTENSIONS\"","commit_id":"777b8acaa55554687d904db15e6880d1bc06a795"},{"author":{"_account_id":9537,"name":"Julien Vey","email":"vey.julien@gmail.com","username":"julienvey"},"change_message_id":"1465e0b1cea68c58b6e3db58cdb5a617eb271601","unresolved":false,"context_lines":[{"line_number":153,"context_line":"    fi"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    # Add keystone extension into keystone v3 application pipeline"},{"line_number":156,"context_line":"    IFS\u003d\u0027,\u0027 read -ra EXT_VALUES \u003c\u003c\u003c \"$KEYSTONE_ADDITIONAL_EXTENSIONS\""},{"line_number":157,"context_line":"    for extension_value in \"${EXT_VALUES[@]}\" ; do"},{"line_number":158,"context_line":"        if [[ ! -n \"${extension_value}\" ]]; then"},{"line_number":159,"context_line":"            continue"}],"source_content_type":"application/octet-stream","patch_set":6,"id":"3ae8d1ca_6a7d40b1","line":156,"in_reply_to":"3ae8d1ca_6a738015","updated":"2014-05-28 21:06:43.000000000","message":"it\u0027s fair","commit_id":"777b8acaa55554687d904db15e6880d1bc06a795"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"3693db992af2a430888375d02cbc03db782a8f65","unresolved":false,"context_lines":[{"line_number":153,"context_line":"    fi"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    # Add keystone extension into keystone v3 application pipeline"},{"line_number":156,"context_line":"    IFS\u003d\u0027,\u0027 read -ra EXT_VALUES \u003c\u003c\u003c \"$KEYSTONE_ADDITIONAL_EXTENSIONS\""},{"line_number":157,"context_line":"    for extension_value in \"${EXT_VALUES[@]}\" ; do"},{"line_number":158,"context_line":"        if [[ ! -n \"${extension_value}\" ]]; then"},{"line_number":159,"context_line":"            continue"}],"source_content_type":"application/octet-stream","patch_set":6,"id":"3ae8d1ca_6a738015","line":156,"in_reply_to":"3ae8d1ca_8aa28cac","updated":"2014-05-28 19:43:49.000000000","message":"this is a personal preference, because i like typing less when trying things out in devstack (setup)","commit_id":"777b8acaa55554687d904db15e6880d1bc06a795"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"6fddb42337c9a4b68f8205a949abdef1c93794aa","unresolved":false,"context_lines":[{"line_number":401,"context_line":""},{"line_number":402,"context_line":"    IFS\u003d\u0027,\u0027 read -ra EXT_VALUES \u003c\u003c\u003c \"$KEYSTONE_ADDITIONAL_EXTENSIONS\""},{"line_number":403,"context_line":"    for extension_value in \"${EXT_VALUES[@]}\" ; do"},{"line_number":404,"context_line":"        $KEYSTONE_DIR/bin/keystone-manage db_sync --extension \"${extension_value}\""},{"line_number":405,"context_line":"    done"},{"line_number":406,"context_line":""},{"line_number":407,"context_line":"    if [[ \"$KEYSTONE_TOKEN_FORMAT\" \u003d\u003d \"PKI\" ]]; then"}],"source_content_type":"application/octet-stream","patch_set":6,"id":"3ae8d1ca_cab1f4e2","line":404,"updated":"2014-05-28 19:42:11.000000000","message":"A bug should be logged that we should _always_ migrate the db for extensions instead of conditionally. there is no reason not to have the DB structure in place (notably to ensure consistent schemas and better deployer experience in enabling an extension).\n\nI would much, much rather see this fixed on the Keystone side than in devstack.","commit_id":"777b8acaa55554687d904db15e6880d1bc06a795"},{"author":{"_account_id":9537,"name":"Julien Vey","email":"vey.julien@gmail.com","username":"julienvey"},"change_message_id":"1465e0b1cea68c58b6e3db58cdb5a617eb271601","unresolved":false,"context_lines":[{"line_number":401,"context_line":""},{"line_number":402,"context_line":"    IFS\u003d\u0027,\u0027 read -ra EXT_VALUES \u003c\u003c\u003c \"$KEYSTONE_ADDITIONAL_EXTENSIONS\""},{"line_number":403,"context_line":"    for extension_value in \"${EXT_VALUES[@]}\" ; do"},{"line_number":404,"context_line":"        $KEYSTONE_DIR/bin/keystone-manage db_sync --extension \"${extension_value}\""},{"line_number":405,"context_line":"    done"},{"line_number":406,"context_line":""},{"line_number":407,"context_line":"    if [[ \"$KEYSTONE_TOKEN_FORMAT\" \u003d\u003d \"PKI\" ]]; then"}],"source_content_type":"application/octet-stream","patch_set":6,"id":"3ae8d1ca_e62fc89f","line":404,"in_reply_to":"3ae8d1ca_cab1f4e2","updated":"2014-05-28 21:06:43.000000000","message":"Created a bug in Keystone https://bugs.launchpad.net/keystone/+bug/1324260","commit_id":"777b8acaa55554687d904db15e6880d1bc06a795"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"c36bfe9c067f351e1e29354178ee33dd9214310d","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        KEYSTONE_PASTE_INI\u003d\"$KEYSTONE_CONF\""},{"line_number":153,"context_line":"    fi"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    # Add keystone extension into keystone v3 application pipeline"},{"line_number":156,"context_line":"    IFS\u003d\u0027,\u0027 read -ra EXT_VALUES \u003c\u003c\u003c \"$KEYSTONE_EXTENSIONS\""},{"line_number":157,"context_line":"    for extension_value in \"${EXT_VALUES[@]}\" ; do"},{"line_number":158,"context_line":"        if [[ ! -n \"${extension_value}\" ]]; then"}],"source_content_type":"application/octet-stream","patch_set":7,"id":"1ae5cdf2_f9d85781","line":155,"updated":"2014-06-01 10:42:03.000000000","message":"Can we pull this into another function? Also we really should make all the lower case values here local. I\u0027m concerned about avi_v3 and extension being globally set after this.","commit_id":"1e8e87896161f0d76bfe6268971d27ed83e83522"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"c36bfe9c067f351e1e29354178ee33dd9214310d","unresolved":false,"context_lines":[{"line_number":400,"context_line":"    $KEYSTONE_DIR/bin/keystone-manage db_sync"},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"    IFS\u003d\u0027,\u0027 read -ra EXT_VALUES \u003c\u003c\u003c \"$KEYSTONE_EXTENSIONS\""},{"line_number":403,"context_line":"    for extension_value in \"${EXT_VALUES[@]}\" ; do"},{"line_number":404,"context_line":"        $KEYSTONE_DIR/bin/keystone-manage db_sync --extension \"${extension_value}\""},{"line_number":405,"context_line":"    done"},{"line_number":406,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":7,"id":"1ae5cdf2_39e39f34","line":403,"updated":"2014-06-01 10:42:03.000000000","message":"please make extension_value a local. This might also make for a good function to pull out just for clarity.","commit_id":"1e8e87896161f0d76bfe6268971d27ed83e83522"},{"author":{"_account_id":11457,"name":"yann degat","email":"yann.degat@numergy.com","username":"yanndegat"},"change_message_id":"a971fd3dafdb736df36b04a1b4d61ad2651ee73c","unresolved":false,"context_lines":[{"line_number":402,"context_line":"    IFS\u003d\u0027,\u0027 read -ra EXT_VALUES \u003c\u003c\u003c \"$KEYSTONE_EXTENSIONS\""},{"line_number":403,"context_line":"    for extension_value in \"${EXT_VALUES[@]}\" ; do"},{"line_number":404,"context_line":"        $KEYSTONE_DIR/bin/keystone-manage db_sync --extension \"${extension_value}\""},{"line_number":405,"context_line":"    done"},{"line_number":406,"context_line":""},{"line_number":407,"context_line":"    if [[ \"$KEYSTONE_TOKEN_FORMAT\" \u003d\u003d \"PKI\" ]]; then"},{"line_number":408,"context_line":"        # Set up certificates"}],"source_content_type":"application/octet-stream","patch_set":7,"id":"1ae5cdf2_b67c4c74","line":405,"updated":"2014-05-30 10:00:59.000000000","message":"you don\u0027t check the extension_value \"empty string\" case (such as in the precedent for loop)\nthe keystone-manage db_sync command could make the bash script fail.","commit_id":"1e8e87896161f0d76bfe6268971d27ed83e83522"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"ac7fa4c0c6b0669bf275ede10941f78de215ab1d","unresolved":false,"context_lines":[{"line_number":281,"context_line":"    local extension"},{"line_number":282,"context_line":"    local api_v3_extension"},{"line_number":283,"context_line":"    local ext_values\u003d$(read_keystone_extensions)"},{"line_number":284,"context_line":"    for extension_value in \"${ext_values[@]}\" ; do"},{"line_number":285,"context_line":"        if [[ ! -n \"${extension_value}\" ]]; then"},{"line_number":286,"context_line":"            continue"},{"line_number":287,"context_line":"        fi"}],"source_content_type":"application/octet-stream","patch_set":8,"id":"1ae5cdf2_2861d938","line":284,"updated":"2014-06-21 22:45:22.000000000","message":"I don\u0027t see the need for an array here, read_keystone_extensions would be unnecessary:\n\n for extension_value in ${KEYSTONE_EXTENSIONS//,/ }; do","commit_id":"2a859a6a74e2b5f4414a509586699cd9ce02895f"},{"author":{"_account_id":9537,"name":"Julien Vey","email":"vey.julien@gmail.com","username":"julienvey"},"change_message_id":"519e8bca4597922a90579af0b614a5d97cca9e32","unresolved":false,"context_lines":[{"line_number":281,"context_line":"    local extension"},{"line_number":282,"context_line":"    local api_v3_extension"},{"line_number":283,"context_line":"    local ext_values\u003d$(read_keystone_extensions)"},{"line_number":284,"context_line":"    for extension_value in \"${ext_values[@]}\" ; do"},{"line_number":285,"context_line":"        if [[ ! -n \"${extension_value}\" ]]; then"},{"line_number":286,"context_line":"            continue"},{"line_number":287,"context_line":"        fi"}],"source_content_type":"application/octet-stream","patch_set":8,"id":"1ae5cdf2_d47e14af","line":284,"in_reply_to":"1ae5cdf2_2861d938","updated":"2014-06-24 08:10:52.000000000","message":"Done","commit_id":"2a859a6a74e2b5f4414a509586699cd9ce02895f"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"ac7fa4c0c6b0669bf275ede10941f78de215ab1d","unresolved":false,"context_lines":[{"line_number":282,"context_line":"    local api_v3_extension"},{"line_number":283,"context_line":"    local ext_values\u003d$(read_keystone_extensions)"},{"line_number":284,"context_line":"    for extension_value in \"${ext_values[@]}\" ; do"},{"line_number":285,"context_line":"        if [[ ! -n \"${extension_value}\" ]]; then"},{"line_number":286,"context_line":"            continue"},{"line_number":287,"context_line":"        fi"},{"line_number":288,"context_line":"        api_v3\u003d$(iniget $KEYSTONE_PASTE_INI pipeline:api_v3 pipeline)"}],"source_content_type":"application/octet-stream","patch_set":8,"id":"1ae5cdf2_4808e590","line":285,"updated":"2014-06-21 22:45:22.000000000","message":"Why not use -z here?","commit_id":"2a859a6a74e2b5f4414a509586699cd9ce02895f"},{"author":{"_account_id":9537,"name":"Julien Vey","email":"vey.julien@gmail.com","username":"julienvey"},"change_message_id":"519e8bca4597922a90579af0b614a5d97cca9e32","unresolved":false,"context_lines":[{"line_number":282,"context_line":"    local api_v3_extension"},{"line_number":283,"context_line":"    local ext_values\u003d$(read_keystone_extensions)"},{"line_number":284,"context_line":"    for extension_value in \"${ext_values[@]}\" ; do"},{"line_number":285,"context_line":"        if [[ ! -n \"${extension_value}\" ]]; then"},{"line_number":286,"context_line":"            continue"},{"line_number":287,"context_line":"        fi"},{"line_number":288,"context_line":"        api_v3\u003d$(iniget $KEYSTONE_PASTE_INI pipeline:api_v3 pipeline)"}],"source_content_type":"application/octet-stream","patch_set":8,"id":"1ae5cdf2_f47b10bc","line":285,"in_reply_to":"1ae5cdf2_4808e590","updated":"2014-06-24 08:10:52.000000000","message":"Done","commit_id":"2a859a6a74e2b5f4414a509586699cd9ce02895f"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"ac7fa4c0c6b0669bf275ede10941f78de215ab1d","unresolved":false,"context_lines":[{"line_number":287,"context_line":"        fi"},{"line_number":288,"context_line":"        api_v3\u003d$(iniget $KEYSTONE_PASTE_INI pipeline:api_v3 pipeline)"},{"line_number":289,"context_line":"        extension\u003d$(echo $api_v3 | sed -ne \"/${extension_value}/ p;\" )"},{"line_number":290,"context_line":"        if [[ ! -n $extension ]]; then"},{"line_number":291,"context_line":"            api_v3_extension\u003d$(echo $api_v3 | sed -ne \"s/service_v3/${extension_value}_extension service_v3/p;\" )"},{"line_number":292,"context_line":"            iniset $KEYSTONE_PASTE_INI pipeline:api_v3 pipeline \"$api_v3_extension\""},{"line_number":293,"context_line":"        fi"}],"source_content_type":"application/octet-stream","patch_set":8,"id":"1ae5cdf2_68fbe17a","line":290,"updated":"2014-06-21 22:45:22.000000000","message":"Why not use -z here?","commit_id":"2a859a6a74e2b5f4414a509586699cd9ce02895f"},{"author":{"_account_id":9537,"name":"Julien Vey","email":"vey.julien@gmail.com","username":"julienvey"},"change_message_id":"519e8bca4597922a90579af0b614a5d97cca9e32","unresolved":false,"context_lines":[{"line_number":287,"context_line":"        fi"},{"line_number":288,"context_line":"        api_v3\u003d$(iniget $KEYSTONE_PASTE_INI pipeline:api_v3 pipeline)"},{"line_number":289,"context_line":"        extension\u003d$(echo $api_v3 | sed -ne \"/${extension_value}/ p;\" )"},{"line_number":290,"context_line":"        if [[ ! -n $extension ]]; then"},{"line_number":291,"context_line":"            api_v3_extension\u003d$(echo $api_v3 | sed -ne \"s/service_v3/${extension_value}_extension service_v3/p;\" )"},{"line_number":292,"context_line":"            iniset $KEYSTONE_PASTE_INI pipeline:api_v3 pipeline \"$api_v3_extension\""},{"line_number":293,"context_line":"        fi"}],"source_content_type":"application/octet-stream","patch_set":8,"id":"1ae5cdf2_f429509c","line":290,"in_reply_to":"1ae5cdf2_68fbe17a","updated":"2014-06-24 08:10:52.000000000","message":"Done","commit_id":"2a859a6a74e2b5f4414a509586699cd9ce02895f"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"ac7fa4c0c6b0669bf275ede10941f78de215ab1d","unresolved":false,"context_lines":[{"line_number":415,"context_line":""},{"line_number":416,"context_line":"    local extension_value"},{"line_number":417,"context_line":"    local ext_values\u003d$(read_keystone_extensions)"},{"line_number":418,"context_line":"    for extension_value in \"${ext_values[@]}\" ; do"},{"line_number":419,"context_line":"        if [[ ! -n \"${extension_value}\" ]]; then"},{"line_number":420,"context_line":"            continue"},{"line_number":421,"context_line":"        fi"}],"source_content_type":"application/octet-stream","patch_set":8,"id":"1ae5cdf2_a86de933","line":418,"updated":"2014-06-21 22:45:22.000000000","message":"I don\u0027t see the need for an array here, read_keystone_extensions would be unnecessary:\n\n for extension_value in ${KEYSTONE_EXTENSIONS//,/ }; do","commit_id":"2a859a6a74e2b5f4414a509586699cd9ce02895f"},{"author":{"_account_id":9537,"name":"Julien Vey","email":"vey.julien@gmail.com","username":"julienvey"},"change_message_id":"519e8bca4597922a90579af0b614a5d97cca9e32","unresolved":false,"context_lines":[{"line_number":415,"context_line":""},{"line_number":416,"context_line":"    local extension_value"},{"line_number":417,"context_line":"    local ext_values\u003d$(read_keystone_extensions)"},{"line_number":418,"context_line":"    for extension_value in \"${ext_values[@]}\" ; do"},{"line_number":419,"context_line":"        if [[ ! -n \"${extension_value}\" ]]; then"},{"line_number":420,"context_line":"            continue"},{"line_number":421,"context_line":"        fi"}],"source_content_type":"application/octet-stream","patch_set":8,"id":"1ae5cdf2_9409ec34","line":418,"in_reply_to":"1ae5cdf2_a86de933","updated":"2014-06-24 08:10:52.000000000","message":"Done","commit_id":"2a859a6a74e2b5f4414a509586699cd9ce02895f"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"ac7fa4c0c6b0669bf275ede10941f78de215ab1d","unresolved":false,"context_lines":[{"line_number":416,"context_line":"    local extension_value"},{"line_number":417,"context_line":"    local ext_values\u003d$(read_keystone_extensions)"},{"line_number":418,"context_line":"    for extension_value in \"${ext_values[@]}\" ; do"},{"line_number":419,"context_line":"        if [[ ! -n \"${extension_value}\" ]]; then"},{"line_number":420,"context_line":"            continue"},{"line_number":421,"context_line":"        fi"},{"line_number":422,"context_line":"        $KEYSTONE_DIR/bin/keystone-manage db_sync --extension \"${extension_value}\""}],"source_content_type":"application/octet-stream","patch_set":8,"id":"1ae5cdf2_a8f8897c","line":419,"updated":"2014-06-21 22:45:22.000000000","message":"Why not use -z here?","commit_id":"2a859a6a74e2b5f4414a509586699cd9ce02895f"},{"author":{"_account_id":9537,"name":"Julien Vey","email":"vey.julien@gmail.com","username":"julienvey"},"change_message_id":"519e8bca4597922a90579af0b614a5d97cca9e32","unresolved":false,"context_lines":[{"line_number":416,"context_line":"    local extension_value"},{"line_number":417,"context_line":"    local ext_values\u003d$(read_keystone_extensions)"},{"line_number":418,"context_line":"    for extension_value in \"${ext_values[@]}\" ; do"},{"line_number":419,"context_line":"        if [[ ! -n \"${extension_value}\" ]]; then"},{"line_number":420,"context_line":"            continue"},{"line_number":421,"context_line":"        fi"},{"line_number":422,"context_line":"        $KEYSTONE_DIR/bin/keystone-manage db_sync --extension \"${extension_value}\""}],"source_content_type":"application/octet-stream","patch_set":8,"id":"1ae5cdf2_97100e51","line":419,"in_reply_to":"1ae5cdf2_a8f8897c","updated":"2014-06-24 08:10:52.000000000","message":"Done","commit_id":"2a859a6a74e2b5f4414a509586699cd9ce02895f"}]}
