diff --git a/functions-common b/functions-common index 7f670716bd..e44fea112d 100644 --- a/functions-common +++ b/functions-common @@ -987,35 +987,38 @@ function get_or_create_service { } # Create an endpoint with a specific interface -# Usage: _create_endpoint_with_interface -function _create_endpoint_with_interface { - # Creates new endpoint +# Usage: _get_or_create_endpoint_with_interface +function _get_or_create_endpoint_with_interface { local endpoint_id - endpoint_id=$(openstack endpoint create \ - $1 $2 $3 --region $4 -f value -c id) + endpoint_id=$(openstack endpoint list \ + --service $1 \ + --interface $2 \ + --region $4 \ + -c ID -f value) + if [[ -z "$endpoint_id" ]]; then + # Creates new endpoint + endpoint_id=$(openstack endpoint create \ + $1 $2 $3 --region $4 -f value -c id) + fi + echo $endpoint_id } -# TODO(sdague): remove in O -function get_or_create_endpoint { - deprecated "get_or_create_endpoint is deprecated. Use create_endpoint instead" - create_endpoint $@ -} - # Gets or creates endpoint -# Usage: create_endpoint -function create_endpoint { +# Usage: get_or_create_endpoint +function get_or_create_endpoint { # NOTE(jamielennnox): when converting to v3 endpoint creation we go from # creating one endpoint with multiple urls to multiple endpoints each with # a different interface. To maintain the existing function interface we - # create 2 endpoints and return the id of the public one. In reality + # create 3 endpoints and return the id of the public one. In reality # returning the public id will not make a lot of difference as there are no # scenarios currently that use the returned id. Ideally this behaviour # should be pushed out to the service setups and let them create the # endpoints they need. local public_id - public_id=$(_create_endpoint_with_interface $1 public $3 $2) - _create_endpoint_with_interface $1 admin $4 $2 + public_id=$(_get_or_create_endpoint_with_interface $1 public $3 $2) + _get_or_create_endpoint_with_interface $1 admin $4 $2 + _get_or_create_endpoint_with_interface $1 internal $5 $2 # return the public id to indicate success, and this is the endpoint most likely wanted echo $public_id diff --git a/lib/cinder b/lib/cinder index 037456adef..607a6f83c6 100644 --- a/lib/cinder +++ b/lib/cinder @@ -372,7 +372,7 @@ function create_cinder_accounts { create_service_user "cinder" get_or_create_service "cinder" "volume" "Cinder Volume Service" - create_endpoint \ + get_or_create_endpoint \ "volume" \ "$REGION_NAME" \ "$CINDER_SERVICE_PROTOCOL://$CINDER_SERVICE_HOST:$CINDER_SERVICE_PORT/v1/\$(project_id)s" \ @@ -380,7 +380,7 @@ function create_cinder_accounts { "$CINDER_SERVICE_PROTOCOL://$CINDER_SERVICE_HOST:$CINDER_SERVICE_PORT/v1/\$(project_id)s" get_or_create_service "cinderv2" "volumev2" "Cinder Volume Service V2" - create_endpoint \ + get_or_create_endpoint \ "volumev2" \ "$REGION_NAME" \ "$CINDER_SERVICE_PROTOCOL://$CINDER_SERVICE_HOST:$CINDER_SERVICE_PORT/v2/\$(project_id)s" \ @@ -388,7 +388,7 @@ function create_cinder_accounts { "$CINDER_SERVICE_PROTOCOL://$CINDER_SERVICE_HOST:$CINDER_SERVICE_PORT/v2/\$(project_id)s" get_or_create_service "cinderv3" "volumev3" "Cinder Volume Service V3" - create_endpoint \ + get_or_create_endpoint \ "volumev3" \ "$REGION_NAME" \ "$CINDER_SERVICE_PROTOCOL://$CINDER_SERVICE_HOST:$CINDER_SERVICE_PORT/v3/\$(project_id)s" \ diff --git a/lib/glance b/lib/glance index 5d532eac5e..f2a6db6edc 100644 --- a/lib/glance +++ b/lib/glance @@ -292,7 +292,7 @@ function create_glance_accounts { fi get_or_create_service "glance" "image" "Glance Image Service" - create_endpoint \ + get_or_create_endpoint \ "image" \ "$REGION_NAME" \ "$GLANCE_SERVICE_PROTOCOL://$GLANCE_HOSTPORT" \ @@ -305,7 +305,7 @@ function create_glance_accounts { create_service_user "glare" get_or_create_service "glare" "artifact" "Glance Artifact Service" - create_endpoint "artifact" \ + get_or_create_endpoint "artifact" \ "$REGION_NAME" \ "$GLANCE_SERVICE_PROTOCOL://$GLANCE_GLARE_HOSTPORT" \ "$GLANCE_SERVICE_PROTOCOL://$GLANCE_GLARE_HOSTPORT" \ diff --git a/lib/heat b/lib/heat index 6a654b5ade..4326321bd1 100644 --- a/lib/heat +++ b/lib/heat @@ -388,7 +388,7 @@ function create_heat_accounts { create_service_user "heat" "admin" get_or_create_service "heat" "orchestration" "Heat Orchestration Service" - create_endpoint \ + get_or_create_endpoint \ "orchestration" \ "$REGION_NAME" \ "$SERVICE_PROTOCOL://$HEAT_API_HOST:$HEAT_API_PORT/v1/\$(project_id)s" \ @@ -396,7 +396,7 @@ function create_heat_accounts { "$SERVICE_PROTOCOL://$HEAT_API_HOST:$HEAT_API_PORT/v1/\$(project_id)s" get_or_create_service "heat-cfn" "cloudformation" "Heat CloudFormation Service" - create_endpoint \ + get_or_create_endpoint \ "cloudformation" \ "$REGION_NAME" \ "$SERVICE_PROTOCOL://$HEAT_API_CFN_HOST:$HEAT_API_CFN_PORT/v1" \ diff --git a/lib/neutron-legacy b/lib/neutron-legacy index 9da6a26e7b..f0592e2f37 100644 --- a/lib/neutron-legacy +++ b/lib/neutron-legacy @@ -534,7 +534,7 @@ function create_neutron_accounts { create_service_user "neutron" get_or_create_service "neutron" "network" "Neutron Service" - create_endpoint \ + get_or_create_endpoint \ "network" \ "$REGION_NAME" \ "$Q_PROTOCOL://$SERVICE_HOST:$Q_PORT/" \ diff --git a/lib/nova b/lib/nova index 33dbc428ee..818ecc4f1b 100644 --- a/lib/nova +++ b/lib/nova @@ -418,7 +418,7 @@ function create_nova_accounts { fi get_or_create_service "nova_legacy" "compute_legacy" "Nova Compute Service (Legacy 2.0)" - create_endpoint \ + get_or_create_endpoint \ "compute_legacy" \ "$REGION_NAME" \ "$nova_api_url/v2/\$(project_id)s" \ @@ -426,7 +426,7 @@ function create_nova_accounts { "$nova_api_url/v2/\$(project_id)s" get_or_create_service "nova" "compute" "Nova Compute Service" - create_endpoint \ + get_or_create_endpoint \ "compute" \ "$REGION_NAME" \ "$nova_api_url/v2.1" \ @@ -446,7 +446,7 @@ function create_nova_accounts { # S3 if is_service_enabled swift3; then get_or_create_service "s3" "s3" "S3" - create_endpoint \ + get_or_create_endpoint \ "s3" \ "$REGION_NAME" \ "http://$SERVICE_HOST:$S3_SERVICE_PORT" \ diff --git a/lib/swift b/lib/swift index b74b4da840..8cb94efa66 100644 --- a/lib/swift +++ b/lib/swift @@ -633,7 +633,7 @@ function create_swift_accounts { create_service_user "swift" "admin" get_or_create_service "swift" "object-store" "Swift Service" - create_endpoint \ + get_or_create_endpoint \ "object-store" \ "$REGION_NAME" \ "$SWIFT_SERVICE_PROTOCOL://$SERVICE_HOST:$SWIFT_DEFAULT_BIND_PORT/v1/AUTH_\$(project_id)s" \