[AAI-170 R1710] Upversion sdc-distribution-client
[aai/model-loader.git] / src / main / java / org / openecomp / modelloader / config / ModelLoaderConfig.java
1 /**
2  * ============LICENSE_START=======================================================
3  * Model Loader
4  * ================================================================================
5  * Copyright © 2017 AT&T Intellectual Property.
6  * Copyright © 2017 Amdocs
7  * All rights reserved.
8  * ================================================================================
9  * Licensed under the Apache License, Version 2.0 (the "License");
10  * you may not use this file except in compliance with the License.
11  * You may obtain a copy of the License at
12  * http://www.apache.org/licenses/LICENSE-2.0
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  *
20  * ECOMP and OpenECOMP are trademarks
21  * and service marks of AT&T Intellectual Property.
22  */
23 package org.openecomp.modelloader.config;
24
25 import org.eclipse.jetty.util.security.Password;
26 import org.openecomp.sdc.api.consumer.IConfiguration;
27
28 import java.util.ArrayList;
29 import java.util.List;
30 import java.util.Properties;
31
32 public class ModelLoaderConfig implements IConfiguration {
33         
34   // Configuration file structure
35   public static final String PREFIX_MODEL_LOADER_CONFIG = "ml";
36   public static final String PREFIX_DISTRIBUTION_CLIENT = 
37       PREFIX_MODEL_LOADER_CONFIG + ".distribution.";
38   public static final String PREFIX_AAI = PREFIX_MODEL_LOADER_CONFIG + ".aai.";
39   public static final String PREFIX_DEBUG = PREFIX_MODEL_LOADER_CONFIG + ".debug.";
40
41   // Configuration file properties
42   protected static final String PROP_ML_DISTRIBUTION_ACTIVE_SERVER_TLS_AUTH = 
43       PREFIX_DISTRIBUTION_CLIENT + "ACTIVE_SERVER_TLS_AUTH";
44   protected static final String PROP_ML_DISTRIBUTION_ASDC_ADDRESS = PREFIX_DISTRIBUTION_CLIENT
45       + "ASDC_ADDRESS";
46   protected static final String PROP_ML_DISTRIBUTION_CONSUMER_GROUP = PREFIX_DISTRIBUTION_CLIENT
47       + "CONSUMER_GROUP";
48   protected static final String PROP_ML_DISTRIBUTION_CONSUMER_ID = PREFIX_DISTRIBUTION_CLIENT
49       + "CONSUMER_ID";
50   protected static final String PROP_ML_DISTRIBUTION_ENVIRONMENT_NAME = PREFIX_DISTRIBUTION_CLIENT
51       + "ENVIRONMENT_NAME";
52   protected static final String PROP_ML_DISTRIBUTION_KEYSTORE_PASSWORD = PREFIX_DISTRIBUTION_CLIENT
53       + "KEYSTORE_PASSWORD";
54   protected static final String PROP_ML_DISTRIBUTION_KEYSTORE_FILE = PREFIX_DISTRIBUTION_CLIENT
55       + "KEYSTORE_FILE";
56   protected static final String PROP_ML_DISTRIBUTION_PASSWORD = PREFIX_DISTRIBUTION_CLIENT
57       + "PASSWORD";
58   protected static final String PROP_ML_DISTRIBUTION_POLLING_INTERVAL = PREFIX_DISTRIBUTION_CLIENT
59       + "POLLING_INTERVAL";
60   protected static final String PROP_ML_DISTRIBUTION_POLLING_TIMEOUT = PREFIX_DISTRIBUTION_CLIENT
61       + "POLLING_TIMEOUT";
62   protected static final String PROP_ML_DISTRIBUTION_USER = PREFIX_DISTRIBUTION_CLIENT + "USER";
63   protected static final String PROP_ML_DISTRIBUTION_ARTIFACT_TYPES = PREFIX_DISTRIBUTION_CLIENT
64       + "ARTIFACT_TYPES";
65   protected static final String PROP_ML_DISTRIBUTION_HTTPS_WITH_DMAAP =
66           PREFIX_DISTRIBUTION_CLIENT + "USE_HTTPS_WITH_DMAAP";
67
68   protected static final String PROP_AAI_BASE_URL = PREFIX_AAI + "BASE_URL";
69   protected static final String PROP_AAI_KEYSTORE_FILE = PREFIX_AAI + "KEYSTORE_FILE";
70   protected static final String PROP_AAI_KEYSTORE_PASSWORD = PREFIX_AAI + "KEYSTORE_PASSWORD";
71   protected static final String PROP_AAI_MODEL_RESOURCE_URL = PREFIX_AAI + "MODEL_URL";
72   protected static final String PROP_AAI_NAMED_QUERY_RESOURCE_URL = PREFIX_AAI + "NAMED_QUERY_URL";
73   protected static final String PROP_AAI_VNF_IMAGE_RESOURCE_URL = PREFIX_AAI + "VNF_IMAGE_URL";
74   protected static final String PROP_AAI_AUTHENTICATION_USER = PREFIX_AAI + "AUTH_USER";
75   protected static final String PROP_AAI_AUTHENTICATION_PASSWORD = PREFIX_AAI + "AUTH_PASSWORD";
76
77   protected static final String PROP_DEBUG_INGEST_SIMULATOR = PREFIX_DEBUG + "INGEST_SIMULATOR";
78
79   private Properties modelLoaderProperties = null;
80
81   private String certLocation = ".";
82
83   private List<String> artifactTypes = null;
84
85   /**
86    * This is the class constructor.
87    * 
88    * @param modelLoaderProperties properties needed to be configured for the model loader
89    * @param certLocation location of the certificate
90    */
91   public ModelLoaderConfig(Properties modelLoaderProperties, String certLocation) {
92     this.modelLoaderProperties = modelLoaderProperties;
93     this.certLocation = certLocation;
94
95     // Get list of artifacts
96     artifactTypes = new ArrayList<String>();
97     if (modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_ARTIFACT_TYPES) != null) {
98       String[] artTypeList = modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_ARTIFACT_TYPES)
99           .split(",");
100       for (String artType : artTypeList) {
101         artifactTypes.add(artType);
102       }
103     }
104   }
105
106   @Override
107   public boolean activateServerTLSAuth() {
108     String value = modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_ACTIVE_SERVER_TLS_AUTH);
109     return value == null ? false : Boolean.parseBoolean(value);
110   }
111
112   @Override
113   public String getAsdcAddress() {
114     return modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_ASDC_ADDRESS);
115   }
116
117   @Override
118   public String getConsumerGroup() {
119     return modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_CONSUMER_GROUP);
120   }
121
122   @Override
123   public String getConsumerID() {
124     return modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_CONSUMER_ID);
125   }
126
127   @Override
128   public String getEnvironmentName() {
129     return modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_ENVIRONMENT_NAME);
130   }
131
132   @Override
133   public String getKeyStorePassword() {
134     return Password
135         .deobfuscate(modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_KEYSTORE_PASSWORD));
136   }
137
138   @Override
139   public String getKeyStorePath() {
140     return certLocation + modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_KEYSTORE_FILE);
141   }
142
143   @Override
144   public String getPassword() {
145     return Password.deobfuscate(modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_PASSWORD));
146   }
147
148   @Override
149   public int getPollingInterval() {
150     return Integer
151         .parseInt(modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_POLLING_INTERVAL));
152   }
153
154   @Override
155   public int getPollingTimeout() {
156     return Integer
157         .parseInt(modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_POLLING_TIMEOUT));
158   }
159
160   @Override
161   public List<String> getRelevantArtifactTypes() {
162     return artifactTypes;
163   }
164
165   @Override
166   public String getUser() {
167     return modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_USER);
168   }
169
170   @Override
171   public boolean isFilterInEmptyResources() {
172       return false;
173   }
174
175   @Override
176   public Boolean isUseHttpsWithDmaap() {
177       String useHTTPS = modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_HTTPS_WITH_DMAAP);
178       return useHTTPS == null ? false : Boolean.valueOf(useHTTPS);
179   }
180   
181   public String getAaiKeyStorePath() {
182     return certLocation + "/" + modelLoaderProperties.getProperty(PROP_AAI_KEYSTORE_FILE);
183   }
184
185   public String getAaiKeyStorePassword() {
186     return Password.deobfuscate(modelLoaderProperties.getProperty(PROP_AAI_KEYSTORE_PASSWORD));
187   }
188
189   public String getAaiBaseUrl() {
190     return modelLoaderProperties.getProperty(PROP_AAI_BASE_URL);
191   }
192
193   public String getAaiModelUrl(String version) {
194     return modelLoaderProperties.getProperty(PROP_AAI_MODEL_RESOURCE_URL).replace("v*", version);
195   }
196
197   public String getAaiNamedQueryUrl(String version) {
198     return modelLoaderProperties.getProperty(PROP_AAI_NAMED_QUERY_RESOURCE_URL).replace("v*", version);
199   }
200
201   public String getAaiVnfImageUrl() {
202     return modelLoaderProperties.getProperty(PROP_AAI_VNF_IMAGE_RESOURCE_URL);
203   }
204
205   public String getAaiAuthenticationUser() {
206     return modelLoaderProperties.getProperty(PROP_AAI_AUTHENTICATION_USER);
207   }
208
209   /**
210    * @return password for AAI authentication that has been reverse-engineered
211    *         from its obfuscated form.
212    */
213   public String getAaiAuthenticationPassword() {
214     String password = Password
215         .deobfuscate(modelLoaderProperties.getProperty(PROP_AAI_AUTHENTICATION_PASSWORD));
216
217     if ((password != null) && (password.equals(""))) {
218       return null;
219     }
220
221     return password;
222   }
223
224   /**
225    * @return a boolean value indicating whether the simulator is enabled.
226    */
227   public boolean getIngestSimulatorEnabled() {
228     String propValue = modelLoaderProperties.getProperty(PROP_DEBUG_INGEST_SIMULATOR);
229
230     if (propValue == null) {
231       return false;
232     }
233
234     if (propValue.compareToIgnoreCase("enabled") == 0) {
235       return true;
236     }
237
238     return false;
239   }
240   
241 }