0214a3d7d437f8da31a3215ced326b3c6ceb2c82
[dcaegen2/analytics/tca-gen2.git] / dcae-analytics / dcae-analytics-tca-web / src / main / java / org / onap / dcae / analytics / tca / web / TcaAppProperties.java
1 /*
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
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
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=========================================================
17  *
18  */
19
20 package org.onap.dcae.analytics.tca.web;
21
22 import java.util.ArrayList;
23 import java.util.List;
24 import java.util.Map;
25 import java.util.stream.Stream;
26
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;
32
33 import com.google.gson.JsonArray;
34 import com.google.gson.JsonElement;
35 import com.google.gson.JsonObject;
36 import com.google.gson.JsonParser;
37
38 import lombok.Data;
39 import lombok.ToString;
40
41 /**
42  * @author Kai Lu
43  */
44
45 public class TcaAppProperties extends BaseConfigBindingServiceProperties {
46
47     private final Environment environment;
48
49     public TcaAppProperties(final Environment environment) {
50         this.environment = environment;
51     }
52     /**
53      * TCA Application properties
54      */
55     @Data
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();
62     }
63
64     /**
65      * A&AI properties
66      */
67     @Data
68     @ToString(exclude = "password")
69     public static class Aai {
70
71         private Boolean enableEnrichment = TcaModelConstants.DEFAULT_AAI_ENRICHMENT_ENABLED;
72         private String url;
73         private String username;
74         private String password;
75
76         private String proxyUrl = null;
77         private Boolean ignoreSSLValidation = TcaModelConstants.DEFAULT_TCA_AAI_IGNORE_SSL_VALIDATION;
78
79         private String genericVnfPath = TcaModelConstants.DEFAULT_TCA_AAI_GENERIC_VNF_PATH;
80         private String nodeQueryPath = TcaModelConstants.DEFAULT_TCA_AAI_NODE_QUERY_PATH;
81
82     }
83
84     public Tca getTca() {
85         Tca tca = new Tca();
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));
90
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));
98         tca.setAai(aai);
99
100         return tca;
101     }
102
103     /**
104      * Check policies items exist, and return policy.
105      * @return Policy policy
106      */
107     private String getPolicy() {
108
109         String policies = environment.getProperty(ConfigBindingServiceConstants.POLICIES);
110         if (policies == null) {
111             return environment.getProperty(ConfigBindingServiceConstants.POLICY);
112         }
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);
118
119         return policy.toString();
120
121     }
122
123     @Override
124     public Map<String, PublisherDetails> getStreamsPublishes() {
125         DmaapInfo dmaapInfo = new DmaapInfo();
126         dmaapInfo.setTopicUrl(environment.getProperty(ConfigBindingServiceConstants.PUBTOPICURL));
127
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;
133     }
134
135     @Override
136     public Map<String, SubscriberDetails> getStreamsSubscribes() {
137         DmaapInfo dmaapInfo = new DmaapInfo();
138         dmaapInfo.setTopicUrl(environment.getProperty(ConfigBindingServiceConstants.SUBTOPICURL));
139
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));
145
146         Polling poll = new Polling();
147         poll.setAutoAdjusting(autoAdjust);
148         poll.setFixedRate(environment.getProperty(ConfigBindingServiceConstants.SUBFIXEDRATE, Integer.class));
149
150         SubscriberDetails detail = new SubscriberDetails();
151         detail.setType(environment.getProperty(ConfigBindingServiceConstants.SUBTYPE));
152         detail.setDmaapInfo(dmaapInfo);
153         detail.setPolling(poll);
154
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);
162
163         streamsSubscribes.put(ConfigBindingServiceConstants.SUBKEY, detail);
164         return streamsSubscribes;
165     }
166
167     public boolean isConfigBindingServiceProfileActive() {
168         return Stream.of(environment.getActiveProfiles())
169         .anyMatch(profile ->
170                 profile.equalsIgnoreCase(AnalyticsProfile.CONFIG_BINDING_SERVICE_PROFILE_NAME));
171
172     }
173 }