1 /*============LICENSE_START=======================================================
3 ================================================================================
4 Copyright (c) 2019 AT&T Intellectual Property. All rights reserved.
5 Copyright (c) 2020 Nokia. 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.blueprintgenerator.models.blueprint;
23 import static org.onap.blueprintgenerator.common.blueprint.BlueprintHelper.createBooleanInput;
24 import static org.onap.blueprintgenerator.common.blueprint.BlueprintHelper.createIntegerInput;
25 import static org.onap.blueprintgenerator.common.blueprint.BlueprintHelper.isMessageRouterType;
26 import static org.onap.blueprintgenerator.common.blueprint.BlueprintHelper.isDataRouterType;
27 import static org.onap.blueprintgenerator.models.blueprint.tls.TlsConstants.USE_EXTERNAL_TLS_FIELD;
29 import com.fasterxml.jackson.annotation.JsonIgnore;
30 import com.fasterxml.jackson.annotation.JsonInclude;
31 import com.fasterxml.jackson.annotation.JsonInclude.Include;
32 import java.util.ArrayList;
33 import java.util.LinkedHashMap;
35 import java.util.TreeMap;
38 import org.onap.blueprintgenerator.models.blueprint.tls.ExternalCertificateParametersFactory;
39 import org.onap.blueprintgenerator.models.blueprint.tls.ExternalTlsInfoFactory;
40 import org.onap.blueprintgenerator.models.blueprint.tls.TlsInfo;
41 import org.onap.blueprintgenerator.models.blueprint.tls.impl.ExternalTlsInfo;
42 import org.onap.blueprintgenerator.models.componentspec.Auxilary;
43 import org.onap.blueprintgenerator.models.componentspec.ComponentSpec;
44 import org.onap.blueprintgenerator.models.componentspec.Publishes;
45 import org.onap.blueprintgenerator.models.componentspec.Subscribes;
46 import org.onap.blueprintgenerator.models.dmaapbp.DmaapStreams;
51 @JsonInclude(value = Include.NON_NULL)
52 public class Properties {
54 ArrayList<DmaapStreams> streams_publishes;
55 ArrayList<DmaapStreams> streams_subscribes;
56 private Appconfig application_config;
57 private Auxilary docker_config;
59 private GetInput location_id;
60 private String service_component_type;
61 private TreeMap<String, Object> log_info;
62 private String dns_name;
63 private Object replicas;
65 private GetInput topic_name;
66 private GetInput feed_name;
67 private TlsInfo tls_info;
68 private ExternalTlsInfo external_cert;
69 private ResourceConfig resource_config;
70 private GetInput always_pull_image;
71 //private boolean useExisting;
73 private ExternalTlsInfoFactory externalCertFactory;
76 ExternalCertificateParametersFactory externalCertificateDataFactory = new ExternalCertificateParametersFactory();
77 externalCertFactory = new ExternalTlsInfoFactory(externalCertificateDataFactory);
80 public TreeMap<String, LinkedHashMap<String, Object>> createOnapProperties(
81 TreeMap<String, LinkedHashMap<String, Object>> inps, ComponentSpec cs, String override) {
82 TreeMap<String, LinkedHashMap<String, Object>> retInputs = inps;
85 GetInput image = new GetInput();
86 image.setBpInputName("image");
88 LinkedHashMap<String, Object> img = new LinkedHashMap<String, Object>();
89 img.put("type", "string");
90 img.put("default", cs.getArtifacts()[0].getUri());
91 retInputs.put("image", img);
94 GetInput location = new GetInput();
95 location.setBpInputName("location_id");
96 this.setLocation_id(location);
97 LinkedHashMap<String, Object> locMap = new LinkedHashMap();
98 locMap.put("type", "string");
99 locMap.put("default", "");
100 retInputs.put("location_id", locMap);
103 this.setLog_info(cs.getAuxilary().getLog_info());
106 GetInput replica = new GetInput();
107 replica.setBpInputName("replicas");
108 this.setReplicas(replica);
109 LinkedHashMap<String, Object> rep = createIntegerInput("number of instances", 1);
110 retInputs.put("replicas", rep);
113 //this.setDns_name(cs.getSelf().getName());
116 //this.setName(cs.getSelf().getName());
118 //set the docker config
119 Auxilary aux = cs.getAuxilary();
120 // if(aux.getPorts() != null) {
121 // retInputs = aux.createPorts(retInputs);
123 this.setDocker_config(aux);
126 Appconfig app = new Appconfig();
127 retInputs = app.createAppconfig(retInputs, cs, override, false);
128 this.setApplication_config(app);
130 // set always_pull_image
131 this.always_pull_image = new GetInput();
132 this.always_pull_image.setBpInputName("always_pull_image");
133 LinkedHashMap<String, Object> inputAlwaysPullImage = createBooleanInput(
134 "Set to true if the image should always be pulled",
136 retInputs.put("always_pull_image", inputAlwaysPullImage);
138 //set service component type
139 String sType = cs.getSelf().getName();
140 sType = sType.replace('.', '-');
141 this.setService_component_type(sType);
143 //set the tls info for internal and external communication
144 TreeMap<String, Object> tls_info = cs.getAuxilary().getTls_info();
145 if (tls_info != null) {
146 addTlsInfo(cs, retInputs);
147 if (tls_info.get(USE_EXTERNAL_TLS_FIELD) != null) {
148 retInputs.putAll(addExternalTlsInfo(cs));
152 //set the reource config
153 ResourceConfig resource = new ResourceConfig();
154 retInputs = resource.createResourceConfig(retInputs, cs.getSelf().getName());
155 this.setResource_config(resource);
160 public TreeMap<String, LinkedHashMap<String, Object>> createDmaapProperties(
161 TreeMap<String, LinkedHashMap<String, Object>> inps, ComponentSpec cs, String override) {
162 TreeMap<String, LinkedHashMap<String, Object>> retInputs = inps;
165 GetInput image = new GetInput();
166 image.setBpInputName("tag_version");
167 this.setImage(image);
168 LinkedHashMap<String, Object> img = new LinkedHashMap<String, Object>();
169 img.put("type", "string");
170 img.put("default", cs.getArtifacts()[0].getUri());
171 retInputs.put("tag_version", img);
173 //set the location id
174 GetInput location = new GetInput();
175 location.setBpInputName("location_id");
176 this.setLocation_id(location);
177 LinkedHashMap<String, Object> locMap = new LinkedHashMap<>();
178 locMap.put("type", "string");
179 locMap.put("default", "");
180 retInputs.put("location_id", locMap);
183 this.setLog_info(cs.getAuxilary().getLog_info());
185 //set service component type
186 String sType = cs.getSelf().getName();
187 sType = sType.replace('.', '-');
188 this.setService_component_type(sType);
190 //set the tls info for internal and external communication
191 TreeMap<String, Object> tls_info = cs.getAuxilary().getTls_info();
192 if (tls_info != null) {
193 addTlsInfo(cs, retInputs);
194 if (tls_info.get(USE_EXTERNAL_TLS_FIELD) != null) {
195 retInputs.putAll(addExternalTlsInfo(cs));
200 GetInput replica = new GetInput();
201 replica.setBpInputName("replicas");
202 this.setReplicas(replica);
203 LinkedHashMap<String, Object> rep = createIntegerInput( "number of instances", 1);
204 retInputs.put("replicas", rep);
206 // //set the dns name
207 // this.setDns_name(cs.getSelf().getName());
210 // this.setName(cs.getSelf().getName());
212 //set the docker config
213 Auxilary aux = cs.getAuxilary();
214 // if(aux.getPorts() != null) {
215 // retInputs = aux.createPorts(retInputs);
217 this.setDocker_config(aux);
220 Appconfig app = new Appconfig();
221 retInputs = app.createAppconfig(retInputs, cs, override, true);
222 this.setApplication_config(app);
224 //set the stream publishes
225 ArrayList<DmaapStreams> pubStreams = new ArrayList<>();
226 if (cs.getStreams().getPublishes() != null) {
227 for (Publishes publishes : cs.getStreams().getPublishes()) {
228 if (isMessageRouterType(publishes.getType())) {
229 String topic = publishes.getConfig_key() + "_topic";
230 DmaapStreams mrStreams = new DmaapStreams();
231 retInputs = mrStreams
232 .createStreams(inps, cs, topic, publishes.getType(), publishes.getConfig_key(),
233 publishes.getRoute(), 'p');
234 pubStreams.add(mrStreams);
235 } else if (isDataRouterType(publishes.getType())) {
236 String feed = publishes.getConfig_key() + "_feed";
237 DmaapStreams drStreams = new DmaapStreams();
238 retInputs = drStreams
239 .createStreams(inps, cs, feed, publishes.getType(), publishes.getConfig_key(),
240 publishes.getRoute(), 'p');
241 pubStreams.add(drStreams);
246 //set the stream subscribes
247 ArrayList<DmaapStreams> subStreams = new ArrayList<>();
248 if (cs.getStreams().getSubscribes() != null) {
249 for (Subscribes subscribes : cs.getStreams().getSubscribes()) {
250 if (isMessageRouterType(subscribes.getType())) {
251 String topic = subscribes.getConfig_key() + "_topic";
252 DmaapStreams mrStreams = new DmaapStreams();
253 retInputs = mrStreams
254 .createStreams(inps, cs, topic, subscribes.getType(), subscribes.getConfig_key(),
255 subscribes.getRoute(), 's');
256 subStreams.add(mrStreams);
257 } else if (isDataRouterType(subscribes.getType())) {
258 String feed = subscribes.getConfig_key() + "_feed";
259 DmaapStreams drStreams = new DmaapStreams();
260 retInputs = drStreams
261 .createStreams(inps, cs, feed, subscribes.getType(), subscribes.getConfig_key(),
262 subscribes.getRoute(), 's');
263 subStreams.add(drStreams);
268 if (!pubStreams.isEmpty()) {
269 this.setStreams_publishes(pubStreams);
271 if (!subStreams.isEmpty()) {
272 this.setStreams_subscribes(subStreams);
275 //set the reource config
276 ResourceConfig resource = new ResourceConfig();
277 retInputs = resource.createResourceConfig(retInputs, cs.getSelf().getName());
278 this.setResource_config(resource);
283 private void addTlsInfo(ComponentSpec cs, TreeMap<String, LinkedHashMap<String, Object>> retInputs) {
284 TlsInfo tlsInfo = new TlsInfo();
285 tlsInfo.setCertDirectory((String) cs.getAuxilary().getTls_info().get("cert_directory"));
286 GetInput useTLSFlag = new GetInput();
287 useTLSFlag.setBpInputName("use_tls");
288 tlsInfo.setUseTls(useTLSFlag);
289 this.setTls_info(tlsInfo);
290 LinkedHashMap<String, Object> useTlsFlagInput = createBooleanInput(
291 "flag to indicate tls enable/disable",
292 cs.getAuxilary().getTls_info().get("use_tls"));
293 retInputs.put("use_tls", useTlsFlagInput);
296 private Map<String, LinkedHashMap<String, Object>> addExternalTlsInfo(ComponentSpec cs) {
297 this.setExternal_cert(externalCertFactory.createFromComponentSpec(cs));
298 return externalCertFactory.createInputListFromComponentSpec(cs);