3 * * ============LICENSE_START=======================================================
5 * * ================================================================================
6 * * Copyright (c) 2020 AT&T Intellectual Property. All rights reserved.
7 * * Copyright (c) 2021 Nokia. All rights reserved.
8 * * ================================================================================
9 * * Modifications Copyright (c) 2021 Nokia
10 * * ================================================================================
11 * * Licensed under the Apache License, Version 2.0 (the "License");
12 * * you may not use this file except in compliance with the License.
13 * * You may obtain a copy of the License at
15 * * http://www.apache.org/licenses/LICENSE-2.0
17 * * Unless required by applicable law or agreed to in writing, software
18 * * distributed under the License is distributed on an "AS IS" BASIS,
19 * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20 * * See the License for the specific language governing permissions and
21 * * limitations under the License.
22 * * ============LICENSE_END=========================================================
27 package org.onap.blueprintgenerator.service.common;
29 import org.onap.blueprintgenerator.model.common.Appconfig;
30 import org.onap.blueprintgenerator.model.common.BaseStream;
31 import org.onap.blueprintgenerator.model.common.GetInput;
32 import org.onap.blueprintgenerator.model.componentspec.OnapComponentSpec;
33 import org.onap.blueprintgenerator.model.componentspec.common.Calls;
34 import org.onap.blueprintgenerator.model.componentspec.common.Parameters;
35 import org.onap.blueprintgenerator.service.base.BlueprintHelperService;
36 import org.springframework.beans.factory.annotation.Autowired;
37 import org.springframework.stereotype.Service;
39 import java.util.HashMap;
40 import java.util.LinkedHashMap;
42 import java.util.TreeMap;
45 * @author : Ravi Mantena
46 * @date 10/16/2020 Application: ONAP - Blueprint Generator Common ONAP Service used to create App Config
48 @Service("onapAppConfigService")
49 public class AppConfigService {
52 private DmaapService dmaapService;
55 private BlueprintHelperService blueprintHelperService;
58 private StreamService streamService;
62 * Creates Inputs section under App Config with Publishes, Subscribes, Parameters sections by checking
63 * Datarouter/MessageRouter/override/Dmaap values
65 * @param inputs Inputs
66 * @param onapComponentSpec Onap Component Specification
67 * @param isDmaap Dmaap Argument
70 public Map<String, Object> createAppconfig(
71 Map<String, Map<String, Object>> inputs,
72 OnapComponentSpec onapComponentSpec,
75 Map<String, Object> response = new HashMap<>();
76 Appconfig appconfig = new Appconfig();
78 Calls[] call = new Calls[0];
79 appconfig.setService_calls(call);
81 Map<String, BaseStream> streamPublishes = streamService.createStreamPublishes(
82 onapComponentSpec, blueprintHelperService, dmaapService, inputs, isDmaap);
83 Map<String, BaseStream> streamSubscribes = streamService.createStreamSubscribes(
84 onapComponentSpec, blueprintHelperService, dmaapService, inputs, isDmaap);
86 appconfig.setStreams_publishes(streamPublishes);
87 appconfig.setStreams_subscribes(streamSubscribes);
89 Map<String, Object> parameters = new TreeMap<>();
90 for (Parameters p : onapComponentSpec.getParameters()) {
91 String pName = p.getName();
92 if (p.isSourced_at_deployment()) {
93 GetInput paramInput = new GetInput();
94 paramInput.setBpInputName(pName);
95 parameters.put(pName, paramInput);
96 if (!"".equals(p.getValue())) {
97 Map<String, Object> pInputs = createInputFromParameter(p);
98 inputs.put(pName, pInputs);
100 LinkedHashMap<String, Object> pInputs = new LinkedHashMap<>();
101 pInputs.put("type", "string");
102 inputs.put(pName, pInputs);
105 if ("string".equals(p.getType())) {
106 String val = (String) p.getValue();
107 val = '"' + val + '"';
108 parameters.put(pName, val);
110 parameters.put(pName, p.getValue());
111 // Updated code to resolve the issue of missing \ for collector.schema.file
112 // parameters.put(pName, pName.equals("collector.schema.file") ?
113 // ((String)p.getValue()).replace("\"", "\\\"") : p.getValue());
118 appconfig.setParams(parameters);
120 response.put("appconfig", appconfig);
121 response.put("inputs", inputs);
125 private Map<String, Object> createInputFromParameter(Parameters parameter) {
126 String inputType = parameter.getType() == null ? "string" : parameter.getType();
128 return blueprintHelperService.createInputByType(inputType, parameter.getValue());