2 * ================================================================================
3 * Copyright (c) 2019-2020 China Mobile. All rights reserved.
4 * ================================================================================
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 * ============LICENSE_END=========================================================
20 package org.onap.dcae.analytics.tca.web;
22 import java.util.ArrayList;
23 import java.util.List;
25 import java.util.stream.Stream;
27 import org.onap.dcae.analytics.model.AnalyticsProfile;
28 import org.onap.dcae.analytics.model.TcaModelConstants;
29 import org.onap.dcae.analytics.model.configbindingservice.BaseConfigBindingServiceProperties;
30 import org.onap.dcae.analytics.model.configbindingservice.ConfigBindingServiceConstants;
31 import org.springframework.core.env.Environment;
33 import com.google.gson.JsonArray;
34 import com.google.gson.JsonElement;
35 import com.google.gson.JsonObject;
36 import com.google.gson.JsonParser;
39 import lombok.ToString;
45 public class TcaAppProperties extends BaseConfigBindingServiceProperties {
47 private final Environment environment;
49 public TcaAppProperties(final Environment environment) {
50 this.environment = environment;
53 * TCA Application properties
56 public static class Tca {
57 private String policy;
58 private Integer processingBatchSize = TcaModelConstants.DEFAULT_TCA_PROCESSING_BATCH_SIZE;
59 private Boolean enableAbatement = TcaModelConstants.DEFAULT_ABATEMENT_ENABLED;
60 private Boolean enableEcompLogging = TcaModelConstants.DEFAULT_ECOMP_LOGGING_ENABLED;
61 private Aai aai = new Aai();
68 @ToString(exclude = "password")
69 public static class Aai {
71 private Boolean enableEnrichment = TcaModelConstants.DEFAULT_AAI_ENRICHMENT_ENABLED;
73 private String username;
74 private String password;
76 private String proxyUrl = null;
77 private Boolean ignoreSSLValidation = TcaModelConstants.DEFAULT_TCA_AAI_IGNORE_SSL_VALIDATION;
79 private String genericVnfPath = TcaModelConstants.DEFAULT_TCA_AAI_GENERIC_VNF_PATH;
80 private String nodeQueryPath = TcaModelConstants.DEFAULT_TCA_AAI_NODE_QUERY_PATH;
86 tca.setPolicy(getPolicy());
87 tca.setProcessingBatchSize(environment.getProperty(ConfigBindingServiceConstants.PROCESSINGBATCHSIZE, Integer.class));
88 tca.setEnableAbatement(environment.getProperty(ConfigBindingServiceConstants.ENABLEABATEMENT, Boolean.class));
89 tca.setEnableEcompLogging(environment.getProperty(ConfigBindingServiceConstants.ENABLEECOMPLOGGING, Boolean.class));
91 Aai aai = tca.getAai();
92 aai.setEnableEnrichment(environment.getProperty(ConfigBindingServiceConstants.ENABLEENRICHMENT, Boolean.class));
93 aai.setUrl(environment.getProperty(ConfigBindingServiceConstants.AAIURL));
94 aai.setUsername(environment.getProperty(ConfigBindingServiceConstants.AAIUSERNAME));
95 aai.setPassword(environment.getProperty(ConfigBindingServiceConstants.AAIPASSWORD));
96 aai.setGenericVnfPath(environment.getProperty(ConfigBindingServiceConstants.AAIGENERICVNFPATH));
97 aai.setNodeQueryPath(environment.getProperty(ConfigBindingServiceConstants.AAINODEQUERYPATH));
104 * Check policies items exist, and return policy.
105 * @return Policy policy
107 private String getPolicy() {
109 String policies = environment.getProperty(ConfigBindingServiceConstants.POLICIES);
110 if (policies == null) {
111 return environment.getProperty(ConfigBindingServiceConstants.POLICY);
113 JsonObject policiesObject = new JsonParser().parse(policies).getAsJsonObject();
114 JsonArray items = policiesObject.get(ConfigBindingServiceConstants.ITEMS).getAsJsonArray();
115 JsonElement policy = items.get(0)
116 .getAsJsonObject().get(ConfigBindingServiceConstants.CONFIG)
117 .getAsJsonObject().get(ConfigBindingServiceConstants.TCAPOLICY);
119 return policy.toString();
124 public Map<String, PublisherDetails> getStreamsPublishes() {
125 DmaapInfo dmaapInfo = new DmaapInfo();
126 dmaapInfo.setTopicUrl(environment.getProperty(ConfigBindingServiceConstants.PUBTOPICURL));
128 PublisherDetails detail = new PublisherDetails();
129 detail.setType(environment.getProperty(ConfigBindingServiceConstants.PUBTYPE));
130 detail.setDmaapInfo(dmaapInfo);
131 streamsPublishes.put(ConfigBindingServiceConstants.PUBKEY, detail);
132 return streamsPublishes;
136 public Map<String, SubscriberDetails> getStreamsSubscribes() {
137 DmaapInfo dmaapInfo = new DmaapInfo();
138 dmaapInfo.setTopicUrl(environment.getProperty(ConfigBindingServiceConstants.SUBTOPICURL));
140 AutoAdjusting autoAdjust = new AutoAdjusting();
141 autoAdjust.setStepUp(environment.getProperty(ConfigBindingServiceConstants.SUBAUTOADJUSTINGSTEPUP, Integer.class));
142 autoAdjust.setStepDown(environment.getProperty(ConfigBindingServiceConstants.SUBAUTOADJUSTINGSTEPDOWN, Integer.class));
143 autoAdjust.setMax(environment.getProperty(ConfigBindingServiceConstants.SUBAUTOADJUSTINGMAX, Integer.class));
144 autoAdjust.setMin(environment.getProperty(ConfigBindingServiceConstants.SUBAUTOADJUSTINGMIN, Integer.class));
146 Polling poll = new Polling();
147 poll.setAutoAdjusting(autoAdjust);
148 poll.setFixedRate(environment.getProperty(ConfigBindingServiceConstants.SUBFIXEDRATE, Integer.class));
150 SubscriberDetails detail = new SubscriberDetails();
151 detail.setType(environment.getProperty(ConfigBindingServiceConstants.SUBTYPE));
152 detail.setDmaapInfo(dmaapInfo);
153 detail.setPolling(poll);
155 detail.setConsumerGroup(environment.getProperty(ConfigBindingServiceConstants.SUBCONSUMERGROUP));
156 detail.setMessageLimit(environment.getProperty(ConfigBindingServiceConstants.SUBMESSAGELIMIT, Integer.class));
157 detail.setTimeout(environment.getProperty(ConfigBindingServiceConstants.SUBTIMEOUT, Integer.class));
158 List<String> consumerIds = new ArrayList<>();
159 consumerIds.add(environment.getProperty(ConfigBindingServiceConstants.SUBCONSUMERIDS0));
160 consumerIds.add(environment.getProperty(ConfigBindingServiceConstants.SUBCONSUMERIDS1));
161 detail.setConsumerIds(consumerIds);
163 streamsSubscribes.put(ConfigBindingServiceConstants.SUBKEY, detail);
164 return streamsSubscribes;
167 public boolean isConfigBindingServiceProfileActive() {
168 return Stream.of(environment.getActiveProfiles())
170 profile.equalsIgnoreCase(AnalyticsProfile.CONFIG_BINDING_SERVICE_PROFILE_NAME));