Skip to content

Commit b478077

Browse files
author
Jan Lieskovsky
committed
[CLOUD-2453][KEYCLOAK-7098] Add wait_for_service launch script routine
Move description of environment variables specific to os-sso72 module to appropriate module.yaml file Signed-off-by: Jan Lieskovsky <[email protected]>
1 parent 6cd1490 commit b478077

File tree

2 files changed

+55
-0
lines changed

2 files changed

+55
-0
lines changed

os-sso72/added/openshift-launch.sh

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,40 @@ function clean_shutdown() {
1111
wait $!
1212
}
1313

14+
# CLOUD-2453 Connect-retry loop to wait for the service to become reachable over network
15+
function wait_for_service() {
16+
local -r curl_conn_refused_exit_code="7"
17+
if [ -n "${SERVICE_WAIT_NAME}" ]; then
18+
local -r connect_retry_message="${SERVICE_WAIT_RETRY_MESSAGE:-"Waiting for the \"${SERVICE_WAIT_NAME}\" service to become available ..."}"
19+
local service="${SERVICE_WAIT_NAME/-/_}"
20+
local -r service_host="${service^^}_SERVICE_HOST"
21+
local -r service_port="${service^^}_SERVICE_PORT"
22+
if [ -n "${SERVICE_WAIT_RETRY_PERIOD_SECONDS}" ] && [[ ! "${SERVICE_WAIT_RETRY_PERIOD_SECONDS}" =~ '^[0-9]+\.?[0-9]*$' ]]; then
23+
log_warning "Value of SERVICE_WAIT_RETRY_PERIOD_SECONDS variable can be only arbitrary floating point number. Ignoring \"${SERVICE_WAIT_RETRY_PERIOD_SECONDS}\" setting, defaulting to 10 seconds."
24+
unset SERVICE_WAIT_RETRY_PERIOD_SECONDS
25+
fi
26+
if [ -z "${!service_host}" -o -z "${!service_port}" ]; then
27+
log_warning "Unable to determine target host or port of the \"${SERVICE_WAIT_NAME}\" service. The RH-SSO pod will start without waiting the \"${SERVICE_WAIT_NAME}\" service to be reachable over network. Please make sure you specified correct service name in SERVICE_WAIT_NAME"
28+
else
29+
until ( echo > /dev/tcp/"${!service_host}"/"${!service_port}" ) &> /dev/null; do
30+
if [ -n "${SERVICE_WAIT_INTRO_MESSAGE}" ]; then
31+
log_warning "${SERVICE_WAIT_INTRO_MESSAGE}"
32+
unset SERVICE_WAIT_INTRO_MESSAGE
33+
fi
34+
log_info "${connect_retry_message}"
35+
sleep "${SERVICE_WAIT_RETRY_PERIOD_SECONDS:-10}s"
36+
done
37+
fi
38+
fi
39+
}
40+
1441
function runServer() {
1542
local instanceDir=$1
1643
local count=$2
1744
export NODE_NAME="${NODE_NAME:-node}-${count}"
1845

46+
wait_for_service
47+
1948
source $JBOSS_HOME/bin/launch/configure.sh
2049

2150
log_info "Running $JBOSS_IMAGE_NAME image, version $JBOSS_IMAGE_VERSION"
@@ -47,6 +76,8 @@ if [ "${SPLIT_DATA^^}" = "TRUE" ]; then
4776

4877
partitionPV "${DATA_DIR}" "${SPLIT_LOCK_TIMEOUT:-30}"
4978
else
79+
wait_for_service
80+
5081
source $JBOSS_HOME/bin/launch/configure.sh
5182

5283
log_info "Running $JBOSS_IMAGE_NAME image, version $JBOSS_IMAGE_VERSION"

os-sso72/module.yaml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,27 @@ run:
2323
user: 185
2424
cmd:
2525
- "/opt/eap/bin/openshift-launch.sh"
26+
27+
envs:
28+
- name: "SERVICE_WAIT_NAME"
29+
example: "sso-mysql"
30+
description: "Name of the OpenShift service, the RH-SSO pod should wait for to become reachable over network, prior starting the RH-SSO server. Not set by default."
31+
- name: "SERVICE_WAIT_RETRY_MESSAGE"
32+
example: "Waiting for the \"${SERVICE_WAIT_NAME}\" service to become available ..."
33+
description: "Message to be displayed in connect-retry loop, in which the RH-SSO pod is waiting for the SERVICE_WAIT_NAME to become reachable over network. Not set by default."
34+
- name: "SERVICE_WAIT_INTRO_MESSAGE"
35+
example: "Ensure a persistent volume is available for the \"${APPLICATION_NAME}-mysql-claim\" or a storage class is set."
36+
description: "Message to be displayed prior starting the connect-retry loop, in which the RH-SSO pod is waiting for the SERVICE_WAIT_NAME to become reachable over network. Typically describes additional requirements in order the connect-retry loop of the RH-SSO pod successfully to finish. Not set by default."
37+
- name: "SSO_ADMIN_USERNAME"
38+
example: "admin"
39+
description: "Username of the administrator account for the 'master' realm of the RH-SSO server. Required. If no value is specified, it is auto generated and displayed as an OpenShift Instructional message when the template is instantiated."
40+
- name: "SSO_ADMIN_PASSWORD"
41+
example: "hardtoguess"
42+
description: "Password of the administrator account for the 'master' realm of the RH-SSO server. Required. If no value is specified, it is auto generated and displayed as an OpenShift Instructional message when the template is instantiated."
43+
- name: "SSO_SERVICE_USERNAME"
44+
example: "username"
45+
description: "RH-SSO Server service username with rights to create Client configurations in SSO_REALM. This user is created if this ENV is provided"
46+
- name: "SSO_SERVICE_PASSWORD"
47+
example: "password"
48+
description: "Password for SSO_SERVICE_USERNAME"
49+

0 commit comments

Comments
 (0)