2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Copyright (C) 2017 Amdocs
8 * =============================================================================
9 * Licensed under the Apache License, Version 2.0 (the "License");
10 * you may not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
13 * http://www.apache.org/licenses/LICENSE-2.0
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
21 * ECOMP is a trademark and service mark of AT&T Intellectual Property.
22 * ============LICENSE_END=========================================================
25 package org.onap.appc.artifact.handler.node;
27 import java.io.ByteArrayOutputStream;
28 import java.io.OutputStream;
31 import org.apache.commons.lang.StringUtils;
32 import org.json.JSONArray;
33 import org.json.JSONObject;
34 import org.onap.appc.artifact.handler.dbservices.DBService;
35 import org.onap.appc.artifact.handler.utils.ArtifactHandlerProviderUtil;
36 import org.onap.appc.artifact.handler.utils.SdcArtifactHandlerConstants;
37 import org.onap.appc.yang.YANGGenerator;
38 import org.onap.appc.yang.impl.YANGGeneratorFactory;
39 import org.onap.sdnc.config.params.transformer.tosca.ArtifactProcessorImpl;
40 import org.onap.ccsdk.sli.core.sli.SvcLogicContext;
41 import org.onap.ccsdk.sli.core.sli.SvcLogicException;
42 import org.onap.ccsdk.sli.core.sli.SvcLogicJavaPlugin;
44 import com.att.eelf.configuration.EELFLogger;
45 import com.att.eelf.configuration.EELFManager;
49 public class ArtifactHandlerNode implements SvcLogicJavaPlugin {
51 private static final EELFLogger log = EELFManager.getInstance().getLogger(ArtifactHandlerNode.class);
53 public void processArtifact(Map<String, String> inParams, SvcLogicContext ctx) throws Exception {
54 String responsePrefix = inParams.get("response_prefix");
56 if (inParams != null && !inParams.isEmpty() && inParams.get("postData") != null) {
57 log.info("Received request for process Artifact with params: " + inParams.toString());
58 String postData = inParams.get("postData");
59 JSONObject input = new JSONObject(postData).getJSONObject("input");
60 responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix + ".") : "";
61 storeUpdateSdcArtifacts(input);
63 } catch (Exception e) {
69 private boolean storeUpdateSdcArtifacts(JSONObject postDataJson) throws Exception {
70 log.info("Starting processing of SDC Artifacs into Handler with Data : " + postDataJson.toString());
72 JSONObject request_information =
73 (JSONObject) postDataJson.get(SdcArtifactHandlerConstants.REQUEST_INFORMATION);
74 JSONObject document_information =
75 (JSONObject) postDataJson.get(SdcArtifactHandlerConstants.DOCUMENT_PARAMETERS);
76 String artifact_name = document_information.getString(SdcArtifactHandlerConstants.ARTIFACT_NAME);
77 if (artifact_name != null) {
78 updateStoreArtifacts(request_information, document_information);
79 if (artifact_name.toLowerCase().startsWith(SdcArtifactHandlerConstants.REFERENCE))
80 return storeReferenceData(request_information, document_information);
81 else if (artifact_name.toLowerCase().startsWith(SdcArtifactHandlerConstants.PD))
82 return createDataForPD(request_information, document_information);
85 throw new Exception("Missing Artifact Name for Request : "
86 + request_information.getString(SdcArtifactHandlerConstants.REQUETS_ID));
87 } catch (Exception e) {
89 throw new Exception("Error while processing Request ID : "
90 + ((JSONObject) postDataJson.get(SdcArtifactHandlerConstants.REQUEST_INFORMATION))
91 .getString(SdcArtifactHandlerConstants.REQUETS_ID)
98 private boolean createDataForPD(JSONObject request_information, JSONObject document_information) throws Exception {
100 String fn = "ArtifactHandlerNode.createReferenceDataForPD";
101 String artifact_name = document_information.getString(SdcArtifactHandlerConstants.ARTIFACT_NAME);
102 log.info(fn + "Received PD File Name: " + artifact_name + " and suffix lenght "
103 + SdcArtifactHandlerConstants.PD.length());
106 String suffix = artifact_name.substring(SdcArtifactHandlerConstants.PD.length());
107 createArtifactRecords(request_information, document_information, suffix);
108 } catch (Exception e) {
110 throw new Exception("Error while createing PD data records " + e.getMessage());
115 private void createArtifactRecords(JSONObject request_information, JSONObject document_information, String suffix)
118 log.info("Creating Tosca Records and storing into SDC Artifacs");
119 String[] docs = {"Tosca", "Yang"};
120 ArtifactHandlerProviderUtil ahpUtil = new ArtifactHandlerProviderUtil();
121 String PDFileContents = document_information.getString(SdcArtifactHandlerConstants.ARTIFACT_CONTENTS);
124 OutputStream toscaStream = new ByteArrayOutputStream();
125 String toscaContents = null;
126 ArtifactProcessorImpl toscaGenerator = new ArtifactProcessorImpl();
127 toscaGenerator.generateArtifact(PDFileContents, toscaStream);
128 if (toscaStream != null)
129 toscaContents = toscaStream.toString();
130 log.info("Generated Tosca File : " + toscaContents);
132 String yangContents = "YANG generation is in Progress";
133 String yangName = null;
135 for (String doc : docs) {
136 document_information.put(SdcArtifactHandlerConstants.ARTIFACT_TYPE, doc.concat("Type"));
137 document_information.put(SdcArtifactHandlerConstants.ARTIFACT_DESRIPTION, doc.concat("Model"));
138 if (doc.equals("Tosca"))
139 document_information.put(SdcArtifactHandlerConstants.ARTIFACT_CONTENTS,
140 ahpUtil.escapeSql(toscaContents));
141 else if (doc.equals("Yang"))
142 document_information.put(SdcArtifactHandlerConstants.ARTIFACT_CONTENTS,
143 ahpUtil.escapeSql(yangContents));
144 document_information.put(SdcArtifactHandlerConstants.ARTIFACT_NAME, doc.concat(suffix));
145 yangName = doc.concat(suffix);
146 updateStoreArtifacts(request_information, document_information);
149 String artifactId = getArtifactID(yangName);
150 OutputStream yangStream = new ByteArrayOutputStream();
151 YANGGenerator yangGenerator = YANGGeneratorFactory.getYANGGenerator();
152 yangGenerator.generateYANG(artifactId, toscaContents, yangStream);
153 if (yangStream != null)
154 yangContents = yangStream.toString();
156 if (yangContents != null) {
157 updateYangContents(artifactId, ahpUtil.escapeSql(yangContents));
162 private void updateYangContents(String artifactId, String yangContents) throws SvcLogicException {
163 SvcLogicContext context = new SvcLogicContext();
164 DBService dbservice = DBService.initialise();
165 dbservice.updateYangContents(context, artifactId, yangContents);
168 private String getArtifactID(String yangName) throws SvcLogicException {
169 SvcLogicContext context = new SvcLogicContext();
170 DBService dbservice = DBService.initialise();
171 return dbservice.getArtifactID(context, yangName);
174 protected boolean updateStoreArtifacts(JSONObject request_information, JSONObject document_information)
176 log.info("UpdateStoreArtifactsStarted storing of SDC Artifacs ");
178 SvcLogicContext context = new SvcLogicContext();
179 DBService dbservice = DBService.initialise();
180 ArtifactHandlerProviderUtil ahpUtil = new ArtifactHandlerProviderUtil();
182 context.setAttribute("artifact_name",
183 document_information.getString(SdcArtifactHandlerConstants.ARTIFACT_NAME));
184 String internal_version = dbservice.getInternalVersionNumber(context,
185 document_information.getString(SdcArtifactHandlerConstants.ARTIFACT_NAME), null);
186 log.info("Internal Version number received from Database : " + internal_version);
187 if (internal_version != null) {
188 intversion = Integer.parseInt(internal_version);
191 context.setAttribute(SdcArtifactHandlerConstants.SERVICE_UUID,
192 document_information.getString(SdcArtifactHandlerConstants.SERVICE_UUID));
193 context.setAttribute(SdcArtifactHandlerConstants.DISTRIBUTION_ID,
194 document_information.getString(SdcArtifactHandlerConstants.DISTRIBUTION_ID));
195 context.setAttribute(SdcArtifactHandlerConstants.SERVICE_NAME,
196 document_information.getString(SdcArtifactHandlerConstants.SERVICE_NAME));
197 context.setAttribute(SdcArtifactHandlerConstants.SERVICE_DESCRIPTION,
198 document_information.getString(SdcArtifactHandlerConstants.SERVICE_DESCRIPTION));
199 context.setAttribute(SdcArtifactHandlerConstants.RESOURCE_UUID,
200 document_information.getString(SdcArtifactHandlerConstants.RESOURCE_UUID));
201 context.setAttribute(SdcArtifactHandlerConstants.RESOURCE_INSTANCE_NAME,
202 document_information.getString(SdcArtifactHandlerConstants.RESOURCE_INSTANCE_NAME));
203 context.setAttribute(SdcArtifactHandlerConstants.RESOURCE_VERSOIN,
204 document_information.getString(SdcArtifactHandlerConstants.RESOURCE_VERSOIN));
205 context.setAttribute(SdcArtifactHandlerConstants.RESOURCE_TYPE,
206 document_information.getString(SdcArtifactHandlerConstants.RESOURCE_TYPE));
207 context.setAttribute(SdcArtifactHandlerConstants.ARTIFACT_UUID,
208 document_information.getString(SdcArtifactHandlerConstants.ARTIFACT_UUID));
209 context.setAttribute(SdcArtifactHandlerConstants.ARTIFACT_TYPE,
210 document_information.getString(SdcArtifactHandlerConstants.ARTIFACT_TYPE));
211 context.setAttribute(SdcArtifactHandlerConstants.ARTIFACT_VERSOIN,
212 document_information.getString(SdcArtifactHandlerConstants.ARTIFACT_VERSOIN));
213 context.setAttribute(SdcArtifactHandlerConstants.ARTIFACT_DESRIPTION,
214 document_information.getString(SdcArtifactHandlerConstants.ARTIFACT_DESRIPTION));
215 context.setAttribute(SdcArtifactHandlerConstants.ARTIFACT_CONTENTS,
216 ahpUtil.escapeSql(document_information.getString(SdcArtifactHandlerConstants.ARTIFACT_CONTENTS)));
217 context.setAttribute(SdcArtifactHandlerConstants.ARTIFACT_NAME,
218 document_information.getString(SdcArtifactHandlerConstants.ARTIFACT_NAME));
219 dbservice.saveArtifacts(context, intversion);
224 public boolean storeReferenceData(JSONObject request_information, JSONObject document_information)
226 log.info("Started storing of SDC Artifacs into Handler");
228 boolean updateRequired = false;
229 boolean pdFile = false;
230 String suffix = null;
231 String categorySuffix = null;
232 DBService dbservice = DBService.initialise();
233 ArtifactHandlerProviderUtil ahpUtil = new ArtifactHandlerProviderUtil();
234 String contentString =
235 ahpUtil.escapeSql(document_information.getString(SdcArtifactHandlerConstants.ARTIFACT_CONTENTS));
236 String artifactName =
237 ahpUtil.escapeSql(document_information.getString(SdcArtifactHandlerConstants.ARTIFACT_NAME));
238 String capabilityArtifactName =
239 StringUtils.replace(artifactName, SdcArtifactHandlerConstants.ARTIFACT_NAME_REFERENCE,
240 SdcArtifactHandlerConstants.ARTIFACT_NAME_CAPABILITY);
241 JSONObject capabilities = new JSONObject();
242 JSONArray vnfActionList = new JSONArray();
243 JSONArray vfModuleActionList = new JSONArray();
244 JSONArray vnfcActionList = new JSONArray();
245 JSONArray vmActionVnfcFunctionCodesList=new JSONArray();
246 JSONArray vmActionList = new JSONArray();
247 String vnfType = null;
248 JSONObject contentObject = new JSONObject(contentString);
249 JSONArray contentArray = contentObject.getJSONArray("reference_data");
250 boolean storeCapabilityArtifact = true;
251 for (int a = 0; a < contentArray.length(); a++) {
253 JSONObject content = (JSONObject) contentArray.get(a);
254 log.info("contentString =" + content.toString());
255 JSONObject scope = content.getJSONObject("scope");
256 log.info("scope :" + scope);
257 SvcLogicContext context = new SvcLogicContext();
258 vnfType = scope.getString(SdcArtifactHandlerConstants.VNF_TYPE);
259 context.setAttribute(SdcArtifactHandlerConstants.VNF_TYPE,
260 scope.getString(SdcArtifactHandlerConstants.VNF_TYPE));
261 context.setAttribute(SdcArtifactHandlerConstants.ACTION,
262 content.getString(SdcArtifactHandlerConstants.ACTION));
263 String actionLevel = content.getString(SdcArtifactHandlerConstants.ACTION_LEVEL);
264 context.setAttribute(SdcArtifactHandlerConstants.ACTION_LEVEL,
265 content.getString(SdcArtifactHandlerConstants.ACTION_LEVEL));
266 context.setAttribute(SdcArtifactHandlerConstants.ARTIFACT_TYPE,
267 document_information.getString(SdcArtifactHandlerConstants.ARTIFACT_TYPE));
268 if ((null != actionLevel)
269 && actionLevel.equalsIgnoreCase(SdcArtifactHandlerConstants.ACTION_LEVEL_VNFC)) {
270 vnfcActionList.put(content.getString(SdcArtifactHandlerConstants.ACTION));
272 if (null != actionLevel
273 && actionLevel.equalsIgnoreCase(SdcArtifactHandlerConstants.ACTION_LEVEL_VF_MODULE)) {
274 vfModuleActionList.put(content.getString(SdcArtifactHandlerConstants.ACTION));
276 if (null != actionLevel && actionLevel.equalsIgnoreCase(SdcArtifactHandlerConstants.ACTION_LEVEL_VNF)) {
277 vnfActionList.put(content.getString(SdcArtifactHandlerConstants.ACTION));
279 if (null != actionLevel && actionLevel.equalsIgnoreCase(SdcArtifactHandlerConstants.ACTION_LEVEL_VM)) {
280 if (content.has(SdcArtifactHandlerConstants.VNFC_FUNCTION_CODE_LIST)
281 && !content.isNull(SdcArtifactHandlerConstants.VNFC_FUNCTION_CODE_LIST) && content.get(
282 SdcArtifactHandlerConstants.VNFC_FUNCTION_CODE_LIST) instanceof JSONArray) {
283 log.info("Found vnfc-function-code-list!!");
284 JSONArray vnfcList = content.getJSONArray(SdcArtifactHandlerConstants.VNFC_FUNCTION_CODE_LIST);
285 JSONObject obj = new JSONObject();
286 obj.put(content.getString(SdcArtifactHandlerConstants.ACTION), vnfcList);
287 vmActionVnfcFunctionCodesList.put(obj);
289 log.info("Not getting JSONArray for VNFC FUNCTION CODES");
292 if (scope.has(SdcArtifactHandlerConstants.VNFC_TYPE)
293 && !scope.isNull(SdcArtifactHandlerConstants.VNFC_TYPE)) {
294 String vnfcTypeScope = scope.getString(SdcArtifactHandlerConstants.VNFC_TYPE);
295 if (StringUtils.isNotBlank(vnfcTypeScope)) {
296 context.setAttribute(SdcArtifactHandlerConstants.VNFC_TYPE,
297 scope.getString(SdcArtifactHandlerConstants.VNFC_TYPE));
298 storeCapabilityArtifact = false;
299 log.info("No capability Artifact for this reference data as it is at VNFC level!!");
302 context.setAttribute(SdcArtifactHandlerConstants.VNFC_TYPE, null);
306 context.setAttribute(SdcArtifactHandlerConstants.VNFC_TYPE, null);
307 if (content.has(SdcArtifactHandlerConstants.DEVICE_PROTOCOL))
308 context.setAttribute(SdcArtifactHandlerConstants.DEVICE_PROTOCOL,
309 content.getString(SdcArtifactHandlerConstants.DEVICE_PROTOCOL));
310 if (content.has(SdcArtifactHandlerConstants.USER_NAME))
311 context.setAttribute(SdcArtifactHandlerConstants.USER_NAME,
312 content.getString(SdcArtifactHandlerConstants.USER_NAME));
313 if (content.has(SdcArtifactHandlerConstants.PORT_NUMBER))
314 context.setAttribute(SdcArtifactHandlerConstants.PORT_NUMBER,
315 content.getString(SdcArtifactHandlerConstants.PORT_NUMBER));
316 //context.setAttribute(SdcArtifactHandlerConstants.ARTIFACT_TYPE, "");
317 if (content.has("artifact-list") && content.get("artifact-list") instanceof JSONArray) {
318 JSONArray artifactLists = (JSONArray) content.get("artifact-list");
319 for (int i = 0; i < artifactLists.length(); i++) {
320 JSONObject artifact = (JSONObject) artifactLists.get(i);
321 log.info("artifact is " + artifact);
322 context.setAttribute(SdcArtifactHandlerConstants.ARTIFACT_NAME,
323 artifact.getString(SdcArtifactHandlerConstants.ARTIFACT_NAME));
324 context.setAttribute(SdcArtifactHandlerConstants.FILE_CATEGORY,
325 artifact.getString(SdcArtifactHandlerConstants.ARTIFACT_TYPE));
327 if (artifact.getString(SdcArtifactHandlerConstants.ARTIFACT_NAME) != null
328 && artifact.getString(SdcArtifactHandlerConstants.ARTIFACT_NAME).toLowerCase()
329 .startsWith(SdcArtifactHandlerConstants.PD)) {
330 suffix = artifact.getString(SdcArtifactHandlerConstants.ARTIFACT_NAME)
331 .substring(SdcArtifactHandlerConstants.PD.length());
332 categorySuffix = artifact.getString(SdcArtifactHandlerConstants.ARTIFACT_TYPE)
333 .substring(SdcArtifactHandlerConstants.PD.length());
336 log.info("Artifact-type = " + context.getAttribute(SdcArtifactHandlerConstants.ARTIFACT_TYPE));
337 dbservice.processSdcReferences(context, dbservice.isArtifactUpdateRequired(context,
338 SdcArtifactHandlerConstants.DB_SDC_REFERENCE));
340 cleanArtifactInstanceData(context);
344 context.setAttribute(SdcArtifactHandlerConstants.ARTIFACT_NAME, "Tosca".concat(suffix));
345 context.setAttribute(SdcArtifactHandlerConstants.FILE_CATEGORY,
346 SdcArtifactHandlerConstants.TOSCA_MODEL);
347 dbservice.processSdcReferences(context, dbservice.isArtifactUpdateRequired(context,
348 SdcArtifactHandlerConstants.DB_SDC_REFERENCE));
349 context.setAttribute(SdcArtifactHandlerConstants.ARTIFACT_NAME, "Yang".concat(suffix));
350 context.setAttribute(SdcArtifactHandlerConstants.FILE_CATEGORY,
351 SdcArtifactHandlerConstants.PARAMETER_YANG);
352 dbservice.processSdcReferences(context, dbservice.isArtifactUpdateRequired(context,
353 SdcArtifactHandlerConstants.DB_SDC_REFERENCE));
356 if (content.getString(SdcArtifactHandlerConstants.ACTION).equals("Configure")
357 || content.getString(SdcArtifactHandlerConstants.ACTION).equals("ConfigModify")) {
358 if (content.has(SdcArtifactHandlerConstants.DOWNLOAD_DG_REFERENCE)
359 && content.getString(SdcArtifactHandlerConstants.DOWNLOAD_DG_REFERENCE).length() > 0) {
360 context.setAttribute(SdcArtifactHandlerConstants.DOWNLOAD_DG_REFERENCE,
361 content.getString(SdcArtifactHandlerConstants.DOWNLOAD_DG_REFERENCE));
362 dbservice.processDownloadDgReference(context, dbservice.isArtifactUpdateRequired(context,
363 SdcArtifactHandlerConstants.DB_DOWNLOAD_DG_REFERENCE));
365 if (StringUtils.isBlank(context.getAttribute(SdcArtifactHandlerConstants.DOWNLOAD_DG_REFERENCE))) {
366 context.setAttribute(SdcArtifactHandlerConstants.DOWNLOAD_DG_REFERENCE,
367 dbservice.getDownLoadDGReference(context));
369 dbservice.processConfigActionDg(context, dbservice.isArtifactUpdateRequired(context,
370 SdcArtifactHandlerConstants.DB_CONFIG_ACTION_DG));
371 if (content.getString(SdcArtifactHandlerConstants.ACTION).equals("Configure")) {
372 dbservice.processDeviceInterfaceProtocol(context, dbservice.isArtifactUpdateRequired(context,
373 SdcArtifactHandlerConstants.DB_DEVICE_INTERFACE_PROTOCOL));
377 dbservice.processDeviceAuthentication(context, dbservice.isArtifactUpdateRequired(context,
378 SdcArtifactHandlerConstants.DB_DEVICE_AUTHENTICATION));
380 populateProtocolReference(dbservice, content);
382 context.setAttribute(SdcArtifactHandlerConstants.VNFC_TYPE, null);
384 if (content.has(SdcArtifactHandlerConstants.VM)
385 && content.get(SdcArtifactHandlerConstants.VM) instanceof JSONArray) {
386 JSONArray vmList = (JSONArray) content.get(SdcArtifactHandlerConstants.VM);
387 dbservice.cleanUpVnfcReferencesForVnf(context);
388 for (int i = 0; i < vmList.length(); i++) {
389 JSONObject vmInstance = (JSONObject) vmList.get(i);
390 context.setAttribute(SdcArtifactHandlerConstants.VM_INSTANCE,
391 String.valueOf(vmInstance.getInt(SdcArtifactHandlerConstants.VM_INSTANCE)));
392 log.info("VALUE = " + context.getAttribute(SdcArtifactHandlerConstants.VM_INSTANCE));
393 if (vmInstance.get(SdcArtifactHandlerConstants.VNFC) instanceof JSONArray) {
394 JSONArray vnfcInstanceList = (JSONArray) vmInstance.get(SdcArtifactHandlerConstants.VNFC);
395 for (int k = 0; k < vnfcInstanceList.length(); k++) {
396 JSONObject vnfcInstance = (JSONObject) vnfcInstanceList.get(k);
397 context.setAttribute(SdcArtifactHandlerConstants.VNFC_INSTANCE,
398 String.valueOf(vnfcInstance.getInt(SdcArtifactHandlerConstants.VNFC_INSTANCE)));
399 context.setAttribute(SdcArtifactHandlerConstants.VNFC_TYPE,
400 vnfcInstance.getString(SdcArtifactHandlerConstants.VNFC_TYPE));
401 context.setAttribute(SdcArtifactHandlerConstants.VNFC_FUNCTION_CODE,
402 vnfcInstance.getString(SdcArtifactHandlerConstants.VNFC_FUNCTION_CODE));
403 if (vnfcInstance.has(SdcArtifactHandlerConstants.IPADDRESS_V4_OAM_VIP))
404 context.setAttribute(SdcArtifactHandlerConstants.IPADDRESS_V4_OAM_VIP,
405 vnfcInstance.getString(SdcArtifactHandlerConstants.IPADDRESS_V4_OAM_VIP));
406 if (vnfcInstance.has(SdcArtifactHandlerConstants.GROUP_NOTATION_TYPE))
407 context.setAttribute(SdcArtifactHandlerConstants.GROUP_NOTATION_TYPE,
408 vnfcInstance.getString(SdcArtifactHandlerConstants.GROUP_NOTATION_TYPE));
409 if (vnfcInstance.has(SdcArtifactHandlerConstants.GROUP_NOTATION_VALUE))
410 context.setAttribute(SdcArtifactHandlerConstants.GROUP_NOTATION_VALUE,
411 vnfcInstance.getString(SdcArtifactHandlerConstants.GROUP_NOTATION_VALUE));
412 if (content.getString(SdcArtifactHandlerConstants.ACTION).equals("Configure")) {
413 dbservice.processVnfcReference(context,false);
415 cleanVnfcInstance(context);
417 context.setAttribute(SdcArtifactHandlerConstants.VM_INSTANCE, null);
424 if (storeCapabilityArtifact) {
425 capabilities.put("vnf", vnfActionList);
426 capabilities.put("vf-module", vfModuleActionList);
427 capabilities.put("vnfc", vnfcActionList);
428 capabilities.put("vm", vmActionVnfcFunctionCodesList);
429 processAndStoreCapablitiesArtifact(dbservice, document_information, capabilities, capabilityArtifactName,
433 } catch (Exception e) {
435 throw new Exception("Error While Storing : " + e.getMessage());
441 private void cleanArtifactInstanceData(SvcLogicContext context) {
442 context.setAttribute(SdcArtifactHandlerConstants.ARTIFACT_NAME, null);
443 context.setAttribute(SdcArtifactHandlerConstants.FILE_CATEGORY, null);
446 private void cleanVnfcInstance(SvcLogicContext context) {
448 context.setAttribute(SdcArtifactHandlerConstants.VNFC_INSTANCE, null);
449 context.setAttribute(SdcArtifactHandlerConstants.VNFC_TYPE, null);
450 context.setAttribute(SdcArtifactHandlerConstants.VNFC_FUNCTION_CODE, null);
451 context.setAttribute(SdcArtifactHandlerConstants.IPADDRESS_V4_OAM_VIP, null);
452 context.setAttribute(SdcArtifactHandlerConstants.GROUP_NOTATION_TYPE, null);
453 context.setAttribute(SdcArtifactHandlerConstants.GROUP_NOTATION_VALUE, null);
457 private void processAndStoreCapablitiesArtifact(DBService dbservice, JSONObject document_information,
458 JSONObject capabilities, String capabilityArtifactName, String vnfType) throws Exception {
459 log.info("Begin-->processAndStoreCapablitiesArtifact ");
463 JSONObject newCapabilitiesObject = new JSONObject();
464 newCapabilitiesObject.put("capabilities", capabilities);
465 SvcLogicContext context = new SvcLogicContext();
466 context.setAttribute(SdcArtifactHandlerConstants.ARTIFACT_NAME, capabilityArtifactName);
467 context.setAttribute(SdcArtifactHandlerConstants.FILE_CATEGORY, SdcArtifactHandlerConstants.CAPABILITY);
468 context.setAttribute(SdcArtifactHandlerConstants.ACTION, null);
469 context.setAttribute(SdcArtifactHandlerConstants.VNFC_TYPE, null);
470 context.setAttribute(SdcArtifactHandlerConstants.ARTIFACT_TYPE, null);
471 context.setAttribute(SdcArtifactHandlerConstants.VNF_TYPE, vnfType);
472 context.setAttribute(SdcArtifactHandlerConstants.ARTIFACT_CONTENTS, newCapabilitiesObject.toString());
473 dbservice.processSdcReferences(context,
474 dbservice.isArtifactUpdateRequired(context, SdcArtifactHandlerConstants.DB_SDC_REFERENCE));
477 String internal_version = dbservice.getInternalVersionNumber(context,
478 context.getAttribute(SdcArtifactHandlerConstants.ARTIFACT_NAME), null);
479 log.info("Internal Version number received from Database : " + internal_version);
480 if (internal_version != null) {
481 intversion = Integer.parseInt(internal_version);
484 context.setAttribute(SdcArtifactHandlerConstants.SERVICE_UUID,
485 document_information.getString(SdcArtifactHandlerConstants.SERVICE_UUID));
486 context.setAttribute(SdcArtifactHandlerConstants.DISTRIBUTION_ID,
487 document_information.getString(SdcArtifactHandlerConstants.DISTRIBUTION_ID));
488 context.setAttribute(SdcArtifactHandlerConstants.SERVICE_NAME,
489 document_information.getString(SdcArtifactHandlerConstants.SERVICE_NAME));
490 context.setAttribute(SdcArtifactHandlerConstants.SERVICE_DESCRIPTION,
491 document_information.getString(SdcArtifactHandlerConstants.SERVICE_DESCRIPTION));
492 context.setAttribute(SdcArtifactHandlerConstants.RESOURCE_UUID,
493 document_information.getString(SdcArtifactHandlerConstants.RESOURCE_UUID));
494 context.setAttribute(SdcArtifactHandlerConstants.RESOURCE_INSTANCE_NAME,
495 document_information.getString(SdcArtifactHandlerConstants.RESOURCE_INSTANCE_NAME));
496 context.setAttribute(SdcArtifactHandlerConstants.RESOURCE_VERSOIN,
497 document_information.getString(SdcArtifactHandlerConstants.RESOURCE_VERSOIN));
498 context.setAttribute(SdcArtifactHandlerConstants.RESOURCE_TYPE,
499 document_information.getString(SdcArtifactHandlerConstants.RESOURCE_TYPE));
500 context.setAttribute(SdcArtifactHandlerConstants.ARTIFACT_UUID,
501 document_information.getString(SdcArtifactHandlerConstants.ARTIFACT_UUID));
502 context.setAttribute(SdcArtifactHandlerConstants.ARTIFACT_VERSOIN,
503 document_information.getString(SdcArtifactHandlerConstants.ARTIFACT_VERSOIN));
504 context.setAttribute(SdcArtifactHandlerConstants.ARTIFACT_DESRIPTION,
505 document_information.getString(SdcArtifactHandlerConstants.ARTIFACT_DESRIPTION));
508 dbservice.saveArtifacts(context, intversion);
510 } catch (Exception e) {
511 log.error("Error saving capabilities artifact to DB: " + e.toString());
514 log.info("End-->processAndStoreCapablitiesArtifact ");
519 private void populateProtocolReference(DBService dbservice, JSONObject content) throws Exception {
520 log.info("Begin-->populateProtocolReference ");
522 SvcLogicContext context = new SvcLogicContext();
523 JSONObject scope = content.getJSONObject("scope");
524 String vnfType = null, protocol = null, action = null, actionLevel = null, template = null;
525 if (scope.has(SdcArtifactHandlerConstants.VNF_TYPE) && !scope.isNull(SdcArtifactHandlerConstants.VNF_TYPE))
526 vnfType = scope.getString(SdcArtifactHandlerConstants.VNF_TYPE);
527 if (content.has(SdcArtifactHandlerConstants.DEVICE_PROTOCOL))
528 protocol = content.getString(SdcArtifactHandlerConstants.DEVICE_PROTOCOL);
529 if (content.has(SdcArtifactHandlerConstants.ACTION))
530 action = content.getString(SdcArtifactHandlerConstants.ACTION);
531 if (content.has(SdcArtifactHandlerConstants.ACTION_LEVEL))
532 actionLevel = content.getString(SdcArtifactHandlerConstants.ACTION_LEVEL);
533 if (content.has(SdcArtifactHandlerConstants.TEMPLATE)
534 && !content.isNull(SdcArtifactHandlerConstants.TEMPLATE))
535 template = content.getString(SdcArtifactHandlerConstants.TEMPLATE);
536 boolean isUpdateNeeded=dbservice.isProtocolReferenceUpdateRequired(context, vnfType, protocol, action, actionLevel, template);
538 dbservice.updateProtocolReference(context, vnfType, protocol, action, actionLevel, template);
540 dbservice.insertProtocolReference(context, vnfType,protocol,action,actionLevel,template);
541 } catch (Exception e) {
542 log.error("Error inserting record into protocolReference: " + e.toString());
545 log.info("End-->populateProtocolReference ");