summaryrefslogtreecommitdiffstats
path: root/mod/bpgenerator/onap/src/main/java/org/onap/blueprintgenerator/service/common/PropertiesService.java
diff options
context:
space:
mode:
Diffstat (limited to 'mod/bpgenerator/onap/src/main/java/org/onap/blueprintgenerator/service/common/PropertiesService.java')
-rw-r--r--mod/bpgenerator/onap/src/main/java/org/onap/blueprintgenerator/service/common/PropertiesService.java259
1 files changed, 259 insertions, 0 deletions
diff --git a/mod/bpgenerator/onap/src/main/java/org/onap/blueprintgenerator/service/common/PropertiesService.java b/mod/bpgenerator/onap/src/main/java/org/onap/blueprintgenerator/service/common/PropertiesService.java
new file mode 100644
index 0000000..e858d88
--- /dev/null
+++ b/mod/bpgenerator/onap/src/main/java/org/onap/blueprintgenerator/service/common/PropertiesService.java
@@ -0,0 +1,259 @@
+/*
+ *
+ * * ============LICENSE_START=======================================================
+ * * org.onap.dcae
+ * * ================================================================================
+ * * Copyright (c) 2020 AT&T Intellectual Property. All rights reserved.
+ * * ================================================================================
+ * * Licensed under the Apache License, Version 2.0 (the "License");
+ * * you may not use this file except in compliance with the License.
+ * * You may obtain a copy of the License at
+ * *
+ * * http://www.apache.org/licenses/LICENSE-2.0
+ * *
+ * * Unless required by applicable law or agreed to in writing, software
+ * * distributed under the License is distributed on an "AS IS" BASIS,
+ * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * * See the License for the specific language governing permissions and
+ * * limitations under the License.
+ * * ============LICENSE_END=========================================================
+ *
+ *
+ */
+
+package org.onap.blueprintgenerator.service.common;
+
+import org.onap.blueprintgenerator.constants.Constants;
+import org.onap.blueprintgenerator.model.common.Appconfig;
+import org.onap.blueprintgenerator.model.common.GetInput;
+import org.onap.blueprintgenerator.model.common.ResourceConfig;
+import org.onap.blueprintgenerator.model.componentspec.OnapAuxilary;
+import org.onap.blueprintgenerator.model.componentspec.OnapComponentSpec;
+import org.onap.blueprintgenerator.model.componentspec.common.Publishes;
+import org.onap.blueprintgenerator.model.componentspec.common.Subscribes;
+import org.onap.blueprintgenerator.model.dmaap.Streams;
+import org.onap.blueprintgenerator.model.dmaap.TlsInfo;
+import org.onap.blueprintgenerator.service.base.BlueprintHelperService;
+import org.onap.blueprintgenerator.service.dmaap.StreamsService;
+import org.onap.blueprintgenerator.model.common.Properties;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author : Ravi Mantena
+ * @date 10/16/2020
+ * Application: ONAP - Blueprint Generator
+ * Common ONAP Service used by ONAP and DMAAP Blueprint to create Properties Node
+ */
+
+
+
+@Service("onapPropertiesService")
+public class PropertiesService {
+
+ @Autowired
+ private AppConfigService appConfigService;
+
+ @Autowired
+ private ResourceConfigService resourceConfigService;
+
+ @Autowired
+ private StreamsService streamsService;
+
+ @Autowired
+ private ExternalTlsInfoFactoryService externalTlsInfoFactoryService;
+
+ @Autowired
+ private BlueprintHelperService blueprintHelperService;
+
+ // Method to create ONAP properties
+ public Map<String,Object> createOnapProperties(Map<String, LinkedHashMap<String, Object>> inputs, OnapComponentSpec onapComponentSpec, String override) {
+ Map<String,Object> response = new HashMap<>();
+ org.onap.blueprintgenerator.model.common.Properties properties = new org.onap.blueprintgenerator.model.common.Properties();
+
+ GetInput image = new GetInput();
+ image.setBpInputName("image");
+ properties.setImage(image);
+
+ LinkedHashMap<String, Object> img = new LinkedHashMap<>();
+ inputs.put("image", blueprintHelperService.createStringInput(onapComponentSpec.getArtifacts()[0].getUri()));
+
+
+ GetInput location = new GetInput();
+ location.setBpInputName("location_id");
+ properties.setLocation_id(location);
+
+ LinkedHashMap<String, Object> locMap = new LinkedHashMap();
+ inputs.put("location_id", blueprintHelperService.createStringInput(Constants.EMPTY_VALUE));
+
+ properties.setLog_info(onapComponentSpec.getAuxilary().getLog_info());
+
+ GetInput replica = new GetInput();
+ replica.setBpInputName("replicas");
+ properties.setReplicas(replica);
+
+ LinkedHashMap<String, Object> replicas = blueprintHelperService.createIntegerInput("number of instances", 1);
+ inputs.put("replicas", replicas);
+
+ OnapAuxilary onapAuxilary = onapComponentSpec.getAuxilary();
+
+ properties.setDocker_config(onapAuxilary);
+
+ Map<String, Object> appConfigResponse = appConfigService.createAppconfig(inputs, onapComponentSpec, override, false);
+ inputs = (Map<String, LinkedHashMap<String, Object>>) appConfigResponse.get("inputs");
+ properties.setApplication_config((Appconfig) appConfigResponse.get("appconfig"));
+
+ GetInput always_pull_image = new GetInput();
+ always_pull_image.setBpInputName("always_pull_image");
+
+ properties.setAlways_pull_image(always_pull_image);
+
+ LinkedHashMap<String, Object> inputAlwaysPullImage = blueprintHelperService.createBooleanInput("Set to true if the image should always be pulled",true);
+ inputs.put("always_pull_image", inputAlwaysPullImage);
+
+ String sType = onapComponentSpec.getSelf().getName();
+ sType = sType.replace('.', '-');
+ properties.setService_component_type(sType);
+
+ Map<String, Object> tls_info = onapComponentSpec.getAuxilary().getTls_info();
+ if(tls_info != null) {
+ addTlsInfo(onapComponentSpec, inputs, properties);
+ if (tls_info.get(Constants.USE_EXTERNAL_TLS_FIELD) != null) {
+ inputs.putAll(addExternalTlsInfo(onapComponentSpec,properties));
+ }
+ }
+
+ Map<String, Object> resourceConfigResponse = resourceConfigService.createResourceConfig(inputs, onapComponentSpec.getSelf().getName());
+ inputs = (Map<String, LinkedHashMap<String, Object>>) resourceConfigResponse.get("inputs");
+ properties.setResource_config((ResourceConfig) resourceConfigResponse.get("resourceConfig"));
+
+ response.put("properties", properties);
+ response.put("inputs", inputs);
+ return response;
+ }
+
+ // Method to create Dmaap properties
+ public Map<String,Object> createDmaapProperties(Map<String, LinkedHashMap<String, Object>> inputs, OnapComponentSpec onapComponentSpec, String override) {
+ Map<String,Object> response = new HashMap<>();
+ org.onap.blueprintgenerator.model.common.Properties properties = new org.onap.blueprintgenerator.model.common.Properties();
+
+ GetInput image = new GetInput();
+ image.setBpInputName("tag_version");
+ properties.setImage(image);
+
+ LinkedHashMap<String, Object> img = new LinkedHashMap<>();
+ inputs.put("tag_version", blueprintHelperService.createStringInput(onapComponentSpec.getArtifacts()[0].getUri()));
+
+ GetInput location = new GetInput();
+ location.setBpInputName("location_id");
+ properties.setLocation_id(location);
+
+ LinkedHashMap<String, Object> locMap = new LinkedHashMap();
+ inputs.put("location_id", blueprintHelperService.createStringInput(Constants.EMPTY_VALUE));
+
+ properties.setLog_info(onapComponentSpec.getAuxilary().getLog_info());
+
+ String sType = onapComponentSpec.getSelf().getName();
+ sType = sType.replace('.', '-');
+ properties.setService_component_type(sType);
+
+ Map<String, Object> tls_info = onapComponentSpec.getAuxilary().getTls_info();
+ if(tls_info != null) {
+ addTlsInfo(onapComponentSpec, inputs, properties);
+ if (tls_info.get(Constants.USE_EXTERNAL_TLS_FIELD) != null) {
+ inputs.putAll(addExternalTlsInfo(onapComponentSpec,properties));
+ }
+ }
+
+ GetInput replica = new GetInput();
+ replica.setBpInputName("replicas");
+ properties.setReplicas(replica);
+
+ LinkedHashMap<String, Object> rep = blueprintHelperService.createIntegerInput( "number of instances", 1);
+ inputs.put("replicas", rep);
+
+ OnapAuxilary onapAuxilary = onapComponentSpec.getAuxilary();
+
+ properties.setDocker_config(onapAuxilary);
+
+ Map<String, Object> appConfigResponse = appConfigService.createAppconfig(inputs, onapComponentSpec, override, true);
+ inputs = (Map<String, LinkedHashMap<String, Object>>) appConfigResponse.get("inputs");
+ properties.setApplication_config((Appconfig) appConfigResponse.get("appconfig"));
+
+
+ List<Streams> pubStreams = new ArrayList();
+ if(onapComponentSpec.getStreams() != null) {
+ if (onapComponentSpec.getStreams().getPublishes() != null) {
+ for (Publishes publishes : onapComponentSpec.getStreams().getPublishes()) {
+ if (blueprintHelperService.isMessageRouterType(publishes.getType())) {
+ String topic = publishes.getConfig_key() + Constants._TOPIC;
+ Map<String, Object> streamsMessageRouterResponse = streamsService.createStreams(inputs, topic, publishes.getType(), publishes.getConfig_key(), publishes.getRoute(), 'p');
+ inputs = (Map<String, LinkedHashMap<String, Object>>) streamsMessageRouterResponse.get("inputs");
+ pubStreams.add((Streams) streamsMessageRouterResponse.get("streams"));
+ } else if (blueprintHelperService.isDataRouterType(publishes.getType())) {
+ String feed = publishes.getConfig_key() + Constants._FEED;
+ Map<String, Object> streamsDataRouterResponse = streamsService.createStreams(inputs, feed, publishes.getType(), publishes.getConfig_key(), publishes.getRoute(), 'p');
+ inputs = (Map<String, LinkedHashMap<String, Object>>) streamsDataRouterResponse.get("inputs");
+ pubStreams.add((Streams) streamsDataRouterResponse.get("streams"));
+ }
+ }
+ }
+ }
+
+ ArrayList<Streams> subStreams = new ArrayList();
+ if(onapComponentSpec.getStreams() != null) {
+ if (onapComponentSpec.getStreams().getSubscribes() != null) {
+ for (Subscribes subscribes : onapComponentSpec.getStreams().getSubscribes()) {
+ if (blueprintHelperService.isMessageRouterType(subscribes.getType())) {
+ String topic = subscribes.getConfig_key() + Constants._TOPIC;
+ Map<String, Object> streamsMessageRouterResponse = streamsService.createStreams(inputs, topic, subscribes.getType(), subscribes.getConfig_key(), subscribes.getRoute(), 's');
+ inputs = (Map<String, LinkedHashMap<String, Object>>) streamsMessageRouterResponse.get("inputs");
+ subStreams.add((Streams) streamsMessageRouterResponse.get("streams"));
+ } else if (blueprintHelperService.isDataRouterType(subscribes.getType())) {
+ String feed = subscribes.getConfig_key() + Constants._FEED;
+ Map<String, Object> streamsDataRouterResponse = streamsService.createStreams(inputs, feed, subscribes.getType(), subscribes.getConfig_key(), subscribes.getRoute(), 's');
+ inputs = (Map<String, LinkedHashMap<String, Object>>) streamsDataRouterResponse.get("inputs");
+ subStreams.add((Streams) streamsDataRouterResponse.get("streams"));
+ }
+ }
+ }
+ }
+
+ if(!pubStreams.isEmpty())
+ properties.setStreams_publishes(pubStreams);
+
+ if(!subStreams.isEmpty())
+ properties.setStreams_subscribes(subStreams);
+
+ Map<String, Object> resourceConfigResponse = resourceConfigService.createResourceConfig(inputs, onapComponentSpec.getSelf().getName());
+ inputs = (Map<String, LinkedHashMap<String, Object>>) resourceConfigResponse.get("inputs");
+ properties.setResource_config((ResourceConfig) resourceConfigResponse.get("resourceConfig"));
+
+ response.put("properties", properties);
+ response.put("inputs", inputs);
+ return response;
+ }
+
+ private void addTlsInfo(OnapComponentSpec onapComponentSpec, Map<String, LinkedHashMap<String, Object>> inputs, Properties properties) {
+ TlsInfo tlsInfo = new TlsInfo();
+ tlsInfo.setCertDirectory((String) onapComponentSpec.getAuxilary().getTls_info().get("cert_directory"));
+ GetInput useTLSFlag = new GetInput();
+ useTLSFlag.setBpInputName("use_tls");
+ tlsInfo.setUseTls(useTLSFlag);
+ properties.setTls_info(tlsInfo);
+ LinkedHashMap<String, Object> useTlsFlagInput = blueprintHelperService.createBooleanInput("flag to indicate tls enable/disable",onapComponentSpec.getAuxilary().getTls_info().get("use_tls"));
+ inputs.put("use_tls", useTlsFlagInput);
+ }
+
+ private Map<String, LinkedHashMap<String, Object>> addExternalTlsInfo(OnapComponentSpec onapComponentSpec, Properties properties) {
+ properties.setExternal_cert(externalTlsInfoFactoryService.createFromComponentSpec(onapComponentSpec));
+ return externalTlsInfoFactoryService.createInputListFromComponentSpec(onapComponentSpec);
+ }
+
+}