Skip to content

Commit 2d5dec6

Browse files
authored
Merge pull request #1201 from oracle/OWLS-76180
OWLS-76180: add new domain input fmwDomainType
2 parents 6db1cbc + 890df86 commit 2d5dec6

File tree

8 files changed

+398
-7
lines changed

8 files changed

+398
-7
lines changed

kubernetes/samples/scripts/common/validate.sh

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,27 @@ function validateWeblogicImagePullPolicy {
176176
failIfValidationErrors
177177
}
178178

179+
#
180+
# Function to validate the fmwDomainType
181+
#
182+
function validateFmwDomainType {
183+
if [ ! -z ${fmwDomainType} ]; then
184+
case ${fmwDomainType} in
185+
"JRF")
186+
;;
187+
"RestrictedJRF")
188+
;;
189+
*)
190+
validationError "Invalid value for fmwDomainType: ${fmwDomainType}. Valid values are JRF or restrictedJRF."
191+
;;
192+
esac
193+
else
194+
# Set the default
195+
fmwDomainType="JRF"
196+
fi
197+
failIfValidationErrors
198+
}
199+
179200
#
180201
# Function to validate the weblogic image pull secret name
181202
#
@@ -371,6 +392,7 @@ function validateCommonInputs {
371392
validateServerStartPolicy
372393
validateWeblogicImagePullPolicy
373394
validateWeblogicImagePullSecretName
395+
validateFmwDomainType
374396

375397
failIfValidationErrors
376398
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,291 @@
1+
# Copyright 2014, 2019, Oracle Corporation and/or its affiliates. All rights reserved.
2+
# Licensed under the Universal Permissive License v 1.0 as shown at http://oss.oracle.com/licenses/upl.
3+
4+
import os
5+
import sys
6+
7+
import com.oracle.cie.domain.script.jython.WLSTException as WLSTException
8+
9+
class Infra12213Provisioner:
10+
11+
MACHINES = {
12+
'machine1' : {
13+
'NMType': 'SSL',
14+
'ListenAddress': 'localhost',
15+
'ListenPort': 5658
16+
}
17+
}
18+
19+
JRF_12213_TEMPLATES = {
20+
'baseTemplate' : '@@ORACLE_HOME@@/wlserver/common/templates/wls/wls.jar',
21+
'extensionTemplates' : [
22+
'@@ORACLE_HOME@@/oracle_common/common/templates/wls/oracle.jrf_restricted_template.jar',
23+
'@@ORACLE_HOME@@/em/common/templates/wls/oracle.em_wls_restricted_template.jar'
24+
],
25+
'serverGroupsToTarget' : [ 'JRF-MAN-SVR', 'WSMPM-MAN-SVR' ]
26+
}
27+
28+
def __init__(self, oracleHome, javaHome, domainParentDir, adminListenPort, adminName, managedNameBase, managedServerPort, prodMode, managedCount, clusterName):
29+
self.oracleHome = self.validateDirectory(oracleHome)
30+
self.javaHome = self.validateDirectory(javaHome)
31+
self.domainParentDir = self.validateDirectory(domainParentDir, create=True)
32+
return
33+
34+
def createInfraDomain(self, domainName, user, password, adminListenPort, adminName,
35+
managedNameBase, managedServerPort, prodMode, managedCount, clusterName,
36+
exposeAdminT3Channel=None, t3ChannelPublicAddress=None, t3ChannelPort=None):
37+
domainHome = self.createBaseDomain(domainName, user, password, adminListenPort, adminName, managedNameBase,
38+
managedServerPort, prodMode, managedCount, clusterName
39+
)
40+
self.extendDomain(domainHome, exposeAdminT3Channel, t3ChannelPublicAddress, t3ChannelPort)
41+
42+
def createBaseDomain(self, domainName, user, password, adminListenPort, adminName, managedNameBase, managedServerPort, prodMode, managedCount, clusterName):
43+
baseTemplate = self.replaceTokens(self.JRF_12213_TEMPLATES['baseTemplate'])
44+
45+
readTemplate(baseTemplate)
46+
setOption('DomainName', domainName)
47+
setOption('JavaHome', self.javaHome)
48+
if (prodMode == 'true'):
49+
setOption('ServerStartMode', 'prod')
50+
else:
51+
setOption('ServerStartMode', 'dev')
52+
set('Name', domainName)
53+
54+
admin_port = int(adminListenPort)
55+
ms_port = int(managedServerPort)
56+
ms_count = int(managedCount)
57+
58+
# Create Admin Server
59+
# =======================
60+
print 'Creating Admin Server...'
61+
cd('/Servers/AdminServer')
62+
#set('ListenAddress', '%s-%s' % (domain_uid, admin_server_name_svc))
63+
set('ListenPort', admin_port)
64+
set('Name', adminName)
65+
66+
# Define the user password for weblogic
67+
# =====================================
68+
cd('/Security/' + domainName + '/User/weblogic')
69+
set('Name', user)
70+
set('Password', password)
71+
72+
# Create a cluster
73+
# ======================
74+
print 'Creating cluster...'
75+
cd('/')
76+
cl=create(clusterName, 'Cluster')
77+
78+
# Create managed servers
79+
for index in range(0, ms_count):
80+
cd('/')
81+
msIndex = index+1
82+
cd('/')
83+
name = '%s%s' % (managedNameBase, msIndex)
84+
create(name, 'Server')
85+
cd('/Servers/%s/' % name )
86+
print('managed server name is %s' % name);
87+
set('ListenPort', ms_port)
88+
set('NumOfRetriesBeforeMSIMode', 0)
89+
set('RetryIntervalBeforeMSIMode', 1)
90+
set('Cluster', clusterName)
91+
92+
# Create Node Manager
93+
# =======================
94+
print 'Creating Node Managers...'
95+
for machine in self.MACHINES:
96+
cd('/')
97+
create(machine, 'Machine')
98+
cd('Machine/' + machine)
99+
create(machine, 'NodeManager')
100+
cd('NodeManager/' + machine)
101+
for param in self.MACHINES[machine]:
102+
set(param, self.MACHINES[machine][param])
103+
104+
105+
setOption('OverwriteDomain', 'true')
106+
domainHome = self.domainParentDir + '/' + domainName
107+
print 'Will create Base domain at ' + domainHome
108+
109+
print 'Writing base domain...'
110+
writeDomain(domainHome)
111+
closeTemplate()
112+
print 'Base domain created at ' + domainHome
113+
return domainHome
114+
115+
116+
def extendDomain(self, domainHome, exposeAdminT3Channel, t3ChannelPublicAddress,
117+
t3ChannelPort):
118+
print 'Extending domain at ' + domainHome
119+
readDomain(domainHome)
120+
setOption('AppDir', self.domainParentDir + '/applications')
121+
122+
print 'ExposeAdminT3Channel %s with %s:%s ' % (exposeAdminT3Channel, t3ChannelPublicAddress, t3ChannelPort)
123+
if 'true' == exposeAdminT3Channel:
124+
self.enable_admin_channel(t3ChannelPublicAddress, t3ChannelPort)
125+
126+
print 'Applying JRF templates...'
127+
for extensionTemplate in self.JRF_12213_TEMPLATES['extensionTemplates']:
128+
addTemplate(self.replaceTokens(extensionTemplate))
129+
130+
print 'Extension Templates added'
131+
132+
print 'Preparing to update domain...'
133+
updateDomain()
134+
print 'Domain updated successfully'
135+
closeDomain()
136+
return
137+
138+
139+
###########################################################################
140+
# Helper Methods #
141+
###########################################################################
142+
143+
def validateDirectory(self, dirName, create=False):
144+
directory = os.path.realpath(dirName)
145+
if not os.path.exists(directory):
146+
if create:
147+
os.makedirs(directory)
148+
else:
149+
message = 'Directory ' + directory + ' does not exist'
150+
raise WLSTException(message)
151+
elif not os.path.isdir(directory):
152+
message = 'Directory ' + directory + ' is not a directory'
153+
raise WLSTException(message)
154+
return self.fixupPath(directory)
155+
156+
157+
def fixupPath(self, path):
158+
result = path
159+
if path is not None:
160+
result = path.replace('\\', '/')
161+
return result
162+
163+
164+
def replaceTokens(self, path):
165+
result = path
166+
if path is not None:
167+
result = path.replace('@@ORACLE_HOME@@', oracleHome)
168+
return result
169+
170+
def enable_admin_channel(self, admin_channel_address, admin_channel_port):
171+
if admin_channel_address == None or admin_channel_port == 'None':
172+
return
173+
cd('/')
174+
admin_server_name = get('AdminServerName')
175+
print('setting admin server t3channel for ' + admin_server_name)
176+
cd('/Servers/' + admin_server_name)
177+
create('T3Channel', 'NetworkAccessPoint')
178+
cd('/Servers/' + admin_server_name + '/NetworkAccessPoint/T3Channel')
179+
set('ListenPort', int(admin_channel_port))
180+
set('PublicPort', int(admin_channel_port))
181+
set('PublicAddress', admin_channel_address)
182+
183+
#############################
184+
# Entry point to the script #
185+
#############################
186+
187+
def usage():
188+
print sys.argv[0] + ' -oh <oracle_home> -jh <java_home> -parent <domain_parent_dir> -name <domain-name> ' + \
189+
'-user <domain-user> -password <domain-password> ' + \
190+
'-rcuDb <rcu-database> -rcuPrefix <rcu-prefix> -rcuSchemaPwd <rcu-schema-password> ' \
191+
'-adminListenPort <adminListenPort> -adminName <adminName> ' \
192+
'-managedNameBase <managedNameBase> -managedServerPort <managedServerPort> -prodMode <prodMode> ' \
193+
'-managedServerCount <managedCount> -clusterName <clusterName> ' \
194+
'-exposeAdminT3Channel <quoted true or false> -t3ChannelPublicAddress <address of the cluster> ' \
195+
'-t3ChannelPort <t3 channel port> '
196+
sys.exit(0)
197+
198+
# Uncomment for Debug only
199+
#print str(sys.argv[0]) + " called with the following sys.argv array:"
200+
#for index, arg in enumerate(sys.argv):
201+
# print "sys.argv[" + str(index) + "] = " + str(sys.argv[index])
202+
203+
if len(sys.argv) < 16:
204+
usage()
205+
206+
#oracleHome will be passed by command line parameter -oh.
207+
oracleHome = None
208+
#javaHome will be passed by command line parameter -jh.
209+
javaHome = None
210+
#domainParentDir will be passed by command line parameter -parent.
211+
domainParentDir = None
212+
#domainUser is hard-coded to weblogic. You can change to other name of your choice. Command line paramter -user.
213+
domainUser = 'weblogic'
214+
#domainPassword will be passed by Command line parameter -password.
215+
domainPassword = None
216+
#rcuDb will be passed by command line parameter -rcuDb.
217+
rcuDb = None
218+
#change rcuSchemaPrefix to your infra schema prefix. Command line parameter -rcuPrefix.
219+
rcuSchemaPrefix = 'DEV12'
220+
#change rcuSchemaPassword to your infra schema password. Command line parameter -rcuSchemaPwd.
221+
rcuSchemaPassword = None
222+
exposeAdminT3Channel = None
223+
t3ChannelPort = None
224+
t3ChannelPublicAddress = None
225+
i = 1
226+
while i < len(sys.argv):
227+
if sys.argv[i] == '-oh':
228+
oracleHome = sys.argv[i + 1]
229+
i += 2
230+
elif sys.argv[i] == '-jh':
231+
javaHome = sys.argv[i + 1]
232+
i += 2
233+
elif sys.argv[i] == '-parent':
234+
domainParentDir = sys.argv[i + 1]
235+
i += 2
236+
elif sys.argv[i] == '-name':
237+
domainName = sys.argv[i + 1]
238+
i += 2
239+
elif sys.argv[i] == '-user':
240+
domainUser = sys.argv[i + 1]
241+
i += 2
242+
elif sys.argv[i] == '-password':
243+
domainPassword = sys.argv[i + 1]
244+
i += 2
245+
elif sys.argv[i] == '-rcuDb':
246+
rcuDb = sys.argv[i + 1]
247+
i += 2
248+
elif sys.argv[i] == '-rcuPrefix':
249+
rcuSchemaPrefix = sys.argv[i + 1]
250+
i += 2
251+
elif sys.argv[i] == '-rcuSchemaPwd':
252+
rcuSchemaPassword = sys.argv[i + 1]
253+
i += 2
254+
elif sys.argv[i] == '-adminListenPort':
255+
adminListenPort = sys.argv[i + 1]
256+
i += 2
257+
elif sys.argv[i] == '-adminName':
258+
adminName = sys.argv[i + 1]
259+
i += 2
260+
elif sys.argv[i] == '-managedNameBase':
261+
managedNameBase = sys.argv[i + 1]
262+
i += 2
263+
elif sys.argv[i] == '-managedServerPort':
264+
managedServerPort = sys.argv[i + 1]
265+
i += 2
266+
elif sys.argv[i] == '-prodMode':
267+
prodMode = sys.argv[i + 1]
268+
i += 2
269+
elif sys.argv[i] == '-managedServerCount':
270+
managedCount = sys.argv[i + 1]
271+
i += 2
272+
elif sys.argv[i] == '-clusterName':
273+
clusterName = sys.argv[i + 1]
274+
i += 2
275+
elif sys.argv[i] == '-t3ChannelPublicAddress':
276+
t3ChannelPublicAddress = sys.argv[i + 1]
277+
i += 2
278+
elif sys.argv[i] == '-t3ChannelPort':
279+
t3ChannelPort = sys.argv[i + 1]
280+
i += 2
281+
elif sys.argv[i] == '-exposeAdminT3Channel':
282+
exposeAdminT3Channel = sys.argv[i + 1]
283+
i += 2
284+
else:
285+
print 'Unexpected argument switch at position ' + str(i) + ': ' + str(sys.argv[i])
286+
usage()
287+
sys.exit(1)
288+
289+
provisioner = Infra12213Provisioner(oracleHome, javaHome, domainParentDir, adminListenPort, adminName, managedNameBase, managedServerPort, prodMode, managedCount, clusterName)
290+
provisioner.createInfraDomain(domainName, domainUser, domainPassword, adminListenPort, adminName, managedNameBase, managedServerPort, prodMode, managedCount,
291+
clusterName, exposeAdminT3Channel, t3ChannelPublicAddress, t3ChannelPort)

kubernetes/samples/scripts/create-fmw-infrastructure-domain/domain-home-on-pv/create-domain-inputs.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,3 +149,6 @@ rcuDatabaseURL: database:1521/service
149149

150150
# The kubernetes secret containing the database credentials
151151
rcuCredentialsSecret: domain1-rcu-credentials
152+
153+
# FMW Infrastructure Domain Type. Legal values are JRF or RestrictedJRF
154+
fmwDomainType: JRF

kubernetes/samples/scripts/create-fmw-infrastructure-domain/domain-home-on-pv/create-domain.sh

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,19 @@ function initialize {
133133
t3PublicAddress="${K8S_IP}"
134134
fi
135135

136+
if [ "${fmwDomainType}" == "JRF" -a "${createDomainFilesDir}" == "wlst" ];
137+
then
138+
rm -rf ${scriptDir}/common/createFMWDomain.py
139+
cp -f ${scriptDir}/common/createFMWJRFDomain.py \
140+
${scriptDir}/common/createFMWDomain.py
141+
fi
142+
if [ "${fmwDomainType}" == "RestrictedJRF" -a "${createDomainFilesDir}" == "wlst" ];
143+
then
144+
rm -rf ${scriptDir}/common/createFMWDomain.py
145+
cp -f ${scriptDir}/common/createFMWRestrictedJRFDomain.py \
146+
${scriptDir}/common/createFMWDomain.py
147+
fi
148+
136149
}
137150

138151
# create domain configmap using what is in the createDomainFilesDir
@@ -159,7 +172,7 @@ function createDomainConfigmap {
159172
echo domainName: $domainName >> ${externalFilesTmpDir}/create-domain-inputs.yaml
160173

161174
if [ -f ${externalFilesTmpDir}/prepare.sh ]; then
162-
sh ${externalFilesTmpDir}/prepare.sh -i ${externalFilesTmpDir}
175+
sh ${externalFilesTmpDir}/prepare.sh -i ${externalFilesTmpDir} -t ${fmwDomainType}
163176
fi
164177

165178
# create the configmap and label it properly
@@ -265,4 +278,3 @@ function printSummary {
265278

266279
# Perform the sequence of steps to create a domain
267280
createDomain false
268-

kubernetes/samples/scripts/create-fmw-infrastructure-domain/domain-home-on-pv/wdt/create-domain-script.sh

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,8 @@ function run_wdt {
157157
local domain_home_dir=$domain_dir/$domain_uid
158158
fi
159159

160+
local domain_type=`egrep 'fmwDomainType:' $inputs_orig | grep -v '#' | awk '{print $2}'`
161+
echo domain_type = $domain_type
160162
echo domain_home_dir = $domain_home_dir
161163

162164
# Output files and directories.
@@ -193,7 +195,7 @@ function run_wdt {
193195
# domain_type can be WLS, JRF or RestrictedJRF
194196
$wdt_createDomain_script \
195197
-oracle_home $oracle_home \
196-
-domain_type JRF \
198+
-domain_type ${domain_type} \
197199
-domain_home $domain_home_dir \
198200
-model_file $model_final \
199201
-variable_file $inputs_final > $out_file 2>&1

0 commit comments

Comments
 (0)