Search in sources :

Example 1 with ZIP_FILE_SUFFIX

use of org.mule.runtime.module.deployment.internal.DefaultArchiveDeployer.ZIP_FILE_SUFFIX in project mule by mulesoft.

the class DomainBundleArchiveDeployer method deployArtifact.

/**
 * Deploys a domain bundle
 *
 * @param uri points to the domain bundle file to be deployed
 * @throws DeploymentException when the domain bundle was not successfully deployed
 */
public void deployArtifact(URI uri) throws DeploymentException {
    LOGGER.info("deploying artifact: " + uri);
    File bundleFile = new File(uri);
    final String bundleName = removeEndIgnoreCase(bundleFile.getName(), ZIP_FILE_SUFFIX);
    deploymentListener.onDeploymentStart(bundleName);
    File tempFolder = null;
    boolean isRedeploy = false;
    String domainName = null;
    try {
        tempFolder = unzipDomainBundle(bundleFile);
        File domainFile = getDomainFile(tempFolder);
        domainName = getBaseName(domainFile.getName());
        Domain domain = findDomain(domainName);
        isRedeploy = domain != null;
        Set<String> originalAppIds = new HashSet<>();
        if (isRedeploy) {
            domainDeploymentListener.onRedeploymentStart(domainName);
            Collection<Application> originalDomainApplications = deploymentService.findDomainApplications(domainName);
            for (Application domainApplication : originalDomainApplications) {
                if (domainApplication.getStatus() == ApplicationStatus.STARTED || domainApplication.getStatus() == ApplicationStatus.STOPPED) {
                    applicationDeploymentListener.onRedeploymentStart(domainApplication.getArtifactName());
                }
            }
            originalAppIds = originalDomainApplications.stream().map(a -> a.getArtifactName()).collect(toSet());
        }
        try {
            deployDomain(domainFile);
        } catch (Exception e) {
            // Ignore, deploy applications anyway
            LOGGER.warn("Domain bundle's domain was not deployed", e);
        }
        deployApplications(tempFolder, isRedeploy);
        if (isRedeploy) {
            Collection<Application> newDomainApplications = deploymentService.findDomainApplications(domainName);
            originalAppIds.stream().forEach(appId -> {
                Optional<Application> application = newDomainApplications.stream().filter(newApp -> appId.equals(newApp.getArtifactName())).findFirst();
                if (!application.isPresent()) {
                    DeploymentException cause = new DeploymentException(createStaticMessage("Application was not included in the updated domain bundle"));
                    applicationDeploymentListener.onDeploymentFailure(appId, cause);
                    applicationDeploymentListener.onRedeploymentFailure(appId, cause);
                }
            });
            domainDeploymentListener.onRedeploymentSuccess(domainName);
        }
        deploymentListener.onDeploymentSuccess(bundleName);
    } catch (Exception e) {
        if (isRedeploy) {
            domainDeploymentListener.onRedeploymentFailure(domainName, e);
        }
        deploymentListener.onDeploymentFailure(bundleName, e);
        if (e instanceof DeploymentException) {
            throw (DeploymentException) e;
        } else {
            throw new DeploymentException(createStaticMessage("Error deploying domain bundle"), e);
        }
    } finally {
        if (tempFolder != null) {
            deleteTree(tempFolder);
        }
    }
}
Also used : DeploymentService(org.mule.runtime.module.deployment.api.DeploymentService) ObservableList(org.mule.runtime.module.deployment.internal.util.ObservableList) Optional.empty(java.util.Optional.empty) ARTIFACT_NAME_PROPERTY(org.mule.runtime.module.deployment.internal.DefaultArchiveDeployer.ARTIFACT_NAME_PROPERTY) LoggerFactory(org.slf4j.LoggerFactory) ZIP_FILE_SUFFIX(org.mule.runtime.module.deployment.internal.DefaultArchiveDeployer.ZIP_FILE_SUFFIX) FileUtils.deleteTree(org.mule.runtime.core.api.util.FileUtils.deleteTree) HashSet(java.util.HashSet) FilenameUtils.getBaseName(org.apache.commons.io.FilenameUtils.getBaseName) FileUtils.unzip(org.mule.runtime.core.api.util.FileUtils.unzip) DeploymentListener(org.mule.runtime.module.deployment.api.DeploymentListener) CollectionUtils.find(org.apache.commons.collections.CollectionUtils.find) Application(org.mule.runtime.deployment.model.api.application.Application) URI(java.net.URI) Collectors.toSet(java.util.stream.Collectors.toSet) Logger(org.slf4j.Logger) I18nMessageFactory.createStaticMessage(org.mule.runtime.api.i18n.I18nMessageFactory.createStaticMessage) Collection(java.util.Collection) Set(java.util.Set) DeploymentException(org.mule.runtime.deployment.model.api.DeploymentException) IOException(java.io.IOException) JAR_FILE_SUFFIX(org.mule.runtime.module.deployment.internal.DefaultArchiveDeployer.JAR_FILE_SUFFIX) StringUtils.removeEndIgnoreCase(org.apache.commons.lang3.StringUtils.removeEndIgnoreCase) File(java.io.File) Domain(org.mule.runtime.deployment.model.api.domain.Domain) SuffixFileFilter(org.apache.commons.io.filefilter.SuffixFileFilter) BeanPropertyValueEqualsPredicate(org.apache.commons.beanutils.BeanPropertyValueEqualsPredicate) FileUtils(org.mule.runtime.core.api.util.FileUtils) Optional(java.util.Optional) ApplicationStatus(org.mule.runtime.deployment.model.api.application.ApplicationStatus) DeploymentException(org.mule.runtime.deployment.model.api.DeploymentException) Domain(org.mule.runtime.deployment.model.api.domain.Domain) File(java.io.File) Application(org.mule.runtime.deployment.model.api.application.Application) DeploymentException(org.mule.runtime.deployment.model.api.DeploymentException) IOException(java.io.IOException) HashSet(java.util.HashSet)

Aggregations

File (java.io.File)1 IOException (java.io.IOException)1 URI (java.net.URI)1 Collection (java.util.Collection)1 HashSet (java.util.HashSet)1 Optional (java.util.Optional)1 Optional.empty (java.util.Optional.empty)1 Set (java.util.Set)1 Collectors.toSet (java.util.stream.Collectors.toSet)1 BeanPropertyValueEqualsPredicate (org.apache.commons.beanutils.BeanPropertyValueEqualsPredicate)1 CollectionUtils.find (org.apache.commons.collections.CollectionUtils.find)1 FilenameUtils.getBaseName (org.apache.commons.io.FilenameUtils.getBaseName)1 SuffixFileFilter (org.apache.commons.io.filefilter.SuffixFileFilter)1 StringUtils.removeEndIgnoreCase (org.apache.commons.lang3.StringUtils.removeEndIgnoreCase)1 I18nMessageFactory.createStaticMessage (org.mule.runtime.api.i18n.I18nMessageFactory.createStaticMessage)1 FileUtils (org.mule.runtime.core.api.util.FileUtils)1 FileUtils.deleteTree (org.mule.runtime.core.api.util.FileUtils.deleteTree)1 FileUtils.unzip (org.mule.runtime.core.api.util.FileUtils.unzip)1 DeploymentException (org.mule.runtime.deployment.model.api.DeploymentException)1 Application (org.mule.runtime.deployment.model.api.application.Application)1