Revert "Don't check for existing endpoints"
This reverts commit 7d1ec430046256ac3f536f4920a43936e28ef0c4.
This broke the sahara and layer4 dsvm jobs. The layer4 job
is voting on tempest changes so tempest is also broken.
Change-Id: Ide69f10cd85bf7ff0d86bc8cba56dedd26850362
Partial-Bug: #1573868
diff --git a/functions-common b/functions-common
index 7f67071..e44fea1 100644
--- a/functions-common
+++ b/functions-common
@@ -987,35 +987,38 @@
}
# Create an endpoint with a specific interface
-# Usage: _create_endpoint_with_interface <service> <interface> <url> <region>
-function _create_endpoint_with_interface {
- # Creates new endpoint
+# Usage: _get_or_create_endpoint_with_interface <service> <interface> <url> <region>
+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 <service> <region> <publicurl> <adminurl>
-function create_endpoint {
+# Usage: get_or_create_endpoint <service> <region> <publicurl> <adminurl> <internalurl>
+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 037456a..607a6f8 100644
--- a/lib/cinder
+++ b/lib/cinder
@@ -372,7 +372,7 @@
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 @@
"$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 @@
"$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 5d532ea..f2a6db6 100644
--- a/lib/glance
+++ b/lib/glance
@@ -292,7 +292,7 @@
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 @@
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 6a654b5..4326321 100644
--- a/lib/heat
+++ b/lib/heat
@@ -388,7 +388,7 @@
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 @@
"$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 9da6a26..f0592e2 100644
--- a/lib/neutron-legacy
+++ b/lib/neutron-legacy
@@ -534,7 +534,7 @@
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 33dbc42..818ecc4 100644
--- a/lib/nova
+++ b/lib/nova
@@ -418,7 +418,7 @@
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 @@
"$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 @@
# 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 b74b4da..8cb94ef 100644
--- a/lib/swift
+++ b/lib/swift
@@ -633,7 +633,7 @@
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" \