2  * ============LICENSE_START=======================================================
 
   4  * ================================================================================
 
   5  * Copyright (C) 2017 AT&T Intellectual Property. 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.policy.template.demo;
 
  23 import java.io.FileNotFoundException;
 
  24 import java.io.FileReader;
 
  25 import java.util.UUID;
 
  27 import org.junit.Test;
 
  28 import org.onap.policy.mso.SOCloudConfiguration;
 
  29 import org.onap.policy.mso.SOModelInfo;
 
  30 import org.onap.policy.mso.SORelatedInstance;
 
  31 import org.onap.policy.mso.SORelatedInstanceListElement;
 
  32 import org.onap.policy.mso.SORequest;
 
  33 import org.onap.policy.mso.SORequestDetails;
 
  34 import org.onap.policy.mso.SORequestInfo;
 
  35 import org.onap.policy.mso.SORequestParameters;
 
  36 import org.onap.policy.aai.AAINQF199.AAINQF199Response;
 
  37 import org.onap.policy.aai.AAINQF199.AAINQF199ResponseWrapper;
 
  38 import org.onap.policy.mso.util.Serialization;
 
  39 import org.slf4j.Logger;
 
  40 import org.slf4j.LoggerFactory;
 
  42 import com.google.gson.Gson;
 
  43 import com.google.gson.stream.JsonReader;
 
  47         private static final Logger logger = LoggerFactory.getLogger(TestSO.class);
 
  50         public void test() throws FileNotFoundException {
 
  51                 Gson gson = new Gson();
 
  52                 JsonReader reader = new JsonReader(new FileReader("src/test/resources/aairesponse.json"));
 
  53                 AAINQF199Response response = gson.fromJson(reader, AAINQF199Response.class);
 
  55                 logger.debug(Serialization.gsonPretty.toJson(response));
 
  57                 AAINQF199ResponseWrapper aainqf199ResponseWrapper = new AAINQF199ResponseWrapper(UUID.randomUUID(), response);
 
  63                 String vnfItemVnfId = aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.vnfID;
 
  64                 String vnfItemVnfType = aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.vnfType;
 
  65                 vnfItemVnfType = vnfItemVnfType.substring(vnfItemVnfType.lastIndexOf("/")+1);
 
  66                 String vnfItemPersonaModelId = aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.personaModelId;
 
  67                 String vnfItemPersonaModelVersion = aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.personaModelVersion;
 
  68                 String vnfItemModelName = aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(0).propertyValue;
 
  69                 String vnfItemModelNameVersionId =      aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(4).propertyValue;
 
  73                 String serviceItemServiceInstanceId = aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.serviceInstanceID;
 
  74                 String serviceItemPersonaModelId = aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.personaModelId;
 
  75                 String serviceItemModelName = aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(0).propertyValue;
 
  76                 String serviceItemModelVersion = aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.personaModelVersion;
 
  77                 String serviceItemModelNameVersionId = aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(4).propertyValue;
 
  79                 // This comes from the base module
 
  81                 String vfModuleItemVfModuleName =                       aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(1).vfModule.vfModuleName;
 
  82                 vfModuleItemVfModuleName = vfModuleItemVfModuleName.replace("Vfmodule", "vDNS");
 
  84                 // vfModuleItem - NOT the base module
 
  86                 String vfModuleItemPersonaModelId =             aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(2).vfModule.personaModelId;
 
  87                 String vfModuleItemPersonaModelVersion =        aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(2).vfModule.personaModelVersion;
 
  88                 String vfModuleItemModelName =                          aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(2).extraProperties.extraProperty.get(0).propertyValue;
 
  89                 String vfModuleItemModelNameVersionId =         aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(2).extraProperties.extraProperty.get(4).propertyValue;
 
  94                 String tenantItemTenantId = aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(1).tenant.tenantId;
 
  98                 String cloudRegionItemCloudRegionId = aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(1).items.inventoryResponseItems.get(0).cloudRegion.cloudRegionId;
 
 101                 // Construct an SO request
 
 103                 SORequest request = new SORequest();
 
 104                 request.requestDetails = new SORequestDetails();
 
 105                 request.requestDetails.modelInfo = new SOModelInfo();
 
 106                 request.requestDetails.cloudConfiguration = new SOCloudConfiguration();
 
 107                 request.requestDetails.requestInfo = new SORequestInfo();
 
 108                 request.requestDetails.requestParameters = new SORequestParameters();
 
 109                 request.requestDetails.requestParameters.userParams = null;
 
 111                 // cloudConfiguration
 
 113                 request.requestDetails.cloudConfiguration.lcpCloudRegionId = cloudRegionItemCloudRegionId;
 
 114                 request.requestDetails.cloudConfiguration.tenantId = tenantItemTenantId;
 
 118                 request.requestDetails.modelInfo.modelType = "vfModule";
 
 119                 request.requestDetails.modelInfo.modelInvariantId = vfModuleItemPersonaModelId;
 
 120                 request.requestDetails.modelInfo.modelNameVersionId = vfModuleItemModelNameVersionId;
 
 121                 request.requestDetails.modelInfo.modelName = vfModuleItemModelName;
 
 122                 request.requestDetails.modelInfo.modelVersion = vfModuleItemPersonaModelVersion;
 
 126                 request.requestDetails.requestInfo.instanceName = vfModuleItemVfModuleName;
 
 127                 request.requestDetails.requestInfo.source = "POLICY";
 
 128                 request.requestDetails.requestInfo.suppressRollback = false;
 
 130                 // relatedInstanceList
 
 132                 SORelatedInstanceListElement relatedInstanceListElement1 = new SORelatedInstanceListElement();
 
 133                 SORelatedInstanceListElement relatedInstanceListElement2 = new SORelatedInstanceListElement();
 
 134                 relatedInstanceListElement1.relatedInstance = new SORelatedInstance();
 
 135                 relatedInstanceListElement2.relatedInstance = new SORelatedInstance();
 
 137                 relatedInstanceListElement1.relatedInstance.instanceId = serviceItemServiceInstanceId;
 
 138                 relatedInstanceListElement1.relatedInstance.modelInfo = new SOModelInfo();
 
 139                 relatedInstanceListElement1.relatedInstance.modelInfo.modelType = "service";
 
 140                 relatedInstanceListElement1.relatedInstance.modelInfo.modelInvariantId = serviceItemPersonaModelId;
 
 141                 relatedInstanceListElement1.relatedInstance.modelInfo.modelNameVersionId = serviceItemModelNameVersionId;
 
 142                 relatedInstanceListElement1.relatedInstance.modelInfo.modelName = serviceItemModelName;
 
 143                 relatedInstanceListElement1.relatedInstance.modelInfo.modelVersion = serviceItemModelVersion;
 
 145                 relatedInstanceListElement2.relatedInstance.instanceId = vnfItemVnfId;
 
 146                 relatedInstanceListElement2.relatedInstance.modelInfo = new SOModelInfo();
 
 147                 relatedInstanceListElement2.relatedInstance.modelInfo.modelType = "vnf";
 
 148                 relatedInstanceListElement2.relatedInstance.modelInfo.modelInvariantId = vnfItemPersonaModelId;
 
 149                 relatedInstanceListElement2.relatedInstance.modelInfo.modelNameVersionId = vnfItemModelNameVersionId;
 
 150                 relatedInstanceListElement2.relatedInstance.modelInfo.modelName = vnfItemModelName;
 
 151                 relatedInstanceListElement2.relatedInstance.modelInfo.modelVersion = vnfItemPersonaModelVersion;
 
 152                 relatedInstanceListElement2.relatedInstance.modelInfo.modelCustomizationName = vnfItemVnfType;
 
 154                 request.requestDetails.relatedInstanceList.add(relatedInstanceListElement1);
 
 155                 request.requestDetails.relatedInstanceList.add(relatedInstanceListElement2);
 
 157                 // print SO request for debug
 
 159                 logger.debug("SO request sent:");
 
 160                 logger.debug(Serialization.gsonPretty.toJson(request));