Search in sources :

Example 1 with ConfigurationChangeException

use of org.apache.nifi.minifi.bootstrap.configuration.ConfigurationChangeException in project nifi-minifi by apache.

the class ConfigTransformer method addSSLControllerService.

protected static void addSSLControllerService(final Element element, SecurityPropertiesSchema securityProperties) throws ConfigurationChangeException {
    try {
        final Element serviceElement = element.getOwnerDocument().createElement("controllerService");
        addTextElement(serviceElement, "id", "SSL-Context-Service");
        addTextElement(serviceElement, "name", "SSL-Context-Service");
        addTextElement(serviceElement, "comment", "");
        addTextElement(serviceElement, "class", "org.apache.nifi.ssl.StandardSSLContextService");
        addTextElement(serviceElement, "enabled", "true");
        Map<String, Object> attributes = new HashMap<>();
        attributes.put("Keystore Filename", securityProperties.getKeystore());
        attributes.put("Keystore Type", securityProperties.getKeystoreType());
        attributes.put("Keystore Password", securityProperties.getKeyPassword());
        attributes.put("Truststore Filename", securityProperties.getTruststore());
        attributes.put("Truststore Type", securityProperties.getTruststoreType());
        attributes.put("Truststore Password", securityProperties.getTruststorePassword());
        attributes.put("SSL Protocol", securityProperties.getSslProtocol());
        addConfiguration(serviceElement, attributes);
        element.appendChild(serviceElement);
    } catch (Exception e) {
        throw new ConfigurationChangeException("Failed to parse the config YAML while trying to create an SSL Controller Service", e);
    }
}
Also used : HashMap(java.util.HashMap) Element(org.w3c.dom.Element) ConfigurationChangeException(org.apache.nifi.minifi.bootstrap.configuration.ConfigurationChangeException) InvalidConfigurationException(org.apache.nifi.minifi.bootstrap.exception.InvalidConfigurationException) ConfigurationChangeException(org.apache.nifi.minifi.bootstrap.configuration.ConfigurationChangeException) TransformerException(javax.xml.transform.TransformerException) DOMException(org.w3c.dom.DOMException) IOException(java.io.IOException) ParserConfigurationException(javax.xml.parsers.ParserConfigurationException)

Example 2 with ConfigurationChangeException

use of org.apache.nifi.minifi.bootstrap.configuration.ConfigurationChangeException in project nifi-minifi by apache.

the class ConfigTransformer method addProcessGroup.

protected static void addProcessGroup(Document doc, Element element, ProcessGroupSchema processGroupSchema, ParentGroupIdResolver parentGroupIdResolver) throws ConfigurationChangeException {
    try {
        String processGroupId = processGroupSchema.getId();
        addTextElement(element, "id", processGroupId);
        addTextElement(element, "name", processGroupSchema.getName());
        addPosition(element);
        addTextElement(element, "comment", processGroupSchema.getComment());
        for (ProcessorSchema processorConfig : processGroupSchema.getProcessors()) {
            addProcessor(element, processorConfig);
        }
        for (PortSchema portSchema : processGroupSchema.getInputPortSchemas()) {
            addPort(doc, element, portSchema, "inputPort");
        }
        for (PortSchema portSchema : processGroupSchema.getOutputPortSchemas()) {
            addPort(doc, element, portSchema, "outputPort");
        }
        for (FunnelSchema funnelSchema : processGroupSchema.getFunnels()) {
            addFunnel(element, funnelSchema);
        }
        for (ProcessGroupSchema child : processGroupSchema.getProcessGroupSchemas()) {
            Element processGroups = doc.createElement("processGroup");
            element.appendChild(processGroups);
            addProcessGroup(doc, processGroups, child, parentGroupIdResolver);
        }
        for (RemoteProcessGroupSchema remoteProcessGroupSchema : processGroupSchema.getRemoteProcessGroups()) {
            addRemoteProcessGroup(element, remoteProcessGroupSchema);
        }
        for (ConnectionSchema connectionConfig : processGroupSchema.getConnections()) {
            addConnection(element, connectionConfig, parentGroupIdResolver);
        }
        for (ControllerServiceSchema controllerServiceSchema : processGroupSchema.getControllerServices()) {
            addControllerService(element, controllerServiceSchema);
        }
    } catch (ConfigurationChangeException e) {
        throw e;
    } catch (Exception e) {
        throw new ConfigurationChangeException("Failed to parse the config YAML while trying to creating the root Process Group", e);
    }
}
Also used : ConnectionSchema(org.apache.nifi.minifi.commons.schema.ConnectionSchema) RemoteProcessGroupSchema(org.apache.nifi.minifi.commons.schema.RemoteProcessGroupSchema) ProcessGroupSchema(org.apache.nifi.minifi.commons.schema.ProcessGroupSchema) Element(org.w3c.dom.Element) ControllerServiceSchema(org.apache.nifi.minifi.commons.schema.ControllerServiceSchema) ConfigurationChangeException(org.apache.nifi.minifi.bootstrap.configuration.ConfigurationChangeException) FunnelSchema(org.apache.nifi.minifi.commons.schema.FunnelSchema) RemotePortSchema(org.apache.nifi.minifi.commons.schema.RemotePortSchema) PortSchema(org.apache.nifi.minifi.commons.schema.PortSchema) InvalidConfigurationException(org.apache.nifi.minifi.bootstrap.exception.InvalidConfigurationException) ConfigurationChangeException(org.apache.nifi.minifi.bootstrap.configuration.ConfigurationChangeException) TransformerException(javax.xml.transform.TransformerException) DOMException(org.w3c.dom.DOMException) IOException(java.io.IOException) ParserConfigurationException(javax.xml.parsers.ParserConfigurationException) ProcessorSchema(org.apache.nifi.minifi.commons.schema.ProcessorSchema) RemoteProcessGroupSchema(org.apache.nifi.minifi.commons.schema.RemoteProcessGroupSchema)

Example 3 with ConfigurationChangeException

use of org.apache.nifi.minifi.bootstrap.configuration.ConfigurationChangeException in project nifi-minifi by apache.

the class ConfigTransformer method writeNiFiProperties.

protected static void writeNiFiProperties(ConfigSchema configSchema, OutputStream outputStream) throws IOException, ConfigurationChangeException {
    try {
        CorePropertiesSchema coreProperties = configSchema.getCoreProperties();
        FlowFileRepositorySchema flowfileRepoSchema = configSchema.getFlowfileRepositoryProperties();
        SwapSchema swapProperties = flowfileRepoSchema.getSwapProperties();
        ContentRepositorySchema contentRepoProperties = configSchema.getContentRepositoryProperties();
        ComponentStatusRepositorySchema componentStatusRepoProperties = configSchema.getComponentStatusRepositoryProperties();
        SecurityPropertiesSchema securityProperties = configSchema.getSecurityProperties();
        SensitivePropsSchema sensitiveProperties = securityProperties.getSensitiveProps();
        ProvenanceRepositorySchema provenanceRepositorySchema = configSchema.getProvenanceRepositorySchema();
        OrderedProperties orderedProperties = new OrderedProperties();
        orderedProperties.setProperty(NIFI_VERSION_KEY, NIFI_VERSION, "# Core Properties #" + System.lineSeparator());
        orderedProperties.setProperty("nifi.flow.configuration.file", "./conf/flow.xml.gz");
        orderedProperties.setProperty("nifi.flow.configuration.archive.enabled", "false");
        orderedProperties.setProperty("nifi.flow.configuration.archive.dir", "./conf/archive/");
        orderedProperties.setProperty("nifi.flowcontroller.autoResumeState", "true");
        orderedProperties.setProperty("nifi.flowcontroller.graceful.shutdown.period", coreProperties.getFlowControllerGracefulShutdownPeriod());
        orderedProperties.setProperty("nifi.flowservice.writedelay.interval", coreProperties.getFlowServiceWriteDelayInterval());
        orderedProperties.setProperty("nifi.administrative.yield.duration", coreProperties.getAdministrativeYieldDuration());
        orderedProperties.setProperty("nifi.variable.registry.properties", coreProperties.getVariableRegistryProperties());
        orderedProperties.setProperty("nifi.bored.yield.duration", coreProperties.getBoredYieldDuration(), "# If a component has no work to do (is \"bored\"), how long should we wait before checking again for work?");
        orderedProperties.setProperty("nifi.authority.provider.configuration.file", "./conf/authority-providers.xml", "");
        orderedProperties.setProperty("nifi.login.identity.provider.configuration.file", "./conf/login-identity-providers.xml");
        orderedProperties.setProperty("nifi.templates.directory", "./conf/templates");
        orderedProperties.setProperty("nifi.ui.banner.text", "");
        orderedProperties.setProperty("nifi.ui.autorefresh.interval", "30 sec");
        orderedProperties.setProperty("nifi.nar.library.directory", "./lib");
        orderedProperties.setProperty("nifi.nar.working.directory", "./work/nar/");
        orderedProperties.setProperty("nifi.documentation.working.directory", "./work/docs/components");
        orderedProperties.setProperty("nifi.state.management.configuration.file", "./conf/state-management.xml", System.lineSeparator() + "####################" + "# State Management #" + "####################");
        orderedProperties.setProperty("nifi.state.management.provider.local", "local-provider", "# The ID of the local state provider");
        orderedProperties.setProperty("nifi.database.directory", "./database_repository", System.lineSeparator() + "# H2 Settings");
        orderedProperties.setProperty("nifi.h2.url.append", ";LOCK_TIMEOUT=25000;WRITE_DELAY=0;AUTO_SERVER=FALSE");
        orderedProperties.setProperty("nifi.flowfile.repository.implementation", "org.apache.nifi.controller.repository.WriteAheadFlowFileRepository", System.lineSeparator() + "# FlowFile Repository");
        orderedProperties.setProperty("nifi.flowfile.repository.directory", "./flowfile_repository");
        orderedProperties.setProperty("nifi.flowfile.repository.partitions", String.valueOf(flowfileRepoSchema.getPartitions()));
        orderedProperties.setProperty("nifi.flowfile.repository.checkpoint.interval", flowfileRepoSchema.getCheckpointInterval());
        orderedProperties.setProperty("nifi.flowfile.repository.always.sync", Boolean.toString(flowfileRepoSchema.getAlwaysSync()));
        orderedProperties.setProperty("nifi.swap.manager.implementation", "org.apache.nifi.controller.FileSystemSwapManager", "");
        orderedProperties.setProperty("nifi.queue.swap.threshold", String.valueOf(swapProperties.getThreshold()));
        orderedProperties.setProperty("nifi.swap.in.period", swapProperties.getInPeriod());
        orderedProperties.setProperty("nifi.swap.in.threads", String.valueOf(swapProperties.getInThreads()));
        orderedProperties.setProperty("nifi.swap.out.period", swapProperties.getOutPeriod());
        orderedProperties.setProperty("nifi.swap.out.threads", String.valueOf(swapProperties.getOutThreads()));
        orderedProperties.setProperty("nifi.content.repository.implementation", "org.apache.nifi.controller.repository.FileSystemRepository", System.lineSeparator() + "# Content Repository");
        orderedProperties.setProperty("nifi.content.claim.max.appendable.size", contentRepoProperties.getContentClaimMaxAppendableSize());
        orderedProperties.setProperty("nifi.content.claim.max.flow.files", String.valueOf(contentRepoProperties.getContentClaimMaxFlowFiles()));
        orderedProperties.setProperty("nifi.content.repository.archive.max.retention.period", "");
        orderedProperties.setProperty("nifi.content.repository.archive.max.usage.percentage", "");
        orderedProperties.setProperty("nifi.content.repository.archive.enabled", "false");
        orderedProperties.setProperty("nifi.content.repository.directory.default", "./content_repository");
        orderedProperties.setProperty("nifi.content.repository.always.sync", Boolean.toString(contentRepoProperties.getAlwaysSync()));
        orderedProperties.setProperty("nifi.provenance.repository.implementation", provenanceRepositorySchema.getProvenanceRepository(), System.lineSeparator() + "# Provenance Repository Properties");
        orderedProperties.setProperty("nifi.provenance.repository.rollover.time", provenanceRepositorySchema.getProvenanceRepoRolloverTimeKey());
        orderedProperties.setProperty("nifi.provenance.repository.buffer.size", "10000", System.lineSeparator() + "# Volatile Provenance Respository Properties");
        orderedProperties.setProperty("nifi.components.status.repository.implementation", "org.apache.nifi.controller.status.history.VolatileComponentStatusRepository", System.lineSeparator() + "# Component Status Repository");
        orderedProperties.setProperty("nifi.components.status.repository.buffer.size", String.valueOf(componentStatusRepoProperties.getBufferSize()));
        orderedProperties.setProperty("nifi.components.status.snapshot.frequency", componentStatusRepoProperties.getSnapshotFrequency());
        orderedProperties.setProperty("nifi.web.war.directory", "./lib", System.lineSeparator() + "# web properties #");
        orderedProperties.setProperty("nifi.web.http.host", "");
        orderedProperties.setProperty("nifi.web.http.port", "8081");
        orderedProperties.setProperty("nifi.web.https.host", "");
        orderedProperties.setProperty("nifi.web.https.port", "");
        orderedProperties.setProperty("nifi.web.jetty.working.directory", "./work/jetty");
        orderedProperties.setProperty("nifi.web.jetty.threads", "200");
        orderedProperties.setProperty("nifi.sensitive.props.key", sensitiveProperties.getKey(), System.lineSeparator() + "# security properties #");
        orderedProperties.setProperty("nifi.sensitive.props.algorithm", sensitiveProperties.getAlgorithm());
        orderedProperties.setProperty("nifi.sensitive.props.provider", sensitiveProperties.getProvider());
        orderedProperties.setProperty("nifi.security.keystore", securityProperties.getKeystore(), "");
        orderedProperties.setProperty("nifi.security.keystoreType", securityProperties.getKeystoreType());
        orderedProperties.setProperty("nifi.security.keystorePasswd", securityProperties.getKeystorePassword());
        orderedProperties.setProperty("nifi.security.keyPasswd", securityProperties.getKeyPassword());
        orderedProperties.setProperty("nifi.security.truststore", securityProperties.getTruststore());
        orderedProperties.setProperty("nifi.security.truststoreType", securityProperties.getTruststoreType());
        orderedProperties.setProperty("nifi.security.truststorePasswd", securityProperties.getTruststorePassword());
        orderedProperties.setProperty("nifi.security.needClientAuth", "");
        orderedProperties.setProperty("nifi.security.user.credential.cache.duration", "24 hours");
        orderedProperties.setProperty("nifi.security.user.authority.provider", "file-provider");
        orderedProperties.setProperty("nifi.security.user.login.identity.provider", "");
        orderedProperties.setProperty("nifi.security.support.new.account.requests", "");
        orderedProperties.setProperty("nifi.security.anonymous.authorities", "", "# Valid Authorities include: ROLE_MONITOR,ROLE_DFM,ROLE_ADMIN,ROLE_PROVENANCE,ROLE_NIFI");
        orderedProperties.setProperty("nifi.security.ocsp.responder.url", "");
        orderedProperties.setProperty("nifi.security.ocsp.responder.certificate", "");
        orderedProperties.setProperty("nifi.cluster.is.node", "false", System.lineSeparator() + System.lineSeparator() + "# cluster node properties (only configure for cluster nodes) #");
        orderedProperties.setProperty("nifi.cluster.is.manager", "false", System.lineSeparator() + "# cluster manager properties (only configure for cluster manager) #");
        for (Map.Entry<String, String> entry : configSchema.getNifiPropertiesOverrides().entrySet()) {
            orderedProperties.setProperty(entry.getKey(), entry.getValue());
        }
        orderedProperties.store(outputStream, PROPERTIES_FILE_APACHE_2_0_LICENSE);
    } catch (NullPointerException e) {
        throw new ConfigurationChangeException("Failed to parse the config YAML while creating the nifi.properties", e);
    } finally {
        outputStream.close();
    }
}
Also used : ComponentStatusRepositorySchema(org.apache.nifi.minifi.commons.schema.ComponentStatusRepositorySchema) FlowFileRepositorySchema(org.apache.nifi.minifi.commons.schema.FlowFileRepositorySchema) SwapSchema(org.apache.nifi.minifi.commons.schema.SwapSchema) ConfigurationChangeException(org.apache.nifi.minifi.bootstrap.configuration.ConfigurationChangeException) SensitivePropsSchema(org.apache.nifi.minifi.commons.schema.SensitivePropsSchema) ContentRepositorySchema(org.apache.nifi.minifi.commons.schema.ContentRepositorySchema) SecurityPropertiesSchema(org.apache.nifi.minifi.commons.schema.SecurityPropertiesSchema) ProvenanceRepositorySchema(org.apache.nifi.minifi.commons.schema.ProvenanceRepositorySchema) CorePropertiesSchema(org.apache.nifi.minifi.commons.schema.CorePropertiesSchema) Map(java.util.Map) HashMap(java.util.HashMap)

Example 4 with ConfigurationChangeException

use of org.apache.nifi.minifi.bootstrap.configuration.ConfigurationChangeException in project nifi-minifi by apache.

the class ConfigTransformer method addControllerService.

protected static void addControllerService(final Element element, ControllerServiceSchema controllerServiceSchema) throws ConfigurationChangeException {
    try {
        final Element serviceElement = element.getOwnerDocument().createElement("controllerService");
        addTextElement(serviceElement, "id", controllerServiceSchema.getId());
        addTextElement(serviceElement, "name", controllerServiceSchema.getName());
        addTextElement(serviceElement, "comment", "");
        addTextElement(serviceElement, "class", controllerServiceSchema.getServiceClass());
        addTextElement(serviceElement, "enabled", "true");
        Map<String, Object> attributes = controllerServiceSchema.getProperties();
        addConfiguration(serviceElement, attributes);
        String annotationData = controllerServiceSchema.getAnnotationData();
        if (annotationData != null && !annotationData.isEmpty()) {
            addTextElement(element, "annotationData", annotationData);
        }
        element.appendChild(serviceElement);
    } catch (Exception e) {
        throw new ConfigurationChangeException("Failed to parse the config YAML while trying to create an SSL Controller Service", e);
    }
}
Also used : Element(org.w3c.dom.Element) ConfigurationChangeException(org.apache.nifi.minifi.bootstrap.configuration.ConfigurationChangeException) InvalidConfigurationException(org.apache.nifi.minifi.bootstrap.exception.InvalidConfigurationException) ConfigurationChangeException(org.apache.nifi.minifi.bootstrap.configuration.ConfigurationChangeException) TransformerException(javax.xml.transform.TransformerException) DOMException(org.w3c.dom.DOMException) IOException(java.io.IOException) ParserConfigurationException(javax.xml.parsers.ParserConfigurationException)

Example 5 with ConfigurationChangeException

use of org.apache.nifi.minifi.bootstrap.configuration.ConfigurationChangeException in project nifi-minifi by apache.

the class ConfigTransformer method addRemoteProcessGroup.

protected static void addRemoteProcessGroup(final Element parentElement, RemoteProcessGroupSchema remoteProcessGroupProperties) throws ConfigurationChangeException {
    try {
        final Document doc = parentElement.getOwnerDocument();
        final Element element = doc.createElement("remoteProcessGroup");
        parentElement.appendChild(element);
        addTextElement(element, "id", remoteProcessGroupProperties.getId());
        addTextElement(element, "name", remoteProcessGroupProperties.getName());
        addPosition(element);
        addTextElement(element, "comment", remoteProcessGroupProperties.getComment());
        addTextElement(element, "url", remoteProcessGroupProperties.getUrl());
        addTextElement(element, "timeout", remoteProcessGroupProperties.getTimeout());
        addTextElement(element, "yieldPeriod", remoteProcessGroupProperties.getYieldPeriod());
        addTextElement(element, "transmitting", "true");
        addTextElement(element, "transportProtocol", remoteProcessGroupProperties.getTransportProtocol());
        addTextElement(element, "proxyHost", remoteProcessGroupProperties.getProxyHost());
        if (remoteProcessGroupProperties.getProxyPort() != null) {
            addTextElement(element, "proxyPort", Integer.toString(remoteProcessGroupProperties.getProxyPort()));
        }
        addTextElement(element, "proxyUser", remoteProcessGroupProperties.getProxyUser());
        if (!StringUtils.isEmpty(remoteProcessGroupProperties.getProxyPassword())) {
            addTextElement(element, "proxyPassword", remoteProcessGroupProperties.getProxyPassword());
        }
        List<RemotePortSchema> remoteInputPorts = remoteProcessGroupProperties.getInputPorts();
        for (RemotePortSchema remoteInputPortSchema : remoteInputPorts) {
            addRemoteGroupPort(element, remoteInputPortSchema, "inputPort");
        }
        List<RemotePortSchema> remoteOutputPorts = remoteProcessGroupProperties.getOutputPorts();
        for (RemotePortSchema remoteOutputPortSchema : remoteOutputPorts) {
            addRemoteGroupPort(element, remoteOutputPortSchema, "outputPort");
        }
        addTextElement(element, "networkInterface", remoteProcessGroupProperties.getLocalNetworkInterface());
        parentElement.appendChild(element);
    } catch (Exception e) {
        throw new ConfigurationChangeException("Failed to parse the config YAML while trying to add the Remote Process Group", e);
    }
}
Also used : Element(org.w3c.dom.Element) RemotePortSchema(org.apache.nifi.minifi.commons.schema.RemotePortSchema) ConfigurationChangeException(org.apache.nifi.minifi.bootstrap.configuration.ConfigurationChangeException) Document(org.w3c.dom.Document) InvalidConfigurationException(org.apache.nifi.minifi.bootstrap.exception.InvalidConfigurationException) ConfigurationChangeException(org.apache.nifi.minifi.bootstrap.configuration.ConfigurationChangeException) TransformerException(javax.xml.transform.TransformerException) DOMException(org.w3c.dom.DOMException) IOException(java.io.IOException) ParserConfigurationException(javax.xml.parsers.ParserConfigurationException)

Aggregations

ConfigurationChangeException (org.apache.nifi.minifi.bootstrap.configuration.ConfigurationChangeException)11 IOException (java.io.IOException)10 ParserConfigurationException (javax.xml.parsers.ParserConfigurationException)9 TransformerException (javax.xml.transform.TransformerException)9 InvalidConfigurationException (org.apache.nifi.minifi.bootstrap.exception.InvalidConfigurationException)9 DOMException (org.w3c.dom.DOMException)9 Element (org.w3c.dom.Element)9 Document (org.w3c.dom.Document)5 HashMap (java.util.HashMap)3 SecurityPropertiesSchema (org.apache.nifi.minifi.commons.schema.SecurityPropertiesSchema)3 CorePropertiesSchema (org.apache.nifi.minifi.commons.schema.CorePropertiesSchema)2 ProcessGroupSchema (org.apache.nifi.minifi.commons.schema.ProcessGroupSchema)2 ProvenanceReportingSchema (org.apache.nifi.minifi.commons.schema.ProvenanceReportingSchema)2 RemotePortSchema (org.apache.nifi.minifi.commons.schema.RemotePortSchema)2 RemoteProcessGroupSchema (org.apache.nifi.minifi.commons.schema.RemoteProcessGroupSchema)2 ByteArrayInputStream (java.io.ByteArrayInputStream)1 EOFException (java.io.EOFException)1 File (java.io.File)1 FileInputStream (java.io.FileInputStream)1 FileNotFoundException (java.io.FileNotFoundException)1