diff --git a/OracleSOASuite/dockerfiles/12.2.1.2-soabpm/Dockerfile b/OracleSOASuite/dockerfiles/12.2.1.2/Dockerfile similarity index 98% rename from OracleSOASuite/dockerfiles/12.2.1.2-soabpm/Dockerfile rename to OracleSOASuite/dockerfiles/12.2.1.2/Dockerfile index c6280b4d94..dba0842691 100644 --- a/OracleSOASuite/dockerfiles/12.2.1.2-soabpm/Dockerfile +++ b/OracleSOASuite/dockerfiles/12.2.1.2/Dockerfile @@ -1,5 +1,3 @@ -# LICENSE CDDL 1.0 + GPL 2.0 -# # # Copyright (c) 2016-2017 Oracle and/or its affiliates. All rights reserved. # diff --git a/OracleSOASuite/dockerfiles/12.2.1.2-soabpm/container-scripts/createDomain.py b/OracleSOASuite/dockerfiles/12.2.1.2/container-scripts/createDomain.py similarity index 83% rename from OracleSOASuite/dockerfiles/12.2.1.2-soabpm/container-scripts/createDomain.py rename to OracleSOASuite/dockerfiles/12.2.1.2/container-scripts/createDomain.py index 97a38e2764..afc3deeb0b 100755 --- a/OracleSOASuite/dockerfiles/12.2.1.2-soabpm/container-scripts/createDomain.py +++ b/OracleSOASuite/dockerfiles/12.2.1.2/container-scripts/createDomain.py @@ -1,482 +1,483 @@ -# -# -# Copyright (c) 2016-2017 Oracle and/or its affiliates. All rights reserved. -# -# Licensed under the Universal Permissive License v 1.0 as shown at http://oss.oracle.com/licenses/upl. -# - -import os -import sys - -import com.oracle.cie.domain.script.jython.WLSTException as WLSTException - -class SOA12212Provisioner: - - MACHINES = { - 'machine1' : { - 'NMType': 'SSL', - 'ListenAddress': 'localhost', - 'ListenPort': 5658 - } - } - - SOA_CLUSTERS = { - 'soa_cluster' : {} - } - - OSB_CLUSTERS = { - 'osb_cluster' : {} - } - - SERVERS = { - 'AdminServer' : { - 'ListenAddress': '', - 'ListenPort': 7001, - 'Machine': 'machine1' - } - - } - - SOA_SERVERS = { - 'soa_server1' : { - 'ListenAddress': '', - 'ListenPort': 8001, - 'Machine': 'machine1', - 'Cluster': 'soa_cluster' - } - } - - OSB_SERVERS = { - 'osb_server1' : { - 'ListenAddress': '', - 'ListenPort': 9001, - 'Machine': 'machine1', - 'Cluster': 'osb_cluster' - } - } - - - JRF_12212_TEMPLATES = { - 'baseTemplate' : '@@ORACLE_HOME@@/wlserver/common/templates/wls/wls.jar', - 'extensionTemplates' : [ - '@@ORACLE_HOME@@/oracle_common/common/templates/wls/oracle.jrf_template.jar', - '@@ORACLE_HOME@@/oracle_common/common/templates/wls/oracle.jrf.ws.async_template.jar', - '@@ORACLE_HOME@@/oracle_common/common/templates/wls/oracle.wsmpm_template.jar', - '@@ORACLE_HOME@@/oracle_common/common/templates/wls/oracle.ums_template.jar', - '@@ORACLE_HOME@@/em/common/templates/wls/oracle.em_wls_template.jar' - ], - 'serverGroupsToTarget' : [ 'JRF-MAN-SVR', 'WSMPM-MAN-SVR' ] - } - - SOA_12212_TEMPLATES = { - 'extensionTemplates' : [ - '@@ORACLE_HOME@@/soa/common/templates/wls/oracle.soa_template.jar' - ], - 'serverGroupsToTarget' : [ 'SOA-MGD-SVRS-ONLY' ] - } - - OSB_12212_TEMPLATES = { - 'extensionTemplates' : [ - '@@ORACLE_HOME@@/osb/common/templates/wls/oracle.osb_template.jar' - ], - 'serverGroupsToTarget' : [ 'OSB-MGD-SVRS-ONLY' ] - } - - BPM_12212_TEMPLATES = { - 'extensionTemplates' : [ - '@@ORACLE_HOME@@/soa/common/templates/wls/oracle.bpm_template.jar' - ], - 'serverGroupsToTarget' : [ 'SOA-MGD-SVRS-ONLY' ] - } - - def __init__(self, oracleHome, javaHome, domainParentDir): - self.oracleHome = self.validateDirectory(oracleHome) - self.javaHome = self.validateDirectory(javaHome) - self.domainParentDir = self.validateDirectory(domainParentDir, create=True) - return - - def configureXADataSources(self): - cd('/JDBCSystemResources/SOADataSource/JdbcResource/SOADataSource') - cd('JDBCDriverParams/NO_NAME_0') - set('DriverName', 'oracle.jdbc.xa.client.OracleXADataSource') - cd('/JDBCSystemResources/EDNDataSource/JdbcResource/EDNDataSource') - cd('JDBCDriverParams/NO_NAME_0') - set('DriverName', 'oracle.jdbc.xa.client.OracleXADataSource') - cd('/JDBCSystemResources/OraSDPMDataSource/JdbcResource/OraSDPMDataSource') - cd('JDBCDriverParams/NO_NAME_0') - set('DriverName', 'oracle.jdbc.xa.client.OracleXADataSource') - return - - def createDomain(self, name, user, password, db, dbPrefix, dbPassword,domainType): - domainHome = self.createBaseDomain(name, user, password,domainType) - - if domainType == "soa" or domainType == "soaosb": - self.extendSoaDomain(domainHome, db, dbPrefix, dbPassword) - - if domainType == "osb" or domainType == "soaosb" : - self.extendOsbDomain(domainHome, db, dbPrefix, dbPassword,domainType) - - if domainType == "bpm": - self.extendBpmDomain(domainHome, db, dbPrefix, dbPassword) - - - def createBaseDomain(self, name, user, password,domainType): - baseTemplate = self.replaceTokens(self.JRF_12212_TEMPLATES['baseTemplate']) - - readTemplate(baseTemplate) - setOption('DomainName', name) - setOption('JavaHome', self.javaHome) - setOption('ServerStartMode', 'prod') - set('Name', domainName) - cd('/Security/' + domainName + '/User/weblogic') - set('Name', user) - set('Password', password) - - - print 'INFO: Creating Node Managers...' - for machine in self.MACHINES: - cd('/') - create(machine, 'Machine') - cd('Machine/' + machine) - create(machine, 'NodeManager') - cd('NodeManager/' + machine) - for param in self.MACHINES[machine]: - set(param, self.MACHINES[machine][param]) - - print 'INFO: Creating Admin server...' - - for server in self.SERVERS: - cd('/') - if server == 'AdminServer': - cd('Server/' + server) - for param in self.SERVERS[server]: - set(param, self.SERVERS[server][param]) - continue - create(server, 'Server') - cd('Server/' + server) - for param in self.SERVERS[server]: - set(param, self.SERVERS[server][param]) - - if domainType == "soa" or domainType == "bpm" or domainType == "soaosb": - for cluster in self.SOA_CLUSTERS: - cd('/') - create(cluster, 'Cluster') - cd('Cluster/' + cluster) - for param in self.SOA_CLUSTERS[cluster]: - set(param, self.SOA_CLUSTERS[cluster][param]) - - for server in self.SOA_SERVERS: - cd('/') - create(server, 'Server') - cd('Server/' + server) - for param in self.SOA_SERVERS[server]: - set(param, self.SOA_SERVERS[server][param]) - - print 'INFO: SOA Servers created.....' - - if domainType == 'osb' or domainType == "soaosb": - - print 'INFO: Creating OSB cluster...' - for cluster in self.OSB_CLUSTERS: - cd('/') - create(cluster, 'Cluster') - cd('Cluster/' + cluster) - for param in self.OSB_CLUSTERS[cluster]: - set(param, self.OSB_CLUSTERS[cluster][param]) - - for server in self.OSB_SERVERS: - cd('/') - create(server, 'Server') - cd('Server/' + server) - for param in self.OSB_SERVERS[server]: - set(param, self.OSB_SERVERS[server][param]) - - - print 'INFO: OSB Servers created.....' - setOption('OverwriteDomain', 'true') - domainHome = self.domainParentDir + '/' + name - - print 'INFO: Writing base domain...' - writeDomain(domainHome) - closeTemplate() - print 'INFO: Base domain created at ' + domainHome - return domainHome - - - def readAndApplyJRFTemplates(self, domainHome): - print 'INFO: Extending domain at ' + domainHome - readDomain(domainHome) - setOption('AppDir', self.domainParentDir + '/applications') - - print 'INFO: Applying JRF templates...' - for extensionTemplate in self.JRF_12212_TEMPLATES['extensionTemplates']: - addTemplate(self.replaceTokens(extensionTemplate)) - return - - def applySOATemplates(self): - print 'INFO: Applying SOA templates...' - for extensionTemplate in self.SOA_12212_TEMPLATES['extensionTemplates']: - addTemplate(self.replaceTokens(extensionTemplate)) - return - - def configureJDBCTemplates(self,db,dbPrefix,dbPassword): - print 'INFO: Configuring the Service Table DataSource...' - fmwDb = 'jdbc:oracle:thin:@' + db - cd('/JDBCSystemResource/LocalSvcTblDataSource/JdbcResource/LocalSvcTblDataSource') - cd('JDBCDriverParams/NO_NAME_0') - set('DriverName', 'oracle.jdbc.OracleDriver') - set('URL', fmwDb) - set('PasswordEncrypted', dbPassword) - - stbUser = dbPrefix + '_STB' - cd('Properties/NO_NAME_0/Property/user') - set('Value', stbUser) - - print 'INFO: Getting Database Defaults...' - getDatabaseDefaults() - return - - def targetSOAServers(self,serverGroupsToTarget): - for server in self.SOA_SERVERS: - if not server == 'AdminServer': - setServerGroups(server, serverGroupsToTarget) - print "INFO: Set CoherenceClusterSystemResource to defaultCoherenceCluster for server:" + server - cd('/Servers/' + server) - set('CoherenceClusterSystemResource', 'defaultCoherenceCluster') - return - - def targetSOACluster(self): - for cluster in self.SOA_CLUSTERS: - print "INFO: Set CoherenceClusterSystemResource to defaultCoherenceCluster for cluster:" + cluster - cd('/Cluster/' + cluster) - set('CoherenceClusterSystemResource', 'defaultCoherenceCluster') - return - - - def targetOSBServers(self,serverGroupsToTarget): - for server in self.OSB_SERVERS: - if not server == 'AdminServer': - setServerGroups(server, serverGroupsToTarget) - print "INFO: Set CoherenceClusterSystemResource to defaultCoherenceCluster for server:" + server - cd('/Servers/' + server) - set('CoherenceClusterSystemResource', 'defaultCoherenceCluster') - return - - def targetOSBCluster(self): - for cluster in self.OSB_CLUSTERS: - print "INFO: Set CoherenceClusterSystemResource to defaultCoherenceCluster for cluster:" + cluster - cd('/Cluster/' + cluster) - set('CoherenceClusterSystemResource', 'defaultCoherenceCluster') - return - - def extendSoaDomain(self, domainHome, db, dbPrefix, dbPassword): - self.readAndApplyJRFTemplates(domainHome) - self.applySOATemplates() - - print 'INFO: Extension Templates added' - - self.configureJDBCTemplates(db,dbPrefix,dbPassword) - self.configureXADataSources() - - print 'INFO: Targeting Server Groups...' - serverGroupsToTarget = list(self.JRF_12212_TEMPLATES['serverGroupsToTarget']) - serverGroupsToTarget.extend(self.SOA_12212_TEMPLATES['serverGroupsToTarget']) - - cd('/') - self.targetSOAServers(serverGroupsToTarget) - - cd('/') - self.targetSOACluster() - - print "INFO: Set WLS clusters as target of defaultCoherenceCluster:[" + ",".join(self.SOA_CLUSTERS) + "]" - - cd('/CoherenceClusterSystemResource/defaultCoherenceCluster') - set('Target', ",".join(self.SOA_CLUSTERS)) - print 'INFO: Preparing to update domain...' - updateDomain() - print 'INFO: Domain updated successfully' - closeDomain() - return - - - def extendOsbDomain(self, domainHome, db, dbPrefix, dbPassword,domainType): - self.readAndApplyJRFTemplates(domainHome) - - print 'INFO: Applying OSB templates...' - for extensionTemplate in self.OSB_12212_TEMPLATES['extensionTemplates']: - addTemplate(self.replaceTokens(extensionTemplate)) - - print 'INFO: Extension Templates added' - - self.configureJDBCTemplates(db,dbPrefix,dbPassword) - cd('/JDBCSystemResources/SOADataSource/JdbcResource/SOADataSource') - cd('JDBCDriverParams/NO_NAME_0') - set('DriverName', 'oracle.jdbc.xa.client.OracleXADataSource') - cd('/JDBCSystemResources/OraSDPMDataSource/JdbcResource/OraSDPMDataSource') - cd('JDBCDriverParams/NO_NAME_0') - set('DriverName', 'oracle.jdbc.xa.client.OracleXADataSource') - - - print 'INFO: Targeting Server Groups...' - serverGroupsToTarget = list(self.JRF_12212_TEMPLATES['serverGroupsToTarget']) - serverGroupsToTarget.extend(self.OSB_12212_TEMPLATES['serverGroupsToTarget']) - - cd('/') - self.targetOSBServers(serverGroupsToTarget) - - cd('/') - self.targetOSBCluster() - - print "INFO: Set WLS clusters as target of defaultCoherenceCluster:[" + ",".join(self.OSB_CLUSTERS) + "]" - cd('/CoherenceClusterSystemResource/defaultCoherenceCluster') - set('Target', ",".join(self.OSB_CLUSTERS)) - - print 'INFO: Preparing to update domain...' - updateDomain() - print 'INFO: Domain updated successfully' - closeDomain() - return - - - def extendBpmDomain(self, domainHome, db, dbPrefix, dbPassword): - self.readAndApplyJRFTemplates(domainHome) - - print 'INFO: Applying BPM templates...' - for extensionTemplate in self.BPM_12212_TEMPLATES['extensionTemplates']: - addTemplate(self.replaceTokens(extensionTemplate)) - - print 'INFO: Extension Templates added' - - self.configureJDBCTemplates(db,dbPrefix,dbPassword) - self.configureXADataSources() - - print 'INFO: Targeting Server Groups...' - serverGroupsToTarget = list(self.JRF_12212_TEMPLATES['serverGroupsToTarget']) - serverGroupsToTarget.extend(self.BPM_12212_TEMPLATES['serverGroupsToTarget']) - - cd('/') - self.targetSOAServers(serverGroupsToTarget) - - cd('/') - self.targetSOACluster() - - print "INFO: Set WLS clusters as target of defaultCoherenceCluster:[" + ",".join(self.SOA_CLUSTERS) + "]" - - cd('/CoherenceClusterSystemResource/defaultCoherenceCluster') - set('Target', ",".join(self.SOA_CLUSTERS)) - print 'INFO: Preparing to update domain...' - updateDomain() - print 'INFO: Domain updated successfully' - closeDomain() - return - - - ########################################################################### - # Helper Methods # - ########################################################################### - - def validateDirectory(self, dirName, create=False): - directory = os.path.realpath(dirName) - if not os.path.exists(directory): - if create: - os.makedirs(directory) - else: - message = 'Directory ' + directory + ' does not exist' - raise WLSTException(message) - elif not os.path.isdir(directory): - message = 'Directory ' + directory + ' is not a directory' - raise WLSTException(message) - return self.fixupPath(directory) - - - def fixupPath(self, path): - result = path - if path is not None: - result = path.replace('\\', '/') - return result - - - def replaceTokens(self, path): - result = path - if path is not None: - result = path.replace('@@ORACLE_HOME@@', oracleHome) - return result - -############################# -# Entry point to the script # -############################# - -def usage(): - print sys.argv[0] + ' -oh -jh -parent [-name ] ' + \ - '[-user ] [-password ] ' + \ - '-rcuDb [-rcuPrefix ] [-rcuSchemaPwd ] ' + \ - '-domainType ' - sys.exit(0) - - -print "createDomain.py called with the following inputs:" -for index, arg in enumerate(sys.argv): - print "INFO: sys.argv[" + str(index) + "] = " + str(sys.argv[index]) - -if len(sys.argv) < 6: - usage() - -#oracleHome will be passed by command line parameter -oh. -oracleHome = None -#javaHome will be passed by command line parameter -jh. -javaHome = None -#domainParentDir will be passed by command line parameter -parent. -domainParentDir = None -#domainName is hard-coded to soa_domain. You can change to other name of your choice. Command line parameter -name. -domainName = 'soa_domain' -#domainUser is hard-coded to weblogic. You can change to other name of your choice. Command line paramter -user. -domainUser = 'weblogic' -#domainPassword is hard-coded to welcome1. You can change to other password of your choice. Command line parameter -password. -domainPassword = 'welcome1' -#rcuDb will be passed by command line parameter -rcuDb. -rcuDb = None -#change rcuSchemaPrefix to your soainfra schema prefix. Command line parameter -rcuPrefix. -rcuSchemaPrefix = 'DEV12' -#change rcuSchemaPassword to your soainfra schema password. Command line parameter -rcuSchemaPwd. -rcuSchemaPassword = 'welcome1' - -i = 1 -while i < len(sys.argv): - if sys.argv[i] == '-oh': - oracleHome = sys.argv[i + 1] - i += 2 - elif sys.argv[i] == '-jh': - javaHome = sys.argv[i + 1] - i += 2 - elif sys.argv[i] == '-parent': - domainParentDir = sys.argv[i + 1] - i += 2 - elif sys.argv[i] == '-name': - domainName = sys.argv[i + 1] - i += 2 - elif sys.argv[i] == '-user': - domainUser = sys.argv[i + 1] - i += 2 - elif sys.argv[i] == '-password': - domainPassword = sys.argv[i + 1] - i += 2 - elif sys.argv[i] == '-rcuDb': - rcuDb = sys.argv[i + 1] - i += 2 - elif sys.argv[i] == '-rcuPrefix': - rcuSchemaPrefix = sys.argv[i + 1] - i += 2 - elif sys.argv[i] == '-rcuSchemaPwd': - rcuSchemaPassword = sys.argv[i + 1] - i += 2 - elif sys.argv[i] == '-domainType': - domainType = sys.argv[i + 1] - i += 2 - else: - print 'INFO: Unexpected argument switch at position ' + str(i) + ': ' + str(sys.argv[i]) - usage() - sys.exit(1) - - -provisioner = SOA12212Provisioner(oracleHome, javaHome, domainParentDir) -provisioner.createDomain(domainName, domainUser, domainPassword, rcuDb, rcuSchemaPrefix, rcuSchemaPassword,domainType) +# +# +# Copyright (c) 2016-2017 Oracle and/or its affiliates. All rights reserved. +# +# Licensed under the Universal Permissive License v 1.0 as shown at +# http://oss.oracle.com/licenses/upl. +# + +import os +import sys + +import com.oracle.cie.domain.script.jython.WLSTException as WLSTException + +class SOA12212Provisioner: + + MACHINES = { + 'machine1' : { + 'NMType': 'SSL', + 'ListenAddress': 'localhost', + 'ListenPort': 5658 + } + } + + SOA_CLUSTERS = { + 'soa_cluster' : {} + } + + OSB_CLUSTERS = { + 'osb_cluster' : {} + } + + SERVERS = { + 'AdminServer' : { + 'ListenAddress': '', + 'ListenPort': 7001, + 'Machine': 'machine1' + } + + } + + SOA_SERVERS = { + 'soa_server1' : { + 'ListenAddress': '', + 'ListenPort': 8001, + 'Machine': 'machine1', + 'Cluster': 'soa_cluster' + } + } + + OSB_SERVERS = { + 'osb_server1' : { + 'ListenAddress': '', + 'ListenPort': 9001, + 'Machine': 'machine1', + 'Cluster': 'osb_cluster' + } + } + + + JRF_12212_TEMPLATES = { + 'baseTemplate' : '@@ORACLE_HOME@@/wlserver/common/templates/wls/wls.jar', + 'extensionTemplates' : [ + '@@ORACLE_HOME@@/oracle_common/common/templates/wls/oracle.jrf_template.jar', + '@@ORACLE_HOME@@/oracle_common/common/templates/wls/oracle.jrf.ws.async_template.jar', + '@@ORACLE_HOME@@/oracle_common/common/templates/wls/oracle.wsmpm_template.jar', + '@@ORACLE_HOME@@/oracle_common/common/templates/wls/oracle.ums_template.jar', + '@@ORACLE_HOME@@/em/common/templates/wls/oracle.em_wls_template.jar' + ], + 'serverGroupsToTarget' : [ 'JRF-MAN-SVR', 'WSMPM-MAN-SVR' ] + } + + SOA_12212_TEMPLATES = { + 'extensionTemplates' : [ + '@@ORACLE_HOME@@/soa/common/templates/wls/oracle.soa_template.jar' + ], + 'serverGroupsToTarget' : [ 'SOA-MGD-SVRS-ONLY' ] + } + + OSB_12212_TEMPLATES = { + 'extensionTemplates' : [ + '@@ORACLE_HOME@@/osb/common/templates/wls/oracle.osb_template.jar' + ], + 'serverGroupsToTarget' : [ 'OSB-MGD-SVRS-ONLY' ] + } + + BPM_12212_TEMPLATES = { + 'extensionTemplates' : [ + '@@ORACLE_HOME@@/soa/common/templates/wls/oracle.bpm_template.jar' + ], + 'serverGroupsToTarget' : [ 'SOA-MGD-SVRS-ONLY' ] + } + + def __init__(self, oracleHome, javaHome, domainParentDir): + self.oracleHome = self.validateDirectory(oracleHome) + self.javaHome = self.validateDirectory(javaHome) + self.domainParentDir = self.validateDirectory(domainParentDir, create=True) + return + + def configureXADataSources(self): + cd('/JDBCSystemResources/SOADataSource/JdbcResource/SOADataSource') + cd('JDBCDriverParams/NO_NAME_0') + set('DriverName', 'oracle.jdbc.xa.client.OracleXADataSource') + cd('/JDBCSystemResources/EDNDataSource/JdbcResource/EDNDataSource') + cd('JDBCDriverParams/NO_NAME_0') + set('DriverName', 'oracle.jdbc.xa.client.OracleXADataSource') + cd('/JDBCSystemResources/OraSDPMDataSource/JdbcResource/OraSDPMDataSource') + cd('JDBCDriverParams/NO_NAME_0') + set('DriverName', 'oracle.jdbc.xa.client.OracleXADataSource') + return + + def createDomain(self, name, user, password, db, dbPrefix, dbPassword,domainType): + domainHome = self.createBaseDomain(name, user, password,domainType) + + if domainType == "soa" or domainType == "soaosb": + self.extendSoaDomain(domainHome, db, dbPrefix, dbPassword) + + if domainType == "osb" or domainType == "soaosb" : + self.extendOsbDomain(domainHome, db, dbPrefix, dbPassword,domainType) + + if domainType == "bpm": + self.extendBpmDomain(domainHome, db, dbPrefix, dbPassword) + + + def createBaseDomain(self, name, user, password,domainType): + baseTemplate = self.replaceTokens(self.JRF_12212_TEMPLATES['baseTemplate']) + + readTemplate(baseTemplate) + setOption('DomainName', name) + setOption('JavaHome', self.javaHome) + setOption('ServerStartMode', 'prod') + set('Name', domainName) + cd('/Security/' + domainName + '/User/weblogic') + set('Name', user) + set('Password', password) + + + print 'INFO: Creating Node Managers...' + for machine in self.MACHINES: + cd('/') + create(machine, 'Machine') + cd('Machine/' + machine) + create(machine, 'NodeManager') + cd('NodeManager/' + machine) + for param in self.MACHINES[machine]: + set(param, self.MACHINES[machine][param]) + + print 'INFO: Creating Admin server...' + + for server in self.SERVERS: + cd('/') + if server == 'AdminServer': + cd('Server/' + server) + for param in self.SERVERS[server]: + set(param, self.SERVERS[server][param]) + continue + create(server, 'Server') + cd('Server/' + server) + for param in self.SERVERS[server]: + set(param, self.SERVERS[server][param]) + + if domainType == "soa" or domainType == "bpm" or domainType == "soaosb": + for cluster in self.SOA_CLUSTERS: + cd('/') + create(cluster, 'Cluster') + cd('Cluster/' + cluster) + for param in self.SOA_CLUSTERS[cluster]: + set(param, self.SOA_CLUSTERS[cluster][param]) + + for server in self.SOA_SERVERS: + cd('/') + create(server, 'Server') + cd('Server/' + server) + for param in self.SOA_SERVERS[server]: + set(param, self.SOA_SERVERS[server][param]) + + print 'INFO: SOA Servers created.....' + + if domainType == 'osb' or domainType == "soaosb": + + print 'INFO: Creating OSB cluster...' + for cluster in self.OSB_CLUSTERS: + cd('/') + create(cluster, 'Cluster') + cd('Cluster/' + cluster) + for param in self.OSB_CLUSTERS[cluster]: + set(param, self.OSB_CLUSTERS[cluster][param]) + + for server in self.OSB_SERVERS: + cd('/') + create(server, 'Server') + cd('Server/' + server) + for param in self.OSB_SERVERS[server]: + set(param, self.OSB_SERVERS[server][param]) + + + print 'INFO: OSB Servers created.....' + setOption('OverwriteDomain', 'true') + domainHome = self.domainParentDir + '/' + name + + print 'INFO: Writing base domain...' + writeDomain(domainHome) + closeTemplate() + print 'INFO: Base domain created at ' + domainHome + return domainHome + + + def readAndApplyJRFTemplates(self, domainHome): + print 'INFO: Extending domain at ' + domainHome + readDomain(domainHome) + setOption('AppDir', self.domainParentDir + '/applications') + + print 'INFO: Applying JRF templates...' + for extensionTemplate in self.JRF_12212_TEMPLATES['extensionTemplates']: + addTemplate(self.replaceTokens(extensionTemplate)) + return + + def applySOATemplates(self): + print 'INFO: Applying SOA templates...' + for extensionTemplate in self.SOA_12212_TEMPLATES['extensionTemplates']: + addTemplate(self.replaceTokens(extensionTemplate)) + return + + def configureJDBCTemplates(self,db,dbPrefix,dbPassword): + print 'INFO: Configuring the Service Table DataSource...' + fmwDb = 'jdbc:oracle:thin:@' + db + cd('/JDBCSystemResource/LocalSvcTblDataSource/JdbcResource/LocalSvcTblDataSource') + cd('JDBCDriverParams/NO_NAME_0') + set('DriverName', 'oracle.jdbc.OracleDriver') + set('URL', fmwDb) + set('PasswordEncrypted', dbPassword) + + stbUser = dbPrefix + '_STB' + cd('Properties/NO_NAME_0/Property/user') + set('Value', stbUser) + + print 'INFO: Getting Database Defaults...' + getDatabaseDefaults() + return + + def targetSOAServers(self,serverGroupsToTarget): + for server in self.SOA_SERVERS: + if not server == 'AdminServer': + setServerGroups(server, serverGroupsToTarget) + print "INFO: Set CoherenceClusterSystemResource to defaultCoherenceCluster for server:" + server + cd('/Servers/' + server) + set('CoherenceClusterSystemResource', 'defaultCoherenceCluster') + return + + def targetSOACluster(self): + for cluster in self.SOA_CLUSTERS: + print "INFO: Set CoherenceClusterSystemResource to defaultCoherenceCluster for cluster:" + cluster + cd('/Cluster/' + cluster) + set('CoherenceClusterSystemResource', 'defaultCoherenceCluster') + return + + + def targetOSBServers(self,serverGroupsToTarget): + for server in self.OSB_SERVERS: + if not server == 'AdminServer': + setServerGroups(server, serverGroupsToTarget) + print "INFO: Set CoherenceClusterSystemResource to defaultCoherenceCluster for server:" + server + cd('/Servers/' + server) + set('CoherenceClusterSystemResource', 'defaultCoherenceCluster') + return + + def targetOSBCluster(self): + for cluster in self.OSB_CLUSTERS: + print "INFO: Set CoherenceClusterSystemResource to defaultCoherenceCluster for cluster:" + cluster + cd('/Cluster/' + cluster) + set('CoherenceClusterSystemResource', 'defaultCoherenceCluster') + return + + def extendSoaDomain(self, domainHome, db, dbPrefix, dbPassword): + self.readAndApplyJRFTemplates(domainHome) + self.applySOATemplates() + + print 'INFO: Extension Templates added' + + self.configureJDBCTemplates(db,dbPrefix,dbPassword) + self.configureXADataSources() + + print 'INFO: Targeting Server Groups...' + serverGroupsToTarget = list(self.JRF_12212_TEMPLATES['serverGroupsToTarget']) + serverGroupsToTarget.extend(self.SOA_12212_TEMPLATES['serverGroupsToTarget']) + + cd('/') + self.targetSOAServers(serverGroupsToTarget) + + cd('/') + self.targetSOACluster() + + print "INFO: Set WLS clusters as target of defaultCoherenceCluster:[" + ",".join(self.SOA_CLUSTERS) + "]" + + cd('/CoherenceClusterSystemResource/defaultCoherenceCluster') + set('Target', ",".join(self.SOA_CLUSTERS)) + print 'INFO: Preparing to update domain...' + updateDomain() + print 'INFO: Domain updated successfully' + closeDomain() + return + + + def extendOsbDomain(self, domainHome, db, dbPrefix, dbPassword,domainType): + self.readAndApplyJRFTemplates(domainHome) + + print 'INFO: Applying OSB templates...' + for extensionTemplate in self.OSB_12212_TEMPLATES['extensionTemplates']: + addTemplate(self.replaceTokens(extensionTemplate)) + + print 'INFO: Extension Templates added' + + self.configureJDBCTemplates(db,dbPrefix,dbPassword) + cd('/JDBCSystemResources/SOADataSource/JdbcResource/SOADataSource') + cd('JDBCDriverParams/NO_NAME_0') + set('DriverName', 'oracle.jdbc.xa.client.OracleXADataSource') + cd('/JDBCSystemResources/OraSDPMDataSource/JdbcResource/OraSDPMDataSource') + cd('JDBCDriverParams/NO_NAME_0') + set('DriverName', 'oracle.jdbc.xa.client.OracleXADataSource') + + + print 'INFO: Targeting Server Groups...' + serverGroupsToTarget = list(self.JRF_12212_TEMPLATES['serverGroupsToTarget']) + serverGroupsToTarget.extend(self.OSB_12212_TEMPLATES['serverGroupsToTarget']) + + cd('/') + self.targetOSBServers(serverGroupsToTarget) + + cd('/') + self.targetOSBCluster() + + print "INFO: Set WLS clusters as target of defaultCoherenceCluster:[" + ",".join(self.OSB_CLUSTERS) + "]" + cd('/CoherenceClusterSystemResource/defaultCoherenceCluster') + set('Target', ",".join(self.OSB_CLUSTERS)) + + print 'INFO: Preparing to update domain...' + updateDomain() + print 'INFO: Domain updated successfully' + closeDomain() + return + + + def extendBpmDomain(self, domainHome, db, dbPrefix, dbPassword): + self.readAndApplyJRFTemplates(domainHome) + + print 'INFO: Applying BPM templates...' + for extensionTemplate in self.BPM_12212_TEMPLATES['extensionTemplates']: + addTemplate(self.replaceTokens(extensionTemplate)) + + print 'INFO: Extension Templates added' + + self.configureJDBCTemplates(db,dbPrefix,dbPassword) + self.configureXADataSources() + + print 'INFO: Targeting Server Groups...' + serverGroupsToTarget = list(self.JRF_12212_TEMPLATES['serverGroupsToTarget']) + serverGroupsToTarget.extend(self.BPM_12212_TEMPLATES['serverGroupsToTarget']) + + cd('/') + self.targetSOAServers(serverGroupsToTarget) + + cd('/') + self.targetSOACluster() + + print "INFO: Set WLS clusters as target of defaultCoherenceCluster:[" + ",".join(self.SOA_CLUSTERS) + "]" + + cd('/CoherenceClusterSystemResource/defaultCoherenceCluster') + set('Target', ",".join(self.SOA_CLUSTERS)) + print 'INFO: Preparing to update domain...' + updateDomain() + print 'INFO: Domain updated successfully' + closeDomain() + return + + + ########################################################################### + # Helper Methods # + ########################################################################### + + def validateDirectory(self, dirName, create=False): + directory = os.path.realpath(dirName) + if not os.path.exists(directory): + if create: + os.makedirs(directory) + else: + message = 'Directory ' + directory + ' does not exist' + raise WLSTException(message) + elif not os.path.isdir(directory): + message = 'Directory ' + directory + ' is not a directory' + raise WLSTException(message) + return self.fixupPath(directory) + + + def fixupPath(self, path): + result = path + if path is not None: + result = path.replace('\\', '/') + return result + + + def replaceTokens(self, path): + result = path + if path is not None: + result = path.replace('@@ORACLE_HOME@@', oracleHome) + return result + +############################# +# Entry point to the script # +############################# + +def usage(): + print sys.argv[0] + ' -oh -jh -parent [-name ] ' + \ + '[-user ] [-password ] ' + \ + '-rcuDb [-rcuPrefix ] [-rcuSchemaPwd ] ' + \ + '-domainType ' + sys.exit(0) + + +print "createDomain.py called with the following inputs:" +for index, arg in enumerate(sys.argv): + print "INFO: sys.argv[" + str(index) + "] = " + str(sys.argv[index]) + +if len(sys.argv) < 6: + usage() + +#oracleHome will be passed by command line parameter -oh. +oracleHome = None +#javaHome will be passed by command line parameter -jh. +javaHome = None +#domainParentDir will be passed by command line parameter -parent. +domainParentDir = None +#domainName is hard-coded to soa_domain. You can change to other name of your choice. Command line parameter -name. +domainName = 'soa_domain' +#domainUser is hard-coded to weblogic. You can change to other name of your choice. Command line paramter -user. +domainUser = 'weblogic' +#domainPassword is hard-coded to welcome1. You can change to other password of your choice. Command line parameter -password. +domainPassword = 'welcome1' +#rcuDb will be passed by command line parameter -rcuDb. +rcuDb = None +#change rcuSchemaPrefix to your soainfra schema prefix. Command line parameter -rcuPrefix. +rcuSchemaPrefix = 'DEV12' +#change rcuSchemaPassword to your soainfra schema password. Command line parameter -rcuSchemaPwd. +rcuSchemaPassword = 'welcome1' + +i = 1 +while i < len(sys.argv): + if sys.argv[i] == '-oh': + oracleHome = sys.argv[i + 1] + i += 2 + elif sys.argv[i] == '-jh': + javaHome = sys.argv[i + 1] + i += 2 + elif sys.argv[i] == '-parent': + domainParentDir = sys.argv[i + 1] + i += 2 + elif sys.argv[i] == '-name': + domainName = sys.argv[i + 1] + i += 2 + elif sys.argv[i] == '-user': + domainUser = sys.argv[i + 1] + i += 2 + elif sys.argv[i] == '-password': + domainPassword = sys.argv[i + 1] + i += 2 + elif sys.argv[i] == '-rcuDb': + rcuDb = sys.argv[i + 1] + i += 2 + elif sys.argv[i] == '-rcuPrefix': + rcuSchemaPrefix = sys.argv[i + 1] + i += 2 + elif sys.argv[i] == '-rcuSchemaPwd': + rcuSchemaPassword = sys.argv[i + 1] + i += 2 + elif sys.argv[i] == '-domainType': + domainType = sys.argv[i + 1] + i += 2 + else: + print 'INFO: Unexpected argument switch at position ' + str(i) + ': ' + str(sys.argv[i]) + usage() + sys.exit(1) + + +provisioner = SOA12212Provisioner(oracleHome, javaHome, domainParentDir) +provisioner.createDomain(domainName, domainUser, domainPassword, rcuDb, rcuSchemaPrefix, rcuSchemaPassword,domainType) diff --git a/OracleSOASuite/dockerfiles/12.2.1.2-soabpm/container-scripts/createDomainAndStart.sh b/OracleSOASuite/dockerfiles/12.2.1.2/container-scripts/createDomainAndStart.sh similarity index 100% rename from OracleSOASuite/dockerfiles/12.2.1.2-soabpm/container-scripts/createDomainAndStart.sh rename to OracleSOASuite/dockerfiles/12.2.1.2/container-scripts/createDomainAndStart.sh diff --git a/OracleSOASuite/dockerfiles/12.2.1.2-soabpm/container-scripts/startAS.sh b/OracleSOASuite/dockerfiles/12.2.1.2/container-scripts/startAS.sh similarity index 97% rename from OracleSOASuite/dockerfiles/12.2.1.2-soabpm/container-scripts/startAS.sh rename to OracleSOASuite/dockerfiles/12.2.1.2/container-scripts/startAS.sh index 95400e14c8..763924ac66 100755 --- a/OracleSOASuite/dockerfiles/12.2.1.2-soabpm/container-scripts/startAS.sh +++ b/OracleSOASuite/dockerfiles/12.2.1.2/container-scripts/startAS.sh @@ -27,6 +27,7 @@ echo "INFO: Logs = ${LOGFILE}" $DOMAIN_HOME/bin/startWebLogic.sh > ${LOGFILE} 2>&1 & statusfile=/tmp/notifyfifo.$$ +rm -f "${statusfile}" mkfifo "${statusfile}" || exit 1 { # run tail in the background so that the shell can kill tail when notified @@ -52,7 +53,7 @@ mkfifo "${statusfile}" || exit 1 } # clean up -rm "${statusfile}" +rm -f "${statusfile}" if [ -f ${STSFILE} ]; then echo "INFO: Admin server running, ready to start managed server" fi diff --git a/OracleSOASuite/dockerfiles/12.2.1.2-soabpm/container-scripts/startMS.sh b/OracleSOASuite/dockerfiles/12.2.1.2/container-scripts/startMS.sh similarity index 98% rename from OracleSOASuite/dockerfiles/12.2.1.2-soabpm/container-scripts/startMS.sh rename to OracleSOASuite/dockerfiles/12.2.1.2/container-scripts/startMS.sh index e70c95298c..2bd0af000d 100755 --- a/OracleSOASuite/dockerfiles/12.2.1.2-soabpm/container-scripts/startMS.sh +++ b/OracleSOASuite/dockerfiles/12.2.1.2/container-scripts/startMS.sh @@ -70,6 +70,7 @@ $DOMAIN_HOME/bin/startManagedWebLogic.sh ${MANAGED_SERVER} "http://"${ADMIN_HOST statusfile=/tmp/notifyfifo.$$ echo "INFO: Waiting for the Managed Server to accept requests..." +rm -f "${statusfile}" mkfifo "${statusfile}" || exit 1 { # run tail in the background so that the shell can kill tail when notified @@ -91,7 +92,7 @@ mkfifo "${statusfile}" || exit 1 } # clean up -rm "${statusfile}" +rm -f "${statusfile}" if [ -f ${LOGDIR}/ms.status ]; then echo "INFO: Managed server has been started" fi diff --git a/OracleSOASuite/dockerfiles/12.2.1.2-soabpm/container-scripts/updListenAddress.py b/OracleSOASuite/dockerfiles/12.2.1.2/container-scripts/updListenAddress.py similarity index 96% rename from OracleSOASuite/dockerfiles/12.2.1.2-soabpm/container-scripts/updListenAddress.py rename to OracleSOASuite/dockerfiles/12.2.1.2/container-scripts/updListenAddress.py index dc4ca6d0c7..8451097c7d 100755 --- a/OracleSOASuite/dockerfiles/12.2.1.2-soabpm/container-scripts/updListenAddress.py +++ b/OracleSOASuite/dockerfiles/12.2.1.2/container-scripts/updListenAddress.py @@ -1,7 +1,5 @@ #!/usr/bin/python # -# -# # Copyright (c) 2016-2017 Oracle and/or its affiliates. All rights reserved. # # Licensed under the Universal Permissive License v 1.0 as shown at http://oss.oracle.com/licenses/upl. @@ -10,6 +8,7 @@ # ============================================== # import sys + # # Assigning values to variables # ============================= @@ -23,17 +22,17 @@ manserver_host=sys.argv[2] server=sys.argv[3] exthost=sys.argv[4] + # # Setting domain path # =================== domain_path = domain_root + '/' + domain_name -# -# + # # Read domain for updates # ======================= readDomain(domain_path) -# + # # Set listen address # ================== @@ -43,7 +42,7 @@ cmo.setExternalDNSName(exthost) # Creating domain -# ============================== +# =============== updateDomain() closeDomain() exit() diff --git a/OracleSOASuite/dockerfiles/12.2.1.2-soabpm/oraInst.loc b/OracleSOASuite/dockerfiles/12.2.1.2/oraInst.loc similarity index 100% rename from OracleSOASuite/dockerfiles/12.2.1.2-soabpm/oraInst.loc rename to OracleSOASuite/dockerfiles/12.2.1.2/oraInst.loc diff --git a/OracleSOASuite/dockerfiles/12.2.1.2-soabpm/soasuite.download b/OracleSOASuite/dockerfiles/12.2.1.2/soasuite.download similarity index 100% rename from OracleSOASuite/dockerfiles/12.2.1.2-soabpm/soasuite.download rename to OracleSOASuite/dockerfiles/12.2.1.2/soasuite.download diff --git a/OracleSOASuite/dockerfiles/12.2.1.2-soabpm/soasuite.response b/OracleSOASuite/dockerfiles/12.2.1.2/soasuite.response similarity index 100% rename from OracleSOASuite/dockerfiles/12.2.1.2-soabpm/soasuite.response rename to OracleSOASuite/dockerfiles/12.2.1.2/soasuite.response diff --git a/OracleSOASuite/dockerfiles/README.md b/OracleSOASuite/dockerfiles/README.md index 6d8165c869..20f41ada07 100644 --- a/OracleSOASuite/dockerfiles/README.md +++ b/OracleSOASuite/dockerfiles/README.md @@ -17,4 +17,4 @@ SOA/BPM/OSB domain images it and Confirm to proceed. # Use BUILD_OPTS to add extra arguments to the docker build command - sh buildDockerImage.sh -v 12.2.1.2-soabpm + sh buildDockerImage.sh -v 12.2.1.2 diff --git a/OracleSOASuite/dockerfiles/buildDockerImage.sh b/OracleSOASuite/dockerfiles/buildDockerImage.sh index bc435a2045..fae1af5039 100755 --- a/OracleSOASuite/dockerfiles/buildDockerImage.sh +++ b/OracleSOASuite/dockerfiles/buildDockerImage.sh @@ -19,10 +19,10 @@ Builds a Docker Image for Oracle SOA/OSB/BPM Parameters: -h: view usage -v: Release version to build. Required. Allowed values are - 12.2.1.2-soabpm + 12.2.1.2 -s: Skip checksum verification -LICENSE CDDL 1.0 + GPL 2.0 +LICENSE Universal Permissive License (UPL), Version 1.0 Copyright (c) 2016-2017: Oracle and/or its affiliates. All rights reserved. EOF @@ -38,7 +38,7 @@ checksumPackages() { ERROR: MD5 for required packages to build this image did not match. Please make sure to download - missing files in the 12.2.1.2-soabpm folder. + missing files in the ${VERSION} folder. See Dockerfile for more information EOF exit $? @@ -75,11 +75,9 @@ fi . ../setenv.sh versionOK=false -if [[ $VERSION =~ .*soabpm.* ]] +if [[ $VERSION =~ 12.2.1.* ]] then - suffix="-soabpm" - QSVERSION=${VERSION%$suffix} - IMAGE_NAME="${DC_REGISTRY_SOA}/middleware/soabpm:$QSVERSION" + IMAGE_NAME="${DC_REGISTRY_SOA}/oracle/soasuite:$VERSION" DOCKERFILE_NAME=Dockerfile versionOK=true fi @@ -87,6 +85,11 @@ fi if [ "${versionOK}" = "false" ]; then echo "ERROR: Incorrect version ${VERSION} specified" usage +else + if [ ! -d ${VERSION} ]; then + echo "ERROR: Incorrect version ${VERSION} directory not found" + usage + fi fi # Go into version folder diff --git a/OracleSOASuite/samples/docker-compose.yml b/OracleSOASuite/samples/docker-compose.yml index 26a150d0ad..838b40010f 100644 --- a/OracleSOASuite/samples/docker-compose.yml +++ b/OracleSOASuite/samples/docker-compose.yml @@ -21,7 +21,7 @@ services: # The SOA Admin Server # soaas: - image: ${DC_REGISTRY_SOA}/middleware/soabpm:12.2.1.2 + image: ${DC_REGISTRY_SOA}/oracle/soasuite:${DC_SOA_VERSION} container_name: soaas command: /bin/bash -c "sleep 5s; /u01/oracle/dockertools/createDomainAndStart.sh" ports: @@ -42,7 +42,7 @@ services: # The SOA Managed Server # soams: - image: ${DC_REGISTRY_SOA}/middleware/soabpm:12.2.1.2 + image: ${DC_REGISTRY_SOA}/oracle/soasuite:${DC_SOA_VERSION} container_name: soams depends_on: - "soaas" @@ -64,7 +64,7 @@ services: # The BPM Admin Server # bpmas: - image: ${DC_REGISTRY_SOA}/middleware/soabpm:12.2.1.2 + image: ${DC_REGISTRY_SOA}/oracle/soasuite:${DC_SOA_VERSION} container_name: bpmas command: /bin/bash -c "sleep 5s; /u01/oracle/dockertools/createDomainAndStart.sh" ports: @@ -85,7 +85,7 @@ services: # The BPM Managed Server # bpmms: - image: ${DC_REGISTRY_SOA}/middleware/soabpm:12.2.1.2 + image: ${DC_REGISTRY_SOA}/oracle/soasuite:${DC_SOA_VERSION} container_name: bpmms depends_on: - "bpmas" @@ -107,7 +107,7 @@ services: # The OSB Admin Server # osbas: - image: ${DC_REGISTRY_SOA}/middleware/soabpm:12.2.1.2 + image: ${DC_REGISTRY_SOA}/oracle/soasuite:${DC_SOA_VERSION} container_name: osbas command: /bin/bash -c "sleep 5s; /u01/oracle/dockertools/createDomainAndStart.sh" ports: @@ -128,7 +128,7 @@ services: # The OSB Managed Server # osbms: - image: ${DC_REGISTRY_SOA}/middleware/soabpm:12.2.1.2 + image: ${DC_REGISTRY_SOA}/oracle/soasuite:${DC_SOA_VERSION} container_name: osbms depends_on: - "osbas" diff --git a/OracleSOASuite/setenv.sh b/OracleSOASuite/setenv.sh old mode 100755 new mode 100644 index 3bbfda9330..90c2794080 --- a/OracleSOASuite/setenv.sh +++ b/OracleSOASuite/setenv.sh @@ -51,6 +51,10 @@ exportComposeEnv() { export DC_DDIR_SOA=${DC_USERHOME}/soadomain export DC_DDIR_BPM=${DC_USERHOME}/bpmdomain export DC_DDIR_OSB=${DC_USERHOME}/osbdomain + # + # Default version to use for compose images + # + export DC_SOA_VERSION=12.2.1.2 } #===============================================