2 * ============LICENSE_START=======================================================
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
11 * 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=========================================================
21 package org.onap.so.asdc.client;
24 import java.security.GeneralSecurityException;
25 import java.util.Arrays;
26 import java.util.Collections;
27 import java.util.List;
29 import org.onap.sdc.api.consumer.IConfiguration;
30 import org.onap.so.logger.MsoLogger;
31 import org.onap.so.utils.CryptoUtils;
32 import org.springframework.beans.factory.annotation.Autowired;
33 import org.springframework.beans.factory.annotation.Value;
34 import org.springframework.core.env.Environment;
35 import org.springframework.stereotype.Component;
38 public class ASDCConfiguration implements IConfiguration {
40 // SHell command to obtain the same encryption, 128 bits key, key must be HEX
41 // echo -n "This is a test string" | openssl aes-128-ecb -e -K 546573746F736973546573746F736973 -nosalt | xxd
45 private String asdcControllerName;
47 public static final String MSO_PROP_ASDC = "MSO_PROP_ASDC";
48 public static final String PARAMETER_PATTERN = "asdc-connections";
49 public static final String MSG_BUS_ADDRESS_ATTRIBUTE_NAME = "messageBusAddress";
50 public static final String WATCHDOG_TIMEOUT_NAME = "watchDogTimeout";
52 public static final String CONSUMER_GROUP_ATTRIBUTE_NAME = "consumerGroup";
53 public static final String CONSUMER_ID_ATTRIBUTE_NAME = "consumerId";
54 public static final String ENVIRONMENT_NAME_ATTRIBUTE_NAME = "environmentName";
55 public static final String PASSWORD_ATTRIBUTE_NAME = "password";
56 public static final String POLLING_INTERVAL_ATTRIBUTE_NAME = "pollingInterval";
57 public static final String RELEVANT_ARTIFACT_TYPES_ATTRIBUTE_NAME = "relevantArtifactTypes";
58 public static final String USER_ATTRIBUTE_NAME = "user";
59 public static final String ASDC_ADDRESS_ATTRIBUTE_NAME = "asdcAddress";
60 public static final String POLLING_TIMEOUT_ATTRIBUTE_NAME = "pollingTimeout";
61 public static final String ACTIVATE_SERVER_TLS_AUTH = "activateServerTLSAuth";
62 public static final String KEY_STORE_PASSWORD = "keyStorePassword";
63 public static final String KEY_STORE_PATH = "keyStorePath";
65 public static final String HEAT="HEAT";
66 public static final String HEAT_ARTIFACT="HEAT_ARTIFACT";
67 public static final String HEAT_ENV="HEAT_ENV";
68 public static final String HEAT_NESTED="HEAT_NESTED";
69 public static final String HEAT_NET="HEAT_NET";
70 public static final String HEAT_VOL="HEAT_VOL";
71 public static final String OTHER="OTHER";
72 public static final String TOSCA_CSAR="TOSCA_CSAR";
73 public static final String WORKFLOWS="Workflows";
74 public static final String VF_MODULES_METADATA="VF_MODULES_METADATA";
75 private static MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.ASDC,ASDCConfiguration.class);
79 private static final String[] SUPPORTED_ARTIFACT_TYPES = {HEAT,
89 public static final List<String> SUPPORTED_ARTIFACT_TYPES_LIST = Collections.unmodifiableList(Arrays.asList(SUPPORTED_ARTIFACT_TYPES));
92 private Environment env;
94 @Value("${mso.asdc.config.key}")
95 private String configKey;
97 @Value("${mso.asdc-connections.asdc-controller1.messageBusAddress}")
98 private String[] messageBusAddress;
101 public void setAsdcControllerName(String asdcControllerName) {
102 this.asdcControllerName = asdcControllerName;
106 public java.lang.Boolean isUseHttpsWithDmaap() {
107 return getBooleanPropertyWithDefault("mso.asdc-connections.asdc-controller1.useHttpsWithDmaap", true);
111 public boolean isConsumeProduceStatusTopic(){
116 public List<String> getMsgBusAddress(){
117 if (messageBusAddress.length > 0) {
118 return Arrays.asList(messageBusAddress);
120 return Collections.emptyList();
126 public String getAsdcControllerName () {
127 return asdcControllerName;
132 public String getConsumerGroup() {
133 return getPropertyOrNull("mso.asdc-connections.asdc-controller1.consumerGroup");
136 public int getWatchDogTimeout () {
137 return getIntegerPropertyOrZero("mso.asdc-connections.asdc-controller1.watchDogTimeout");
142 public String getConsumerID () {
143 return getPropertyOrNull("mso.asdc-connections.asdc-controller1.consumerId");
146 public int getIntegerPropertyOrZero (String propertyName) {
147 String property = env.getProperty(propertyName);
148 if (property == null || "NULL".equals(property) || property.isEmpty()) {
152 return Integer.parseInt(property);
153 } catch (NumberFormatException e) {
159 public String getPropertyOrNull (String propertyName) {
160 String config = env.getProperty(propertyName);
161 if (config==null || "NULL".equals(config) || config.isEmpty()) {
168 public String getEncryptedPropertyOrNull (String propertyName) {
170 String config = env.getProperty(propertyName);
172 if (config==null || "NULL".equals(config) || config.isEmpty()) {
177 decryptedKey = CryptoUtils.decrypt(config, this.configKey);
178 } catch (GeneralSecurityException e) {
179 msoLogger.debug("Exception while decrypting property: " + propertyName, e);
183 if (decryptedKey.isEmpty ()) {
190 public boolean getBooleanPropertyWithDefault (String propertyName, boolean defaultValue) {
191 String config = env.getProperty(propertyName);
192 if (config == null || "NULL".equals(config) || config.isEmpty()) {
196 return Boolean.valueOf(config);
197 } catch (Exception e) {
204 public String getEnvironmentName () {
205 return getPropertyOrNull("mso.asdc-connections.asdc-controller1.environmentName");
209 public String getPassword () {
210 return getEncryptedPropertyOrNull("mso.asdc-connections.asdc-controller1.password");
214 public int getPollingInterval () {
215 return getIntegerPropertyOrZero("mso.asdc-connections.asdc-controller1.pollingInterval");
219 public List <String> getRelevantArtifactTypes () {
220 // DO not return the Static List SUPPORTED_ARTIFACT_TYPES_LIST because the ASDC Client will try to modify it !!!
221 return Arrays.asList(SUPPORTED_ARTIFACT_TYPES);
225 public String getUser () {
226 return getPropertyOrNull("mso.asdc-connections.asdc-controller1.user");
230 public String getAsdcAddress () {
231 return getPropertyOrNull("mso.asdc-connections.asdc-controller1.asdcAddress");
235 public int getPollingTimeout () {
236 return getIntegerPropertyOrZero("mso.asdc-connections.asdc-controller1.pollingTimeout");
240 public boolean activateServerTLSAuth() {
241 return getBooleanPropertyWithDefault("mso.asdc-connections.asdc-controller1.activateServerTLSAuth", true);
245 public String getKeyStorePassword() {
246 return getPropertyOrNull("mso.asdc-connections.asdc-controller1.keyStorePassword");
250 public String getKeyStorePath() {
251 return getPropertyOrNull("mso.asdc-connections.asdc-controller1.keyStorePath");
255 * The flag allows the client to receive metadata for all resources of the service regardless of the artifacts associated to them.
256 * Setting the flag to false will preserve legacy behavior.
259 public boolean isFilterInEmptyResources() {
260 return getBooleanPropertyWithDefault("mso.asdc-connections.asdc-controller1.isFilterInEmptyResources", true);