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.openecomp.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 vmActionList = new JSONArray();
 
 246             String vnfType = null;
 
 247             JSONObject contentObject = new JSONObject(contentString);
 
 248             JSONArray contentArray = contentObject.getJSONArray("reference_data");
 
 249             boolean storeCapabilityArtifact=true;
 
 250             for (int a = 0; a < contentArray.length(); a++) {
 
 252                 JSONObject content = (JSONObject) contentArray.get(a);
 
 253                 log.info("contentString =" + content.toString());
 
 254                 JSONObject scope = content.getJSONObject("scope");
 
 255                 log.info("scope :" + scope);
 
 256                 SvcLogicContext context = new SvcLogicContext();
 
 257                 vnfType = scope.getString(SdcArtifactHandlerConstants.VNF_TYPE);
 
 258                 context.setAttribute(SdcArtifactHandlerConstants.VNF_TYPE,
 
 259                         scope.getString(SdcArtifactHandlerConstants.VNF_TYPE));
 
 260                 context.setAttribute(SdcArtifactHandlerConstants.ACTION,
 
 261                         content.getString(SdcArtifactHandlerConstants.ACTION));
 
 262                 String actionLevel = content.getString(SdcArtifactHandlerConstants.ACTION_LEVEL);
 
 263                 context.setAttribute(SdcArtifactHandlerConstants.ACTION_LEVEL,
 
 264                         content.getString(SdcArtifactHandlerConstants.ACTION_LEVEL));
 
 265                 if ((null != actionLevel)
 
 266                         && actionLevel.equalsIgnoreCase(SdcArtifactHandlerConstants.ACTION_LEVEL_VNFC)) {
 
 267                     vnfcActionList.put(content.getString(SdcArtifactHandlerConstants.ACTION));
 
 269                 if (null != actionLevel
 
 270                         && actionLevel.equalsIgnoreCase(SdcArtifactHandlerConstants.ACTION_LEVEL_VF_MODULE)) {
 
 271                     vfModuleActionList.put(content.getString(SdcArtifactHandlerConstants.ACTION));
 
 273                 if (null != actionLevel && actionLevel.equalsIgnoreCase(SdcArtifactHandlerConstants.ACTION_LEVEL_VNF)) {
 
 274                     vnfActionList.put(content.getString(SdcArtifactHandlerConstants.ACTION));
 
 276                 if (null != actionLevel && actionLevel.equalsIgnoreCase(SdcArtifactHandlerConstants.ACTION_LEVEL_VM)) {
 
 277                     vmActionList.put(content.getString(SdcArtifactHandlerConstants.ACTION));
 
 279                 if (scope.has(SdcArtifactHandlerConstants.VNFC_TYPE)
 
 280                         && !scope.isNull(SdcArtifactHandlerConstants.VNFC_TYPE)) {
 
 281                     context.setAttribute(SdcArtifactHandlerConstants.VNFC_TYPE,
 
 282                             scope.getString(SdcArtifactHandlerConstants.VNFC_TYPE));
 
 283                     String vnfcTypeScope = scope.getString(SdcArtifactHandlerConstants.VNFC_TYPE);
 
 284                     if (StringUtils.isNotBlank(vnfcTypeScope)) {
 
 285                         storeCapabilityArtifact = false;
 
 286                         log.info("No capability Artifact for this reference data as it is at VNFC level!!");
 
 290                     context.setAttribute(SdcArtifactHandlerConstants.VNFC_TYPE, null);
 
 291                 if (content.has(SdcArtifactHandlerConstants.DEVICE_PROTOCOL))
 
 292                     context.setAttribute(SdcArtifactHandlerConstants.DEVICE_PROTOCOL,
 
 293                             content.getString(SdcArtifactHandlerConstants.DEVICE_PROTOCOL));
 
 294                 if (content.has(SdcArtifactHandlerConstants.USER_NAME))
 
 295                     context.setAttribute(SdcArtifactHandlerConstants.USER_NAME,
 
 296                             content.getString(SdcArtifactHandlerConstants.USER_NAME));
 
 297                 if (content.has(SdcArtifactHandlerConstants.PORT_NUMBER))
 
 298                     context.setAttribute(SdcArtifactHandlerConstants.PORT_NUMBER,
 
 299                             content.getString(SdcArtifactHandlerConstants.PORT_NUMBER));
 
 300                 context.setAttribute(SdcArtifactHandlerConstants.ARTIFACT_TYPE, "");
 
 301                 if (content.has("artifact-list") && content.get("artifact-list") instanceof JSONArray) {
 
 302                     JSONArray artifactLists = (JSONArray) content.get("artifact-list");
 
 303                     for (int i = 0; i < artifactLists.length(); i++) {
 
 304                         JSONObject artifact = (JSONObject) artifactLists.get(i);
 
 305                         log.info("artifact is " + artifact);
 
 306                         context.setAttribute(SdcArtifactHandlerConstants.ARTIFACT_NAME,
 
 307                                 artifact.getString(SdcArtifactHandlerConstants.ARTIFACT_NAME));
 
 308                         context.setAttribute(SdcArtifactHandlerConstants.FILE_CATEGORY,
 
 309                                 artifact.getString(SdcArtifactHandlerConstants.ARTIFACT_TYPE));
 
 311                         if (artifact.getString(SdcArtifactHandlerConstants.ARTIFACT_NAME) != null
 
 312                                 && artifact.getString(SdcArtifactHandlerConstants.ARTIFACT_NAME).toLowerCase()
 
 313                                         .startsWith(SdcArtifactHandlerConstants.PD)) {
 
 314                             suffix = artifact.getString(SdcArtifactHandlerConstants.ARTIFACT_NAME)
 
 315                                     .substring(SdcArtifactHandlerConstants.PD.length());
 
 316                             categorySuffix = artifact.getString(SdcArtifactHandlerConstants.ARTIFACT_TYPE)
 
 317                                     .substring(SdcArtifactHandlerConstants.PD.length());
 
 321                         dbservice.processSdcReferences(context, dbservice.isArtifactUpdateRequired(context,
 
 322                                 SdcArtifactHandlerConstants.DB_SDC_REFERENCE));
 
 324                         cleanArtifactInstanceData(context);
 
 328                         context.setAttribute(SdcArtifactHandlerConstants.ARTIFACT_NAME, "Tosca".concat(suffix));
 
 329                         context.setAttribute(SdcArtifactHandlerConstants.FILE_CATEGORY,
 
 330                                 SdcArtifactHandlerConstants.TOSCA_MODEL);
 
 331                         dbservice.processSdcReferences(context, dbservice.isArtifactUpdateRequired(context,
 
 332                                 SdcArtifactHandlerConstants.DB_SDC_REFERENCE));
 
 333                         context.setAttribute(SdcArtifactHandlerConstants.ARTIFACT_NAME, "Yang".concat(suffix));
 
 334                         context.setAttribute(SdcArtifactHandlerConstants.FILE_CATEGORY,
 
 335                                 SdcArtifactHandlerConstants.PARAMETER_YANG);
 
 336                         dbservice.processSdcReferences(context, dbservice.isArtifactUpdateRequired(context,
 
 337                                 SdcArtifactHandlerConstants.DB_SDC_REFERENCE));
 
 340                 if (content.getString(SdcArtifactHandlerConstants.ACTION).equals("Configure")
 
 341                     || content.getString(SdcArtifactHandlerConstants.ACTION).equals("ConfigModify")) {
 
 342                     if (content.has(SdcArtifactHandlerConstants.DOWNLOAD_DG_REFERENCE)
 
 343                             && content.getString(SdcArtifactHandlerConstants.DOWNLOAD_DG_REFERENCE).length() > 0) {
 
 344                         context.setAttribute(SdcArtifactHandlerConstants.DOWNLOAD_DG_REFERENCE,
 
 345                                 content.getString(SdcArtifactHandlerConstants.DOWNLOAD_DG_REFERENCE));
 
 346                         dbservice.processDownloadDgReference(context, dbservice.isArtifactUpdateRequired(context,
 
 347                                 SdcArtifactHandlerConstants.DB_DOWNLOAD_DG_REFERENCE));
 
 349                     if (StringUtils.isBlank(context.getAttribute(SdcArtifactHandlerConstants.DOWNLOAD_DG_REFERENCE)))
 
 350                         context.setAttribute(SdcArtifactHandlerConstants.DOWNLOAD_DG_REFERENCE,
 
 351                                 dbservice.getDownLoadDGReference(context));
 
 352                     dbservice.processConfigActionDg(context, dbservice.isArtifactUpdateRequired(context,
 
 353                             SdcArtifactHandlerConstants.DB_CONFIG_ACTION_DG));
 
 354                     if (content.getString(SdcArtifactHandlerConstants.ACTION).equals("Configure")) {
 
 355                         dbservice.processDeviceInterfaceProtocol(context, dbservice.isArtifactUpdateRequired(context,
 
 356                                 SdcArtifactHandlerConstants.DB_DEVICE_INTERFACE_PROTOCOL));
 
 357                         dbservice.processDeviceAuthentication(context, dbservice.isArtifactUpdateRequired(context,
 
 358                                 SdcArtifactHandlerConstants.DB_DEVICE_AUTHENTICATION));
 
 364                 populateProtocolReference(dbservice, content);
 
 366                 context.setAttribute(SdcArtifactHandlerConstants.VNFC_TYPE, null);
 
 368                 if (content.has(SdcArtifactHandlerConstants.VM)
 
 369                         && content.get(SdcArtifactHandlerConstants.VM) instanceof JSONArray) {
 
 370                     JSONArray vmList = (JSONArray) content.get(SdcArtifactHandlerConstants.VM);
 
 371                     dbservice.cleanUpVnfcReferencesForVnf(context);
 
 372                     for (int i = 0; i < vmList.length(); i++) {
 
 373                         JSONObject vmInstance = (JSONObject) vmList.get(i);
 
 374                         context.setAttribute(SdcArtifactHandlerConstants.VM_INSTANCE,
 
 375                                 String.valueOf(vmInstance.getInt(SdcArtifactHandlerConstants.VM_INSTANCE)));
 
 376                         log.info("VALUE = " + context.getAttribute(SdcArtifactHandlerConstants.VM_INSTANCE));
 
 377                         if (vmInstance.get(SdcArtifactHandlerConstants.VNFC) instanceof JSONArray) {
 
 378                             JSONArray vnfcInstanceList = (JSONArray) vmInstance.get(SdcArtifactHandlerConstants.VNFC);
 
 379                             for (int k = 0; k < vnfcInstanceList.length(); k++) {
 
 380                                 JSONObject vnfcInstance = (JSONObject) vnfcInstanceList.get(k);
 
 381                                 context.setAttribute(SdcArtifactHandlerConstants.VNFC_INSTANCE,
 
 382                                         String.valueOf(vnfcInstance.getInt(SdcArtifactHandlerConstants.VNFC_INSTANCE)));
 
 383                                 context.setAttribute(SdcArtifactHandlerConstants.VNFC_TYPE,
 
 384                                         vnfcInstance.getString(SdcArtifactHandlerConstants.VNFC_TYPE));
 
 385                                 context.setAttribute(SdcArtifactHandlerConstants.VNFC_FUNCTION_CODE,
 
 386                                         vnfcInstance.getString(SdcArtifactHandlerConstants.VNFC_FUNCTION_CODE));
 
 387                                 if (vnfcInstance.has(SdcArtifactHandlerConstants.IPADDRESS_V4_OAM_VIP))
 
 388                                     context.setAttribute(SdcArtifactHandlerConstants.IPADDRESS_V4_OAM_VIP,
 
 389                                             vnfcInstance.getString(SdcArtifactHandlerConstants.IPADDRESS_V4_OAM_VIP));
 
 390                                 if (vnfcInstance.has(SdcArtifactHandlerConstants.GROUP_NOTATION_TYPE))
 
 391                                     context.setAttribute(SdcArtifactHandlerConstants.GROUP_NOTATION_TYPE,
 
 392                                             vnfcInstance.getString(SdcArtifactHandlerConstants.GROUP_NOTATION_TYPE));
 
 393                                 if (vnfcInstance.has(SdcArtifactHandlerConstants.GROUP_NOTATION_VALUE))
 
 394                                     context.setAttribute(SdcArtifactHandlerConstants.GROUP_NOTATION_VALUE,
 
 395                                             vnfcInstance.getString(SdcArtifactHandlerConstants.GROUP_NOTATION_VALUE));
 
 396                                 if (content.getString(SdcArtifactHandlerConstants.ACTION).equals("Configure")) {
 
 397                                     dbservice.processVnfcReference(context,false);
 
 399                                 cleanVnfcInstance(context);
 
 401                             context.setAttribute(SdcArtifactHandlerConstants.VM_INSTANCE, null);
 
 408             if (storeCapabilityArtifact) {
 
 409                 capabilities.put("vnf", vnfActionList);
 
 410                 capabilities.put("vf-module", vfModuleActionList);
 
 411                 capabilities.put("vnfc", vnfcActionList);
 
 412                 capabilities.put("vm", vmActionList);
 
 413                 processAndStoreCapablitiesArtifact(dbservice, document_information, capabilities, capabilityArtifactName,
 
 417         } catch (Exception e) {
 
 419             throw new Exception("Error While Storing :  " + e.getMessage());
 
 425     private void cleanArtifactInstanceData(SvcLogicContext context) {
 
 426         context.setAttribute(SdcArtifactHandlerConstants.ARTIFACT_NAME, null);
 
 427         context.setAttribute(SdcArtifactHandlerConstants.FILE_CATEGORY, null);
 
 430     private void cleanVnfcInstance(SvcLogicContext context) {
 
 432         context.setAttribute(SdcArtifactHandlerConstants.VNFC_INSTANCE, null);
 
 433         context.setAttribute(SdcArtifactHandlerConstants.VNFC_TYPE, null);
 
 434         context.setAttribute(SdcArtifactHandlerConstants.VNFC_FUNCTION_CODE, null);
 
 435         context.setAttribute(SdcArtifactHandlerConstants.IPADDRESS_V4_OAM_VIP, null);
 
 436         context.setAttribute(SdcArtifactHandlerConstants.GROUP_NOTATION_TYPE, null);
 
 437         context.setAttribute(SdcArtifactHandlerConstants.GROUP_NOTATION_VALUE, null);
 
 441     private void processAndStoreCapablitiesArtifact(DBService dbservice, JSONObject document_information,
 
 442             JSONObject capabilities, String capabilityArtifactName, String vnfType) throws Exception {
 
 443         log.info("Begin-->processAndStoreCapablitiesArtifact ");
 
 447             JSONObject newCapabilitiesObject = new JSONObject();
 
 448             newCapabilitiesObject.put("capabilities", capabilities);
 
 449             SvcLogicContext context = new SvcLogicContext();
 
 450             context.setAttribute(SdcArtifactHandlerConstants.ARTIFACT_NAME, capabilityArtifactName);
 
 451             context.setAttribute(SdcArtifactHandlerConstants.FILE_CATEGORY, SdcArtifactHandlerConstants.CAPABILITY);
 
 452             context.setAttribute(SdcArtifactHandlerConstants.ACTION, null);
 
 453             context.setAttribute(SdcArtifactHandlerConstants.VNFC_TYPE, null);
 
 454             context.setAttribute(SdcArtifactHandlerConstants.ARTIFACT_TYPE, null);
 
 455             context.setAttribute(SdcArtifactHandlerConstants.VNF_TYPE, vnfType);
 
 456             context.setAttribute(SdcArtifactHandlerConstants.ARTIFACT_CONTENTS, newCapabilitiesObject.toString());
 
 457             dbservice.processSdcReferences(context,
 
 458                     dbservice.isArtifactUpdateRequired(context, SdcArtifactHandlerConstants.DB_SDC_REFERENCE));
 
 461             String internal_version = dbservice.getInternalVersionNumber(context,
 
 462                     context.getAttribute(SdcArtifactHandlerConstants.ARTIFACT_NAME), null);
 
 463             log.info("Internal Version number received from Database : " + internal_version);
 
 464             if (internal_version != null) {
 
 465                 intversion = Integer.parseInt(internal_version);
 
 468             context.setAttribute(SdcArtifactHandlerConstants.SERVICE_UUID,
 
 469                     document_information.getString(SdcArtifactHandlerConstants.SERVICE_UUID));
 
 470             context.setAttribute(SdcArtifactHandlerConstants.DISTRIBUTION_ID,
 
 471                     document_information.getString(SdcArtifactHandlerConstants.DISTRIBUTION_ID));
 
 472             context.setAttribute(SdcArtifactHandlerConstants.SERVICE_NAME,
 
 473                     document_information.getString(SdcArtifactHandlerConstants.SERVICE_NAME));
 
 474             context.setAttribute(SdcArtifactHandlerConstants.SERVICE_DESCRIPTION,
 
 475                     document_information.getString(SdcArtifactHandlerConstants.SERVICE_DESCRIPTION));
 
 476             context.setAttribute(SdcArtifactHandlerConstants.RESOURCE_UUID,
 
 477                     document_information.getString(SdcArtifactHandlerConstants.RESOURCE_UUID));
 
 478             context.setAttribute(SdcArtifactHandlerConstants.RESOURCE_INSTANCE_NAME,
 
 479                     document_information.getString(SdcArtifactHandlerConstants.RESOURCE_INSTANCE_NAME));
 
 480             context.setAttribute(SdcArtifactHandlerConstants.RESOURCE_VERSOIN,
 
 481                     document_information.getString(SdcArtifactHandlerConstants.RESOURCE_VERSOIN));
 
 482             context.setAttribute(SdcArtifactHandlerConstants.RESOURCE_TYPE,
 
 483                     document_information.getString(SdcArtifactHandlerConstants.RESOURCE_TYPE));
 
 484             context.setAttribute(SdcArtifactHandlerConstants.ARTIFACT_UUID,
 
 485                     document_information.getString(SdcArtifactHandlerConstants.ARTIFACT_UUID));
 
 486             context.setAttribute(SdcArtifactHandlerConstants.ARTIFACT_VERSOIN,
 
 487                     document_information.getString(SdcArtifactHandlerConstants.ARTIFACT_VERSOIN));
 
 488             context.setAttribute(SdcArtifactHandlerConstants.ARTIFACT_DESRIPTION,
 
 489                     document_information.getString(SdcArtifactHandlerConstants.ARTIFACT_DESRIPTION));
 
 492             dbservice.saveArtifacts(context, intversion);
 
 494         } catch (Exception e) {
 
 495             log.error("Error saving capabilities artifact to DB: " + e.toString());
 
 498             log.info("End-->processAndStoreCapablitiesArtifact ");
 
 503     private void populateProtocolReference(DBService dbservice, JSONObject content) throws Exception {
 
 504         log.info("Begin-->populateProtocolReference ");
 
 506             SvcLogicContext context = new SvcLogicContext();
 
 507             JSONObject scope = content.getJSONObject("scope");
 
 508             String vnfType = null, protocol = null, action = null, actionLevel = null, template = null;
 
 509             if (scope.has(SdcArtifactHandlerConstants.VNF_TYPE) && !scope.isNull(SdcArtifactHandlerConstants.VNF_TYPE))
 
 510                 vnfType = scope.getString(SdcArtifactHandlerConstants.VNF_TYPE);
 
 511             if (content.has(SdcArtifactHandlerConstants.DEVICE_PROTOCOL))
 
 512                 protocol = content.getString(SdcArtifactHandlerConstants.DEVICE_PROTOCOL);
 
 513             if (content.has(SdcArtifactHandlerConstants.ACTION))
 
 514                 action = content.getString(SdcArtifactHandlerConstants.ACTION);
 
 515             if (content.has(SdcArtifactHandlerConstants.ACTION_LEVEL))
 
 516                 actionLevel = content.getString(SdcArtifactHandlerConstants.ACTION_LEVEL);
 
 517             if (content.has(SdcArtifactHandlerConstants.TEMPLATE)
 
 518                     && !content.isNull(SdcArtifactHandlerConstants.TEMPLATE))
 
 519                 template = content.getString(SdcArtifactHandlerConstants.TEMPLATE);
 
 520             boolean isUpdateNeeded=dbservice.isProtocolReferenceUpdateRequired(context, vnfType, protocol, action, actionLevel, template);
 
 522                 dbservice.updateProtocolReference(context, vnfType, protocol, action, actionLevel, template);
 
 524                 dbservice.insertProtocolReference(context, vnfType,protocol,action,actionLevel,template);
 
 525         } catch (Exception e) {
 
 526             log.error("Error inserting record into protocolReference: " + e.toString());
 
 529             log.info("End-->populateProtocolReference ");