From 1d85f6073e31c982910f27b23b316c8f8bf2d217 Mon Sep 17 00:00:00 2001 From: Richard Killen Date: Mon, 17 Dec 2018 17:50:09 -0600 Subject: [PATCH 1/2] Remove JRF elements during discover --- core/src/main/python/discover.py | 8 ++ .../wlsdeploy/tool/create/domain_typedef.py | 42 ++++++++++ .../coherence_resources_discoverer.py | 22 +++-- .../discover/common_resources_discoverer.py | 44 ++++++---- .../tool/discover/deployments_discoverer.py | 37 +++++---- .../discover/global_resources_discoverer.py | 28 ++++--- .../deploy/messages/wlsdeploy_rb.properties | 7 ++ core/src/main/typedefs/JRF.json | 83 +++++++++++++++++++ 8 files changed, 220 insertions(+), 51 deletions(-) diff --git a/core/src/main/python/discover.py b/core/src/main/python/discover.py index 0dfc3c873..9ad612ab3 100644 --- a/core/src/main/python/discover.py +++ b/core/src/main/python/discover.py @@ -34,6 +34,7 @@ from wlsdeploy.aliases.wlst_modes import WlstModes from wlsdeploy.exception import exception_helper from wlsdeploy.logging.platform_logger import PlatformLogger +from wlsdeploy.tool.create.domain_typedef import DomainTypedef from wlsdeploy.tool.discover import discoverer from wlsdeploy.tool.discover.deployments_discoverer import DeploymentsDiscoverer from wlsdeploy.tool.discover.domain_info_discoverer import DomainInfoDiscoverer @@ -43,6 +44,7 @@ from wlsdeploy.tool.util import filter_helper from wlsdeploy.tool.util.variable_injector import VariableInjector from wlsdeploy.tool.validate.validator import Validator +from wlsdeploy.util import dictionary_utils from wlsdeploy.util import getcreds from wlsdeploy.util import model_translator from wlsdeploy.util import tool_exit @@ -85,6 +87,12 @@ def __process_args(args): cla_util = CommandLineArgUtil(_program_name, __required_arguments, __optional_arguments) required_arg_map, optional_arg_map = cla_util.process_args(args) + domain_type = dictionary_utils.get_element(optional_arg_map, CommandLineArgUtil.DOMAIN_TYPE_SWITCH) + if domain_type is None: + domain_type = 'WLS' + domain_typedef = DomainTypedef(_program_name, domain_type) + optional_arg_map[CommandLineArgUtil.DOMAIN_TYPEDEF] = domain_typedef + __verify_required_args_present(required_arg_map) __wlst_mode = __process_online_args(optional_arg_map) __process_archive_filename_arg(required_arg_map) diff --git a/core/src/main/python/wlsdeploy/tool/create/domain_typedef.py b/core/src/main/python/wlsdeploy/tool/create/domain_typedef.py index 67f445a5d..9f838497c 100644 --- a/core/src/main/python/wlsdeploy/tool/create/domain_typedef.py +++ b/core/src/main/python/wlsdeploy/tool/create/domain_typedef.py @@ -24,6 +24,9 @@ class DomainTypedef(object): __domain_typedefs_location = os.path.join(os.environ.get('WLSDEPLOY_HOME'), 'lib', 'typedefs') __domain_typedef_extension = '.json' + __wild_card_suffix = '%%' + __wild_card_suffix_len = len(__wild_card_suffix) + def __init__(self, program_name, domain_type): """ The DomainTypedef constructor. @@ -61,6 +64,12 @@ def __init__(self, program_name, domain_type): self._paths_resolved = False self._model_context = None self._version_typedef_name = None + + if 'system-elements' in self._domain_typedefs_dict: + self._system_elements = self._domain_typedefs_dict['system-elements'] + else: + self._system_elements = {} + return def set_model_context(self, model_context): @@ -110,6 +119,39 @@ def get_rcu_schemas(self): # resolution for create.py argument processing. return list(self._domain_typedef['rcuSchemas']) + def is_system_app(self, name): + return self._is_system_name(name, 'apps') + + def is_system_shared_library(self, name): + return self._is_system_name(name, 'shared-libraries') + + def is_system_datasource(self, name): + return self._is_system_name(name, 'datasources') + + def is_system_coherence_cluster(self, name): + return self._is_system_name(name, 'coherence-clusters') + + def is_system_wldf(self, name): + return self._is_system_name(name, 'wldf') + + def is_system_startup_class(self, name): + return self._is_system_name(name, 'startup-classes') + + def is_system_shutdown_class(self, name): + return self._is_system_name(name, 'shutdown-classes') + + def _is_system_name(self, name, key): + if key in self._system_elements: + system_names = self._system_elements[key] + for system_name in system_names: + if system_name.endswith(self.__wild_card_suffix): + prefix = system_name[0:0 - self.__wild_card_suffix_len] + if name.startswith(prefix): + return True + elif system_name == name: + return True + return False + def __resolve_paths(self): """ Resolve any tokens in the template paths. diff --git a/core/src/main/python/wlsdeploy/tool/discover/coherence_resources_discoverer.py b/core/src/main/python/wlsdeploy/tool/discover/coherence_resources_discoverer.py index ad82d9cc5..47b743555 100644 --- a/core/src/main/python/wlsdeploy/tool/discover/coherence_resources_discoverer.py +++ b/core/src/main/python/wlsdeploy/tool/discover/coherence_resources_discoverer.py @@ -74,17 +74,21 @@ def get_coherence_clusters(self): coherence_clusters = self._find_names_in_folder(location) if coherence_clusters is not None: _logger.info('WLSDPLY-06311', len(coherence_clusters), class_name=_class_name, method_name=_method_name) + typedef = self._model_context.get_domain_typedef() name_token = self._alias_helper.get_name_token(location) for coherence_cluster in coherence_clusters: - _logger.info('WLSDPLY-06312', coherence_cluster, class_name=_class_name, method_name=_method_name) - location.add_name_token(name_token, coherence_cluster) - result[coherence_cluster] = OrderedDict() - self._populate_model_parameters(result[coherence_cluster], location) - model_subfolder_name, subfolder_result = self.get_coherence_cache_config(location) - discoverer.add_to_model_if_not_empty(result[coherence_cluster], model_subfolder_name, subfolder_result) - model_subfolder_name, subfolder_result = self.get_coherence_resource(location) - discoverer.add_to_model_if_not_empty(result[coherence_cluster], model_subfolder_name, subfolder_result) - location.remove_name_token(name_token) + if typedef.is_system_coherence_cluster(coherence_cluster): + _logger.info('WLSDPLY-06322', coherence_cluster, class_name=_class_name, method_name=_method_name) + else: + _logger.info('WLSDPLY-06312', coherence_cluster, class_name=_class_name, method_name=_method_name) + location.add_name_token(name_token, coherence_cluster) + result[coherence_cluster] = OrderedDict() + self._populate_model_parameters(result[coherence_cluster], location) + model_subfolder_name, subfolder_result = self.get_coherence_cache_config(location) + discoverer.add_to_model_if_not_empty(result[coherence_cluster], model_subfolder_name, subfolder_result) + model_subfolder_name, subfolder_result = self.get_coherence_resource(location) + discoverer.add_to_model_if_not_empty(result[coherence_cluster], model_subfolder_name, subfolder_result) + location.remove_name_token(name_token) _logger.exiting(class_name=_class_name, method_name=_method_name, result=result) return model_top_folder_name, result diff --git a/core/src/main/python/wlsdeploy/tool/discover/common_resources_discoverer.py b/core/src/main/python/wlsdeploy/tool/discover/common_resources_discoverer.py index a257f2ddd..eeb8c0b87 100644 --- a/core/src/main/python/wlsdeploy/tool/discover/common_resources_discoverer.py +++ b/core/src/main/python/wlsdeploy/tool/discover/common_resources_discoverer.py @@ -83,21 +83,25 @@ def get_datasources(self): datasources = self._find_names_in_folder(location) if datasources is not None: _logger.info('WLSDPLY-06340', len(datasources), class_name=_class_name, method_name=_method_name) + typedef = self._model_context.get_domain_typedef() name_token = self._alias_helper.get_name_token(location) for datasource in datasources: - _logger.info('WLSDPLY-06341', datasource, class_name=_class_name, method_name=_method_name) - result[datasource] = OrderedDict() - location.add_name_token(name_token, datasource) - self._populate_model_parameters(result[datasource], location) + if typedef.is_system_datasource(datasource): + _logger.info('WLSDPLY-06361', datasource, class_name=_class_name, method_name=_method_name) + else: + _logger.info('WLSDPLY-06341', datasource, class_name=_class_name, method_name=_method_name) + result[datasource] = OrderedDict() + location.add_name_token(name_token, datasource) + self._populate_model_parameters(result[datasource], location) - location.append_location(model_second_folder) - if self.wlst_cd(self._alias_helper.get_wlst_attributes_path(location), location): - result[datasource][model_second_folder] = OrderedDict() - resource_result = result[datasource][model_second_folder] - self._populate_model_parameters(resource_result, location) - self._discover_subfolders(resource_result, location) - location.remove_name_token(name_token) - location.pop_location() + location.append_location(model_second_folder) + if self.wlst_cd(self._alias_helper.get_wlst_attributes_path(location), location): + result[datasource][model_second_folder] = OrderedDict() + resource_result = result[datasource][model_second_folder] + self._populate_model_parameters(resource_result, location) + self._discover_subfolders(resource_result, location) + location.remove_name_token(name_token) + location.pop_location() _logger.exiting(class_name=_class_name, method_name=_method_name, result=result) return model_top_folder_name, result @@ -297,14 +301,18 @@ def get_wldf_system_resources(self): wldf_resources = self._find_names_in_folder(location) if wldf_resources is not None: _logger.info('WLSDPLY-06357', len(wldf_resources), class_name=_class_name, method_name=_method_name) + typedef = self._model_context.get_domain_typedef() name_token = self._alias_helper.get_name_token(location) for wldf_resource in wldf_resources: - _logger.info('WLSDPLY-06358', wldf_resource, class_name=_class_name, method_name=_method_name) - location.add_name_token(name_token, wldf_resource) - result[wldf_resource] = OrderedDict() - self._populate_model_parameters(result[wldf_resource], location) - self._discover_subfolders(result[wldf_resource], location) - location.remove_name_token(name_token) + if typedef.is_system_wldf(wldf_resource): + _logger.info('WLSDPLY-06362', wldf_resource, class_name=_class_name, method_name=_method_name) + else: + _logger.info('WLSDPLY-06358', wldf_resource, class_name=_class_name, method_name=_method_name) + location.add_name_token(name_token, wldf_resource) + result[wldf_resource] = OrderedDict() + self._populate_model_parameters(result[wldf_resource], location) + self._discover_subfolders(result[wldf_resource], location) + location.remove_name_token(name_token) _logger.exiting(class_name=_class_name, method_name=_method_name, result=model_top_folder_name) return model_top_folder_name, result diff --git a/core/src/main/python/wlsdeploy/tool/discover/deployments_discoverer.py b/core/src/main/python/wlsdeploy/tool/discover/deployments_discoverer.py index 7fbdb95c6..c5ce2151f 100644 --- a/core/src/main/python/wlsdeploy/tool/discover/deployments_discoverer.py +++ b/core/src/main/python/wlsdeploy/tool/discover/deployments_discoverer.py @@ -64,15 +64,19 @@ def get_shared_libraries(self): libraries = self._find_names_in_folder(location) if libraries: _logger.info('WLSDPLY-06381', len(libraries), class_name=_class_name, method_name=_method_name) + typedef = self._model_context.get_domain_typedef() name_token = self._alias_helper.get_name_token(location) for library in libraries: - _logger.info('WLSDPLY-06382', library, class_name=_class_name, method_name=_method_name) - location.add_name_token(name_token, library) - result[library] = OrderedDict() - self._populate_model_parameters(result[library], location) - self._add_shared_libraries_to_archive(library, result[library]) - self._discover_subfolders(result[library], location) - location.remove_name_token(name_token) + if typedef.is_system_shared_library(library): + _logger.info('WLSDPLY-06401', library, class_name=_class_name, method_name=_method_name) + else: + _logger.info('WLSDPLY-06382', library, class_name=_class_name, method_name=_method_name) + location.add_name_token(name_token, library) + result[library] = OrderedDict() + self._populate_model_parameters(result[library], location) + self._add_shared_libraries_to_archive(library, result[library]) + self._discover_subfolders(result[library], location) + location.remove_name_token(name_token) _logger.exiting(class_name=_class_name, method_name=_method_name, result=model_top_folder_name) return model_top_folder_name, result @@ -185,15 +189,20 @@ def get_applications(self): applications = self._find_names_in_folder(location) if applications: _logger.info('WLSDPLY-06391', len(applications), class_name=_class_name, method_name=_method_name) + typedef = self._model_context.get_domain_typedef() name_token = self._alias_helper.get_name_token(location) for application in applications: - _logger.info('WLSDPLY-06392', application, class_name=_class_name, method_name=_method_name) - location.add_name_token(name_token, application) - result[application] = OrderedDict() - self._populate_model_parameters(result[application], location) - self._add_application_to_archive(application, result[application]) - self._discover_subfolders(result[application], location) - location.remove_name_token(name_token) + if typedef.is_system_app(application): + _logger.info('WLSDPLY-06400', application, class_name=_class_name, method_name=_method_name) + else: + _logger.info('WLSDPLY-06392', application, class_name=_class_name, method_name=_method_name) + print(" application: " + str(application) + ": " + str(typedef.is_system_app(application))) + location.add_name_token(name_token, application) + result[application] = OrderedDict() + self._populate_model_parameters(result[application], location) + self._add_application_to_archive(application, result[application]) + self._discover_subfolders(result[application], location) + location.remove_name_token(name_token) _logger.exiting(class_name=_class_name, method_name=_method_name, result=result) return model_top_folder_name, result diff --git a/core/src/main/python/wlsdeploy/tool/discover/global_resources_discoverer.py b/core/src/main/python/wlsdeploy/tool/discover/global_resources_discoverer.py index 740df0f58..01655249f 100644 --- a/core/src/main/python/wlsdeploy/tool/discover/global_resources_discoverer.py +++ b/core/src/main/python/wlsdeploy/tool/discover/global_resources_discoverer.py @@ -82,13 +82,17 @@ def get_startup_classes(self): startup_classes = self._find_names_in_folder(location) if startup_classes is not None: _logger.info('WLSDPLY-06442', len(startup_classes), class_name=_class_name, method_name=_method_name) + typedef = self._model_context.get_domain_typedef() name_token = self._alias_helper.get_name_token(location) for startup_class in startup_classes: - _logger.info('WLSDPLY-06443', startup_class, class_name=_class_name, method_name=_method_name) - result[startup_class] = OrderedDict() - location.add_name_token(name_token, startup_class) - self._populate_model_parameters(result[startup_class], location) - location.remove_name_token(name_token) + if typedef.is_system_startup_class(startup_class): + _logger.info('WLSDPLY-06447', startup_class, class_name=_class_name, method_name=_method_name) + else: + _logger.info('WLSDPLY-06443', startup_class, class_name=_class_name, method_name=_method_name) + result[startup_class] = OrderedDict() + location.add_name_token(name_token, startup_class) + self._populate_model_parameters(result[startup_class], location) + location.remove_name_token(name_token) _logger.exiting(class_name=_class_name, method_name=_method_name, result=result) return model_top_folder_name, result @@ -107,13 +111,17 @@ def get_shutdown_classes(self): shutdown_classes = self._find_names_in_folder(location) if shutdown_classes is not None: _logger.info('WLSDPLY-06445', len(shutdown_classes), class_name=_class_name, method_name=_method_name) + typedef = self._model_context.get_domain_typedef() name_token = self._alias_helper.get_name_token(location) for shutdown_class in shutdown_classes: - _logger.info('WLSDPLY-06446', shutdown_class, class_name=_class_name, method_name=_method_name) - result[shutdown_class] = OrderedDict() - location.add_name_token(name_token, shutdown_class) - self._populate_model_parameters(result[shutdown_class], location) - location.remove_name_token(name_token) + if typedef.is_system_shutdown_class(shutdown_class): + _logger.info('WLSDPLY-06448', shutdown_class, class_name=_class_name, method_name=_method_name) + else: + _logger.info('WLSDPLY-06446', shutdown_class, class_name=_class_name, method_name=_method_name) + result[shutdown_class] = OrderedDict() + location.add_name_token(name_token, shutdown_class) + self._populate_model_parameters(result[shutdown_class], location) + location.remove_name_token(name_token) _logger.exiting(class_name=_class_name, method_name=_method_name, result=result) return model_top_folder_name, result diff --git a/core/src/main/resources/oracle/weblogic/deploy/messages/wlsdeploy_rb.properties b/core/src/main/resources/oracle/weblogic/deploy/messages/wlsdeploy_rb.properties index be04b20f8..e170e97bc 100644 --- a/core/src/main/resources/oracle/weblogic/deploy/messages/wlsdeploy_rb.properties +++ b/core/src/main/resources/oracle/weblogic/deploy/messages/wlsdeploy_rb.properties @@ -483,6 +483,7 @@ WLSDPLY-06319=Added Coherence Cluster {0} cache configuration file from location WLSDPLY-06320=Added Coherence Cluster {0} persistence directory {1} type {2} to archive file WLSDPLY-06321=Unable to access Coherence Cluster {0} cache configuration file {1} and will not add the file to \ the archive : {2} +WLSDPLY-06322=Skipping system Coherence Cluster System Resource {0} # common_resources_discoverer.py WLSDPLY-06340=Discovering {0} JDBC System Resources @@ -506,6 +507,8 @@ WLSDPLY-06357=Discovering {0} WLDF System Resources WLSDPLY-06358=Adding WLDF System Resource {0} WLSDPLY-06359=Collect script from location {0} for WLDF script action {1} WLSDPLY-06360=Unable to locate and add {0} Script file {1} to archive file : {2} +WLSDPLY-06361=Skipping system JDBC System Resource {0} +WLSDPLY-06362=Skipping system WLDF System Resource {0} # deployments_discoverer.py WLSDPLY-06380=Discovering domain model deployments @@ -533,6 +536,8 @@ WLSDPLY-06397=Unable to add application {0} binary {1} to archive : {2} WLSDPLY-06398=Application {0} has new source path location {1} which will match the archive file deployment location WLSDPLY-06399=Application {0} plan deployment has new source path location {1} which will match the \ archive file deployment location +WLSDPLY-06400=Skipping system application {0} +WLSDPLY-06401=Skipping system shared library {0} # domain_info_discoverer.py WLSDPLY-06420=Add the java archive files from the domain library {0} to the archive file @@ -546,6 +551,8 @@ WLSDPLY-06442=Discovering {0} Startup Classes WLSDPLY-06443=Adding StartupClass {0} WLSDPLY-06445=Discovering {0} Shutdown Classes WLSDPLY-06446=Adding ShutdownClass {0} +WLSDPLY-06447=Skipping system Startup Class {0} +WLSDPLY-06448=Skipping system Shutdown Class {0} # jms_resources_discoverer.py WLSDPLY-06460=Discovering JMS Resources diff --git a/core/src/main/typedefs/JRF.json b/core/src/main/typedefs/JRF.json index acb275f66..7c1888910 100644 --- a/core/src/main/typedefs/JRF.json +++ b/core/src/main/typedefs/JRF.json @@ -63,5 +63,88 @@ "serverGroupsToTarget": [ "JRF-MAN-SVR", "WSMPM-MAN-SVR" ], "rcuSchemas": [ "WLS", "MDS", "IAU", "IAU_VIEWER", "IAU_APPEND", "OPSS" ] } + }, + "system-elements": { + "apps": [ + "opss-rest", + "state-management-provider-memory-rar", + "DMS Application%%", + "coherence-transaction-rar", + "em" + ], + "coherence-clusters": [ + "defaultCoherenceCluster" + ], + "datasources": [ + "WLSSchemaDataSource", + "LocalSvcTblDataSource", + "opss-data-source", + "opss-audit-viewDS", + "opss-audit-DBDS", + "mds-owsm" + ], + "shared-libraries": [ + "adf.oracle.domain%%", + "adf.oracle.domain.webapp%%", + "adf.oracle.businesseditor%%", + "em_common%%", + "em_core_ppc_pojo_jar", + "em_error%%", + "em_sdkcore_ppc_public_pojo_jar", + "emas", + "emagentsdk_jar%%", + "emagentsdkimpl_jar%%", + "emagentsdkimplpriv_jar%%", + "emcore", + "emcore_jar", + "emcoresdk_jar%%", + "emcoreintsdk_jar%%", + "emcoresdkimpl_jar%%", + "emcorecommon_jar", + "emcoreconsole_jar", + "emcorepbs_jar", + "emcoreclient_jar", + "jsf%%", + "jstl%%", + "log4j_jar%%", + "odl.clickhistory%%", + "odl.clickhistory.webapp%%", + "ohw-rcf%%", + "ohw-uix%%", + "oracle.adf.dconfigbeans%%", + "oracle.adf.management%%", + "oracle.adf.desktopintegration.model%%", + "oracle.adf.desktopintegration%%", + "oracle.bi.jbips%%", + "oracle.bi.composer%%", + "oracle.bi.adf.model.slib%%", + "oracle.bi.adf.view.slib%%", + "oracle.bi.adf.webcenter.slib%%", + "oracle.dconfig-infra%%", + "oracle.jrf.system.filter", + "oracle.jsp.next%%", + "oracle.pwdgen%%", + "oracle.sdp.client%%", + "oracle.webcenter.composer%%", + "oracle.webcenter.skin%%", + "oracle.wsm.seedpolicies%%", + "orai18n-adf%%", + "owasp.esapi%%", + "UIX%%" + ], + "shutdown-classes": [ + "DMSShutdown" + ], + "startup-classes": [ + "WSM Startup Class", + "Web Services Startup Class", + "JRF Startup Class", + "ODL-Startup", + "DMS-Startup", + "AWT Application Context Startup Class" + ], + "wldf": [ + "Module-FMWDFW" + ] } } From 557827c107aa32584c866a4edf0045dbbf4289bd Mon Sep 17 00:00:00 2001 From: Richard Killen Date: Tue, 18 Dec 2018 10:11:42 -0600 Subject: [PATCH 2/2] Added checks for JMS and file stores; updated, sorted blacklists; added doc --- .../wlsdeploy/tool/create/domain_typedef.py | 81 +++++++++++++++++-- .../discover/common_resources_discoverer.py | 16 ++-- .../tool/discover/jms_resources_discoverer.py | 38 +++++---- .../deploy/messages/wlsdeploy_rb.properties | 3 + core/src/main/typedefs/JRF.json | 46 +++++++---- 5 files changed, 139 insertions(+), 45 deletions(-) diff --git a/core/src/main/python/wlsdeploy/tool/create/domain_typedef.py b/core/src/main/python/wlsdeploy/tool/create/domain_typedef.py index 9f838497c..ab0aa2df0 100644 --- a/core/src/main/python/wlsdeploy/tool/create/domain_typedef.py +++ b/core/src/main/python/wlsdeploy/tool/create/domain_typedef.py @@ -120,27 +120,92 @@ def get_rcu_schemas(self): return list(self._domain_typedef['rcuSchemas']) def is_system_app(self, name): + """ + Determine if the specified name matches a WLS system application. + :param name: the name to be checked + :return: True if the name matches a system application, False otherwise + """ return self._is_system_name(name, 'apps') - def is_system_shared_library(self, name): - return self._is_system_name(name, 'shared-libraries') + def is_system_coherence_cluster(self, name): + """ + Determine if the specified name matches a WLS system Coherence cluster. + :param name: the name to be checked + :return: True if the name matches a system Coherence cluster, False otherwise + """ + return self._is_system_name(name, 'coherence-clusters') def is_system_datasource(self, name): + """ + Determine if the specified name matches a WLS system datasource. + :param name: the name to be checked + :return: True if the name matches a system datasource, False otherwise + """ return self._is_system_name(name, 'datasources') - def is_system_coherence_cluster(self, name): - return self._is_system_name(name, 'coherence-clusters') + def is_system_file_store(self, name): + """ + Determine if the specified name matches a WLS system file store. + :param name: the name to be checked + :return: True if the name matches a system file store, False otherwise + """ + return self._is_system_name(name, 'file-stores') - def is_system_wldf(self, name): - return self._is_system_name(name, 'wldf') + def is_system_jms(self, name): + """ + Determine if the specified name matches a WLS system JMS resource. + :param name: the name to be checked + :return: True if the name matches a system JMS resource, False otherwise + """ + return self._is_system_name(name, 'jms') - def is_system_startup_class(self, name): - return self._is_system_name(name, 'startup-classes') + def is_system_jms_server(self, name): + """ + Determine if the specified name matches a WLS system JMS server. + :param name: the name to be checked + :return: True if the name matches a system JMS server, False otherwise + """ + return self._is_system_name(name, 'jms-servers') + + def is_system_shared_library(self, name): + """ + Determine if the specified name matches a WLS system shared library. + :param name: the name to be checked + :return: True if the name matches a system shared library, False otherwise + """ + return self._is_system_name(name, 'shared-libraries') def is_system_shutdown_class(self, name): + """ + Determine if the specified name matches a WLS system shutdown class. + :param name: the name to be checked + :return: True if the name matches a system shutdown class, False otherwise + """ return self._is_system_name(name, 'shutdown-classes') + def is_system_startup_class(self, name): + """ + Determine if the specified name matches a WLS system startup class. + :param name: the name to be checked + :return: True if the name matches a system startup class, False otherwise + """ + return self._is_system_name(name, 'startup-classes') + + def is_system_wldf(self, name): + """ + Determine if the specified name matches a WLS system WLDF resource. + :param name: the name to be checked + :return: True if the name matches a system WLDF resource, False otherwise + """ + return self._is_system_name(name, 'wldf') + def _is_system_name(self, name, key): + """ + Determine if the specified name matches a WLS name of the specified type key. + :param name: the name to be checked + :param key: the key of the type to be checked against + :return: True if the name matches a system name, False otherwise + """ if key in self._system_elements: system_names = self._system_elements[key] for system_name in system_names: diff --git a/core/src/main/python/wlsdeploy/tool/discover/common_resources_discoverer.py b/core/src/main/python/wlsdeploy/tool/discover/common_resources_discoverer.py index eeb8c0b87..53e88032c 100644 --- a/core/src/main/python/wlsdeploy/tool/discover/common_resources_discoverer.py +++ b/core/src/main/python/wlsdeploy/tool/discover/common_resources_discoverer.py @@ -171,14 +171,18 @@ def get_file_stores(self): file_stores = self._find_names_in_folder(location) if file_stores is not None: _logger.info('WLSDPLY-06346', len(file_stores), class_name=_class_name, method_name=_method_name) + typedef = self._model_context.get_domain_typedef() name_token = self._alias_helper.get_name_token(location) for file_store in file_stores: - _logger.info('WLSDPLY-06347', file_store, class_name=_class_name, method_name=_method_name) - result[file_store] = OrderedDict() - location.add_name_token(name_token, file_store) - self._populate_model_parameters(result[file_store], location) - self.archive_file_store_directory(file_store, result[file_store]) - location.remove_name_token(name_token) + if typedef.is_system_file_store(file_store): + _logger.info('WLSDPLY-06363', file_store, class_name=_class_name, method_name=_method_name) + else: + _logger.info('WLSDPLY-06347', file_store, class_name=_class_name, method_name=_method_name) + result[file_store] = OrderedDict() + location.add_name_token(name_token, file_store) + self._populate_model_parameters(result[file_store], location) + self.archive_file_store_directory(file_store, result[file_store]) + location.remove_name_token(name_token) _logger.exiting(class_name=_class_name, method_name=_method_name, result=result) return model_top_folder_name, result diff --git a/core/src/main/python/wlsdeploy/tool/discover/jms_resources_discoverer.py b/core/src/main/python/wlsdeploy/tool/discover/jms_resources_discoverer.py index 71b9988e1..e142b773a 100644 --- a/core/src/main/python/wlsdeploy/tool/discover/jms_resources_discoverer.py +++ b/core/src/main/python/wlsdeploy/tool/discover/jms_resources_discoverer.py @@ -61,14 +61,18 @@ def get_jms_servers(self): jms_servers = self._find_names_in_folder(location) if jms_servers is not None: _logger.info('WLSDPLY-06470', len(jms_servers), class_name=_class_name, method_name=_method_name) + typedef = self._model_context.get_domain_typedef() name_token = self._alias_helper.get_name_token(location) for jms_server in jms_servers: - _logger.info('WLSDPLY-06471', jms_server, class_name=_class_name, method_name=_method_name) - location.add_name_token(name_token, jms_server) - result[jms_server] = OrderedDict() - self._populate_model_parameters(result[jms_server], location) - self._discover_subfolders(result[jms_server], location) - location.remove_name_token(name_token) + if typedef.is_system_jms_server(jms_server): + _logger.info('WLSDPLY-06490', jms_server, class_name=_class_name, method_name=_method_name) + else: + _logger.info('WLSDPLY-06471', jms_server, class_name=_class_name, method_name=_method_name) + location.add_name_token(name_token, jms_server) + result[jms_server] = OrderedDict() + self._populate_model_parameters(result[jms_server], location) + self._discover_subfolders(result[jms_server], location) + location.remove_name_token(name_token) _logger.exiting(class_name=_class_name, method_name=_method_name, result=result) return model_top_folder_name, result @@ -161,17 +165,21 @@ def get_jms_system_resources(self): jms_resources = self._find_names_in_folder(location) if jms_resources is not None: _logger.info('WLSDPLY-06478', len(jms_resources), class_name=_class_name, method_name=_method_name) + typedef = self._model_context.get_domain_typedef() name_token = self._alias_helper.get_name_token(location) for jms_resource in jms_resources: - _logger.info('WLSDPLY-06479', jms_resource, class_name=_class_name, method_name=_method_name) - result[jms_resource] = OrderedDict() - location.add_name_token(name_token, jms_resource) - self._populate_model_parameters(result[jms_resource], location) - model_subfolder_name, subfolder_result = self._get_subdeployments(location) - discoverer.add_to_model_if_not_empty(result[jms_resource], model_subfolder_name, subfolder_result) - model_subfolder_name, subfolder_result = self._get_jms_resources(location) - discoverer.add_to_model_if_not_empty(result[jms_resource], model_subfolder_name, subfolder_result) - location.remove_name_token(name_token) + if typedef.is_system_jms(jms_resource): + _logger.info('WLSDPLY-06491', jms_resource, class_name=_class_name, method_name=_method_name) + else: + _logger.info('WLSDPLY-06479', jms_resource, class_name=_class_name, method_name=_method_name) + result[jms_resource] = OrderedDict() + location.add_name_token(name_token, jms_resource) + self._populate_model_parameters(result[jms_resource], location) + model_subfolder_name, subfolder_result = self._get_subdeployments(location) + discoverer.add_to_model_if_not_empty(result[jms_resource], model_subfolder_name, subfolder_result) + model_subfolder_name, subfolder_result = self._get_jms_resources(location) + discoverer.add_to_model_if_not_empty(result[jms_resource], model_subfolder_name, subfolder_result) + location.remove_name_token(name_token) _logger.exiting(class_name=_class_name, method_name=_method_name, result=result) return model_top_folder_name, result diff --git a/core/src/main/resources/oracle/weblogic/deploy/messages/wlsdeploy_rb.properties b/core/src/main/resources/oracle/weblogic/deploy/messages/wlsdeploy_rb.properties index e170e97bc..815fc78a8 100644 --- a/core/src/main/resources/oracle/weblogic/deploy/messages/wlsdeploy_rb.properties +++ b/core/src/main/resources/oracle/weblogic/deploy/messages/wlsdeploy_rb.properties @@ -509,6 +509,7 @@ WLSDPLY-06359=Collect script from location {0} for WLDF script action {1} WLSDPLY-06360=Unable to locate and add {0} Script file {1} to archive file : {2} WLSDPLY-06361=Skipping system JDBC System Resource {0} WLSDPLY-06362=Skipping system WLDF System Resource {0} +WLSDPLY-06363=Skipping system File Store {0} # deployments_discoverer.py WLSDPLY-06380=Discovering domain model deployments @@ -575,6 +576,8 @@ WLSDPLY-06487=Adding Group Param with Sub-Deployment name {0} to {1} WLSDPLY-06488=Key missing for Foreign JNDI Property Foreign Server {0} to {1}. The JNDI Property \ will not be added to the discovered model. WLSDPLY-06489=Adding JNDI Property with name {0} to {1} +WLSDPLY-06490=Skipping system JMS Server {0} +WLSDPLY-06491=Skipping system JMS System Resource {0} # topology_discoverer.py WLSDPLY-06600=Discovering domain model topology diff --git a/core/src/main/typedefs/JRF.json b/core/src/main/typedefs/JRF.json index 7c1888910..40f5c27c2 100644 --- a/core/src/main/typedefs/JRF.json +++ b/core/src/main/typedefs/JRF.json @@ -66,44 +66,55 @@ }, "system-elements": { "apps": [ + "coherence-transaction-rar", + "DMS Application%%", + "em", "opss-rest", "state-management-provider-memory-rar", - "DMS Application%%", - "coherence-transaction-rar", - "em" + "wsm-pm" ], "coherence-clusters": [ "defaultCoherenceCluster" ], "datasources": [ - "WLSSchemaDataSource", "LocalSvcTblDataSource", - "opss-data-source", - "opss-audit-viewDS", + "mds-owsm", "opss-audit-DBDS", + "opss-audit-viewDS", + "opss-data-source", + "WLSSchemaDataSource" + ], + "file-stores": [ + "JRFWSAsyncFileStore", "mds-owsm" ], + "jms": [ + "JRFWSAsyncJmsModule" + ], + "jms-servers": [ + "JRFWSAsyncJmsServer" + ], "shared-libraries": [ + "adf.oracle.businesseditor%%", "adf.oracle.domain%%", "adf.oracle.domain.webapp%%", - "adf.oracle.businesseditor%%", "em_common%%", "em_core_ppc_pojo_jar", "em_error%%", "em_sdkcore_ppc_public_pojo_jar", - "emas", "emagentsdk_jar%%", "emagentsdkimpl_jar%%", "emagentsdkimplpriv_jar%%", + "emas", "emcore", "emcore_jar", - "emcoresdk_jar%%", - "emcoreintsdk_jar%%", - "emcoresdkimpl_jar%%", + "emcoreclient_jar", "emcorecommon_jar", "emcoreconsole_jar", + "emcoreintsdk_jar%%", "emcorepbs_jar", - "emcoreclient_jar", + "emcoresdk_jar%%", + "emcoresdkimpl_jar%%", "jsf%%", "jstl%%", "log4j_jar%%", @@ -112,21 +123,24 @@ "ohw-rcf%%", "ohw-uix%%", "oracle.adf.dconfigbeans%%", - "oracle.adf.management%%", - "oracle.adf.desktopintegration.model%%", "oracle.adf.desktopintegration%%", - "oracle.bi.jbips%%", - "oracle.bi.composer%%", + "oracle.adf.desktopintegration.model%%", + "oracle.adf.management%%", "oracle.bi.adf.model.slib%%", "oracle.bi.adf.view.slib%%", "oracle.bi.adf.webcenter.slib%%", + "oracle.bi.composer%%", + "oracle.bi.jbips%%", "oracle.dconfig-infra%%", "oracle.jrf.system.filter", "oracle.jsp.next%%", "oracle.pwdgen%%", "oracle.sdp.client%%", + "oracle.sdp.messaging%%", "oracle.webcenter.composer%%", "oracle.webcenter.skin%%", + "oracle.wsm.console%%", + "oracle.wsm.idmrest%%", "oracle.wsm.seedpolicies%%", "orai18n-adf%%", "owasp.esapi%%",