def __init__(self,
                 model,
                 model_context,
                 aliases,
                 wlst_mode=WlstModes.OFFLINE):
        Deployer.__init__(self, model, model_context, aliases, wlst_mode)
        self._resources = self.model.get_model_resources()

        self.common_deployer = \
            CommonResourcesDeployer(self.model, self.model_context, self.aliases, wlst_mode=self.wlst_mode)
    def _add_resources(self, location):
        """
        Deploy resource model elements at the domain level, not including multi-tenant elements.
        :param location: the location to deploy elements
        """
        data_source_deployer = DatasourceDeployer(self.model,
                                                  self.model_context,
                                                  self.aliases, self.wlst_mode)
        data_source_deployer.add_data_sources(self._resources, location)

        common_deployer = CommonResourcesDeployer(self.model,
                                                  self.model_context,
                                                  self.aliases, self.wlst_mode)
        common_deployer.add_self_tuning(self._resources, location)

        self._add_startup_classes(location)
        self._add_shutdown_classes(location)

        common_deployer.add_foreign_jndi_providers(self._resources, location)
        common_deployer.add_file_stores(self._resources, location)
        common_deployer.add_jdbc_stores(self._resources, location)
        common_deployer.add_jms_servers(self._resources, location)
        common_deployer.add_saf_agents(self._resources, location)
        common_deployer.add_path_services(self._resources, location)

        jms_deployer = JmsResourcesDeployer(self.model,
                                            self.model_context,
                                            self.aliases,
                                            wlst_mode=self.wlst_mode)
        jms_deployer.add_jms_system_resources(self._resources, location)

        common_deployer.add_jms_bridge_destinations(self._resources, location)
        common_deployer.add_jms_bridges(self._resources, location)
        common_deployer.add_mail_sessions(self._resources, location)

        wldf_deployer = WldfResourcesDeployer(self.model, self.model_context,
                                              self.aliases, self.wlst_mode)
        wldf_deployer.add_wldf_modules(self._resources, location)

        common_deployer.add_coherence_clusters(self._resources, location)
        common_deployer.add_webapp_container(self._resources, location)
        common_deployer.add_singleton_service(self._resources, location)
        return
    def _add_resource_group_resources(self, parent_dict, location):
        """
        Add the resource elements in the dictionary at the specified location.
        These elements should be deployed in a specific order, with some special handling.
        :param parent_dict: the dictionary possibly containing resource elements
        :param location: the location to deploy the elements
        """
        data_source_deployer = DatasourceDeployer(self.model,
                                                  self.model_context,
                                                  self.aliases, self.wlst_mode)
        data_source_deployer.add_data_sources(parent_dict, location)

        common_deployer = CommonResourcesDeployer(self.model,
                                                  self.model_context,
                                                  self.aliases, self.wlst_mode)
        common_deployer.add_foreign_jndi_providers(parent_dict, location)
        common_deployer.add_file_stores(parent_dict, location)
        common_deployer.add_jdbc_stores(parent_dict, location)
        common_deployer.add_jms_servers(parent_dict, location)
        common_deployer.add_saf_agents(parent_dict, location)
        common_deployer.add_path_services(parent_dict, location)

        jms_deployer = JmsResourcesDeployer(self.model, self.model_context,
                                            self.aliases, self.wlst_mode)
        jms_deployer.add_jms_system_resources(parent_dict, location)

        common_deployer.add_jms_bridge_destinations(parent_dict, location)
        common_deployer.add_jms_bridges(parent_dict, location)
        common_deployer.add_mail_sessions(parent_dict, location)

        wldf_deployer = WldfResourcesDeployer(self.model, self.model_context,
                                              self.aliases, self.wlst_mode)
        wldf_deployer.add_wldf_modules(parent_dict, location)

        common_deployer.add_coherence_clusters(parent_dict, location)

        applications_deployer = \
            ApplicationsDeployer(self.model, self.model_context, self.aliases, self.wlst_mode, location)
        applications_deployer.deploy()
        return