Browse code

Fix creation of endpoints in multi-region

Keystone API v3 does currently not support filtering for region names.
As a consequence an additional check is needed in get_or_create_endpoint
to check if an endpoint must be created for a given region or if it
already exists.
See related bug for more information regarding the missing region
filtering in keystone.

Closes-Bug: #1483784
Related-Bug: #1482772
Change-Id: Ia6a497b9fb58f7474636ab52dc01b99857bed3a2

Daniel Gonzalez authored on 2015/08/12 02:34:22
Showing 1 changed files
... ...
@@ -852,13 +852,18 @@ function get_or_create_service {
852 852
 # Usage: _get_or_create_endpoint_with_interface <service> <interface> <url> <region>
853 853
 function _get_or_create_endpoint_with_interface {
854 854
     local endpoint_id
855
+    # TODO(dgonzalez): The check of the region name, as done in the grep
856
+    # statement below, exists only because keystone does currently
857
+    # not allow filtering the region name when listing endpoints. If keystone
858
+    # gets support for this, the check for the region name can be removed.
859
+    # Related bug in keystone: https://bugs.launchpad.net/keystone/+bug/1482772
855 860
     endpoint_id=$(openstack endpoint list \
856 861
         --os-url $KEYSTONE_SERVICE_URI_V3 \
857 862
         --os-identity-api-version=3 \
858 863
         --service $1 \
859 864
         --interface $2 \
860 865
         --region $4 \
861
-        -c ID -f value)
866
+        -c ID -c Region -f value | grep $4 | cut -f 1 -d " ")
862 867
     if [[ -z "$endpoint_id" ]]; then
863 868
         # Creates new endpoint
864 869
         endpoint_id=$(openstack endpoint create \