Initial OpenECOMP A&AI Model Loader commit
[aai/model-loader.git] / src / main / java / org / openecomp / modelloader / config / ModelLoaderConfig.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * MODEL LOADER SERVICE
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
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
21 package org.openecomp.modelloader.config;
22
23 import org.eclipse.jetty.util.security.Password;
24 import org.openecomp.sdc.api.consumer.IConfiguration;
25
26 import java.io.File;
27 import java.net.URL;
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
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) {
90     this.modelLoaderProperties = modelLoaderProperties;
91     
92     String aaiKeystoreFile = modelLoaderProperties.getProperty(PROP_AAI_KEYSTORE_FILE);
93     if(aaiKeystoreFile != null){
94             URL keystoreURL = this.getClass().getClassLoader().getResource(aaiKeystoreFile);
95             if(keystoreURL != null){
96                 File fKeystoreLocation = new File(keystoreURL.getPath());
97                 this.certLocation = fKeystoreLocation.getParent();
98             }
99     }
100
101     // Get list of artifacts
102     artifactTypes = new ArrayList<String>();
103     if (modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_ARTIFACT_TYPES) != null) {
104       String[] artTypeList = modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_ARTIFACT_TYPES)
105           .split(",");
106       for (String artType : artTypeList) {
107         artifactTypes.add(artType);
108       }
109     }
110   }
111
112   @Override
113   public boolean activateServerTLSAuth() {
114     String value = modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_ACTIVE_SERVER_TLS_AUTH);
115     return value == null ? false : Boolean.parseBoolean(value);
116   }
117
118   @Override
119   public String getAsdcAddress() {
120     return modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_ASDC_ADDRESS);
121   }
122
123   @Override
124   public String getConsumerGroup() {
125     return modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_CONSUMER_GROUP);
126   }
127
128   @Override
129   public String getConsumerID() {
130     return modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_CONSUMER_ID);
131   }
132
133   @Override
134   public String getEnvironmentName() {
135     return modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_ENVIRONMENT_NAME);
136   }
137
138   @Override
139   public String getKeyStorePassword() {
140     return Password
141         .deobfuscate(modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_KEYSTORE_PASSWORD));
142   }
143
144   @Override
145   public String getKeyStorePath() {
146     return certLocation + modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_KEYSTORE_FILE);
147   }
148
149   @Override
150   public String getPassword() {
151     return Password.deobfuscate(modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_PASSWORD));
152   }
153
154   @Override
155   public int getPollingInterval() {
156     return Integer
157         .parseInt(modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_POLLING_INTERVAL));
158   }
159
160   @Override
161   public int getPollingTimeout() {
162     return Integer
163         .parseInt(modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_POLLING_TIMEOUT));
164   }
165
166   @Override
167   public List<String> getRelevantArtifactTypes() {
168     return artifactTypes;
169   }
170
171   @Override
172   public String getUser() {
173     return modelLoaderProperties.getProperty(PROP_ML_DISTRIBUTION_USER);
174   }
175
176   public String getAaiKeyStorePath() {
177     return certLocation + "/" + modelLoaderProperties.getProperty(PROP_AAI_KEYSTORE_FILE);
178   }
179
180   public String getAaiKeyStorePassword() {
181     return Password.deobfuscate(modelLoaderProperties.getProperty(PROP_AAI_KEYSTORE_PASSWORD));
182   }
183
184   public String getAaiBaseUrl() {
185     return modelLoaderProperties.getProperty(PROP_AAI_BASE_URL);
186   }
187
188   public String getAaiModelUrl() {
189     return modelLoaderProperties.getProperty(PROP_AAI_MODEL_RESOURCE_URL);
190   }
191
192   public String getAaiNamedQueryUrl() {
193     return modelLoaderProperties.getProperty(PROP_AAI_NAMED_QUERY_RESOURCE_URL);
194   }
195
196   public String getAaiVnfImageUrl() {
197     return modelLoaderProperties.getProperty(PROP_AAI_VNF_IMAGE_RESOURCE_URL);
198   }
199
200   public String getAaiAuthenticationUser() {
201     return modelLoaderProperties.getProperty(PROP_AAI_AUTHENTICATION_USER);
202   }
203
204   /**
205    * @return password for AAI authentication that has been reverse-engineered
206    *         from its obfuscated form.
207    */
208   public String getAaiAuthenticationPassword() {
209     String password = Password
210         .deobfuscate(modelLoaderProperties.getProperty(PROP_AAI_AUTHENTICATION_PASSWORD));
211
212     if ((password != null) && (password.equals(""))) {
213       return null;
214     }
215
216     return password;
217   }
218
219   /**
220    * @return a boolean value indicating whether the simulator is enabled.
221    */
222   public boolean getIngestSimulatorEnabled() {
223     String propValue = modelLoaderProperties.getProperty(PROP_DEBUG_INGEST_SIMULATOR);
224
225     if (propValue == null) {
226       return false;
227     }
228
229     if (propValue.compareToIgnoreCase("enabled") == 0) {
230       return true;
231     }
232
233     return false;
234   }
235 }