Update license date and text
[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 org.eclipse.jetty.util.security.Password;
24 import org.openecomp.sdc.api.consumer.IConfiguration;
25
26 import java.util.ArrayList;
27 import java.util.List;
28 import java.util.Properties;
29
30 public class ModelLoaderConfig implements IConfiguration {
31         
32   // Configuration file structure
33   public static final String PREFIX_MODEL_LOADER_CONFIG = "ml";
34   public static final String PREFIX_DISTRIBUTION_CLIENT = 
35       PREFIX_MODEL_LOADER_CONFIG + ".distribution.";
36   public static final String PREFIX_AAI = PREFIX_MODEL_LOADER_CONFIG + ".aai.";
37   public static final String PREFIX_DEBUG = PREFIX_MODEL_LOADER_CONFIG + ".debug.";
38
39   // Configuration file properties
40   protected static final String PROP_ML_DISTRIBUTION_ACTIVE_SERVER_TLS_AUTH = 
41       PREFIX_DISTRIBUTION_CLIENT + "ACTIVE_SERVER_TLS_AUTH";
42   protected static final String PROP_ML_DISTRIBUTION_ASDC_ADDRESS = PREFIX_DISTRIBUTION_CLIENT
43       + "ASDC_ADDRESS";
44   protected static final String PROP_ML_DISTRIBUTION_CONSUMER_GROUP = PREFIX_DISTRIBUTION_CLIENT
45       + "CONSUMER_GROUP";
46   protected static final String PROP_ML_DISTRIBUTION_CONSUMER_ID = PREFIX_DISTRIBUTION_CLIENT
47       + "CONSUMER_ID";
48   protected static final String PROP_ML_DISTRIBUTION_ENVIRONMENT_NAME = PREFIX_DISTRIBUTION_CLIENT
49       + "ENVIRONMENT_NAME";
50   protected static final String PROP_ML_DISTRIBUTION_KEYSTORE_PASSWORD = PREFIX_DISTRIBUTION_CLIENT
51       + "KEYSTORE_PASSWORD";
52   protected static final String PROP_ML_DISTRIBUTION_KEYSTORE_FILE = PREFIX_DISTRIBUTION_CLIENT
53       + "KEYSTORE_FILE";
54   protected static final String PROP_ML_DISTRIBUTION_PASSWORD = PREFIX_DISTRIBUTION_CLIENT
55       + "PASSWORD";
56   protected static final String PROP_ML_DISTRIBUTION_POLLING_INTERVAL = PREFIX_DISTRIBUTION_CLIENT
57       + "POLLING_INTERVAL";
58   protected static final String PROP_ML_DISTRIBUTION_POLLING_TIMEOUT = PREFIX_DISTRIBUTION_CLIENT
59       + "POLLING_TIMEOUT";
60   protected static final String PROP_ML_DISTRIBUTION_USER = PREFIX_DISTRIBUTION_CLIENT + "USER";
61   protected static final String PROP_ML_DISTRIBUTION_ARTIFACT_TYPES = PREFIX_DISTRIBUTION_CLIENT
62       + "ARTIFACT_TYPES";
63   protected static final String PROP_ML_DISTRIBUTION_HTTPS_WITH_DMAAP =
64           PREFIX_DISTRIBUTION_CLIENT + "USE_HTTPS_WITH_DMAAP";
65
66   protected static final String PROP_AAI_BASE_URL = PREFIX_AAI + "BASE_URL";
67   protected static final String PROP_AAI_KEYSTORE_FILE = PREFIX_AAI + "KEYSTORE_FILE";
68   protected static final String PROP_AAI_KEYSTORE_PASSWORD = PREFIX_AAI + "KEYSTORE_PASSWORD";
69   protected static final String PROP_AAI_MODEL_RESOURCE_URL = PREFIX_AAI + "MODEL_URL";
70   protected static final String PROP_AAI_NAMED_QUERY_RESOURCE_URL = PREFIX_AAI + "NAMED_QUERY_URL";
71   protected static final String PROP_AAI_VNF_IMAGE_RESOURCE_URL = PREFIX_AAI + "VNF_IMAGE_URL";
72   protected static final String PROP_AAI_AUTHENTICATION_USER = PREFIX_AAI + "AUTH_USER";
73   protected static final String PROP_AAI_AUTHENTICATION_PASSWORD = PREFIX_AAI + "AUTH_PASSWORD";
74
75   protected static final String PROP_DEBUG_INGEST_SIMULATOR = PREFIX_DEBUG + "INGEST_SIMULATOR";
76
77   private Properties modelLoaderProperties = null;
78
79   private String certLocation = ".";
80
81   private List<String> artifactTypes = null;
82
83   /**
84    * This is the class constructor.
85    * 
86    * @param modelLoaderProperties properties needed to be configured for the model loader
87    * @param certLocation location of the certificate
88    */
89   public ModelLoaderConfig(Properties modelLoaderProperties, String certLocation) {
90     this.modelLoaderProperties = modelLoaderProperties;
91     this.certLocation = certLocation;
92
93     // Get list of artifacts
94     artifactTypes = new ArrayList<String>();
95     if (modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_ARTIFACT_TYPES) != null) {
96       String[] artTypeList = modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_ARTIFACT_TYPES)
97           .split(",");
98       for (String artType : artTypeList) {
99         artifactTypes.add(artType);
100       }
101     }
102   }
103
104   @Override
105   public boolean activateServerTLSAuth() {
106     String value = modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_ACTIVE_SERVER_TLS_AUTH);
107     return value == null ? false : Boolean.parseBoolean(value);
108   }
109
110   @Override
111   public String getAsdcAddress() {
112     return modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_ASDC_ADDRESS);
113   }
114
115   @Override
116   public String getConsumerGroup() {
117     return modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_CONSUMER_GROUP);
118   }
119
120   @Override
121   public String getConsumerID() {
122     return modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_CONSUMER_ID);
123   }
124
125   @Override
126   public String getEnvironmentName() {
127     return modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_ENVIRONMENT_NAME);
128   }
129
130   @Override
131   public String getKeyStorePassword() {
132     return Password
133         .deobfuscate(modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_KEYSTORE_PASSWORD));
134   }
135
136   @Override
137   public String getKeyStorePath() {
138     return certLocation + modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_KEYSTORE_FILE);
139   }
140
141   @Override
142   public String getPassword() {
143     return Password.deobfuscate(modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_PASSWORD));
144   }
145
146   @Override
147   public int getPollingInterval() {
148     return Integer
149         .parseInt(modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_POLLING_INTERVAL));
150   }
151
152   @Override
153   public int getPollingTimeout() {
154     return Integer
155         .parseInt(modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_POLLING_TIMEOUT));
156   }
157
158   @Override
159   public List<String> getRelevantArtifactTypes() {
160     return artifactTypes;
161   }
162
163   @Override
164   public String getUser() {
165     return modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_USER);
166   }
167
168   @Override
169   public boolean isFilterInEmptyResources() {
170       return false;
171   }
172
173   @Override
174   public Boolean isUseHttpsWithDmaap() {
175       String useHTTPS = modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_HTTPS_WITH_DMAAP);
176       return useHTTPS == null ? false : Boolean.valueOf(useHTTPS);
177   }
178   
179   public String getAaiKeyStorePath() {
180     return certLocation + "/" + modelLoaderProperties.getProperty(PROP_AAI_KEYSTORE_FILE);
181   }
182
183   public String getAaiKeyStorePassword() {
184     return Password.deobfuscate(modelLoaderProperties.getProperty(PROP_AAI_KEYSTORE_PASSWORD));
185   }
186
187   public String getAaiBaseUrl() {
188     return modelLoaderProperties.getProperty(PROP_AAI_BASE_URL);
189   }
190
191   public String getAaiModelUrl(String version) {
192     return modelLoaderProperties.getProperty(PROP_AAI_MODEL_RESOURCE_URL).replace("v*", version);
193   }
194
195   public String getAaiNamedQueryUrl(String version) {
196     return modelLoaderProperties.getProperty(PROP_AAI_NAMED_QUERY_RESOURCE_URL).replace("v*", version);
197   }
198
199   public String getAaiVnfImageUrl() {
200     return modelLoaderProperties.getProperty(PROP_AAI_VNF_IMAGE_RESOURCE_URL);
201   }
202
203   public String getAaiAuthenticationUser() {
204     return modelLoaderProperties.getProperty(PROP_AAI_AUTHENTICATION_USER);
205   }
206
207   /**
208    * @return password for AAI authentication that has been reverse-engineered
209    *         from its obfuscated form.
210    */
211   public String getAaiAuthenticationPassword() {
212     String password = Password
213         .deobfuscate(modelLoaderProperties.getProperty(PROP_AAI_AUTHENTICATION_PASSWORD));
214
215     if ((password != null) && (password.equals(""))) {
216       return null;
217     }
218
219     return password;
220   }
221
222   /**
223    * @return a boolean value indicating whether the simulator is enabled.
224    */
225   public boolean getIngestSimulatorEnabled() {
226     String propValue = modelLoaderProperties.getProperty(PROP_DEBUG_INGEST_SIMULATOR);
227
228     if (propValue == null) {
229       return false;
230     }
231
232     if (propValue.compareToIgnoreCase("enabled") == 0) {
233       return true;
234     }
235
236     return false;
237   }
238   
239 }