import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
+import java.util.Optional;
import java.util.Properties;
+
import org.apache.commons.lang3.StringUtils;
import org.eclipse.jetty.util.security.Password;
import org.onap.sdc.api.consumer.IConfiguration;
-
/**
* Properties for the Model Loader
*
protected static final String PROP_ML_DISTRIBUTION_ASDC_CONNECTION_DISABLED =
PREFIX_DISTRIBUTION_CLIENT + "ASDC_CONNECTION_DISABLE";
protected static final String PROP_ML_DISTRIBUTION_ASDC_ADDRESS = PREFIX_DISTRIBUTION_CLIENT + "ASDC_ADDRESS";
+ protected static final String PROP_ML_DISTRIBUTION_ASDC_USE_HTTPS = PREFIX_DISTRIBUTION_CLIENT + "ASDC_USE_HTTPS";
protected static final String PROP_ML_DISTRIBUTION_CONSUMER_GROUP = PREFIX_DISTRIBUTION_CLIENT + "CONSUMER_GROUP";
protected static final String PROP_ML_DISTRIBUTION_CONSUMER_ID = PREFIX_DISTRIBUTION_CLIENT + "CONSUMER_ID";
protected static final String PROP_ML_DISTRIBUTION_ENVIRONMENT_NAME =
protected static final String PROP_ML_DISTRIBUTION_POLLING_TIMEOUT = PREFIX_DISTRIBUTION_CLIENT + "POLLING_TIMEOUT";
protected static final String PROP_ML_DISTRIBUTION_USER = PREFIX_DISTRIBUTION_CLIENT + "USER";
protected static final String PROP_ML_DISTRIBUTION_ARTIFACT_TYPES = PREFIX_DISTRIBUTION_CLIENT + "ARTIFACT_TYPES";
- protected static final String PROP_ML_DISTRIBUTION_MSG_BUS_ADDRESSES =
- PREFIX_DISTRIBUTION_CLIENT + "MSG_BUS_ADDRESSES";
- protected static final String PROP_ML_DISTRIBUTION_HTTPS_WITH_DMAAP =
- PREFIX_DISTRIBUTION_CLIENT + "USE_HTTPS_WITH_DMAAP";
-
+ protected static final String PROP_ML_DISTRIBUTION_HTTP_PROXY_HOST = PREFIX_DISTRIBUTION_CLIENT + "HTTP_PROXY_HOST";
+ protected static final String PROP_ML_DISTRIBUTION_HTTP_PROXY_PORT = PREFIX_DISTRIBUTION_CLIENT + "HTTP_PROXY_PORT";
+ protected static final String PROP_ML_DISTRIBUTION_HTTPS_PROXY_HOST = PREFIX_DISTRIBUTION_CLIENT + "HTTPS_PROXY_HOST";
+ protected static final String PROP_ML_DISTRIBUTION_HTTPS_PROXY_PORT = PREFIX_DISTRIBUTION_CLIENT + "HTTPS_PROXY_PORT";
+ protected static final String PROP_ML_DISTRIBUTION_SASL_JAAS_CONFIG = PREFIX_DISTRIBUTION_CLIENT + "SASL_JAAS_CONFIG";
+ protected static final String PROP_ML_DISTRIBUTION_SASL_MECHANISM = PREFIX_DISTRIBUTION_CLIENT + "SASL_MECHANISM";
+ protected static final String PROP_ML_DISTRIBUTION_SECURITY_PROTOCOL = PREFIX_DISTRIBUTION_CLIENT + "SECURITY_PROTOCOL";
protected static final String PROP_AAI_BASE_URL = PREFIX_AAI + "BASE_URL";
protected static final String PROP_AAI_KEYSTORE_FILE = PREFIX_AAI + SUFFIX_KEYSTORE_FILE;
protected static final String PROP_AAI_KEYSTORE_PASSWORD = PREFIX_AAI + SUFFIX_KEYSTORE_PASS;
protected static final String PROP_AAI_AUTHENTICATION_USER = PREFIX_AAI + "AUTH_USER";
protected static final String PROP_AAI_AUTHENTICATION_PASSWORD = PREFIX_AAI + "AUTH_PASSWORD";
protected static final String PROP_AAI_USE_GIZMO = PREFIX_AAI + "USE_GIZMO";
-
+ protected static final String PROP_AAI_USE_HTTPS = PREFIX_AAI + "USE_HTTPS";
protected static final String PROP_BABEL_BASE_URL = PREFIX_BABEL + "BASE_URL";
protected static final String PROP_BABEL_KEYSTORE_FILE = PREFIX_BABEL + SUFFIX_KEYSTORE_FILE;
protected static final String PROP_BABEL_KEYSTORE_PASSWORD = PREFIX_BABEL + SUFFIX_KEYSTORE_PASS;
protected static final String PROP_BABEL_TRUSTSTORE_FILE = PREFIX_BABEL + SUFFIX_TRUSTSTORE_FILE;
protected static final String PROP_BABEL_TRUSTSTORE_PASSWORD = PREFIX_BABEL + SUFFIX_TRUSTSTORE_PASS;
protected static final String PROP_BABEL_GENERATE_RESOURCE_URL = PREFIX_BABEL + "GENERATE_ARTIFACTS_URL";
-
+ protected static final String PROP_BABEL_USE_HTTPS = PREFIX_BABEL + "USE_HTTPS";
protected static final String PROP_DEBUG_INGEST_SIMULATOR = PREFIX_DEBUG + "INGEST_SIMULATOR";
protected static final String FILESEP =
(System.getProperty("file.separator") == null) ? "/" : System.getProperty("file.separator");
+ protected static final String PROP_AAI_CLIENT_CONNECT_TIMEOUT_MS = PREFIX_AAI + "RESTCLIENT_CONNECT_TIMEOUT";
+ protected static final String PROP_AAI_CLIENT_READ_TIMEOUT_MS = PREFIX_AAI + "RESTCLIENT_READ_TIMEOUT";
private static String configHome;
private Properties modelLoaderProperties = null;
private String certLocation = ".";
- private List<String> artifactTypes = new ArrayList<>();
- private List<String> msgBusAddrs = new ArrayList<>();
+ private final List<String> artifactTypes = new ArrayList<>();
private String modelVersion = null;
public ModelLoaderConfig(Properties configProperties) {
// Get list of artifact types
String types = get(PROP_ML_DISTRIBUTION_ARTIFACT_TYPES);
if (types != null) {
- for (String artType : types.split(",")) {
- artifactTypes.add(artType);
- }
- }
-
- // Get list of message bus addresses
- String addresses = get(PROP_ML_DISTRIBUTION_MSG_BUS_ADDRESSES);
- if (addresses != null) {
- for (String addr : addresses.split(",")) {
- msgBusAddrs.add(addr);
- }
+ artifactTypes.addAll(Arrays.asList(types.split(",")));
}
}
@Override
public boolean activateServerTLSAuth() {
String value = get(PROP_ML_DISTRIBUTION_ACTIVE_SERVER_TLS_AUTH);
- return value != null && Boolean.parseBoolean(value);
+ return Boolean.parseBoolean(value);
}
@Override
- public String getAsdcAddress() {
+ public String getSdcAddress() {
return get(PROP_ML_DISTRIBUTION_ASDC_ADDRESS);
}
+ @Override
+ public Boolean isUseHttpsWithSDC() {
+ /* if PROP_ML_DISTRIBUTION_ASDC_USE_HTTPS is null, https will be used, as before */
+ String value = get(PROP_ML_DISTRIBUTION_ASDC_USE_HTTPS);
+ if (value == null) {
+ return true;
+ }
+ return Boolean.parseBoolean(value);
+ }
+
@Override
public String getConsumerGroup() {
return get(PROP_ML_DISTRIBUTION_CONSUMER_GROUP);
}
@Override
- public Boolean isUseHttpsWithDmaap() {
- String useHTTPS = get(PROP_ML_DISTRIBUTION_HTTPS_WITH_DMAAP);
- return useHTTPS != null && Boolean.valueOf(useHTTPS);
+ public String getHttpProxyHost() {
+ return getPropertyOrNull(PROP_ML_DISTRIBUTION_HTTP_PROXY_HOST);
}
@Override
- public List<String> getMsgBusAddress() {
- return msgBusAddrs;
+ public int getHttpProxyPort() {
+ return getIntegerPropertyOrZero(PROP_ML_DISTRIBUTION_HTTP_PROXY_PORT);
+ }
+
+ @Override
+ public String getHttpsProxyHost() {
+ return getPropertyOrNull(PROP_ML_DISTRIBUTION_HTTPS_PROXY_HOST);
+ }
+
+ @Override
+ public int getHttpsProxyPort() {
+ return getIntegerPropertyOrZero(PROP_ML_DISTRIBUTION_HTTPS_PROXY_PORT);
}
public String getAaiKeyStorePath() {
return useGizmo != null && useGizmo.equalsIgnoreCase("true");
}
+ public boolean useHttpsWithAAI() {
+ String useHttps = get(PROP_AAI_USE_HTTPS);
+ return useHttps != null && useHttps.equalsIgnoreCase("true");
+ }
+
+ public boolean useHttpsWithBabel() {
+ String useHttps = get(PROP_BABEL_USE_HTTPS);
+ return useHttps != null && useHttps.equalsIgnoreCase("true");
+ }
+
/**
* @return password for AAI authentication that has been reverse-engineered from its obfuscated form.
*/
/**
* Read the value of the property and replace any wildcard OXM version "v*" with the supplied default OXM version
- *
+ *
* @param propertyName
* the name of the property storing the OXM version (possibly containing v*)
* @param version
}
return value;
}
+
+ public String getPropertyOrNull(String propertyName) {
+ String value = modelLoaderProperties.getProperty(propertyName);
+ if (value == null || "NULL".equals(value) || value.isEmpty()) {
+ return null;
+ } else {
+ return value;
+ }
+ }
+
+ public int getIntegerPropertyOrZero(String propertyName) {
+ String property = modelLoaderProperties.getProperty(propertyName);
+ if (property == null || "NULL".equals(property) || property.isEmpty()) {
+ return 0;
+ } else {
+ try {
+ return Integer.parseInt(property);
+ } catch (NumberFormatException e) {
+ return 0;
+ }
+ }
+ }
+
+ public int getClientConnectTimeoutMs() {
+ String connectTimeout = Optional.ofNullable(get(PROP_AAI_CLIENT_CONNECT_TIMEOUT_MS)).orElse("120000");
+ return Integer.parseInt(connectTimeout);
+ }
+
+ public int getClientReadTimeoutMs() {
+ String connectTimeout = Optional.ofNullable(get(PROP_AAI_CLIENT_READ_TIMEOUT_MS)).orElse("120000");
+ return Integer.parseInt(connectTimeout);
+ }
+
+ @Override
+ public String getKafkaSaslJaasConfig() {
+ String saslJaasConfFromEnv = System.getenv("SASL_JAAS_CONFIG");
+ if(saslJaasConfFromEnv != null) {
+ return saslJaasConfFromEnv;
+ }
+ if(get(PROP_ML_DISTRIBUTION_SASL_JAAS_CONFIG) != null) {
+ return get(PROP_ML_DISTRIBUTION_SASL_JAAS_CONFIG);
+ }
+ return null;
+ }
+
+ @Override
+ public String getKafkaSaslMechanism() {
+ if(get(PROP_ML_DISTRIBUTION_SASL_MECHANISM) != null) {
+ return get(PROP_ML_DISTRIBUTION_SASL_MECHANISM);
+ }
+ return System.getenv().getOrDefault("SASL_MECHANISM", "SCRAM-SHA-512");
+ }
+
+ /**
+ * One of PLAINTEXT, SSL, SASL_PLAINTEXT, SASL_SSL
+ */
+ @Override
+ public String getKafkaSecurityProtocolConfig() {
+ if(get(PROP_ML_DISTRIBUTION_SECURITY_PROTOCOL) != null) {
+ return get(PROP_ML_DISTRIBUTION_SECURITY_PROTOCOL);
+ }
+ return System.getenv().getOrDefault("SECURITY_PROTOCOL", "SASL_PLAINTEXT");
+ }
+
}