2 * ============LICENSE_START==========================================
4 * ===================================================================
5 * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
6 * Copyright © 2017-2018 Amdocs
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.util.ArrayList;
25 import java.util.List;
26 import java.util.Properties;
27 import org.eclipse.jetty.util.security.Password;
28 import org.openecomp.sdc.api.consumer.IConfiguration;
31 * Properties for the Model Loader
34 public class ModelLoaderConfig implements IConfiguration {
36 // Configuration file structure
37 public static final String PREFIX_MODEL_LOADER_CONFIG = "ml";
38 public static final String PREFIX_DISTRIBUTION_CLIENT = PREFIX_MODEL_LOADER_CONFIG + ".distribution.";
39 public static final String PREFIX_AAI = PREFIX_MODEL_LOADER_CONFIG + ".aai.";
40 public static final String PREFIX_BABEL = PREFIX_MODEL_LOADER_CONFIG + ".babel.";
41 public static final String PREFIX_DEBUG = PREFIX_MODEL_LOADER_CONFIG + ".debug.";
43 private static final String SUFFIX_KEYSTORE_FILE = "KEYSTORE_FILE";
44 private static final String SUFFIX_KEYSTORE_PASS = "KEYSTORE_PASSWORD";
46 // Configuration file properties
47 protected static final String PROP_ML_DISTRIBUTION_ACTIVE_SERVER_TLS_AUTH =
48 PREFIX_DISTRIBUTION_CLIENT + "ACTIVE_SERVER_TLS_AUTH";
49 protected static final String PROP_ML_DISTRIBUTION_ASDC_CONNECTION_DISABLED = PREFIX_DISTRIBUTION_CLIENT + "ASDC_CONNECTION_DISABLE";
50 protected static final String PROP_ML_DISTRIBUTION_ASDC_ADDRESS = PREFIX_DISTRIBUTION_CLIENT + "ASDC_ADDRESS";
51 protected static final String PROP_ML_DISTRIBUTION_CONSUMER_GROUP = PREFIX_DISTRIBUTION_CLIENT + "CONSUMER_GROUP";
52 protected static final String PROP_ML_DISTRIBUTION_CONSUMER_ID = PREFIX_DISTRIBUTION_CLIENT + "CONSUMER_ID";
53 protected static final String PROP_ML_DISTRIBUTION_ENVIRONMENT_NAME =
54 PREFIX_DISTRIBUTION_CLIENT + "ENVIRONMENT_NAME";
55 protected static final String PROP_ML_DISTRIBUTION_KEYSTORE_PASSWORD =
56 PREFIX_DISTRIBUTION_CLIENT + SUFFIX_KEYSTORE_PASS;
57 protected static final String PROP_ML_DISTRIBUTION_KEYSTORE_FILE =
58 PREFIX_DISTRIBUTION_CLIENT + SUFFIX_KEYSTORE_FILE;
59 protected static final String PROP_ML_DISTRIBUTION_PASSWORD = PREFIX_DISTRIBUTION_CLIENT + "PASSWORD";
60 protected static final String PROP_ML_DISTRIBUTION_POLLING_INTERVAL =
61 PREFIX_DISTRIBUTION_CLIENT + "POLLING_INTERVAL";
62 protected static final String PROP_ML_DISTRIBUTION_POLLING_TIMEOUT = PREFIX_DISTRIBUTION_CLIENT + "POLLING_TIMEOUT";
63 protected static final String PROP_ML_DISTRIBUTION_USER = PREFIX_DISTRIBUTION_CLIENT + "USER";
64 protected static final String PROP_ML_DISTRIBUTION_ARTIFACT_TYPES = PREFIX_DISTRIBUTION_CLIENT + "ARTIFACT_TYPES";
65 protected static final String PROP_ML_DISTRIBUTION_MSG_BUS_ADDRESSES = PREFIX_DISTRIBUTION_CLIENT + "MSG_BUS_ADDRESSES";
66 protected static final String PROP_ML_DISTRIBUTION_HTTPS_WITH_DMAAP =
67 PREFIX_DISTRIBUTION_CLIENT + "USE_HTTPS_WITH_DMAAP";
69 protected static final String PROP_AAI_BASE_URL = PREFIX_AAI + "BASE_URL";
70 protected static final String PROP_AAI_KEYSTORE_FILE = PREFIX_AAI + SUFFIX_KEYSTORE_FILE;
71 protected static final String PROP_AAI_KEYSTORE_PASSWORD = PREFIX_AAI + SUFFIX_KEYSTORE_PASS;
72 protected static final String PROP_AAI_MODEL_RESOURCE_URL = PREFIX_AAI + "MODEL_URL";
73 protected static final String PROP_AAI_NAMED_QUERY_RESOURCE_URL = PREFIX_AAI + "NAMED_QUERY_URL";
74 protected static final String PROP_AAI_VNF_IMAGE_RESOURCE_URL = PREFIX_AAI + "VNF_IMAGE_URL";
75 protected static final String PROP_AAI_AUTHENTICATION_USER = PREFIX_AAI + "AUTH_USER";
76 protected static final String PROP_AAI_AUTHENTICATION_PASSWORD = PREFIX_AAI + "AUTH_PASSWORD";
78 protected static final String PROP_BABEL_BASE_URL = PREFIX_BABEL + "BASE_URL";
79 protected static final String PROP_BABEL_KEYSTORE_FILE = PREFIX_BABEL + SUFFIX_KEYSTORE_FILE;
80 protected static final String PROP_BABEL_KEYSTORE_PASSWORD = PREFIX_BABEL + SUFFIX_KEYSTORE_PASS;
81 protected static final String PROP_BABEL_GENERATE_RESOURCE_URL = PREFIX_BABEL + "GENERATE_ARTIFACTS_URL";
83 protected static final String PROP_DEBUG_INGEST_SIMULATOR = PREFIX_DEBUG + "INGEST_SIMULATOR";
85 private Properties modelLoaderProperties = null;
87 private String certLocation = ".";
89 private List<String> artifactTypes = null;
91 private List<String> msgBusAddrs = null;
93 private String modelVersion = null;
97 * This is the class constructor.
99 * @param modelLoaderProperties properties needed to be configured for the model loader
100 * @param certLocation location of the certificate
102 public ModelLoaderConfig(Properties modelLoaderProperties, String certLocation) {
103 this.modelLoaderProperties = modelLoaderProperties;
104 this.certLocation = certLocation;
106 // Get list of artifacts
107 artifactTypes = new ArrayList<>();
108 if (modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_ARTIFACT_TYPES) != null) {
109 String[] artTypeList = modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_ARTIFACT_TYPES).split(",");
110 for (String artType : artTypeList) {
111 artifactTypes.add(artType);
115 // Get list of message bus addresses
116 msgBusAddrs = new ArrayList<>();
117 if (modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_MSG_BUS_ADDRESSES) != null) {
118 String[] msgBusList = modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_MSG_BUS_ADDRESSES).split(",");
119 for (String addr : msgBusList) {
120 msgBusAddrs.add(addr);
126 public boolean activateServerTLSAuth() {
127 String value = modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_ACTIVE_SERVER_TLS_AUTH);
128 return value == null ? false : Boolean.parseBoolean(value);
132 public String getAsdcAddress() {
133 return modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_ASDC_ADDRESS);
137 public String getConsumerGroup() {
138 return modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_CONSUMER_GROUP);
142 public String getConsumerID() {
143 return modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_CONSUMER_ID);
147 public String getEnvironmentName() {
148 return modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_ENVIRONMENT_NAME);
152 public String getKeyStorePassword() {
153 return Password.deobfuscate(modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_KEYSTORE_PASSWORD));
157 public String getKeyStorePath() {
158 return certLocation + modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_KEYSTORE_FILE);
162 public String getPassword() {
163 return Password.deobfuscate(modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_PASSWORD));
167 public int getPollingInterval() {
168 return Integer.parseInt(modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_POLLING_INTERVAL));
172 public int getPollingTimeout() {
173 return Integer.parseInt(modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_POLLING_TIMEOUT));
177 public List<String> getRelevantArtifactTypes() {
178 return artifactTypes;
182 public String getUser() {
183 return modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_USER);
187 public boolean isFilterInEmptyResources() {
192 public Boolean isUseHttpsWithDmaap() {
193 String useHTTPS = modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_HTTPS_WITH_DMAAP);
194 return useHTTPS == null ? false : Boolean.valueOf(useHTTPS);
198 public List<String> getMsgBusAddress() {
202 public String getAaiKeyStorePath() {
203 return certLocation + File.separator + modelLoaderProperties.getProperty(PROP_AAI_KEYSTORE_FILE);
206 public String getBabelKeyStorePath() {
207 return certLocation + File.separator + modelLoaderProperties.getProperty(PROP_BABEL_KEYSTORE_FILE);
210 public String getAaiKeyStorePassword() {
211 return Password.deobfuscate(modelLoaderProperties.getProperty(PROP_AAI_KEYSTORE_PASSWORD));
214 public String getBabelKeyStorePassword() {
215 return Password.deobfuscate(modelLoaderProperties.getProperty(PROP_BABEL_KEYSTORE_PASSWORD));
218 public String getAaiBaseUrl() {
219 return modelLoaderProperties.getProperty(PROP_AAI_BASE_URL);
222 public String getBabelBaseUrl() {
223 return modelLoaderProperties.getProperty(PROP_BABEL_BASE_URL);
226 public String getBabelGenerateArtifactsUrl() {
227 return modelLoaderProperties.getProperty(PROP_BABEL_GENERATE_RESOURCE_URL);
230 public String getAaiModelUrl(String version) {
231 setModelVersion(version);
232 return updatePropertyOXMVersion(modelLoaderProperties, PROP_AAI_MODEL_RESOURCE_URL, version);
235 public String getAaiNamedQueryUrl(String version) {
236 return updatePropertyOXMVersion(modelLoaderProperties, PROP_AAI_NAMED_QUERY_RESOURCE_URL, version);
239 public String getAaiVnfImageUrl() {
240 return updatePropertyOXMVersion(modelLoaderProperties, PROP_AAI_VNF_IMAGE_RESOURCE_URL, getModelVersion());
243 public String getAaiAuthenticationUser() {
244 return modelLoaderProperties.getProperty(PROP_AAI_AUTHENTICATION_USER);
247 public String getModelVersion() {
251 public void setModelVersion(String modelVersion) {
252 this.modelVersion = modelVersion;
256 * @return password for AAI authentication that has been reverse-engineered from its obfuscated form.
258 public String getAaiAuthenticationPassword() {
259 String password = Password.deobfuscate(modelLoaderProperties.getProperty(PROP_AAI_AUTHENTICATION_PASSWORD));
261 if (password != null && password.isEmpty()) {
269 * @return a boolean value indicating whether the simulator is enabled.
271 public boolean getIngestSimulatorEnabled() {
272 String propValue = modelLoaderProperties.getProperty(PROP_DEBUG_INGEST_SIMULATOR);
273 return propValue != null && "enabled".equalsIgnoreCase(propValue);
277 * @return a String value of the defined property with the oxm version
279 private String updatePropertyOXMVersion(Properties modelLoaderProperties, String propertyName, String version) {
281 return modelLoaderProperties.getProperty(propertyName).replace("v*", version);
283 return modelLoaderProperties.getProperty(propertyName);
290 * @return a boolean value indicating whether model loader is connected to ASDC.
292 public boolean getASDCConnectionDisabled(){
293 String propValue = modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_ASDC_CONNECTION_DISABLED);
294 return propValue != null && "true".equalsIgnoreCase(propValue);