@@ -212,6 +212,210 @@ function getKubernetesClusterIP {
212
212
K8S_IP=" ${array[1]} "
213
213
}
214
214
215
+ #
216
+ # Function to generate the properties and yaml files for creating a domain
217
+ #
218
+ function createFiles {
219
+
220
+ # Make sure the output directory has a copy of the inputs file.
221
+ # The user can either pre-create the output directory, put the inputs
222
+ # file there, and create the domain from it, or the user can put the
223
+ # inputs file some place else and let this script create the output directory
224
+ # (if needed) and copy the inputs file there.
225
+ copyInputsFileToOutputDirectory ${valuesInputFile} " ${domainOutputDir} /create-domain-inputs.yaml"
226
+
227
+ if [ " ${domainHomeInImage} " == " true" ]; then
228
+ if [ -z " ${domainHomeImageBase} " ]; then
229
+ fail " Please specify domainHomeImageBase in your input YAML"
230
+ fi
231
+ else
232
+ if [ -z " ${image} " ]; then
233
+ fail " Please specify image in your input YAML"
234
+ fi
235
+ fi
236
+
237
+ dcrOutput=" ${domainOutputDir} /domain.yaml"
238
+
239
+ domainName=${domainUID}
240
+
241
+ enabledPrefix=" " # uncomment the feature
242
+ disabledPrefix=" # " # comment out the feature
243
+
244
+ if [ " ${exposeAdminT3Channel} " = true ]; then
245
+ exposeAdminT3ChannelPrefix=" ${enabledPrefix} "
246
+ else
247
+ exposeAdminT3ChannelPrefix=" ${disabledPrefix} "
248
+ fi
249
+
250
+ if [ " ${exposeAdminNodePort} " = true ]; then
251
+ exposeAdminNodePortPrefix=" ${enabledPrefix} "
252
+ else
253
+ exposeAdminNodePortPrefix=" ${disabledPrefix} "
254
+ fi
255
+
256
+ # For some parameters, use the default value if not defined.
257
+ if [ -z " ${domainPVMountPath} " ]; then
258
+ domainPVMountPath=" /shared"
259
+ fi
260
+
261
+ if [ -z " ${logHome} " ]; then
262
+ logHome=" ${domainPVMountPath} /logs/${domainUID} "
263
+ fi
264
+
265
+ if [ -z " ${persistentVolumeClaimName} " ]; then
266
+ persistentVolumeClaimName=" ${domainUID} -weblogic-sample-pvc"
267
+ fi
268
+
269
+ if [ -z " ${weblogicCredentialsSecretName} " ]; then
270
+ weblogicCredentialsSecretName=" ${domainUID} -weblogic-credentials"
271
+ fi
272
+
273
+ if [ " ${domainHomeInImage} " == " true" ]; then
274
+ domainPropertiesOutput=" ${domainOutputDir} /domain.properties"
275
+ domainHome=" /u01/oracle/user_projects/domains/${domainName} "
276
+
277
+ # Generate the properties file that will be used when creating the weblogic domain
278
+ echo Generating ${domainPropertiesOutput}
279
+
280
+ cp ${domainPropertiesInput} ${domainPropertiesOutput}
281
+ sed -i -e " s:%DOMAIN_NAME%:${domainName} :g" ${domainPropertiesOutput}
282
+ sed -i -e " s:%ADMIN_PORT%:${adminPort} :g" ${domainPropertiesOutput}
283
+ sed -i -e " s:%ADMIN_SERVER_NAME%:${adminServerName} :g" ${domainPropertiesOutput}
284
+ sed -i -e " s:%MANAGED_SERVER_PORT%:${managedServerPort} :g" ${domainPropertiesOutput}
285
+ sed -i -e " s:%MANAGED_SERVER_NAME_BASE%:${managedServerNameBase} :g" ${domainPropertiesOutput}
286
+ sed -i -e " s:%CONFIGURED_MANAGED_SERVER_COUNT%:${configuredManagedServerCount} :g" ${domainPropertiesOutput}
287
+ sed -i -e " s:%CLUSTER_NAME%:${clusterName} :g" ${domainPropertiesOutput}
288
+ sed -i -e " s:%PRODUCTION_MODE_ENABLED%:${productionModeEnabled} :g" ${domainPropertiesOutput}
289
+ sed -i -e " s:%CLUSTER_TYPE%:${clusterType} :g" ${domainPropertiesOutput}
290
+ sed -i -e " s:%JAVA_OPTIONS%:${javaOptions} :g" ${domainPropertiesOutput}
291
+ sed -i -e " s:%T3_CHANNEL_PORT%:${t3ChannelPort} :g" ${domainPropertiesOutput}
292
+ sed -i -e " s:%T3_PUBLIC_ADDRESS%:${t3PublicAddress} :g" ${domainPropertiesOutput}
293
+
294
+ else
295
+
296
+ createJobOutput=" ${domainOutputDir} /create-domain-job.yaml"
297
+ deleteJobOutput=" ${domainOutputDir} /delete-domain-job.yaml"
298
+
299
+ if [ -z " ${domainHome} " ]; then
300
+ domainHome=" ${domainPVMountPath} /domains/${domainUID} "
301
+ fi
302
+
303
+ # Use the default value if not defined.
304
+ if [ -z " ${createDomainScriptsMountPath} " ]; then
305
+ createDomainScriptsMountPath=" /u01/weblogic"
306
+ fi
307
+
308
+ if [ -z " ${createDomainScriptName} " ]; then
309
+ createDomainScriptName=" create-domain-job.sh"
310
+ fi
311
+
312
+ # Must escape the ':' value in image for sed to properly parse and replace
313
+ image=$( echo ${image} | sed -e " s/\:/\\ \:/g" )
314
+
315
+ # Generate the yaml to create the kubernetes job that will create the weblogic domain
316
+ echo Generating ${createJobOutput}
317
+
318
+ cp ${createJobInput} ${createJobOutput}
319
+ sed -i -e " s:%NAMESPACE%:$namespace :g" ${createJobOutput}
320
+ sed -i -e " s:%WEBLOGIC_CREDENTIALS_SECRET_NAME%:${weblogicCredentialsSecretName} :g" ${createJobOutput}
321
+ sed -i -e " s:%WEBLOGIC_IMAGE%:${image} :g" ${createJobOutput}
322
+ sed -i -e " s:%WEBLOGIC_IMAGE_PULL_POLICY%:${imagePullPolicy} :g" ${createJobOutput}
323
+ sed -i -e " s:%WEBLOGIC_IMAGE_PULL_SECRET_NAME%:${imagePullSecretName} :g" ${createJobOutput}
324
+ sed -i -e " s:%WEBLOGIC_IMAGE_PULL_SECRET_PREFIX%:${imagePullSecretPrefix} :g" ${createJobOutput}
325
+ sed -i -e " s:%DOMAIN_UID%:${domainUID} :g" ${createJobOutput}
326
+ sed -i -e " s:%DOMAIN_NAME%:${domainName} :g" ${createJobOutput}
327
+ sed -i -e " s:%DOMAIN_HOME%:${domainHome} :g" ${createJobOutput}
328
+ sed -i -e " s:%PRODUCTION_MODE_ENABLED%:${productionModeEnabled} :g" ${createJobOutput}
329
+ sed -i -e " s:%ADMIN_SERVER_NAME%:${adminServerName} :g" ${createJobOutput}
330
+ sed -i -e " s:%ADMIN_SERVER_NAME_SVC%:${adminServerNameSVC} :g" ${createJobOutput}
331
+ sed -i -e " s:%ADMIN_PORT%:${adminPort} :g" ${createJobOutput}
332
+ sed -i -e " s:%CONFIGURED_MANAGED_SERVER_COUNT%:${configuredManagedServerCount} :g" ${createJobOutput}
333
+ sed -i -e " s:%MANAGED_SERVER_NAME_BASE%:${managedServerNameBase} :g" ${createJobOutput}
334
+ sed -i -e " s:%MANAGED_SERVER_NAME_BASE_SVC%:${managedServerNameBaseSVC} :g" ${createJobOutput}
335
+ sed -i -e " s:%MANAGED_SERVER_PORT%:${managedServerPort} :g" ${createJobOutput}
336
+ sed -i -e " s:%T3_CHANNEL_PORT%:${t3ChannelPort} :g" ${createJobOutput}
337
+ sed -i -e " s:%T3_PUBLIC_ADDRESS%:${t3PublicAddress} :g" ${createJobOutput}
338
+ sed -i -e " s:%CLUSTER_NAME%:${clusterName} :g" ${createJobOutput}
339
+ sed -i -e " s:%CLUSTER_TYPE%:${clusterType} :g" ${createJobOutput}
340
+ sed -i -e " s:%DOMAIN_PVC_NAME%:${persistentVolumeClaimName} :g" ${createJobOutput}
341
+ sed -i -e " s:%DOMAIN_ROOT_DIR%:${domainPVMountPath} :g" ${createJobOutput}
342
+ sed -i -e " s:%CREATE_DOMAIN_SCRIPT_DIR%:${createDomainScriptsMountPath} :g" ${createJobOutput}
343
+ sed -i -e " s:%CREATE_DOMAIN_SCRIPT%:${createDomainScriptName} :g" ${createJobOutput}
344
+
345
+ # Generate the yaml to create the kubernetes job that will delete the weblogic domain_home folder
346
+ echo Generating ${deleteJobOutput}
347
+
348
+ cp ${deleteJobInput} ${deleteJobOutput}
349
+ sed -i -e " s:%NAMESPACE%:$namespace :g" ${deleteJobOutput}
350
+ sed -i -e " s:%WEBLOGIC_IMAGE%:${image} :g" ${deleteJobOutput}
351
+ sed -i -e " s:%WEBLOGIC_IMAGE_PULL_POLICY%:${imagePullPolicy} :g" ${deleteJobOutput}
352
+ sed -i -e " s:%WEBLOGIC_CREDENTIALS_SECRET_NAME%:${weblogicCredentialsSecretName} :g" ${deleteJobOutput}
353
+ sed -i -e " s:%WEBLOGIC_IMAGE_PULL_SECRET_NAME%:${imagePullSecretName} :g" ${deleteJobOutput}
354
+ sed -i -e " s:%WEBLOGIC_IMAGE_PULL_SECRET_PREFIX%:${imagePullSecretPrefix} :g" ${deleteJobOutput}
355
+ sed -i -e " s:%DOMAIN_UID%:${domainUID} :g" ${deleteJobOutput}
356
+ sed -i -e " s:%DOMAIN_NAME%:${domainName} :g" ${deleteJobOutput}
357
+ sed -i -e " s:%DOMAIN_HOME%:${domainHome} :g" ${deleteJobOutput}
358
+ sed -i -e " s:%DOMAIN_PVC_NAME%:${persistentVolumeClaimName} :g" ${deleteJobOutput}
359
+ sed -i -e " s:%DOMAIN_ROOT_DIR%:${domainPVMountPath} :g" ${deleteJobOutput}
360
+ fi
361
+
362
+ if [ " ${domainHomeInImage} " == " true" ]; then
363
+ if [ " ${logHomeOnPV} " == " true" ]; then
364
+ logHomeOnPVPrefix=" ${enabledPrefix} "
365
+ else
366
+ logHomeOnPVPrefix=" ${disabledPrefix} "
367
+ fi
368
+ else
369
+ logHomeOnPVPrefix=" ${enabledPrefix} "
370
+ logHomeOnPV=true
371
+ fi
372
+
373
+ # Generate the yaml file for creating the domain resource
374
+ echo Generating ${dcrOutput}
375
+
376
+ cp ${dcrInput} ${dcrOutput}
377
+ sed -i -e " s:%DOMAIN_UID%:${domainUID} :g" ${dcrOutput}
378
+ sed -i -e " s:%NAMESPACE%:$namespace :g" ${dcrOutput}
379
+ sed -i -e " s:%DOMAIN_HOME%:${domainHome} :g" ${dcrOutput}
380
+ sed -i -e " s:%DOMAIN_HOME_IN_IMAGE%:${domainHomeInImage} :g" ${dcrOutput}
381
+ sed -i -e " s:%WEBLOGIC_IMAGE_PULL_POLICY%:${imagePullPolicy} :g" ${dcrOutput}
382
+ sed -i -e " s:%WEBLOGIC_IMAGE_PULL_SECRET_PREFIX%:${imagePullSecretPrefix} :g" ${dcrOutput}
383
+ sed -i -e " s:%WEBLOGIC_IMAGE_PULL_SECRET_NAME%:${imagePullSecretName} :g" ${dcrOutput}
384
+ sed -i -e " s:%WEBLOGIC_CREDENTIALS_SECRET_NAME%:${weblogicCredentialsSecretName} :g" ${dcrOutput}
385
+ sed -i -e " s:%INCLUDE_SERVER_OUT_IN_POD_LOG%:${includeServerOutInPodLog} :g" ${dcrOutput}
386
+ sed -i -e " s:%LOG_HOME_ON_PV_PREFIX%:${logHomeOnPVPrefix} :g" ${dcrOutput}
387
+ sed -i -e " s:%LOG_HOME_ENABLED%:${logHomeOnPV} :g" ${dcrOutput}
388
+ sed -i -e " s:%LOG_HOME%:${logHome} :g" ${dcrOutput}
389
+ sed -i -e " s:%SERVER_START_POLICY%:${serverStartPolicy} :g" ${dcrOutput}
390
+ sed -i -e " s:%JAVA_OPTIONS%:${javaOptions} :g" ${dcrOutput}
391
+ sed -i -e " s:%DOMAIN_PVC_NAME%:${persistentVolumeClaimName} :g" ${dcrOutput}
392
+ sed -i -e " s:%DOMAIN_ROOT_DIR%:${domainPVMountPath} :g" ${dcrOutput}
393
+ sed -i -e " s:%EXPOSE_ADMIN_PORT_PREFIX%:${exposeAdminNodePortPrefix} :g" ${dcrOutput}
394
+ sed -i -e " s:%ADMIN_NODE_PORT%:${adminNodePort} :g" ${dcrOutput}
395
+ sed -i -e " s:%EXPOSE_T3_CHANNEL_PREFIX%:${exposeAdminT3ChannelPrefix} :g" ${dcrOutput}
396
+ sed -i -e " s:%CLUSTER_NAME%:${clusterName} :g" ${dcrOutput}
397
+ sed -i -e " s:%INITIAL_MANAGED_SERVER_REPLICAS%:${initialManagedServerReplicas} :g" ${dcrOutput}
398
+
399
+ if [ " ${domainHomeInImage} " == " true" ]; then
400
+ if [ -z $domainHomeImageBuildPath ]; then
401
+ domainHomeImageBuildPath=" ./docker-images/OracleWebLogic/samples/12213-domain-home-in-image-wdt"
402
+ fi
403
+ imageName=" ` basename ${domainHomeImageBuildPath} | sed ' s/^[0-9]*-//' ` "
404
+
405
+ # now we know which image to use, update the domain yaml file
406
+ if [ -z $image ]; then
407
+ sed -i -e " s|%WEBLOGIC_IMAGE%|${imageName} |g" ${dcrOutput}
408
+ else
409
+ sed -i -e " s:%WEBLOGIC_IMAGE%:${image} :g" ${dcrOutput}
410
+ fi
411
+ else
412
+ sed -i -e " s:%WEBLOGIC_IMAGE%:${image} :g" ${dcrOutput}
413
+ fi
414
+
415
+ # Remove any "...yaml-e" files left over from running sed
416
+ rm -f ${domainOutputDir} /* .yaml-e
417
+ }
418
+
215
419
#
216
420
# Function to create the domain recource
217
421
#
@@ -231,8 +435,19 @@ function createDomainResource {
231
435
232
436
#
233
437
# Function to create a domain
438
+ # $1 - boolean value indicating the location of the domain home
439
+ # true means domain home in image
440
+ # false means domain home on PV
234
441
#
235
442
function createDomain {
443
+ if [ " $# " != 1 ]; then
444
+ fail " The function must be called with domainHomeInImage parameter."
445
+ fi
446
+
447
+ domainHomeInImage=" ${1} "
448
+ if [ " true" != " ${domainHomeInImage} " ] && [ " false" != " ${domainHomeInImage} " ]; then
449
+ fail " The value of domainHomeInImage must be true or false: ${domainHomeInImage} "
450
+ fi
236
451
237
452
# Setup the environment for running this script and perform initial validation checks
238
453
initialize
0 commit comments