Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

support forms 12.2.1.4 #6

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
/OracleFMWInfrastructure/dockerfiles/12.2.1.3/fmw_12.2.1.3.0_infrastructure_Disk1_1of1.zip
/OracleJava/java-8/jdk-8u241-linux-x64.tar.gz
/OracleFMWInfrastructure/dockerfiles/12.2.1.4/fmw_12.2.1.4.0_infrastructure_Disk1_1of1.zip
/OracleFormsReports/dockerfiles/12.2.1.4/fmw_12.2.1.4.0_fr_linux64.bin
/OracleFormsReports/dockerfiles/12.2.1.4/fmw_12.2.1.4.0_fr_linux64-2.zip
5 changes: 5 additions & 0 deletions OracleFMWInfrastructure/dockerfiles/12.2.1.4/Checksum
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Download FMW Infrastructure Installer 12.2.1.2
#
# - http://www.oracle.com/technetwork/middleware/weblogic/downloads/wls-for-dev-1703574.html
#
48a6ac719d2c46469d554f652cb579e2 fmw_12.2.1.4.0_infrastructure_Disk1_1of1.zip
79 changes: 79 additions & 0 deletions OracleFMWInfrastructure/dockerfiles/12.2.1.4/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
#
# ORACLE DOCKERFILES PROJECT
# --------------------------
# This is the Dockerfile for Oracle FMW Infrastructure 12.2.1.3
#
# HOW TO BUILD THIS IMAGE
# -----------------------
# Run:
# $ docker build -f Dockerfile -t oracle/fmw-infrastructure:12.2.1.3
#
# IMPORTANT
# ---------
# The resulting image of this Dockerfile contains a FMW Infra Base Domain.
#
# From
# Full JDK 1.8
# -------------------------
FROM oracle/serverjdk:8

# Maintainer
# ----------
MAINTAINER Dirk Nachbar <https://dirknachbar.blogspot.com>


# Common environment variables required for this build
# ----------------------------------------------------
ENV ORACLE_HOME=/opt/oracle \
SCRIPT_FILES=/opt/oracle/container-scripts/*.sh \
USER_MEM_ARGS="-Djava.security.egd=file:/dev/./urandom" \
DOMAIN_NAME="${DOMAIN_NAME:-InfraDomain}" \
DOMAIN_HOME=/opt/oracle/user_projects/domains/${DOMAIN_NAME:-InfraDomain} \
VOLUME_DIR=/opt/oracle/user_projects \
PATH=$PATH:/usr/java/default/bin:/opt/oracle/oracle_common/common/bin:/opt/oracle/wlserver/common/bin:/opt/oracle/container-scripts


#USER root
# Setup subdirectory for FMW install package and container-scripts
# -----------------------------------------------------------------
RUN mkdir -p /opt && \
chmod a+xr /opt && \
useradd -b /opt -d /opt/oracle -m -s /bin/bash oracle && \
mkdir -p /opt/oracle/container-scripts


# Copy packages and scripts
# -------------
COPY container-scripts/* /opt/oracle/container-scripts/

# Environment variables required for this build (do NOT change)
# -------------------------------------------------------------
ENV FMW_PKG=fmw_12.2.1.4.0_infrastructure_Disk1_1of1.zip \
FMW_JAR=fmw_12.2.1.4.0_infrastructure.jar

# Copy packages
# Install the required Packages for Oracle Forms & Reports
# -------------
COPY $FMW_PKG install.file oraInst.loc /opt/
RUN chown oracle:oracle -R /opt && \
chmod +xr $SCRIPT_FILES && \
yum install -y binutils compat-libcap1 compat-libstdc++-33.x86_64 compat-libstdc++-33.i686 gcc gcc-c++ glibc.x86_64 glibc.i686 glibc-devel.x86_64 libaio.x86_64 libaio-devel.x86_64 libgcc.x86_64 libgcc.i686 libstdc++.x86_64 libstdc++.i686 libstdc++-devel.x86_64 ksh make sysstat numactl numactl-devel motif motif-devel && \
ln -s /usr/lib64/libXm.so.4 /usr/lib64/libXm.so.3 && \
rm -rf /var/cache/yum && \
mkdir -p $VOLUME_DIR && \
chown -R oracle:oracle $VOLUME_DIR

VOLUME $VOLUME_DIR


# Install
# ------------------------------------------------------------
USER oracle
RUN cd /opt && $JAVA_HOME/bin/jar xf /opt/$FMW_PKG && cd - && \
$JAVA_HOME/bin/java -jar /opt/$FMW_JAR -silent -responseFile /opt/install.file -invPtrLoc /opt/oraInst.loc -jreLoc $JAVA_HOME -ignoreSysPrereqs -force -novalidation ORACLE_HOME=$ORACLE_HOME INSTALL_TYPE="WebLogic Server" && \
rm /opt/$FMW_JAR /opt/$FMW_PKG /opt/oraInst.loc /opt/install.file

WORKDIR ${ORACLE_HOME}

# Define default command to start script.
CMD ["/opt/oracle/container-scripts/createOrStartInfraDomain.sh"]
Original file line number Diff line number Diff line change
@@ -0,0 +1,271 @@
# Copyright (c) 2014-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 Infra12212Provisioner:

MACHINES = {
'machine1' : {
'NMType': 'SSL',
'ListenAddress': 'localhost',
'ListenPort': 5658
}
}

CLUSTERS = {
'infra_cluster' : {}
}

SERVERS = {
'AdminServer' : {
'ListenAddress': '',
'ListenPort': 7001,
'Machine': 'machine1'
},
'infra_server1' : {
'ListenAddress': '',
'ListenPort': 8001,
'Machine': 'machine1',
'Cluster': 'infra_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' ]
}

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 createInfraDomain(self, name, user, password, db, dbPrefix, dbPassword):
domainHome = self.createBaseDomain(name, user, password)
self.extendDomain(domainHome, db, dbPrefix, dbPassword)

def createBaseDomain(self, name, user, password):
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 'Creating cluster...'
for cluster in self.CLUSTERS:
cd('/')
create(cluster, 'Cluster')
cd('Cluster/' + cluster)
for param in self.CLUSTERS[cluster]:
set(param, self.CLUSTERS[cluster][param])

print '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 'Creating Servers...'
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])

setOption('OverwriteDomain', 'true')
domainHome = self.domainParentDir + '/' + name

print 'Writing base domain...'
writeDomain(domainHome)
closeTemplate()
print 'Base domain created at ' + domainHome
return domainHome


def extendDomain(self, domainHome, db, dbPrefix, dbPassword):
print 'Extending domain at ' + domainHome
readDomain(domainHome)
setOption('AppDir', self.domainParentDir + '/applications')

print 'Applying JRF templates...'
for extensionTemplate in self.JRF_12212_TEMPLATES['extensionTemplates']:
addTemplate(self.replaceTokens(extensionTemplate))

print 'Extension Templates added'

print '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 'Getting Database Defaults...'
getDatabaseDefaults()

print 'Targeting Server Groups...'
serverGroupsToTarget = list(self.JRF_12212_TEMPLATES['serverGroupsToTarget'])
cd('/')
for server in self.SERVERS:
if not server == 'AdminServer':
setServerGroups(server, serverGroupsToTarget)
print "Set CoherenceClusterSystemResource to defaultCoherenceCluster for server:" + server
cd('/Servers/' + server)
set('CoherenceClusterSystemResource', 'defaultCoherenceCluster')
cd('/')
for cluster in self.CLUSTERS:
print "Set CoherenceClusterSystemResource to defaultCoherenceCluster for cluster:" + cluster
cd('/Cluster/' + cluster)
set('CoherenceClusterSystemResource', 'defaultCoherenceCluster')

print "Set WLS clusters as target of defaultCoherenceCluster:[" + ",".join(self.CLUSTERS) + "]"
cd('/CoherenceClusterSystemResource/defaultCoherenceCluster')
set('Target', ",".join(self.CLUSTERS))

print 'Preparing to update domain...'
updateDomain()
print '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 <oracle_home> -jh <java_home> -parent <domain_parent_dir> [-name <domain-name>] ' + \
'[-user <domain-user>] [-password <domain-password>] ' + \
'-rcuDb <rcu-database> [-rcuPrefix <rcu-prefix>] [-rcuSchemaPwd <rcu-schema-password>]'
sys.exit(0)


print str(sys.argv[0]) + " called with the following sys.argv array:"
for index, arg in enumerate(sys.argv):
print "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
#domainUser is hard-coded to weblogic. You can change to other name of your choice. Command line paramter -user.
domainUser = 'weblogic'
#domainPassword will be passed by Command line parameter -password.
#domainPassword = 'welcome1'
domainPassword = None
#rcuDb will be passed by command line parameter -rcuDb.
rcuDb = None
#change rcuSchemaPrefix to your infra schema prefix. Command line parameter -rcuPrefix.
rcuSchemaPrefix = 'DEV12'
#change rcuSchemaPassword to your infra schema password. Command line parameter -rcuSchemaPwd.
#rcuSchemaPassword = 'welcome1'
rcuSchemaPassword = None

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
else:
print 'Unexpected argument switch at position ' + str(i) + ': ' + str(sys.argv[i])
usage()
sys.exit(1)

provisioner = Infra12212Provisioner(oracleHome, javaHome, domainParentDir)
provisioner.createInfraDomain(domainName, domainUser, domainPassword, rcuDb, rcuSchemaPrefix, rcuSchemaPassword)
Loading