)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"6e61bcd389e53d39b54564302cce7015c83a0208","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Jamie Lennox \u003cjamielennox@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-07-01 08:53:17 +1000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Use keystone V3 API for endpoint creation"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Always use the keystone V3 API when creating services and endpoints. The syntax"},{"line_number":10,"context_line":"here is slightly different but we maintain the function interface."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"ba3cc151_7358cd8a","line":7,"updated":"2015-07-01 21:25:12.000000000","message":"There\u0027s no keystone V3. It\u0027s Identity API V3.","commit_id":"b23bbf3d4adde631d534d0933eaead3f7928a7bf"}],"functions-common":[{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"275fe542cabc548814f373907bd62aa4a44111e2","unresolved":false,"context_lines":[{"line_number":819,"context_line":"            --os-identity-api-version\u003d3 \\"},{"line_number":820,"context_line":"            $1 $2 $3 --region $4 \\"},{"line_number":821,"context_line":"            | grep \" id \" | get_field 2)"},{"line_number":822,"context_line":"    fi"},{"line_number":823,"context_line":"}"},{"line_number":824,"context_line":""},{"line_number":825,"context_line":"# Gets or creates endpoint"}],"source_content_type":"application/x-shellscript","patch_set":5,"id":"3afb71cf_40ef7687","line":822,"updated":"2015-06-07 18:40:44.000000000","message":"This function cannot be used to get an endpoint, only to create one.\n\nShouldn\u0027t we still echo the endpoint_id here ?","commit_id":"a4f5577d940e75a732cc082d5308ad40ccbe4982"},{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"275fe542cabc548814f373907bd62aa4a44111e2","unresolved":false,"context_lines":[{"line_number":823,"context_line":"}"},{"line_number":824,"context_line":""},{"line_number":825,"context_line":"# Gets or creates endpoint"},{"line_number":826,"context_line":"# Usage: get_or_create_endpoint \u003cservice\u003e \u003cregion\u003e \u003cpublicurl\u003e \u003cadminurl\u003e \u003cinternalurl\u003e"},{"line_number":827,"context_line":"function get_or_create_endpoint {"},{"line_number":828,"context_line":"    _get_or_create_endpoint_with_interface $1 public $3 $2"},{"line_number":829,"context_line":"    _get_or_create_endpoint_with_interface $1 admin $4 $2"}],"source_content_type":"application/x-shellscript","patch_set":5,"id":"3afb71cf_20f23a70","line":826,"updated":"2015-06-07 18:40:44.000000000","message":"This function cannot be used to get an endpoint anymore, see comment above.\n\nAt least, we should update its name to create_endpoint.","commit_id":"a4f5577d940e75a732cc082d5308ad40ccbe4982"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"3ff8ac5a9b714ca0e729cb3c497a2e060c4a2ca7","unresolved":false,"context_lines":[{"line_number":823,"context_line":"}"},{"line_number":824,"context_line":""},{"line_number":825,"context_line":"# Gets or creates endpoint"},{"line_number":826,"context_line":"# Usage: get_or_create_endpoint \u003cservice\u003e \u003cregion\u003e \u003cpublicurl\u003e \u003cadminurl\u003e \u003cinternalurl\u003e"},{"line_number":827,"context_line":"function get_or_create_endpoint {"},{"line_number":828,"context_line":"    _get_or_create_endpoint_with_interface $1 public $3 $2"},{"line_number":829,"context_line":"    _get_or_create_endpoint_with_interface $1 admin $4 $2"}],"source_content_type":"application/x-shellscript","patch_set":5,"id":"fa32b979_cbc5b28e","line":826,"in_reply_to":"3afb71cf_20f23a70","updated":"2015-06-16 00:34:28.000000000","message":"I\u0027ll make it return the public endpoint for consistency for now. Nothing actually uses the return for this.","commit_id":"a4f5577d940e75a732cc082d5308ad40ccbe4982"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"9c4fb5ecf5f8a43ad3f2ac05904f142ba7cfa99a","unresolved":false,"context_lines":[{"line_number":820,"context_line":"    echo $endpoint_id"},{"line_number":821,"context_line":"}"},{"line_number":822,"context_line":""},{"line_number":823,"context_line":"# Gets or creates endpoint"},{"line_number":824,"context_line":"# Usage: get_or_create_endpoint \u003cservice\u003e \u003cregion\u003e \u003cpublicurl\u003e \u003cadminurl\u003e \u003cinternalurl\u003e"},{"line_number":825,"context_line":"function get_or_create_endpoint {"},{"line_number":826,"context_line":"    local public_id\u003d$(_get_or_create_endpoint_with_interface $1 public $3 $2)"}],"source_content_type":"application/x-shellscript","patch_set":8,"id":"ba3cc151_75f3390b","line":823,"updated":"2015-06-30 04:31:17.000000000","message":"i\u0027d like to see the documentation increased around this\n\nIf I\u0027m correct, the intent here is to maintain backwards compatibility with the old version that doesn\u0027t specify the interface and just guess it wants it as \"public\"\n\nso if that\u0027s correct, i\u0027d like it explained here, and a deprecation warning?","commit_id":"eb85bc7935d668d7fdbc8b487f44babb8acdb84c"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"ba033f37e774b64d724e0d4b91fb9e1a7d12d884","unresolved":false,"context_lines":[{"line_number":820,"context_line":"    echo $endpoint_id"},{"line_number":821,"context_line":"}"},{"line_number":822,"context_line":""},{"line_number":823,"context_line":"# Gets or creates endpoint"},{"line_number":824,"context_line":"# Usage: get_or_create_endpoint \u003cservice\u003e \u003cregion\u003e \u003cpublicurl\u003e \u003cadminurl\u003e \u003cinternalurl\u003e"},{"line_number":825,"context_line":"function get_or_create_endpoint {"},{"line_number":826,"context_line":"    local public_id\u003d$(_get_or_create_endpoint_with_interface $1 public $3 $2)"}],"source_content_type":"application/x-shellscript","patch_set":8,"id":"ba3cc151_356e1130","line":823,"in_reply_to":"ba3cc151_75f3390b","updated":"2015-06-30 04:50:33.000000000","message":"So the difference is in v2 you created one endpoint which had public internal and admin components. In v3 you create 3 endpoints one with a public interface one with an internal interface and other with admin interface.\n\nThis is essentially trying to maintain the compatibility and i return the public endpoint id as at least it\u0027s something. It turns out that nothing ever checks the response here but previous comments said i should return something.","commit_id":"eb85bc7935d668d7fdbc8b487f44babb8acdb84c"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"6e61bcd389e53d39b54564302cce7015c83a0208","unresolved":false,"context_lines":[{"line_number":822,"context_line":"# Create an endpoint with a specific interface"},{"line_number":823,"context_line":"# Usage: _get_or_create_endpoint_with_interface \u003cservice\u003e \u003cinterface\u003e \u003curl\u003e \u003cregion\u003e"},{"line_number":824,"context_line":"function _get_or_create_endpoint_with_interface {"},{"line_number":825,"context_line":"    local endpoint_id\u003d$(openstack endpoint list \\"},{"line_number":826,"context_line":"        --os-url $KEYSTONE_SERVICE_URI_V3 \\"},{"line_number":827,"context_line":"        --os-identity-api-version\u003d3 \\"},{"line_number":828,"context_line":"        --service $1 \\"}],"source_content_type":"application/x-shellscript","patch_set":9,"id":"ba3cc151_ef4b9185","line":825,"updated":"2015-07-01 21:25:12.000000000","message":"Add -f value -c ID to only get the ID","commit_id":"b23bbf3d4adde631d534d0933eaead3f7928a7bf"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"6e61bcd389e53d39b54564302cce7015c83a0208","unresolved":false,"context_lines":[{"line_number":830,"context_line":"        --region $4)"},{"line_number":831,"context_line":"    if [[ -z \"$endpoint_id\" ]]; then"},{"line_number":832,"context_line":"        # Creates new endpoint"},{"line_number":833,"context_line":"        endpoint_id\u003d$(openstack endpoint create \\"},{"line_number":834,"context_line":"            --os-url $KEYSTONE_SERVICE_URI_V3 \\"},{"line_number":835,"context_line":"            --os-identity-api-version\u003d3 \\"},{"line_number":836,"context_line":"            $1 $2 $3 --region $4 \\"}],"source_content_type":"application/x-shellscript","patch_set":9,"id":"ba3cc151_f24e146e","line":833,"updated":"2015-07-01 21:25:12.000000000","message":"Add -f value -c ID to only get the ID","commit_id":"b23bbf3d4adde631d534d0933eaead3f7928a7bf"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"6e61bcd389e53d39b54564302cce7015c83a0208","unresolved":false,"context_lines":[{"line_number":859,"context_line":"    echo $public_id"},{"line_number":860,"context_line":"}"},{"line_number":861,"context_line":""},{"line_number":862,"context_line":"# Get a URL from a saved endpoint"},{"line_number":863,"context_line":"# Usage: get_endpoint_url \u003cservice\u003e \u003cinterface\u003e"},{"line_number":864,"context_line":"function get_endpoint_url {"},{"line_number":865,"context_line":"    echo $(openstack endpoint list \\"}],"source_content_type":"application/x-shellscript","patch_set":9,"id":"ba3cc151_9271c878","line":862,"updated":"2015-07-01 21:25:12.000000000","message":"what\u0027s a \"saved\" endpoint?","commit_id":"b23bbf3d4adde631d534d0933eaead3f7928a7bf"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"6e61bcd389e53d39b54564302cce7015c83a0208","unresolved":false,"context_lines":[{"line_number":866,"context_line":"            --service $1 --interface $2 \\"},{"line_number":867,"context_line":"            --os-url $KEYSTONE_SERVICE_URI_V3 \\"},{"line_number":868,"context_line":"            --os-identity-api-version\u003d3 \\"},{"line_number":869,"context_line":"            -c \"Service Type\" -c URL | grep $1 | get_field 2)"},{"line_number":870,"context_line":"}"},{"line_number":871,"context_line":""},{"line_number":872,"context_line":""}],"source_content_type":"application/x-shellscript","patch_set":9,"id":"ba3cc151_123e188c","line":869,"updated":"2015-07-01 21:25:12.000000000","message":"endpoint list is already filtering by service, so the grep shouldn\u0027t be accomplishing anything.","commit_id":"b23bbf3d4adde631d534d0933eaead3f7928a7bf"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"23666d6255bab0c690824512076b94c48de6f027","unresolved":false,"context_lines":[{"line_number":806,"context_line":"    # Gets service id"},{"line_number":807,"context_line":"    local service_id\u003d$("},{"line_number":808,"context_line":"        # Gets service id"},{"line_number":809,"context_line":"        openstack service show $2 -f value -c id 2\u003e/dev/null ||"},{"line_number":810,"context_line":"        # Creates new service if not exists"},{"line_number":811,"context_line":"        openstack service create \\"},{"line_number":812,"context_line":"            --os-url $KEYSTONE_SERVICE_URI_V3 \\"}],"source_content_type":"application/x-shellscript","patch_set":12,"id":"ba3cc151_bd1efb6d","line":809,"updated":"2015-07-02 14:52:37.000000000","message":"weird, for some reason the \u003cservice\u003e can be either name or type.","commit_id":"bd6ac8b73ddc34560b4022f02f9f601ffcfa0ea1"}],"lib/ceilometer":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"6e61bcd389e53d39b54564302cce7015c83a0208","unresolved":false,"context_lines":[{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        if [[ \"$KEYSTONE_CATALOG_BACKEND\" \u003d \u0027sql\u0027 ]]; then"},{"line_number":133,"context_line":"            get_or_create_service \"ceilometer\" \"metering\" \"OpenStack Telemetry Service\""},{"line_number":134,"context_line":"            get_or_create_endpoint \"metering\" \\"},{"line_number":135,"context_line":"                \"$REGION_NAME\" \\"},{"line_number":136,"context_line":"                \"$CEILOMETER_SERVICE_PROTOCOL://$CEILOMETER_SERVICE_HOST:$CEILOMETER_SERVICE_PORT/\" \\"},{"line_number":137,"context_line":"                \"$CEILOMETER_SERVICE_PROTOCOL://$CEILOMETER_SERVICE_HOST:$CEILOMETER_SERVICE_PORT/\" \\"}],"source_content_type":"application/x-shellscript","patch_set":9,"id":"ba3cc151_d228b035","line":134,"updated":"2015-07-01 21:25:12.000000000","message":"if these are always used together then how about combine them?","commit_id":"b23bbf3d4adde631d534d0933eaead3f7928a7bf"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"1030373c289c1edc6dd9085ebf993218609ffe57","unresolved":false,"context_lines":[{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        if [[ \"$KEYSTONE_CATALOG_BACKEND\" \u003d \u0027sql\u0027 ]]; then"},{"line_number":133,"context_line":"            get_or_create_service \"ceilometer\" \"metering\" \"OpenStack Telemetry Service\""},{"line_number":134,"context_line":"            get_or_create_endpoint \"metering\" \\"},{"line_number":135,"context_line":"                \"$REGION_NAME\" \\"},{"line_number":136,"context_line":"                \"$CEILOMETER_SERVICE_PROTOCOL://$CEILOMETER_SERVICE_HOST:$CEILOMETER_SERVICE_PORT/\" \\"},{"line_number":137,"context_line":"                \"$CEILOMETER_SERVICE_PROTOCOL://$CEILOMETER_SERVICE_HOST:$CEILOMETER_SERVICE_PORT/\" \\"}],"source_content_type":"application/x-shellscript","patch_set":9,"id":"ba3cc151_c632325e","line":134,"in_reply_to":"ba3cc151_d228b035","updated":"2015-07-01 23:17:22.000000000","message":"also appropriate for separate change i think","commit_id":"b23bbf3d4adde631d534d0933eaead3f7928a7bf"}],"lib/cinder":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"6e61bcd389e53d39b54564302cce7015c83a0208","unresolved":false,"context_lines":[{"line_number":331,"context_line":"            get_or_create_endpoint \"volume\" \"$REGION_NAME\" \\"},{"line_number":332,"context_line":"                \"$CINDER_SERVICE_PROTOCOL://$CINDER_SERVICE_HOST:$CINDER_SERVICE_PORT/v1/\\$(tenant_id)s\" \\"},{"line_number":333,"context_line":"                \"$CINDER_SERVICE_PROTOCOL://$CINDER_SERVICE_HOST:$CINDER_SERVICE_PORT/v1/\\$(tenant_id)s\" \\"},{"line_number":334,"context_line":"                \"$CINDER_SERVICE_PROTOCOL://$CINDER_SERVICE_HOST:$CINDER_SERVICE_PORT/v1/\\$(tenant_id)s\""},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"            get_or_create_service \"cinderv2\" \"volumev2\" \"Cinder Volume Service V2\""},{"line_number":337,"context_line":"            get_or_create_endpoint \"volumev2\" \"$REGION_NAME\" \\"}],"source_content_type":"application/x-shellscript","patch_set":9,"id":"ba3cc151_d2df5038","line":334,"updated":"2015-07-01 21:25:12.000000000","message":"looks like these are always the same... how about accept 1 and duplicate it automatically.","commit_id":"b23bbf3d4adde631d534d0933eaead3f7928a7bf"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"1030373c289c1edc6dd9085ebf993218609ffe57","unresolved":false,"context_lines":[{"line_number":331,"context_line":"            get_or_create_endpoint \"volume\" \"$REGION_NAME\" \\"},{"line_number":332,"context_line":"                \"$CINDER_SERVICE_PROTOCOL://$CINDER_SERVICE_HOST:$CINDER_SERVICE_PORT/v1/\\$(tenant_id)s\" \\"},{"line_number":333,"context_line":"                \"$CINDER_SERVICE_PROTOCOL://$CINDER_SERVICE_HOST:$CINDER_SERVICE_PORT/v1/\\$(tenant_id)s\" \\"},{"line_number":334,"context_line":"                \"$CINDER_SERVICE_PROTOCOL://$CINDER_SERVICE_HOST:$CINDER_SERVICE_PORT/v1/\\$(tenant_id)s\""},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"            get_or_create_service \"cinderv2\" \"volumev2\" \"Cinder Volume Service V2\""},{"line_number":337,"context_line":"            get_or_create_endpoint \"volumev2\" \"$REGION_NAME\" \\"}],"source_content_type":"application/x-shellscript","patch_set":9,"id":"ba3cc151_66ed66b6","line":334,"in_reply_to":"ba3cc151_d2df5038","updated":"2015-07-01 23:17:22.000000000","message":"like to see this as a separate change","commit_id":"b23bbf3d4adde631d534d0933eaead3f7928a7bf"}],"lib/sahara":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"d133bd1a253fb968eba26f5134b83a0da2103acb","unresolved":false,"context_lines":[{"line_number":78,"context_line":"            \"$SAHARA_SERVICE_PROTOCOL://$SAHARA_SERVICE_HOST:$SAHARA_SERVICE_PORT/v1.1/\\$(tenant_id)s\" \\"},{"line_number":79,"context_line":"            \"$SAHARA_SERVICE_PROTOCOL://$SAHARA_SERVICE_HOST:$SAHARA_SERVICE_PORT/v1.1/\\$(tenant_id)s\""},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        get_or_create_service \"sahara\" \"data-processing\" \"Sahara Data Processing\""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        get_or_create_endpoint \"data-processing\" \\"},{"line_number":84,"context_line":"            \"$REGION_NAME\" \\"}],"source_content_type":"application/x-shellscript","patch_set":5,"id":"5afe65bd_7310434f","line":81,"updated":"2015-06-01 22:05:49.000000000","message":"i know you are just modifying this, but what the heck is the point of this block?!","commit_id":"a4f5577d940e75a732cc082d5308ad40ccbe4982"}]}
