2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
6 * Copyright © 2017-2018 European Software Marketing Ltd.
7 * ================================================================================
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 * ============LICENSE_END=========================================================
21 package org.onap.aai.modelloader.config;
24 import java.nio.file.Path;
25 import java.nio.file.Paths;
26 import java.util.ArrayList;
27 import java.util.List;
28 import java.util.Properties;
29 import org.eclipse.jetty.util.security.Password;
30 import org.onap.sdc.api.consumer.IConfiguration;
33 * Properties for the Model Loader
36 public class ModelLoaderConfig implements IConfiguration {
38 // Configuration file structure
39 public static final String PREFIX_MODEL_LOADER_CONFIG = "ml";
40 public static final String PREFIX_DISTRIBUTION_CLIENT = PREFIX_MODEL_LOADER_CONFIG + ".distribution.";
41 public static final String PREFIX_AAI = PREFIX_MODEL_LOADER_CONFIG + ".aai.";
42 public static final String PREFIX_BABEL = PREFIX_MODEL_LOADER_CONFIG + ".babel.";
43 public static final String PREFIX_DEBUG = PREFIX_MODEL_LOADER_CONFIG + ".debug.";
45 private static final String SUFFIX_KEYSTORE_FILE = "KEYSTORE_FILE";
46 private static final String SUFFIX_KEYSTORE_PASS = "KEYSTORE_PASSWORD";
48 private static final String SUFFIX_TRUSTSTORE_FILE = "TRUSTSTORE_FILE";
49 private static final String SUFFIX_TRUSTSTORE_PASS = "TRUSTSTORE_PASSWORD";
51 // Configuration file properties
52 protected static final String PROP_ML_DISTRIBUTION_ACTIVE_SERVER_TLS_AUTH =
53 PREFIX_DISTRIBUTION_CLIENT + "ACTIVE_SERVER_TLS_AUTH";
54 protected static final String PROP_ML_DISTRIBUTION_ASDC_CONNECTION_DISABLED =
55 PREFIX_DISTRIBUTION_CLIENT + "ASDC_CONNECTION_DISABLE";
56 protected static final String PROP_ML_DISTRIBUTION_ASDC_ADDRESS = PREFIX_DISTRIBUTION_CLIENT + "ASDC_ADDRESS";
57 protected static final String PROP_ML_DISTRIBUTION_CONSUMER_GROUP = PREFIX_DISTRIBUTION_CLIENT + "CONSUMER_GROUP";
58 protected static final String PROP_ML_DISTRIBUTION_CONSUMER_ID = PREFIX_DISTRIBUTION_CLIENT + "CONSUMER_ID";
59 protected static final String PROP_ML_DISTRIBUTION_ENVIRONMENT_NAME =
60 PREFIX_DISTRIBUTION_CLIENT + "ENVIRONMENT_NAME";
61 protected static final String PROP_ML_DISTRIBUTION_KEYSTORE_PASSWORD =
62 PREFIX_DISTRIBUTION_CLIENT + SUFFIX_KEYSTORE_PASS;
63 protected static final String PROP_ML_DISTRIBUTION_KEYSTORE_FILE =
64 PREFIX_DISTRIBUTION_CLIENT + SUFFIX_KEYSTORE_FILE;
65 protected static final String PROP_ML_DISTRIBUTION_PASSWORD = PREFIX_DISTRIBUTION_CLIENT + "PASSWORD";
66 protected static final String PROP_ML_DISTRIBUTION_POLLING_INTERVAL =
67 PREFIX_DISTRIBUTION_CLIENT + "POLLING_INTERVAL";
68 protected static final String PROP_ML_DISTRIBUTION_POLLING_TIMEOUT = PREFIX_DISTRIBUTION_CLIENT + "POLLING_TIMEOUT";
69 protected static final String PROP_ML_DISTRIBUTION_USER = PREFIX_DISTRIBUTION_CLIENT + "USER";
70 protected static final String PROP_ML_DISTRIBUTION_ARTIFACT_TYPES = PREFIX_DISTRIBUTION_CLIENT + "ARTIFACT_TYPES";
71 protected static final String PROP_ML_DISTRIBUTION_MSG_BUS_ADDRESSES =
72 PREFIX_DISTRIBUTION_CLIENT + "MSG_BUS_ADDRESSES";
73 protected static final String PROP_ML_DISTRIBUTION_HTTPS_WITH_DMAAP =
74 PREFIX_DISTRIBUTION_CLIENT + "USE_HTTPS_WITH_DMAAP";
76 protected static final String PROP_AAI_BASE_URL = PREFIX_AAI + "BASE_URL";
77 protected static final String PROP_AAI_KEYSTORE_FILE = PREFIX_AAI + SUFFIX_KEYSTORE_FILE;
78 protected static final String PROP_AAI_KEYSTORE_PASSWORD = PREFIX_AAI + SUFFIX_KEYSTORE_PASS;
79 protected static final String PROP_AAI_MODEL_RESOURCE_URL = PREFIX_AAI + "MODEL_URL";
80 protected static final String PROP_AAI_NAMED_QUERY_RESOURCE_URL = PREFIX_AAI + "NAMED_QUERY_URL";
81 protected static final String PROP_AAI_VNF_IMAGE_RESOURCE_URL = PREFIX_AAI + "VNF_IMAGE_URL";
82 protected static final String PROP_AAI_AUTHENTICATION_USER = PREFIX_AAI + "AUTH_USER";
83 protected static final String PROP_AAI_AUTHENTICATION_PASSWORD = PREFIX_AAI + "AUTH_PASSWORD";
84 protected static final String PROP_AAI_USE_GIZMO = PREFIX_AAI + "USE_GIZMO";
86 protected static final String PROP_BABEL_BASE_URL = PREFIX_BABEL + "BASE_URL";
87 protected static final String PROP_BABEL_KEYSTORE_FILE = PREFIX_BABEL + SUFFIX_KEYSTORE_FILE;
88 protected static final String PROP_BABEL_KEYSTORE_PASSWORD = PREFIX_BABEL + SUFFIX_KEYSTORE_PASS;
89 protected static final String PROP_BABEL_TRUSTSTORE_FILE = PREFIX_BABEL + SUFFIX_TRUSTSTORE_FILE;
90 protected static final String PROP_BABEL_TRUSTSTORE_PASSWORD = PREFIX_BABEL + SUFFIX_TRUSTSTORE_PASS;
91 protected static final String PROP_BABEL_GENERATE_RESOURCE_URL = PREFIX_BABEL + "GENERATE_ARTIFACTS_URL";
93 protected static final String PROP_DEBUG_INGEST_SIMULATOR = PREFIX_DEBUG + "INGEST_SIMULATOR";
94 protected static final String FILESEP =
95 (System.getProperty("file.separator") == null) ? "/" : System.getProperty("file.separator");
97 private static String configHome;
98 private Properties modelLoaderProperties = null;
99 private String certLocation = ".";
100 private List<String> artifactTypes = null;
101 private List<String> msgBusAddrs = null;
102 private String modelVersion = null;
104 public ModelLoaderConfig(Properties configProperties) {
105 this(configProperties, ModelLoaderConfig.configHome + FILESEP + "auth" + FILESEP);
109 * Original constructor
111 * @param modelLoaderProperties properties needed to be configured for the model loader
112 * @param certLocation location of the certificate
114 public ModelLoaderConfig(Properties modelLoaderProperties, String certLocation) {
115 this.modelLoaderProperties = modelLoaderProperties;
116 this.certLocation = certLocation;
118 // Get list of artifacts
119 artifactTypes = new ArrayList<>();
120 if (modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_ARTIFACT_TYPES) != null) {
121 String[] artTypeList = modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_ARTIFACT_TYPES).split(",");
122 for (String artType : artTypeList) {
123 artifactTypes.add(artType);
127 // Get list of message bus addresses
128 msgBusAddrs = new ArrayList<>();
129 if (modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_MSG_BUS_ADDRESSES) != null) {
130 String[] msgBusList = modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_MSG_BUS_ADDRESSES).split(",");
131 for (String addr : msgBusList) {
132 msgBusAddrs.add(addr);
137 public static void setConfigHome(String configHome) {
138 ModelLoaderConfig.configHome = configHome;
141 public static Path propertiesFile() {
142 return Paths.get(configHome, "model-loader.properties");
146 public boolean activateServerTLSAuth() {
147 String value = modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_ACTIVE_SERVER_TLS_AUTH);
148 return value != null && Boolean.parseBoolean(value);
152 public String getAsdcAddress() {
153 return modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_ASDC_ADDRESS);
157 public String getConsumerGroup() {
158 return modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_CONSUMER_GROUP);
162 public String getConsumerID() {
163 return modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_CONSUMER_ID);
167 public String getEnvironmentName() {
168 return modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_ENVIRONMENT_NAME);
172 public String getKeyStorePassword() {
173 return Password.deobfuscate(modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_KEYSTORE_PASSWORD));
177 public String getKeyStorePath() {
178 return certLocation + modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_KEYSTORE_FILE);
182 public String getPassword() {
183 return Password.deobfuscate(modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_PASSWORD));
187 public int getPollingInterval() {
188 return Integer.parseInt(modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_POLLING_INTERVAL));
192 public int getPollingTimeout() {
193 return Integer.parseInt(modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_POLLING_TIMEOUT));
197 public List<String> getRelevantArtifactTypes() {
198 return artifactTypes;
202 public String getUser() {
203 return modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_USER);
207 public boolean isFilterInEmptyResources() {
212 public Boolean isUseHttpsWithDmaap() {
213 String useHTTPS = modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_HTTPS_WITH_DMAAP);
214 return useHTTPS != null && Boolean.valueOf(useHTTPS);
218 public List<String> getMsgBusAddress() {
222 public String getAaiKeyStorePath() {
223 return certLocation + File.separator + modelLoaderProperties.getProperty(PROP_AAI_KEYSTORE_FILE);
226 public String getBabelKeyStorePath() {
227 String filename = modelLoaderProperties.getProperty(PROP_BABEL_KEYSTORE_FILE);
228 if (filename == null) {
231 return certLocation + File.separator + filename;
235 public String getAaiKeyStorePassword() {
236 return Password.deobfuscate(modelLoaderProperties.getProperty(PROP_AAI_KEYSTORE_PASSWORD));
239 public String getBabelKeyStorePassword() {
240 return Password.deobfuscate(modelLoaderProperties.getProperty(PROP_BABEL_KEYSTORE_PASSWORD));
243 public String getBabelTrustStorePath() {
244 String filename = modelLoaderProperties.getProperty(PROP_BABEL_TRUSTSTORE_FILE);
245 if (filename == null) {
248 return certLocation + File.separator + filename;
252 public String getBabelTrustStorePassword() {
253 return Password.deobfuscate(modelLoaderProperties.getProperty(PROP_BABEL_TRUSTSTORE_PASSWORD));
256 public String getAaiBaseUrl() {
257 return modelLoaderProperties.getProperty(PROP_AAI_BASE_URL);
260 public String getBabelBaseUrl() {
261 return modelLoaderProperties.getProperty(PROP_BABEL_BASE_URL);
264 public String getBabelGenerateArtifactsUrl() {
265 return modelLoaderProperties.getProperty(PROP_BABEL_GENERATE_RESOURCE_URL);
268 public String getAaiModelUrl(String version) {
269 setModelVersion(version);
270 return updatePropertyOXMVersion(modelLoaderProperties, PROP_AAI_MODEL_RESOURCE_URL, version);
273 public String getAaiNamedQueryUrl(String version) {
274 return updatePropertyOXMVersion(modelLoaderProperties, PROP_AAI_NAMED_QUERY_RESOURCE_URL, version);
277 public String getAaiVnfImageUrl() {
278 return updatePropertyOXMVersion(modelLoaderProperties, PROP_AAI_VNF_IMAGE_RESOURCE_URL, getModelVersion());
281 public String getAaiAuthenticationUser() {
282 return modelLoaderProperties.getProperty(PROP_AAI_AUTHENTICATION_USER);
285 public String getModelVersion() {
289 public void setModelVersion(String modelVersion) {
290 this.modelVersion = modelVersion;
293 public boolean useGizmo() {
294 String useGizmo = modelLoaderProperties.getProperty(PROP_AAI_USE_GIZMO);
296 if ( (useGizmo == null) || (!useGizmo.equalsIgnoreCase("true")) ) {
304 * @return password for AAI authentication that has been reverse-engineered from its obfuscated form.
306 public String getAaiAuthenticationPassword() {
307 String password = Password.deobfuscate(modelLoaderProperties.getProperty(PROP_AAI_AUTHENTICATION_PASSWORD));
309 if (password != null && password.isEmpty()) {
317 * @return a boolean value indicating whether the simulator is enabled.
319 public boolean getIngestSimulatorEnabled() {
320 String propValue = modelLoaderProperties.getProperty(PROP_DEBUG_INGEST_SIMULATOR);
321 return propValue != null && "enabled".equalsIgnoreCase(propValue);
325 * @return a String value of the defined property with the oxm version
327 private String updatePropertyOXMVersion(Properties modelLoaderProperties, String propertyName, String version) {
329 return modelLoaderProperties.getProperty(propertyName).replace("v*", version);
331 return modelLoaderProperties.getProperty(propertyName);
335 * @return a boolean value indicating whether model loader is connected to ASDC.
337 public boolean getASDCConnectionDisabled() {
338 String propValue = modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_ASDC_CONNECTION_DISABLED);
339 return propValue != null && "true".equalsIgnoreCase(propValue);