# DCsoa.cfg: Collects Oracle SOA Suite Information # $Id: DCsoa.cfg,v 1.47 2015/10/28 11:13:06 RDA Exp $ # ARCS: $Header: /home/cvs/cvs/RDA_8/src/scripting/lib/collect/OFM/DCsoa.cfg,v 1.47 2015/10/28 11:13:06 RDA Exp $ # # Copyright (c) 2002, 2016, Oracle and/or its affiliates. All rights reserved. # # Change history # 20151028 KRA Improve text on OFM 12c. ############################################################################### # Collect the Oracle SOA setup information ############################################################################### #------------------------------------------------------------------------------ # Module definition #------------------------------------------------------------------------------ col=${B_IN_USE} dsc='Collects Oracle SOA Suite Information' man='Applies to Oracle SOA Suite 11g and later' pre=RDA:DCbegin req=?B_REQ_IREQ:OFM:DCireq,?B_REQ_WREQ:OFM:DCwreq rpt=B_IN_USE tgt=${I_OH/C} trg=?B_REQ_IREQ:OFM:DCireq,?B_REQ_WREQ:OFM:DCwreq var=not_used # Flow:in_use,B_IN_USE,D_ORACLE_PARENT exe=sdcl { "if ${SET.RDA.BEGIN.I_ORACLE_HOME} "{var $itm = last " var $ORACLE_HOME = $itm->get_first('D_ORACLE_HOME') " if ${I_OH/M} " var ${I_OH/T} = $itm " keep $ORACLE_HOME "} "var ${B_REQ_IREQ/T} = undef "var ${B_REQ_WREQ/T} = undef "var @{AUX.var} = \ " cond(${AUX.N_DEPTH},list('D_ORACLE_PARENT'),\ " ${PRF.B_TESTS},list('in_use'),\ " list('B_IN_USE')) " "macro check_domain "{loop $dom (findDir($arg[0],'^\.+$','npv')) " {if grepFile(catFile($dom,'config','config.xml'),'^${D_ORACLE_HOME},\ " 'T_ORACLE_HOME'=>${D_ORACLE_HOME},\ " 'T_TITLE'=>"Default home ${D_ORACLE_HOME}"})) "if findDir($top,'^(jdk\d+|jrockit_\d+)','fp') " var ${D_JAVA_HOME:'Java home'} = first } #------------------------------------------------------------------------------ # Setting definitions for SOA-based setup #------------------------------------------------------------------------------ [in_use] typ=B dft=true dsc='Is Oracle SOA Suite information requested?' nam=B_IN_USE var=set_detail [not_used] typ=B dft=false dsc='Is Oracle SOA Suite information requested?' nam=B_IN_USE [B_IN_USE] typ=B dft=${AUX.B_SELECTED} dsc='Is Oracle SOA Suite information requested?' inp='Should RDA analyze Oracle SOA Suite (Y/N)?' lvl=cond(${AUX.B_SELECTED},3,0) var=true:W_DETAIL [W_DETAIL] typ=M bef='Oracle SOA Suite Data Collection Type:' dft='MAX' dsc='Oracle SOA Suite collection type' err="Enter a number from 1 to ${AUX.N_ITEMS}" inp="\nEnter the item number" itm=[MIN=>'Perform minimal collection',\ MAX=>'Perform maximal collection',\ BAS=>'Perform basic collection'] lvl=3 mnu=(1,2) var=BAS:B_DISTINCT_HOME:\ MAX:B_DISTINCT_HOME:\ MIN:B_DISTINCT_HOME:\ not_used [set_detail] typ=T dft=${PRF.W_DETAIL:'MAX'} dsc='Oracle SOA Suite collection type' nam=W_DETAIL var=BAS:B_DISTINCT_HOME:\ MAX:B_DISTINCT_HOME:\ MIN:B_DISTINCT_HOME:\ not_used [B_DISTINCT_HOME] typ=B dft=false dsc='Is SOA installed in another Oracle home?' inp="Is SOA installed in an Oracle home other than '${VAR.ORACLE_HOME}' (Y/N)?" var=false:oracle_home,chk_home:\ D_ORACLE_HOME [oracle_home] typ=D dft=$ORACLE_HOME dsc='SOA Oracle home' nam=D_ORACLE_HOME [chk_home] typ=D alt=comment,not_used dft=catDir(${D_ORACLE_HOME},'soa') dsc='SOA home' nam=- var=set_home_target,chk_detail [comment] typ=C dsc='Report bad SOA Oracle home' inp='The specified Oracle SOA Suite home directory does not contain some \ Oracle SOA Suite installation related-files. The collection is disabled.' vis=false [D_ORACLE_HOME] typ=D dft=(${SET.RDA.BEGIN.D_ORACLE_HOME},\ ${ENV.SOA_ORACLE_HOME}) dsc='SOA Oracle home' inp='Enter the SOA Oracle home to be analyzed' nam=- ref=is_valid_home('D_ORACLE_HOME',last) val=W var=exists:set_home_target,chk_detail:\ not_used [set_home_target] typ=I cls='OH' dft=nvl(findItem('OH','D_ORACLE_HOME',${D_ORACLE_HOME}),\ defineTarget('OH',{D_ORACLE_HOME=>${D_ORACLE_HOME},\ T_ORACLE_HOME=>${D_ORACLE_HOME},\ T_TITLE=>"SOA Oracle home ${D_ORACLE_HOME}"})) dsc='Target associated with the SOA Oracle home' nam=I_OH vis=false [chk_detail] typ=T dft=${W_DETAIL} dsc='Apply the collection-related setup' nam=- var=BAS:D_DOMAIN_ROOT:\ MAX:B_INTERIM,set_req_common,D_DOMAIN_ROOT,B_INFRA,chk_dump,B_ALT_JDK:\ MIN:B_INTERIM,set_req_common,D_DOMAIN_ROOT,chk_dump [B_INTERIM] typ=B dft=false dsc='Collect the file/directory list for the interim patches' inp='Do you want to collect the file and directory list for the interim \ patches in inventory (Y/N)?' lvl=6 #------------------------------------------------------------------------------ # Setting definitions for Oracle common home #------------------------------------------------------------------------------ [set_req_common] typ=B dft=false dsc='Does SOA require Oracle instance request handler execution?' nam=B_REQ_IREQ exe=sdcl { "var $flg = false "if ${I_COMMON_HOME/P} "{var $tgt = last " if ?testDir('dr',catDir(${D_ORACLE_HOME},'inventory','distributions')) " {if compare('eq',${W_DETAIL},'MAX') " {var ${MOD.IREQ_OFM_SOA_CH.I_COMMON_HOME:\ " 'Target associated with the Oracle common home'} = $tgt " var ${MOD.IREQ_OFM_SOA_CH.T_CH_FOCUS:\ " 'Focus areas for common home collection'} = \ " 'Generic,Manifest,WlsGeneric' " var $flg = true " } " } " else " {var ${MOD.IREQ_OFM_SOA_CH.I_COMMON_HOME:\ " 'Target associated with the Oracle common home'} = $tgt " var ${MOD.IREQ_OFM_SOA_CH.T_CH_FOCUS:\ " 'Focus areas for common home collection'} = \ " check(${W_DETAIL},'^MIN$','Generic','Generic,Manifest,WlsGeneric') " var $flg = true " } "} "var ${AUX.dft} = $flg } #------------------------------------------------------------------------------ # Setting definitions for Oracle WebLogic Server #------------------------------------------------------------------------------ [D_DOMAIN_ROOT] typ=D dsc='Domain root directory' fmt='<'Perform offline collection',\ ON =>'Perform online collection (using WLS connection)'] val=F #------------------------------------------------------------------------------ # Select the domain(s) #------------------------------------------------------------------------------ [I_DOMAINS] typ=I cls='DOM' dsc='Oracle WebLogic domain target list' end='.' exe=sdcl { "var ($top,@itm,%dom,%dup,%SERVERS) = (${D_DOMAIN_ROOT}) "keep %SERVERS "if ${PRF/B_OFM_IPS} "{var $dir = cleanNative([$top,${PRF/T_DOMAIN},'']) " var $dom{getShortPath($dir,true)} = [$top,${PRF/T_DOMAIN},$dir] "} "elsif ${T_DOMAINS/E} "{var ($lst,$srv) = () " if ${T_SERVERS/E} " {if compare('eq',last,'HASH') " var $srv = ${T_SERVERS} " else " var $lst = [@{T_SERVERS}] " } " loop $nam (@{T_DOMAINS}) " {var $dir = cleanNative([$top,$nam,'']) " if grepFile(catFile($dir,'config','config.xml'),\ " '^{$nam} " } " } "} "elsif findDir($top,'^\.+$','nv') "{loop $sub (last) " {next !grepFile(catFile($top,$sub,'config','config.xml'),\ " '^true,\ " B_MISSING_HOME=>true,\ " B_MISSING_PRODUCT=>true,\ " B_MISSING_WL_HOME=>true,\ " D_DOMAIN_HOME=>$key,\ " D_DOMAIN_ROOT=>$top,\ " T_DOMAIN_NAME=>$sub}) " next !?$tgt->get_attr('BEA_HOME') " next !?testFile('f',catFile(last,'domain-registry.xml')) " next exists($dup{$reg = last}) " loop $xml (xmlFind(xmlLoadFile($reg),'domain-registry/domain')) " {var $dir = cleanNative([xmlValue($xml,'location'),'']) " if grepFile(catFile($dir,'config','config.xml'),'^',length($dir),length($dom{$key}->[2]))) " {if expr('>',scalar(@dir = splitDir($dir)),1) " {var $nam = pop(@dir) " var $dom{getShortPath($dir,true)} = [catNative(@dir,''),$nam,$dir] " } " } " } " } " var $dup{$reg} = true " } "} "loop $dir (keys(%dom)) " call push(@itm,\ " nvl(findItem('DOM','D_DOMAIN_HOME',$dir,true),\ " defineTarget('DOM',{D_DOMAIN_ROOT=>$top = $dom{$dir}->[0],\ " T_DOMAIN_NAME=>$nam = $dom{$dir}->[1],\ " T_TITLE=>"Domain ${VAR.nam} (in ${VAR.top})"}))) "var $dft = undef "if ?$dom{$dir = getShortPath(${ENV.DOMAIN_HOME},true)} " var $dft = findItem('DOM','D_DOMAIN_HOME',$dir,true) "if ?$dft " var ${AUX.dft} = last "else " var ${AUX.dft} = [@itm] "if expr('==',scalar(@itm),1) "{if expr('>=',${CUR.N_LEVEL},${PRF/N_OFM_LEVEL:0}) " var ${AUX.vis} = true " else " {var ${AUX.vis} = false " call unshift(@{AUX.W_NEXT},'domain_comment') " } "} } [domain_comment] typ=C dsc='Report RDA has determined the domain home to collect' inp="\nOracle WebLogic Server domain home target list:\n\ When RDA discovers only one domain home, domain home list selection \ is suppressed.\n\ RDA will target the domain home:\n\ \040'${T_DOMAIN_NAME/P}' (in ${D_DOMAIN_ROOT/P})" vis=false [set_req_domain] typ=B dft=false dsc='Does SOA require Oracle WebLogic request handler execution?' nam=B_REQ_WREQ exe=sdcl { "var ($flg,%DOMAINS,%USERS) = (false) "keep %DOMAINS,%USERS "loop $tgt (@{I_DOMAINS}) "{var $dir = $tgt->get_first('D_DOMAIN_HOME') " next !grepFile(catFile($dir,'config','config.xml'),'^get_oid " var ${MOD.WREQ_OFM_SOA_${VAR.oid}.I_DOMAIN:\ " 'Target associated with the domain'} = $tgt " if compare('eq',${W_DETAIL},'BAS') " {var ${MOD.WREQ_OFM_SOA_${VAR.oid}.T_TOP_FOCUS:\ " 'Focus areas for Oracle WebLogic Server Middleware collection'} = \ " 'Basic,Generic' " var ${MOD.WREQ_OFM_SOA_${VAR.oid}.T_DOM_FOCUS:\ " 'Focus areas for Oracle WebLogic Server domain collection'} = \ " check(${W_TYPE},'^ON$','ExtSnmCfg,MinDomCfg,MinSrvCfg,NodDomCfg,NodDomLog,\ " OFM_SOA,WlstOn,WlstOnSum,WlstOff,WlstOffSum',\ " 'ExtSnmCfg,MinDomCfg,MinSrvCfg,NodDomCfg,NodDomLog,\ " OFM_SOA,WlstOff,WlstOffSum') " } " elsif compare('eq',${W_DETAIL},'MIN') " {var ${MOD.WREQ_OFM_SOA_${VAR.oid}.T_TOP_FOCUS:\ " 'Focus areas for Oracle WebLogic Server Middleware collection'} = \ " 'Basic,Generic' " var ${MOD.WREQ_OFM_SOA_${VAR.oid}.T_DOM_FOCUS:\ " 'Focus areas for Oracle WebLogic Server domain collection'} = \ " check(${W_TYPE},'^ON$','ExtSnmCfg,MinDomCfg,MinSrvCfg,NodDomCfg,NodDomLog,\ " OFM_SOA,WlstOn,WlstOnSum,WlstOff,WlstOffSum',\ " 'ExtSnmCfg,MinDomCfg,MinSrvCfg,NodDomCfg,NodDomLog,\ " OFM_SOA,WlstOff,WlstOffSum') " } " else " {var ${MOD.WREQ_OFM_SOA_${VAR.oid}.T_TOP_FOCUS:\ " 'Focus areas for Oracle WebLogic Server Middleware collection'} = \ " 'Generic,Manifest' " var ${MOD.WREQ_OFM_SOA_${VAR.oid}.T_DOM_FOCUS:\ " 'Focus areas for Oracle WebLogic Server domain collection'} = \ " check(${W_TYPE},'^ON$','ExtDomCfg,ExtSnmCfg,ExtSrvCfg,MinDomCfg,MinSrvCfg,\ " NodDomCfg,NodDomLog,OFM_ASA,OFM_SOA,SrvErr,WlstOn,\ " WlstOnSum,WlstDomCfg,WlstDomClu,WlstDomRun,\ " WlstDomSrv,WlstSrvCfg,WlstSrvExp,WlstSrvImg,\ " WlstSrvRun,WlstSrvThd,WlstOff,WlstOffSum',\ " 'ExtDomCfg,ExtSnmCfg,ExtSrvCfg,MinDomCfg,MinSrvCfg,\ " NodDomCfg,NodDomLog,OFM_ASA,OFM_SOA,SrvErr,\ " WlstOff,WlstOffSum') " } " var $DOMAINS{${MOD.WREQ_OFM_SOA_${VAR.oid}/I}->get_path} = $tgt " var $flg = true "} "var ${AUX.dft} = $flg } [loop_domains] typ=L dft=keys(%DOMAINS) dsc='Iterate on each domain' nam=-RUN/SDSL.K_OID var=loop:T_SERVERS,chk_wls_type #------------------------------------------------------------------------------ # Select the server(s) #------------------------------------------------------------------------------ [T_SERVERS] typ=M bef="\nServer list for '${T_TMP_NAM}' - domain home (in ${D_TMP_DOM}):" def="COL/${RUN.SDSL.K_OID}" dft='*' dsc='Domain server list' itm=[@{T_TMP_ITM}] pck=true val=E exe=sdcl { "var ($tgt,@itm) = ($DOMAINS{${RUN.SDSL.K_OID}}) "if ${PRF/B_OFM_IPS} " call push(@itm,${PRF/T_SERVER},${PRF/T_SERVER}) "elsif exists($SERVERS{$top = $tgt->get_first('D_DOMAIN_HOME')}) "{loop $srv (@{$SERVERS{$top}}) " {if ?testDir('d',catDir($top,'servers',$srv,'logs')) " call push(@itm,$srv,$srv) " } "} "else "{loop $srv (findDir(catDir($top,'servers'),'^[^\.]+$','n')) " {if ?testDir('d',catDir($top,'servers',$srv,'logs')) " call push(@itm,$srv,$srv) " } "} "var ${T_TMP_NAM/T} = $tgt->get_first('T_DOMAIN_NAME') "var ${D_TMP_DOM/T} = \ " catNative($tgt->get_first('D_DOMAIN_ROOT'),${T_TMP_NAM},'') "var @{T_TMP_ITM/T} = @itm "if ${PRF/N_OFM_LEVEL} "{var $cnt = scalar(@itm) " if or(expr('==',$cnt,2),\ " and(expr('==',$cnt,4),grep(@itm,'^AdminServer$','if'))) " {var ${AUX.lvl} = ${PRF/N_OFM_LEVEL} " call unshift(@{AUX.W_NEXT},'server_comment') " } " else " var ${AUX.bef} = "\nServer list for '${T_TMP_NAM}' - domain home \ " (in ${D_TMP_DOM}):\n\ " Two or more managed servers have been discovered." "} } [server_comment] typ=C def="COL/${RUN.SDSL.K_OID}" dsc='Report RDA has determined the server(s) to collect' inp="\nServer list for '${T_TMP_NAM}' - domain home (in ${D_TMP_DOM}):\n\ When RDA discovers only one managed server and/or an AdminServer, server \ list selection is suppressed.\n\ RDA will target the server(s):\n\ ${T_TMP_SERVERS}\n " # stopwords AdminServer vis=false exe=sdcl { "var ($cnt,$str) = (0) "loop $srv (@{T_SERVERS}) " var $str = join("\n",$str,sprintf(" %d %s",incr($cnt),$srv)) "var ${T_TMP_SERVERS/T} = $str } #------------------------------------------------------------------------------ # Identify the user #------------------------------------------------------------------------------ [chk_wls_type] typ=T dft=${W_TYPE} dsc='Apply the type-related setup' nam=- var=ON:T_USER [T_USER] typ=T def="COL/${RUN.SDSL.K_OID}" dsc='Oracle WebLogic server user name' nam=- ref=is_valid_user('T_USER',last) val=E exe=sdcl { "if ?$USERS{${T_TMP_NAM}} "{var ${AUX.dft} = last " var ${AUX.err} = 'User name cannot be empty and should not contain spacing \ " characters.' " var ${AUX.inp} = "Enter the user name to connect to the AdminServer of \ " '${T_TMP_NAM}' domain (${D_TMP_DOM})" " var ${AUX.lvl} = 3 "} "else "{var $tgt = addTarget($DOMAINS{${RUN.SDSL.K_OID}}) " if length($usr = $tgt->get_attr('DOMAIN_USER')) " {var ${AUX.dft} = $usr " var ${AUX.clr} = '-' " var ${AUX.err} = 'User name should not contain spacing characters.' " var ${AUX.inp} = "Enter the user name to connect to the AdminServer of \ " '${T_TMP_NAM}' domain (${D_TMP_DOM}). If a dash \ " (${AUX.clr}) is specified as input, default user name \ " retrieved from the domain configuration file is \ " considered." " var ${AUX.lvl} = 3 " } " else " {var ${AUX.dft} = 'weblogic' " var ${AUX.err} = 'User name cannot be empty and should not contain spacing \ " characters.' " var ${AUX.inp} = "Enter the user name to connect to the AdminServer of \ " '${T_TMP_NAM}' domain (${D_TMP_DOM})" " } "} } #------------------------------------------------------------------------------ # Database settings #------------------------------------------------------------------------------ [B_INFRA] typ=B dft=false dsc='Should RDA collect the information from the infrastructure database?' inp='Do you want to query data from the infrastructure database (Y/N)?' var=true:B_DB_AUTO,B_DEHYD_STORE [B_DB_AUTO] typ=B dft=true dsc='Do you want RDA to get the database connection details automatically?' inp='Do you want RDA to get the database connection details \ automatically (Y/N)?' lvl=6 var=true:set_target:\ I_DB [set_target] typ=B dsc='Determine the query target' nam=- exe=sdcl { "if !?${I_DB} "{var ($src,$tgt,$usr,%ds) = () " loop $key (keys(%DOMAINS)) " {var $tgt = $DOMAINS{$key} " var $dir = $tgt->get_first('D_DOMAIN_HOME') " next !?$fil = testFile('r',catFile($dir,'config','config.xml')) " call find_datasource(\%ds,$dir,$fil,'SOALocalTxDataSource') " var ($usr,$src) = get_db_details($obj = \ " xmlLoadFile($ds{'SOALocalTxDataSource'})) " break $usr " call find_datasource(\%ds,$dir,$fil,'SOADataSource') " var ($usr,$src) = get_db_details($obj = xmlLoadFile($ds{'SOADataSource'})) " break $usr " if xmlFind($obj,'jdbc-data-source/jdbc-data-source-params/data-source-list') " {loop $nam (split(',',xmlData(last))) " {call find_datasource(\%ds,$dir,$fil,$nam) " var ($usr,$src) = get_db_details(xmlLoadFile($ds{$nam})) " break $usr " } " } " } " " # Determine the corresponding query target " var $ttl = 'OFM.SOA queries' " if findItem('DQ',{B_DEDICATED=>true,\ " T_TITLE=>$ttl}) " var $db = defineTarget(last,{I_DRIVER=>$tgt,\ " T_SOURCE=>$src,\ " T_TYPE=>'JDBC',\ " T_USER=>$usr}) " else " var $db = defineTarget('DQ',{B_DEDICATED=>true,\ " I_DRIVER=>$tgt,\ " T_SOURCE=>$src,\ " T_TITLE=>$ttl,\ " T_TYPE=>'JDBC',\ " T_USER=>$usr}) " var ${I_DB:'Database to analyze'} = $db "} } [I_DB] typ=I cls='DQ' dft=${SET.DB.DB.I_DB} dsc='Database to analyze' exe=sdcl { "var ${RUN.CLASS.DQ.I_DRIVER} = ${MOD.WREQ_OFM_SOA_DOM_T0001.I_DOMAIN} } [B_DEHYD_STORE] typ=B dft=true dsc='Do you want RDA to get the Dehydration Store / Repository Profile details?' inp='Do you want RDA to get the Dehydration Store / Repository Profile \ details (Y/N)?' lvl=6 #------------------------------------------------------------------------------ # Common setting definitions #------------------------------------------------------------------------------ [chk_dump] typ=T dft=${W_TYPE} dsc='Apply the type-related setup' nam=- var=ON:B_COMP_DIAG_DUMP,B_WSDL_DIAG_DUMP [B_COMP_DIAG_DUMP] typ=B dft=true dsc='Do you want RDA to collect the SOA diagnostic dump to get composite info?' inp='Do you want RDA to collect the SOA diagnostic dump to get composite \ information (Y/N)?' [B_WSDL_DIAG_DUMP] typ=B dft=true dsc='Do you want RDA to collect the SOA diagnostic dump to get WSDL info?' inp='Do you want RDA to collect the SOA diagnostic dump to get WSDL \ information (Y/N)?' [B_ALT_JDK] typ=B dft=false dsc="Is an alternative JDK used other than '${D_TMP_JDK}'?" inp="Is an alternative JDK used other than '${D_TMP_JDK}' (Y/N)?" var=false:jdk:\ D_JDK exe=sdcl { "if !?${D_TMP_JDK} "{if ?${SET.RDA.BEGIN.D_JAVA_HOME} " var ${D_TMP_JDK/T} = last " elsif ?${ENV.BEA_JAVA_HOME} " var ${D_TMP_JDK/T} = last " elsif findDir(testParent('d',${D_ORACLE_HOME}),'^(jdk\d+|jrockit_\d+)','fp') " var ${D_TMP_JDK/T} = first " else " var ${D_TMP_JDK/T} = catDir(${D_ORACLE_HOME},'jdk') "} } [jdk] typ=D dft=${D_TMP_JDK} dsc='Location for the JDK used for the Oracle SOA Suite' nam=D_JDK [D_JDK] typ=D dft=${D_TMP_JDK} dsc='Location for the JDK used for the Oracle SOA Suite' err='Warning: The specified directory does not -yet- exist' inp='Enter the location of the JDK used for Oracle SOA Suite' val=W