2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2018 AT&T Intellectual Property. All rights
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
12 * http://www.apache.org/licenses/LICENSE-2.0
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 * ECOMP is a trademark and service mark of AT&T Intellectual Property.
24 package org.onap.clamp.clds.config.sdc;
26 import com.att.eelf.configuration.EELFLogger;
27 import com.att.eelf.configuration.EELFManager;
28 import com.fasterxml.jackson.databind.JsonNode;
30 import java.security.GeneralSecurityException;
31 import java.util.Arrays;
32 import java.util.Collections;
33 import java.util.List;
35 import org.apache.commons.codec.DecoderException;
36 import org.onap.clamp.clds.exception.sdc.controller.SdcParametersException;
37 import org.onap.clamp.clds.util.CryptoUtils;
38 import org.openecomp.sdc.api.consumer.IConfiguration;
41 * This class maps the SDC config JSON for one controller.
43 public class SdcSingleControllerConfiguration implements IConfiguration {
45 private static final EELFLogger logger = EELFManager.getInstance()
46 .getLogger(SdcSingleControllerConfiguration.class);
48 * The sdc Controller name corresponding.
50 private String sdcControllerName;
52 * The root of the JSON.
54 private JsonNode jsonRootNode;
55 // All keys that can be present in the JSON
56 public static final String CONSUMER_GROUP_ATTRIBUTE_NAME = "consumerGroup";
57 public static final String CONSUMER_ID_ATTRIBUTE_NAME = "consumerId";
58 public static final String ENVIRONMENT_NAME_ATTRIBUTE_NAME = "environmentName";
59 public static final String PASSWORD_ATTRIBUTE_NAME = "password";
60 public static final String POLLING_INTERVAL_ATTRIBUTE_NAME = "pollingInterval";
61 public static final String RELEVANT_ARTIFACT_TYPES_ATTRIBUTE_NAME = "relevantArtifactTypes";
62 public static final String USER_ATTRIBUTE_NAME = "user";
63 public static final String SDC_ADDRESS_ATTRIBUTE_NAME = "sdcAddress";
64 public static final String POLLING_TIMEOUT_ATTRIBUTE_NAME = "pollingTimeout";
65 public static final String ACTIVATE_SERVER_TLS_AUTH = "activateServerTLSAuth";
66 public static final String KEY_STORE_PASSWORD = "keyStorePassword";
67 public static final String KEY_STORE_PATH = "keyStorePath";
68 private String errorMessageKeyNotFound;
70 * Supported artifact types.
72 public static final String HEAT = "HEAT";
73 public static final String HEAT_ARTIFACT = "HEAT_ARTIFACT";
74 public static final String HEAT_ENV = "HEAT_ENV";
75 public static final String HEAT_NESTED = "HEAT_NESTED";
76 public static final String HEAT_NET = "HEAT_NET";
77 public static final String HEAT_VOL = "HEAT_VOL";
78 public static final String OTHER = "OTHER";
79 public static final String TOSCA_CSAR = "TOSCA_CSAR";
80 public static final String VF_MODULES_METADATA = "VF_MODULES_METADATA";
81 private static final String[] SUPPORTED_ARTIFACT_TYPES = {
82 HEAT, HEAT_ARTIFACT, HEAT_ENV, HEAT_NESTED, HEAT_NET, HEAT_VOL, OTHER, TOSCA_CSAR, VF_MODULES_METADATA
84 public static final List<String> SUPPORTED_ARTIFACT_TYPES_LIST = Collections
85 .unmodifiableList(Arrays.asList(SUPPORTED_ARTIFACT_TYPES));
88 * This constructor builds a SdcSingleControllerConfiguration from the
93 * @param controllerName
94 * The controller name that must appear in the JSON
96 public SdcSingleControllerConfiguration(JsonNode jsonNode, String controllerName) {
97 jsonRootNode = jsonNode;
98 setSdcControllerName(controllerName);
99 testAllRequiredParameters();
102 public String getSdcControllerName() {
103 return sdcControllerName;
106 public void setSdcControllerName(String controllerName) {
107 this.sdcControllerName = controllerName;
108 errorMessageKeyNotFound = " parameter cannot be found in config file for controller name" + sdcControllerName;
109 testAllRequiredParameters();
113 public java.lang.Boolean isUseHttpsWithDmaap() {
118 public String getConsumerGroup() {
119 if (jsonRootNode != null && jsonRootNode.get(CONSUMER_GROUP_ATTRIBUTE_NAME) != null) {
120 String config = jsonRootNode.get(CONSUMER_GROUP_ATTRIBUTE_NAME).asText();
121 return "NULL".equals(config) || config.isEmpty() ? null : config;
127 public String getConsumerID() {
128 if (jsonRootNode != null && jsonRootNode.get(CONSUMER_ID_ATTRIBUTE_NAME) != null) {
129 String config = jsonRootNode.get(CONSUMER_ID_ATTRIBUTE_NAME).asText();
130 return config.isEmpty() ? null : config;
136 public String getEnvironmentName() {
137 if (jsonRootNode != null && jsonRootNode.get(ENVIRONMENT_NAME_ATTRIBUTE_NAME) != null) {
138 String config = jsonRootNode.get(ENVIRONMENT_NAME_ATTRIBUTE_NAME).asText();
139 return config.isEmpty() ? null : config;
145 public String getPassword() {
147 if (jsonRootNode != null && jsonRootNode.get(PASSWORD_ATTRIBUTE_NAME) != null) {
148 String config = CryptoUtils.decrypt(jsonRootNode.get(PASSWORD_ATTRIBUTE_NAME).asText());
149 return config.isEmpty() ? null : config;
151 } catch (GeneralSecurityException | DecoderException e) {
152 logger.error("Unable to decrypt the SDC password", e);
158 public int getPollingInterval() {
159 if (jsonRootNode != null && jsonRootNode.get(POLLING_INTERVAL_ATTRIBUTE_NAME) != null) {
160 return jsonRootNode.get(POLLING_INTERVAL_ATTRIBUTE_NAME).asInt();
167 public List<String> getRelevantArtifactTypes() {
168 // DO not return the Static List SUPPORTED_ARTIFACT_TYPES_LIST because
169 // the ASDC Client could try to modify it !!!
170 return Arrays.asList(SUPPORTED_ARTIFACT_TYPES);
174 public String getUser() {
175 if (jsonRootNode != null && jsonRootNode.get(USER_ATTRIBUTE_NAME) != null) {
176 String config = jsonRootNode.get(USER_ATTRIBUTE_NAME).asText();
177 return config.isEmpty() ? null : config;
183 public String getAsdcAddress() {
184 if (jsonRootNode != null && jsonRootNode.get(SDC_ADDRESS_ATTRIBUTE_NAME) != null) {
185 String config = jsonRootNode.get(SDC_ADDRESS_ATTRIBUTE_NAME).asText();
186 return config.isEmpty() ? null : config;
192 public int getPollingTimeout() {
193 if (jsonRootNode != null && jsonRootNode.get(POLLING_TIMEOUT_ATTRIBUTE_NAME) != null) {
194 return jsonRootNode.get(POLLING_TIMEOUT_ATTRIBUTE_NAME).asInt();
201 public boolean activateServerTLSAuth() {
202 if (jsonRootNode != null && jsonRootNode.get(ACTIVATE_SERVER_TLS_AUTH) != null) {
203 return jsonRootNode.get(ACTIVATE_SERVER_TLS_AUTH).asBoolean(false);
210 public String getKeyStorePassword() {
212 if (jsonRootNode != null && jsonRootNode.get(KEY_STORE_PASSWORD) != null) {
213 String config = CryptoUtils.decrypt(jsonRootNode.get(KEY_STORE_PASSWORD).asText());
214 return config.isEmpty() ? null : config;
216 } catch (GeneralSecurityException | DecoderException e) {
217 logger.error("Unable to decrypt the SDC password", e);
223 public String getKeyStorePath() {
224 if (jsonRootNode != null && jsonRootNode.get(KEY_STORE_PATH) != null) {
225 String config = jsonRootNode.get(KEY_STORE_PATH).asText();
226 return config.isEmpty() ? null : config;
232 * This method can be used to validate all required parameters are well
235 public void testAllRequiredParameters() {
236 // Special case for this attribute that can be null from
238 if (jsonRootNode == null) {
239 throw new SdcParametersException("Json is null for controller " + this.getSdcControllerName());
241 if (this.getConsumerGroup() == null && (jsonRootNode.get(CONSUMER_GROUP_ATTRIBUTE_NAME) == null
242 || !"NULL".equals(jsonRootNode.get(CONSUMER_GROUP_ATTRIBUTE_NAME).asText()))) {
243 throw new SdcParametersException(CONSUMER_GROUP_ATTRIBUTE_NAME + errorMessageKeyNotFound);
245 if (this.getConsumerID() == null || this.getConsumerID().isEmpty()) {
246 throw new SdcParametersException(CONSUMER_ID_ATTRIBUTE_NAME + errorMessageKeyNotFound);
248 if (this.getEnvironmentName() == null || this.getEnvironmentName().isEmpty()) {
249 throw new SdcParametersException(ENVIRONMENT_NAME_ATTRIBUTE_NAME + errorMessageKeyNotFound);
251 if (this.getAsdcAddress() == null || this.getAsdcAddress().isEmpty()) {
252 throw new SdcParametersException(SDC_ADDRESS_ATTRIBUTE_NAME + errorMessageKeyNotFound);
254 if (this.getPassword() == null || this.getPassword().isEmpty()) {
255 throw new SdcParametersException(PASSWORD_ATTRIBUTE_NAME + errorMessageKeyNotFound);
257 if (this.getPollingInterval() == 0) {
258 throw new SdcParametersException(POLLING_INTERVAL_ATTRIBUTE_NAME + errorMessageKeyNotFound);
260 if (this.getPollingTimeout() == 0) {
261 throw new SdcParametersException(POLLING_TIMEOUT_ATTRIBUTE_NAME + errorMessageKeyNotFound);
263 if (this.getRelevantArtifactTypes() == null || this.getRelevantArtifactTypes().isEmpty()) {
264 throw new SdcParametersException(RELEVANT_ARTIFACT_TYPES_ATTRIBUTE_NAME + errorMessageKeyNotFound);
266 if (this.getUser() == null || this.getUser().isEmpty()) {
267 throw new SdcParametersException(USER_ATTRIBUTE_NAME + errorMessageKeyNotFound);
272 * The flag allows the client to receive metadata for all resources of the
273 * service regardless of the artifacts associated to them. Setting the flag
274 * to false will preserve legacy behavior.
277 public boolean isFilterInEmptyResources() {
282 public List<String> getMsgBusAddress() {