Skip to content

Commit 5b49fb0

Browse files
committed
Support startupControl in domain inputs
Signed-off-by: Dongbo Xiao <[email protected]>
1 parent 7a5e495 commit 5b49fb0

File tree

5 files changed

+76
-23
lines changed

5 files changed

+76
-23
lines changed

kubernetes/create-domain-job-inputs.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ domainName: base_domain
1717
# This id must be lowercase and unique across all domains in a Kubernetes cluster
1818
domainUid: domain1
1919

20+
#
21+
startupControl: AUTO
22+
2023
# Cluster name
2124
clusterName: cluster-1
2225

kubernetes/create-domain-job.sh

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,33 @@ function validateImagePullSecret {
171171
failIfValidationErrors
172172
}
173173

174+
#
175+
# Function to validate the server startup control value
176+
#
177+
function validateStartupControl {
178+
STARTUP_CONTROL_NONE="NONE"
179+
STARTUP_CONTROL_ALL="ALL"
180+
STARTUP_CONTROL_ADMIN="ADMIN"
181+
STARTUP_CONTROL_SPECIFIED="SPECIFIED"
182+
STARTUP_CONTROL_AUTO="AUTO"
183+
184+
case ${startupControl} in
185+
${STARTUP_CONTROL_NONE})
186+
;;
187+
${STARTUP_CONTROL_ALL})
188+
;;
189+
${STARTUP_CONTROL_ADMIN})
190+
;;
191+
${STARTUP_CONTROL_SPECIFIED})
192+
;;
193+
${STARTUP_CONTROL_AUTO})
194+
;;
195+
*)
196+
validationError "Invalid valid for startupControl: ${startupControl}. Valid values are 'NONE', 'ALL', 'ADMIN', 'SPECIFIED', and 'AUTO'."
197+
;;
198+
esac
199+
}
200+
174201
#
175202
# Function to setup the environment to run the create domain job
176203
#
@@ -231,7 +258,7 @@ function initialize {
231258
validateInputParamsSpecified adminPort adminServerName createDomainScript domainName domainUid clusterName managedServerCount managedServerStartCount managedServerNameBase
232259
validateInputParamsSpecified managedServerPort persistencePath persistenceSize persistenceVolumeClaimName persistenceVolumeName
233260
validateInputParamsSpecified productionModeEnabled secretName t3ChannelPort exposeAdminT3Channel adminNodePort exposeAdminNodePort
234-
validateInputParamsSpecified namespace loadBalancer loadBalancerWebPort loadBalancerAdminPort loadBalancer javaOptions
261+
validateInputParamsSpecified namespace loadBalancer loadBalancerWebPort loadBalancerAdminPort loadBalancer javaOptions startupControl
235262
validateDomainUid
236263
validateClusterName
237264
validateStorageClass
@@ -240,6 +267,7 @@ function initialize {
240267
validateSecretName
241268
validateImagePullSecretName
242269
validateLoadBalancer
270+
validateStartupControl
243271
failIfValidationErrors
244272
}
245273

@@ -323,6 +351,7 @@ function createYamlFiles {
323351
sed -i -e "s:%EXPOSE_ADMIN_PORT_PREFIX%:${exposeAdminNodePortPrefix}:g" ${dcrOutput}
324352
sed -i -e "s:%ADMIN_NODE_PORT%:${adminNodePort}:g" ${dcrOutput}
325353
sed -i -e "s:%JAVA_OPTIONS%:${javaOptions}:g" ${dcrOutput}
354+
sed -i -e "s:%STARTUP_CONTROL%:${startupControl}:g" ${dcrOutput}
326355

327356
# Traefik deployment file
328357
cp ${traefikDeployInput} ${traefikDeployOutput}
@@ -384,7 +413,7 @@ function createDomain {
384413

385414
echo "Waiting for the job to complete..."
386415
JOB_STATUS="0"
387-
max=10
416+
max=20
388417
count=0
389418
while [ "$JOB_STATUS" != "Completed" -a $count -lt $max ] ; do
390419
sleep 30

kubernetes/internal/domain-custom-resource-template.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ spec:
3636
# "clusterStartup" entries below to work out which servers to start
3737
# - "AUTO" will start the servers as with "SPECIFIED", but then also start servers from
3838
# other clusters up to the replicas count
39-
startupControl: "AUTO"
39+
startupControl: "%STARTUP_CONTROL%"
4040
# serverStartup is used to list the desired behavior for starting servers. The Operator will
4141
# use this field only if startupControl is set to "SPECIFIED" or "AUTO". You may provide a list of
4242
# entries, each entry should contain the keys should below:

src/integration-tests/bash/cleanup.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@
4141
# Phase 4: Delete the local test output directory.
4242
#
4343

44-
DOMAINS=(domain1 domain2 domain3 domain4)
45-
DOMAIN_NAMESPACES=(default default test1 test2)
44+
DOMAINS=(domain1 domain2 domain3 domain4 domain5)
45+
DOMAIN_NAMESPACES=(default default test1 test2 default)
4646
DCOUNT=${#DOMAINS[@]}
4747

4848
OPER_NAMESPACES=(weblogic-operator-1 weblogic-operator-2)

src/integration-tests/bash/run.sh

Lines changed: 39 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -635,7 +635,7 @@ function test_second_operator {
635635
declare_test_pass
636636
}
637637

638-
# dom_define DOM_KEY OP_KEY NAMESPACE DOMAIN_UID WL_CLUSTER_NAME MS_BASE_NAME ADMIN_PORT ADMIN_WLST_PORT ADMIN_NODE_PORT MS_PORT LOAD_BALANCER_WEB_PORT LOAD_BALANCER_ADMIN_PORT
638+
# dom_define DOM_KEY OP_KEY NAMESPACE DOMAIN_UID STARTUP_CONTROL WL_CLUSTER_NAME MS_BASE_NAME ADMIN_PORT ADMIN_WLST_PORT ADMIN_NODE_PORT MS_PORT LOAD_BALANCER_WEB_PORT LOAD_BALANCER_ADMIN_PORT
639639
# Sets up a table of domain values: all of the above, plus TMP_DIR which is derived.
640640
#
641641
# dom_get DOM_KEY <value>
@@ -651,21 +651,22 @@ function test_second_operator {
651651
# echo Defined operator $opkey with `dom_echo_all $DOM_KEY`
652652
#
653653
function dom_define {
654-
if [ "$#" != 12 ] ; then
655-
fail "requires 12 parameters: DOM_KEY OP_KEY NAMESPACE DOMAIN_UID WL_CLUSTER_NAME MS_BASE_NAME ADMIN_PORT ADMIN_WLST_PORT ADMIN_NODE_PORT MS_PORT LOAD_BALANCER_WEB_PORT LOAD_BALANCER_ADMIN_PORT"
654+
if [ "$#" != 13 ] ; then
655+
fail "requires 13 parameters: DOM_KEY OP_KEY NAMESPACE DOMAIN_UID STARTUP_CONTROL WL_CLUSTER_NAME MS_BASE_NAME ADMIN_PORT ADMIN_WLST_PORT ADMIN_NODE_PORT MS_PORT LOAD_BALANCER_WEB_PORT LOAD_BALANCER_ADMIN_PORT"
656656
fi
657657
local DOM_KEY="`echo \"${1}\" | sed 's/-/_/g'`"
658658
eval export DOM_${DOM_KEY}_OP_KEY="$2"
659659
eval export DOM_${DOM_KEY}_NAMESPACE="$3"
660660
eval export DOM_${DOM_KEY}_DOMAIN_UID="$4"
661-
eval export DOM_${DOM_KEY}_WL_CLUSTER_NAME="$5"
662-
eval export DOM_${DOM_KEY}_MS_BASE_NAME="$6"
663-
eval export DOM_${DOM_KEY}_ADMIN_PORT="$7"
664-
eval export DOM_${DOM_KEY}_ADMIN_WLST_PORT="$8"
665-
eval export DOM_${DOM_KEY}_ADMIN_NODE_PORT="$9"
666-
eval export DOM_${DOM_KEY}_MS_PORT="${10}"
667-
eval export DOM_${DOM_KEY}_LOAD_BALANCER_WEB_PORT="${11}"
668-
eval export DOM_${DOM_KEY}_LOAD_BALANCER_ADMIN_PORT="${12}"
661+
eval export DOM_${DOM_KEY}_STARTUP_CONTROL="$5"
662+
eval export DOM_${DOM_KEY}_WL_CLUSTER_NAME="$6"
663+
eval export DOM_${DOM_KEY}_MS_BASE_NAME="$7"
664+
eval export DOM_${DOM_KEY}_ADMIN_PORT="$8"
665+
eval export DOM_${DOM_KEY}_ADMIN_WLST_PORT="$9"
666+
eval export DOM_${DOM_KEY}_ADMIN_NODE_PORT="${10}"
667+
eval export DOM_${DOM_KEY}_MS_PORT="${11}"
668+
eval export DOM_${DOM_KEY}_LOAD_BALANCER_WEB_PORT="${12}"
669+
eval export DOM_${DOM_KEY}_LOAD_BALANCER_ADMIN_PORT="${13}"
669670

670671
# derive TMP_DIR $RESULT_DIR/$NAMESPACE-$DOMAIN_UID :
671672
eval export DOM_${DOM_KEY}_TMP_DIR="$RESULT_DIR/$3-$4"
@@ -693,6 +694,7 @@ function run_create_domain_job {
693694

694695
local NAMESPACE="`dom_get $1 NAMESPACE`"
695696
local DOMAIN_UID="`dom_get $1 DOMAIN_UID`"
697+
local STARTUP_CONTROL="`dom_get $1 STARTUP_CONTROL`"
696698
local WL_CLUSTER_NAME="`dom_get $1 WL_CLUSTER_NAME`"
697699
local MS_BASE_NAME="`dom_get $1 MS_BASE_NAME`"
698700
local ADMIN_PORT="`dom_get $1 ADMIN_PORT`"
@@ -767,6 +769,7 @@ function run_create_domain_job {
767769
sed -i -e "s/^loadBalancerWebPort:.*/loadBalancerWebPort: $LOAD_BALANCER_WEB_PORT/" ${tmp_dir}/create-domain-job-inputs.yaml
768770
sed -i -e "s/^loadBalancerAdminPort:.*/loadBalancerAdminPort: $LOAD_BALANCER_ADMIN_PORT/" ${tmp_dir}/create-domain-job-inputs.yaml
769771
sed -i -e "s/^javaOptions:.*/javaOptions: $WLS_JAVA_OPTIONS/" ${tmp_dir}/create-domain-job-inputs.yaml
772+
sed -i -e "s/^startupControl:.*/startupControl: $STARTUP_CONTROL/" ${tmp_dir}/create-domain-job-inputs.yaml
770773

771774
# we will test cluster scale up and down in domain1 and domain4
772775
if [ "$DOMAIN_UID" == "domain1" ] || [ "$DOMAIN_UID" == "domain4" ] ; then
@@ -1883,6 +1886,7 @@ function verify_domain_created {
18831886

18841887
local NAMESPACE="`dom_get $1 NAMESPACE`"
18851888
local DOMAIN_UID="`dom_get $1 DOMAIN_UID`"
1889+
local STARTUP_CONTROL="`dom_get $1 STARTUP_CONTROL`"
18861890
local MS_BASE_NAME="`dom_get $1 MS_BASE_NAME`"
18871891

18881892
trace "verify domain $DOMAIN_UID in $NAMESPACE namespace"
@@ -1902,6 +1906,11 @@ function verify_domain_created {
19021906
trace "verify the service and pod of admin server"
19031907
verify_service_and_pod_created $DOM_KEY 0
19041908

1909+
local verify_as_only=false
1910+
if [ "$STARTUP_CONTROL" = "ADMIN" ] ; then
1911+
verify_as_only=true
1912+
fi
1913+
19051914
local replicas=`get_cluster_replicas $DOM_KEY`
19061915

19071916
trace "verify $replicas number of managed servers for creation"
@@ -1910,15 +1919,22 @@ function verify_domain_created {
19101919
do
19111920
local MS_NAME="$DOMAIN_UID-${MS_BASE_NAME}$i"
19121921
trace "verify service and pod of server $MS_NAME"
1913-
verify_service_and_pod_created $DOM_KEY $i
1922+
if [ "${verify_as_only}" = "true" ]; then
1923+
verify_pod_deleted $DOM_KEY $i
1924+
else
1925+
verify_service_and_pod_created $DOM_KEY $i
1926+
fi
19141927
done
19151928

19161929
# Check if we got exepcted number of managed servers running
19171930
local ms_name_common=${DOMAIN_UID}-${MS_BASE_NAME}
19181931
local pod_count=`kubectl get pods -n $NAMESPACE |grep "^${ms_name_common}" | wc -l `
1919-
if [ ${pod_count:=Error} != $replicas ] ; then
1932+
if [ ${pod_count:=Error} != $replicas ] && [ "${verify_as_only}" != "true" ] ; then
19201933
fail "ERROR: expected $replicas number of managed servers running, but got $pod_count, exiting!"
19211934
fi
1935+
if [ ${pod_count:=Error} != 0 ] && [ "${verify_as_only}" = "true" ] ; then
1936+
fail "ERROR: expected none of managed servers running, but got $pod_count, exiting!"
1937+
fi
19221938
}
19231939

19241940
function verify_pod_deleted {
@@ -2464,11 +2480,12 @@ function test_suite {
24642480
op_define oper1 weblogic-operator-1 "default,test1" 31001
24652481
op_define oper2 weblogic-operator-2 test2 32001
24662482

2467-
# DOM_KEY OP_KEY NAMESPACE DOMAIN_UID WL_CLUSTER_NAME MS_BASE_NAME ADMIN_PORT ADMIN_WLST_PORT ADMIN_NODE_PORT MS_PORT LOAD_BALANCER_WEB_PORT LOAD_BALANCER_ADMIN_PORT
2468-
dom_define domain1 oper1 default domain1 cluster-1 managed-server 7001 30012 30701 8001 30305 30315
2469-
dom_define domain2 oper1 default domain2 cluster-1 managed-server 7011 30031 30702 8021 30306 30316
2470-
dom_define domain3 oper1 test1 domain3 cluster-1 managed-server 7021 30041 30703 8031 30307 30317
2471-
dom_define domain4 oper2 test2 domain4 cluster-1 managed-server 7041 30051 30704 8041 30308 30318
2483+
# DOM_KEY OP_KEY NAMESPACE DOMAIN_UID STARTUP_CONTROL WL_CLUSTER_NAME MS_BASE_NAME ADMIN_PORT ADMIN_WLST_PORT ADMIN_NODE_PORT MS_PORT LOAD_BALANCER_WEB_PORT LOAD_BALANCER_ADMIN_PORT
2484+
dom_define domain1 oper1 default domain1 AUTO cluster-1 managed-server 7001 30012 30701 8001 30305 30315
2485+
dom_define domain2 oper1 default domain2 AUTO cluster-1 managed-server 7011 30031 30702 8021 30306 30316
2486+
dom_define domain3 oper1 test1 domain3 AUTO cluster-1 managed-server 7021 30041 30703 8031 30307 30317
2487+
dom_define domain4 oper2 test2 domain4 AUTO cluster-1 managed-server 7041 30051 30704 8041 30308 30318
2488+
dom_define domain5 oper1 default domain5 ADMIN cluster-1 managed-server 7051 30061 30705 8051 30309 30319
24722489

24732490
# create namespaces for domains (the operator job creates a namespace if needed)
24742491
# TODO have the op_define commands themselves create target namespace if it doesn't already exist, or test if the namespace creation is needed in the first place, and if so, ask MikeG to create them as part of domain create job
@@ -2533,6 +2550,10 @@ function test_suite {
25332550
# cycle domain1 down and back up, plus verify no impact on domain4
25342551
test_domain_lifecycle domain1 domain4
25352552

2553+
# create another domain in the default namespace with startupControl="ADMIN", and verify that only admin server is created
2554+
run_create_domain_job domain5
2555+
verify_domain_created domain5
2556+
25362557
# test managed server 1 pod auto-restart
25372558
test_wls_liveness_probe domain1
25382559

0 commit comments

Comments
 (0)