# OCMinit.ctl: Setup and configures Oracle Configuration Manager # $Id: OCMinit.ctl,v 1.4 2013/10/30 07:18:47 RDA Exp $ # ARCS: $Header: /home/cvs/cvs/RDA_8/src/scripting/lib/collect/RDA/OCMinit.ctl,v 1.4 2013/10/30 07:18:47 RDA Exp $ # Change History # 20130422 MSC Improve the validation. =head1 NAME RDA:OCMinit - Module for Setting up and Configuring Oracle Configuration Manager =head1 DESCRIPTION This module sets up and configures Oracle Configuration Manager in the specified directories. =cut use Log # Platform specific initialisation var $MOD = cond(isUnix(),'fx','f') var $TTY = cond(isWindows(),'2/dev/tty') var $configCCR = ${AS.EXE:'configCCR'} var $emCCR = ${AS.BATCH:'emCCR'} var $setupCCR = ${AS.EXE:'setupCCR'} # Initialisation var %DSC = (\ D_CCR_CONFIG => 'Oracle Configuration Manager data',\ S_CCR_RUN => 'Oracle Configuration Manager execution status') var %ERR = (\ CONFIG => 'configCCR encountered a failure during OCM configuration \ in an instance home (%s)',\ INSTALLED_MW => 'Oracle Configuration Manager seems to be already installed \ in the Middleware home',\ INSTALLED_OI => 'Oracle Configuration Manager seems to be already installed \ in the Oracle home (%s)',\ JAVA_HOME => 'Unable to identify a valid JAVA_HOME',\ SETUP_MW => 'setupCCR encountered a failure during OCM setup in the \ Middleware home',\ SETUP_OI => 'setupCCR encountered a failure during OCM setup in the \ Oracle home (%s)') var %STA = () var %STP = (\ CONFIG => 'Configuring OCM in an instance home',\ JAVA_HOME => 'Identifying a valid JAVA_HOME',\ SETUP_MW => 'Executing setupCCR script for the Middleware home',\ SETUP_OI => 'Executing setupCCR script for the Oracle home') #------------------------------------------------------------------------------ # Configure OCM in an instance home #------------------------------------------------------------------------------ macro do_config {var ($stp,$cmd,$mod) = @arg import $TTY keep $TTY if compare('eq',$mod,'D') return exec_step($stp,join(' ',$cmd,'-a','-d',$TTY)) return exec_step($stp,join(' ',$cmd,'-a',$TTY)) } #------------------------------------------------------------------------------ # Setup OCM #------------------------------------------------------------------------------ macro do_setup {var ($typ,$tgt,$ccr,$mod) = @arg import $MOD,$TTY,$emCCR keep $MOD,$TTY,$emCCR if and(testDir('d',$ccr),\ testFile($MOD,catFile($ccr,'bin',$emCCR))) {call $tgt->set_value('S_CCR_SETUP','done') return register_error(concat('INSTALLED_',$typ)) } if ${ENV.CCR_ENDPOINT} {var $cmd = concat('echo ccr.endpoint=https://',last,'>>',\ catCommand($hom,'ccr','config','ccr.properties')) debug ' - Executing: ',$cmd call command($cmd) } if !?testDir('d',catDir($ccr,upDir(),'bin')) call setLocalEnv('CCR_DISABLE_CRON_ENTRY','TRUE') var $cmd = catCommand($ccr,'bin','setupCCR') if compare('eq',$mod,'D') return exec_step(concat('SETUP_',$typ),\ join(' ',$cmd,'-S','RDA','-V',${RDA.V_VERSION},'-d',$TTY)) return exec_step(concat('SETUP_',$typ),\ join(' ',$cmd,'-S','RDA','-V',${RDA.V_VERSION},$TTY)) } #------------------------------------------------------------------------------ # Execute a step #------------------------------------------------------------------------------ macro exec_step {var ($stp,$cmd) = @arg import %STA,%STP keep %STA,%STP # Execute the command echo nvl($STP{$stp},$STP{key($stp)},$stp) debug ' Executing: ',$cmd call system($cmd) # Register errors and return the completion status if status() {var $STA{$stp} = last return false } return true } #------------------------------------------------------------------------------ # Find where a JDK is installed #------------------------------------------------------------------------------ macro find_jdk {var ($hom) = @arg var $jdk = ${SET.RDA.OCM.D_JAVA_HOME} if and($jdk,testDir('d',catDir($jdk,'jre'))) {call setLocalEnv('JAVA_HOME',$jdk) return $jdk } var $jdk = ${ENV.JAVA_HOME} if and($jdk,testDir('d',catDir($jdk,'jre'))) return $jdk if ?testDir('d',catDir($hom,'jdk')) return lastDir() if findDir($dir = ${SET.RDA.BEGIN.D_ORACLE_PARENT},'^(jdk\d+|jrockit)','np') return first(last) if findDir($dir,'^wlserver_\d+','fp') {if ?testFile('f',$fil = catFile(last,'common','bin',${AS.CMD:'commEnv'})) {if match($fil,'\.cmd$',true) {if grepFile($fil,'^\s*set\s+JAVA_HOME\s*=\s*([\042\047])(.*?)\1','fi2') return first(last) } elsif grepFile($fil,'^\s*JAVA_HOME\s*=\s*([\042\047])(.*?)\1','fi2') return first(last) } } call register_error('JAVA_HOME') return '' } #------------------------------------------------------------------------------ # Register an error in the error stack #------------------------------------------------------------------------------ macro register_error {import %STA keep %STA var ($stp) = @arg var $STA{$stp} = true return false } #------------------------------------------------------------------------------ # Main #------------------------------------------------------------------------------ var ($pkg,@err) = (false) # Disable initial collection call setLocalEnv('CCR_INSTALL_DEFER_COLLECT','TRUE') var $env = setLocalEnv('ORACLE_CONFIG_HOME') # Set up OCM in the Middleware home var $ORACLE_HOME = ${SET.RDA.BEGIN.D_ORACLE_HOME} loop $tgt (${COL.TARGET/i}->grep('^W_CCR_SETUP$','rw')) {var ($mod) = $tgt->set_value('W_CCR_SETUP') var ($dur,$msg,%ERR) = (0,'') # Perform the setup decr $dur,time() if find_jdk($ORACLE_HOME) {var $jdk = last var $bea = $tgt->get_first('D_MW_HOME') var $ccr = $tgt->get_first('D_CCR_HOME') loop $fil (grepDir($bea,'^wlserver_\d+(\.\d+)+','np')) {if ?testDir('d',$fil) var $wls = $fil } var $bea = setLocalEnv('BEA_HOME', $bea) var $jdk = setLocalEnv('JAVA_HOME',$jdk) var $wls = setLocalEnv('WL_HOME', $wls) call do_setup('MW',$tgt,$ccr,$mod) call setLocalEnv('BEA_HOME', $bea) call setLocalEnv('JAVA_HOME',$jdk) call setLocalEnv('WL_HOME', $wls) # Update the target call defineTarget($tgt) # Request a new packaging var $pkg = true } incr $dur,time() # Display the errors loop $key (keys(%STA)) {if $STA{$key} {var $msg = nvl($ERR{$key},$key) echo 'ERROR: ',$msg call push(@err,concat($oid,': ',$msg)) } } # Log the setup details call log('OCM','setup',$mod,$dur,$msg,$ttl) } # Configure OCM in the specified instance home loop $tgt (${COL.TARGET/i}->grep('^W_CCR_CONFIG$','rw')) {var ($mod) = $tgt->set_value('W_CCR_CONFIG') var $oid = $tgt->get_oid var ($dur,$msg,%STA) = (0,'') # Find the corresponding OCM software decr $dur,time() var $par = $tgt->get_first('I_ORACLE_HOME') var $ccr = $par->get_first('D_CCR_HOME') var $dir = $tgt->get_first('D_INSTANCE_HOME') # Configure the instance when the OCM is available if ?testDir('d',$ccr) {call setLocalEnv('ORACLE_CONFIG_HOME',$dir) if ?testFile($MOD,catFile($ccr,'bin',$configCCR)) {call do_config(concat('CONFIG=',$oid),lastCommand(),$mod) call defineTarget($tgt) } elsif ?testFile($MOD,catFile($ccr,'bin',$setupCCR)) {call do_setup(concat('OI=',$oid),$par,$ccr,$mod) call defineTarget($tgt) call defineTarget($par) } } incr $dur,time() # Display the errors loop $key (keys(%STA)) {if $STA{$key} {if exists($ERR{$key}) var $msg = $ERR{$key} elsif exists($ERR{key($key)}) var $msg = sprintf($ERR{key($key)},value($key)) else var $msg = $key echo 'ERROR: ',$msg call push(@err,concat($oid,': ',$msg)) } } # Log the setup details call log('OCM','config',$mod,$dur,$msg,$ttl) } call setLocalEnv('ORACLE_CONFIG_HOME',$env) # Store the errors if @err var ${STA.RDA.OCM.T_RUN:'OCM installation error'} = \ join('%BR% - ','OCM-9005: A setup error occurred: ',@err) # Update the module status and the post treatments var ${SET.RDA.OCM.T_POST_PACKAGE_INIT} = undef if $pkg {var ${SET.RDA.OCM.B_IN_USE} = true var ${STA.RDA.OCM.S_RUN} = 'pending' var @{COL.PACKAGE.T_FINALIZE} = (\ grep(@{COL.PACKAGE.T_FINALIZE},'^RDA:DC(end|load|ocm)$','v'),\ 'RDA:DCocm','RDA:DCload','RDA:DCend') } =begin credits =over 10 =item RDA 4.20: Wes Root =item RDA 4.31: Maria Salzberger. =back =end credits =head1 COPYRIGHT NOTICE Copyright (c) 2002, 2016, Oracle and/or its affiliates. All rights reserved. =head1 TRADEMARK NOTICE Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners. =cut