Revisions made to the Model Loader to use Babel
[aai/model-loader.git] / src / main / java / org / onap / aai / modelloader / config / ModelLoaderConfig.java
1 /**
2  * ============LICENSE_START==========================================
3  * org.onap.aai
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
11  *
12  *        http://www.apache.org/licenses/LICENSE-2.0
13  *
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============================================
20  */
21 package org.onap.aai.modelloader.config;
22
23 import java.io.File;
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;
29
30 /**
31  * Properties for the Model Loader
32  *
33  */
34 public class ModelLoaderConfig implements IConfiguration {
35
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.";
42
43   private static final String SUFFIX_KEYSTORE_FILE = "KEYSTORE_FILE";
44   private static final String SUFFIX_KEYSTORE_PASS = "KEYSTORE_PASSWORD";
45
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";
68
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";
77
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";
82
83   protected static final String PROP_DEBUG_INGEST_SIMULATOR = PREFIX_DEBUG + "INGEST_SIMULATOR";
84
85   private Properties modelLoaderProperties = null;
86
87   private String certLocation = ".";
88
89   private List<String> artifactTypes = null;
90
91   private List<String> msgBusAddrs = null;
92
93   private String modelVersion = null;
94   
95
96   /**
97    * This is the class constructor.
98    * 
99    * @param modelLoaderProperties properties needed to be configured for the model loader
100    * @param certLocation location of the certificate
101    */
102   public ModelLoaderConfig(Properties modelLoaderProperties, String certLocation) {
103     this.modelLoaderProperties = modelLoaderProperties;
104     this.certLocation = certLocation;
105
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);
112       }
113     }
114
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);
121       }
122     }
123   }
124
125   @Override
126   public boolean activateServerTLSAuth() {
127     String value = modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_ACTIVE_SERVER_TLS_AUTH);
128     return value == null ? false : Boolean.parseBoolean(value);
129   }
130
131   @Override
132   public String getAsdcAddress() {
133     return modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_ASDC_ADDRESS);
134   }
135
136   @Override
137   public String getConsumerGroup() {
138     return modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_CONSUMER_GROUP);
139   }
140
141   @Override
142   public String getConsumerID() {
143     return modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_CONSUMER_ID);
144   }
145
146   @Override
147   public String getEnvironmentName() {
148     return modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_ENVIRONMENT_NAME);
149   }
150
151   @Override
152   public String getKeyStorePassword() {
153     return Password.deobfuscate(modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_KEYSTORE_PASSWORD));
154   }
155
156   @Override
157   public String getKeyStorePath() {
158     return certLocation + modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_KEYSTORE_FILE);
159   }
160
161   @Override
162   public String getPassword() {
163     return Password.deobfuscate(modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_PASSWORD));
164   }
165
166   @Override
167   public int getPollingInterval() {
168     return Integer.parseInt(modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_POLLING_INTERVAL));
169   }
170
171   @Override
172   public int getPollingTimeout() {
173     return Integer.parseInt(modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_POLLING_TIMEOUT));
174   }
175
176   @Override
177   public List<String> getRelevantArtifactTypes() {
178     return artifactTypes;
179   }
180
181   @Override
182   public String getUser() {
183     return modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_USER);
184   }
185
186   @Override
187   public boolean isFilterInEmptyResources() {
188     return false;
189   }
190
191   @Override
192   public Boolean isUseHttpsWithDmaap() {
193     String useHTTPS = modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_HTTPS_WITH_DMAAP);
194     return useHTTPS == null ? false : Boolean.valueOf(useHTTPS);
195   }
196
197   @Override
198   public List<String> getMsgBusAddress() {
199     return msgBusAddrs;
200   }
201
202   public String getAaiKeyStorePath() {
203     return certLocation + File.separator + modelLoaderProperties.getProperty(PROP_AAI_KEYSTORE_FILE);
204   }
205
206   public String getBabelKeyStorePath() {
207     return certLocation + File.separator + modelLoaderProperties.getProperty(PROP_BABEL_KEYSTORE_FILE);
208   }
209
210   public String getAaiKeyStorePassword() {
211     return Password.deobfuscate(modelLoaderProperties.getProperty(PROP_AAI_KEYSTORE_PASSWORD));
212   }
213
214   public String getBabelKeyStorePassword() {
215     return Password.deobfuscate(modelLoaderProperties.getProperty(PROP_BABEL_KEYSTORE_PASSWORD));
216   }
217
218   public String getAaiBaseUrl() {
219     return modelLoaderProperties.getProperty(PROP_AAI_BASE_URL);
220   }
221
222   public String getBabelBaseUrl() {
223     return modelLoaderProperties.getProperty(PROP_BABEL_BASE_URL);
224   }
225
226   public String getBabelGenerateArtifactsUrl() {
227     return modelLoaderProperties.getProperty(PROP_BABEL_GENERATE_RESOURCE_URL);
228   }
229
230   public String getAaiModelUrl(String version) {
231     setModelVersion(version);
232     return updatePropertyOXMVersion(modelLoaderProperties, PROP_AAI_MODEL_RESOURCE_URL, version);
233   }
234
235   public String getAaiNamedQueryUrl(String version) {
236     return updatePropertyOXMVersion(modelLoaderProperties, PROP_AAI_NAMED_QUERY_RESOURCE_URL, version);
237   }
238
239   public String getAaiVnfImageUrl() {
240     return updatePropertyOXMVersion(modelLoaderProperties, PROP_AAI_VNF_IMAGE_RESOURCE_URL, getModelVersion());
241   }
242
243   public String getAaiAuthenticationUser() {
244     return modelLoaderProperties.getProperty(PROP_AAI_AUTHENTICATION_USER);
245   }
246
247   public String getModelVersion() {
248     return modelVersion;
249   }
250
251   public void setModelVersion(String modelVersion) {
252     this.modelVersion = modelVersion;
253   }
254
255   /**
256    * @return password for AAI authentication that has been reverse-engineered from its obfuscated form.
257    */
258   public String getAaiAuthenticationPassword() {
259     String password = Password.deobfuscate(modelLoaderProperties.getProperty(PROP_AAI_AUTHENTICATION_PASSWORD));
260
261     if (password != null && password.isEmpty()) {
262       password = null;
263     }
264
265     return password;
266   }
267
268   /**
269    * @return a boolean value indicating whether the simulator is enabled.
270    */
271   public boolean getIngestSimulatorEnabled() {
272     String propValue = modelLoaderProperties.getProperty(PROP_DEBUG_INGEST_SIMULATOR);
273     return propValue != null && "enabled".equalsIgnoreCase(propValue);
274   }
275
276   /**
277    * @return a String value of the defined property with the oxm version
278    */
279   private String updatePropertyOXMVersion(Properties modelLoaderProperties, String propertyName, String version) {
280     if (version != null)
281       return modelLoaderProperties.getProperty(propertyName).replace("v*", version);
282     else
283       return modelLoaderProperties.getProperty(propertyName);
284   }
285   
286   
287   
288   
289   /**
290    * @return a boolean value indicating whether model loader is connected to ASDC.
291    */
292   public boolean getASDCConnectionDisabled(){
293       String propValue = modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_ASDC_CONNECTION_DISABLED);
294       return propValue != null && "true".equalsIgnoreCase(propValue);
295       
296   }
297
298
299 }