mirror of https://github.com/apache/nifi.git
NIFI-3319 Made TLS toolkit default output directory calculation more robust.
This closes #1502. Signed-off-by: Andy LoPresto <alopresto@apache.org>
This commit is contained in:
parent
1a91ecc379
commit
17cb2e284d
|
@ -17,6 +17,18 @@
|
||||||
|
|
||||||
package org.apache.nifi.toolkit.tls.standalone;
|
package org.apache.nifi.toolkit.tls.standalone;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.nio.file.Paths;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
import java.util.stream.IntStream;
|
||||||
|
import java.util.stream.Stream;
|
||||||
import org.apache.commons.cli.CommandLine;
|
import org.apache.commons.cli.CommandLine;
|
||||||
import org.apache.nifi.toolkit.tls.commandLine.BaseCommandLine;
|
import org.apache.nifi.toolkit.tls.commandLine.BaseCommandLine;
|
||||||
import org.apache.nifi.toolkit.tls.commandLine.CommandLineParseException;
|
import org.apache.nifi.toolkit.tls.commandLine.CommandLineParseException;
|
||||||
|
@ -30,18 +42,6 @@ import org.apache.nifi.util.StringUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.FileInputStream;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.nio.file.Paths;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.function.Supplier;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
import java.util.stream.IntStream;
|
|
||||||
import java.util.stream.Stream;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Command line parser for a StandaloneConfig object and a main entry point to invoke the parser and run the standalone generator
|
* Command line parser for a StandaloneConfig object and a main entry point to invoke the parser and run the standalone generator
|
||||||
*/
|
*/
|
||||||
|
@ -59,7 +59,18 @@ public class TlsToolkitStandaloneCommandLine extends BaseCommandLine {
|
||||||
public static final String NIFI_DN_PREFIX_ARG = "nifiDnPrefix";
|
public static final String NIFI_DN_PREFIX_ARG = "nifiDnPrefix";
|
||||||
public static final String NIFI_DN_SUFFIX_ARG = "nifiDnSuffix";
|
public static final String NIFI_DN_SUFFIX_ARG = "nifiDnSuffix";
|
||||||
|
|
||||||
public static final String DEFAULT_OUTPUT_DIRECTORY = "../" + Paths.get(".").toAbsolutePath().normalize().getFileName().toString();
|
public static final String DEFAULT_OUTPUT_DIRECTORY = calculateDefaultOutputDirectory(Paths.get("."));
|
||||||
|
|
||||||
|
protected static String calculateDefaultOutputDirectory(Path currentPath) {
|
||||||
|
Path currentAbsolutePath = currentPath.toAbsolutePath();
|
||||||
|
Path parent = currentAbsolutePath.getParent();
|
||||||
|
if (parent == currentAbsolutePath.getRoot()) {
|
||||||
|
return parent.toString();
|
||||||
|
} else {
|
||||||
|
Path currentNormalizedPath = currentAbsolutePath.normalize();
|
||||||
|
return "../" + currentNormalizedPath.getFileName().toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static final String DESCRIPTION = "Creates certificates and config files for nifi cluster.";
|
public static final String DESCRIPTION = "Creates certificates and config files for nifi cluster.";
|
||||||
|
|
||||||
|
@ -131,10 +142,10 @@ public class TlsToolkitStandaloneCommandLine extends BaseCommandLine {
|
||||||
if (commandLine.hasOption(HOSTNAMES_ARG)) {
|
if (commandLine.hasOption(HOSTNAMES_ARG)) {
|
||||||
instanceDefinitions = Collections.unmodifiableList(
|
instanceDefinitions = Collections.unmodifiableList(
|
||||||
InstanceDefinition.createDefinitions(globalOrderExpressions,
|
InstanceDefinition.createDefinitions(globalOrderExpressions,
|
||||||
Arrays.stream(commandLine.getOptionValues(HOSTNAMES_ARG)).flatMap(s -> Arrays.stream(s.split(",")).map(String::trim)),
|
Arrays.stream(commandLine.getOptionValues(HOSTNAMES_ARG)).flatMap(s -> Arrays.stream(s.split(",")).map(String::trim)),
|
||||||
parsePasswordSupplier(commandLine, KEY_STORE_PASSWORD_ARG, passwordUtil.passwordSupplier()),
|
parsePasswordSupplier(commandLine, KEY_STORE_PASSWORD_ARG, passwordUtil.passwordSupplier()),
|
||||||
parsePasswordSupplier(commandLine, KEY_PASSWORD_ARG, commandLine.hasOption(DIFFERENT_KEY_AND_KEYSTORE_PASSWORDS_ARG) ? passwordUtil.passwordSupplier() : null),
|
parsePasswordSupplier(commandLine, KEY_PASSWORD_ARG, commandLine.hasOption(DIFFERENT_KEY_AND_KEYSTORE_PASSWORDS_ARG) ? passwordUtil.passwordSupplier() : null),
|
||||||
parsePasswordSupplier(commandLine, TRUST_STORE_PASSWORD_ARG, passwordUtil.passwordSupplier())));
|
parsePasswordSupplier(commandLine, TRUST_STORE_PASSWORD_ARG, passwordUtil.passwordSupplier())));
|
||||||
} else {
|
} else {
|
||||||
instanceDefinitions = Collections.emptyList();
|
instanceDefinitions = Collections.emptyList();
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,6 +34,8 @@ import java.io.ByteArrayInputStream;
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.nio.file.Paths;
|
||||||
import java.security.SecureRandom;
|
import java.security.SecureRandom;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -414,6 +416,20 @@ public class TlsToolkitStandaloneCommandLineTest {
|
||||||
tlsToolkitStandaloneCommandLine.parse("-n", "notInGlobalOrder", "-G", "nifi[1-3]");
|
tlsToolkitStandaloneCommandLine.parse("-n", "notInGlobalOrder", "-G", "nifi[1-3]");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDefaultOutputPathRoot() {
|
||||||
|
Path root = Paths.get(".").toAbsolutePath().getRoot().resolve(".");
|
||||||
|
String calculateDefaultOutputDirectory = TlsToolkitStandaloneCommandLine.calculateDefaultOutputDirectory(root);
|
||||||
|
assertEquals(root.toAbsolutePath().getRoot().toString(), calculateDefaultOutputDirectory);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDefaultOutputPath() {
|
||||||
|
Path path = Paths.get(".");
|
||||||
|
String calculateDefaultOutputDirectory = TlsToolkitStandaloneCommandLine.calculateDefaultOutputDirectory(path);
|
||||||
|
assertEquals("../" + path.toAbsolutePath().normalize().getFileName().toString(), calculateDefaultOutputDirectory);
|
||||||
|
}
|
||||||
|
|
||||||
private Properties getProperties() throws IOException {
|
private Properties getProperties() throws IOException {
|
||||||
NiFiPropertiesWriter niFiPropertiesWriter = tlsToolkitStandaloneCommandLine.createConfig().getNiFiPropertiesWriterFactory().create();
|
NiFiPropertiesWriter niFiPropertiesWriter = tlsToolkitStandaloneCommandLine.createConfig().getNiFiPropertiesWriterFactory().create();
|
||||||
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
|
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
|
||||||
|
|
Loading…
Reference in New Issue