* ============LICENSE_START=======================================================
* ONAP : APPC
* ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved.
* ================================================================================
* Copyright (C) 2017 Amdocs
* =============================================================================
* 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.
- *
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ *
* ============LICENSE_END=========================================================
*/
package org.onap.appc.aai.client.aai;
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
-import java.util.Set;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
import java.util.Map;
-
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
-
-import org.onap.ccsdk.sli.core.sli.SvcLogicContext;
-import org.onap.ccsdk.sli.core.sli.SvcLogicResource;
-
import org.onap.appc.aai.client.AppcAaiClientConstant;
-import com.att.eelf.configuration.EELFLogger;
-import com.att.eelf.configuration.EELFManager;
import org.onap.ccsdk.sli.adaptors.aai.AAIClient;
import org.onap.ccsdk.sli.adaptors.aai.AAIService;
+import org.onap.ccsdk.sli.core.sli.SvcLogicContext;
+import org.onap.ccsdk.sli.core.sli.SvcLogicException;
+import org.onap.ccsdk.sli.core.sli.SvcLogicResource;
import org.osgi.framework.BundleContext;
import org.osgi.framework.FrameworkUtil;
import org.osgi.framework.ServiceReference;
public class AaiService {
private static final EELFLogger log = EELFManager.getInstance().getLogger(AaiService.class);
- private AAIClient aaiClient;
+ private static final String STR_VNF_ID = "generic-vnf.vnf-id = '";
+ private static final String STR_VNFC_REF = "vnfcReference[";
+ private static final String STR_VNFC_REF_KEY = "VNFCREFKEY ";
+ private static final String STR_AAI_REF_KEY = "AAIREFKEY ";
+ private static final String STR_RELATIONSHIP_LIST = ".relationship-list.relationship[";
+ private static final String STR_VNFC_NAME = "vnfc.vnfc-name = '";
+ private static final String QUERY_STR_VNFC_NAME = "VNFCNAME IN INSERTVNFCS ";
+
+ private static final String PARAM_GENERIC_VNF = "generic-vnf";
+ private static final String PARAM_VNF_INFO = "vnfInfo";
+ private static final String PARAM_VSERVER = "vserver";
+ private static final String PARAM_VM_INFO = "vmInfo";
+ private static final String PARAM_PROV_STATUS = "prov-status";
+ private static final String PARAM_VAL_NVTPROV = "NVTPROV";
+
+ private static final String ATTR_VSERVER_ID = "vserver-id";
+ private static final String ATTR_TENANT_ID = "tenant-id";
+ private static final String ATTR_CLOUD_OWNER = "cloud-owner";
+ private static final String ATTR_CLOUD_REGION_ID = "cloud-region-id";
+ private static final String ATTR_VNFC_COUNT = "vm.vnfc-count";
+ private static final String ATTR_VNFC_NAME = "vnfc-name";
+ private static final String ATTR_VNFC_FUNC_CODE = "VNFC-FUNCTION-CODE";
+ private static final String ATTR_VSERVER_NAME = "vserver-name";
+ private static final String ATTR_VNF_ID = "vnf-id";
+
+ private AAIClient aaiClient;
+
+ public AaiService(AAIClient aaiClient) {
+ this.aaiClient = aaiClient;
+ }
- public AaiService(AAIClient aaiClient) {
- this.aaiClient = aaiClient;
- }
+ public AaiService() {
+ BundleContext bctx = FrameworkUtil.getBundle(this.getClass()).getBundleContext();
+ ServiceReference sref = bctx.getServiceReference(AAIService.class);
+ aaiClient = (AAIClient) bctx.getService(sref);
+ }
- public AaiService() {
- BundleContext bctx = FrameworkUtil.getBundle(this.getClass()).getBundleContext();
- ServiceReference sref = bctx.getServiceReference(AAIService.class);
- aaiClient = (AAIClient) bctx.getService(sref);
- }
+ public void getGenericVnfInfo(Map<String, String> params, SvcLogicContext ctx)
+ throws AaiServiceInternalException, SvcLogicException {
- public void getGenericVnfInfo(Map<String, String> params, SvcLogicContext ctx) throws Exception {
+ String vnfId = params.get("vnfId");
+ if (StringUtils.isBlank(vnfId)) {
+ throw new AaiServiceInternalException("VnfId is missing");
+ }
+ String prefix = params.get(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX);
+ prefix = StringUtils.isNotBlank(prefix) ? (prefix + ".") : "";
+ String resourceKey = STR_VNF_ID + vnfId + "'";
+ SvcLogicContext vnfCtx = readResource(resourceKey, PARAM_VNF_INFO, PARAM_GENERIC_VNF);
+
+ ctx.setAttribute(prefix + "vnf.vnf-name", vnfCtx.getAttribute("vnfInfo.vnf-name"));
+ ctx.setAttribute(prefix + "vnf.vnf-type", vnfCtx.getAttribute("vnfInfo.vnf-type"));
+ ctx.setAttribute(prefix + "vnf.prov-status", vnfCtx.getAttribute("vnfInfo.prov-status"));
+ ctx.setAttribute(prefix + "vnf.orchestration-status", vnfCtx.getAttribute("vnfInfo.orchestration-status"));
+ ctx.setAttribute(prefix + "vnf.ipv4-oam-address", vnfCtx.getAttribute("vnfInfo.ipv4-oam-address"));
+
+ int vmCount = 0;
+ String relLen = vnfCtx.getAttribute("vnfInfo.relationship-list.relationship_length");
+ int relationshipLength = 0;
+ if (relLen != null) {
+ relationshipLength = Integer.parseInt(relLen);
+ }
+ log.info("RELLEN " + relationshipLength);
+ for (int i = 0; i < relationshipLength; i++) {
+ String vserverId = getRelationshipValue(i, vnfCtx, PARAM_VSERVER, "vserver.vserver-id", PARAM_VNF_INFO);
+ String tenantId = getRelationshipValue(i, vnfCtx, PARAM_VSERVER, "tenant.tenant-id", PARAM_VNF_INFO);
+ String cloudOwner = getRelationshipValue(i, vnfCtx, PARAM_VSERVER, "cloud-region.cloud-owner",
+ PARAM_VNF_INFO);
+ String cloudRegionId =
+ getRelationshipValue(i, vnfCtx, PARAM_VSERVER, "cloud-region.cloud-region-id", PARAM_VNF_INFO);
+ if (vserverId != null) {
+ log.info("VSERVER KEYS " + vserverId + " " + tenantId + " " + cloudOwner + " " + cloudRegionId);
+ String vnfPrefix = prefix + "vm[" + vmCount + "].";
+ ctx.setAttribute(vnfPrefix + ATTR_VSERVER_ID, vserverId);
+ ctx.setAttribute(vnfPrefix + ATTR_TENANT_ID, tenantId);
+ ctx.setAttribute(vnfPrefix + ATTR_CLOUD_OWNER, cloudOwner);
+ ctx.setAttribute(vnfPrefix + ATTR_CLOUD_REGION_ID, cloudRegionId);
+ vmCount++;
+ }
+ }
+ ctx.setAttribute(prefix + "vm-count", String.valueOf(vmCount));
+ log.info("VMCOUNT FROM VNF INFO " + ctx.getAttribute(prefix + "vm-count"));
+ }
- String vnfId = params.get("vnfId");
- if(StringUtils.isBlank(vnfId)){
- throw new Exception("VnfId is missing");
- }
- String prefix = params.get(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX);
- prefix = StringUtils.isNotBlank(prefix) ? (prefix+".") : "";
- //String resourceKey = "generic-vnf.vnf-id = '" + vnfId + "' AND relationship-key = 'vserver.vserver-id'";
- String resourceKey = "generic-vnf.vnf-id = '" + vnfId + "'";
- String resourceType = "generic-vnf";
- String queryPrefix = "vnfInfo";
- SvcLogicContext vnfCtx = readResource(resourceKey,queryPrefix,resourceType);
-
- ctx.setAttribute(prefix + "vnf.vnf-name", vnfCtx.getAttribute("vnfInfo.vnf-name"));
- ctx.setAttribute(prefix + "vnf.vnf-type", vnfCtx.getAttribute("vnfInfo.vnf-type"));
- ctx.setAttribute(prefix + "vnf.prov-status", vnfCtx.getAttribute("vnfInfo.prov-status"));
- ctx.setAttribute(prefix + "vnf.orchestration-status", vnfCtx.getAttribute("vnfInfo.orchestration-status"));
- ctx.setAttribute(prefix + "vnf.ipv4-oam-address", vnfCtx.getAttribute("vnfInfo.ipv4-oam-address"));
-
- int vmCount = 0;
- String relLen = vnfCtx.getAttribute("vnfInfo.relationship-list.relationship_length");
- int relationshipLength = 0;
- if ( relLen != null )
- relationshipLength = Integer.parseInt(relLen);
- log.info("RELLEN " + relationshipLength);
- for ( int i=0; i < relationshipLength; i++ ) {
- String vserverId = getRelationshipValue(i, vnfCtx, "vserver", "vserver.vserver-id", "vnfInfo");
- String tenantId = getRelationshipValue(i, vnfCtx, "vserver", "tenant.tenant-id", "vnfInfo");
- String cloudOwner = getRelationshipValue(i, vnfCtx, "vserver", "cloud-region.cloud-owner", "vnfInfo");
- String cloudRegionId = getRelationshipValue(i, vnfCtx, "vserver", "cloud-region.cloud-region-id", "vnfInfo");
- if ( vserverId != null ) {
- log.info("VSERVER KEYS " + vserverId + " " + tenantId + " " + cloudOwner + " " + cloudRegionId);
- String vnfPrefix = prefix + "vm[" + vmCount + "].";
- ctx.setAttribute(vnfPrefix + "vserver-id", vserverId);
- ctx.setAttribute(vnfPrefix + "tenant-id", tenantId);
- ctx.setAttribute(vnfPrefix + "cloud-owner", cloudOwner);
- ctx.setAttribute(vnfPrefix + "cloud-region-id", cloudRegionId);
- vmCount++;
- }
- }
- ctx.setAttribute(prefix + "vm-count", String.valueOf(vmCount));
- log.info("VMCOUNT FROM VNF INFO " + ctx.getAttribute(prefix + "vm-count"));
- }
+ public void getVMInfo(Map<String, String> params, SvcLogicContext ctx)
+ throws SvcLogicException {
- public void getVMInfo(Map<String, String> params,SvcLogicContext ctx )throws Exception {
+ try {
log.info("Received getVmInfo call with params : " + params);
String prefix = params.get(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX);
- prefix = StringUtils.isNotBlank(prefix) ? (prefix+".") : "";
+ prefix = StringUtils.isNotBlank(prefix) ? (prefix + ".") : "";
int vnfcCount = 0;
- ctx.setAttribute(prefix + "vm.vnfc-count", String.valueOf(vnfcCount)); // Incase no vnfcs are found
- String vserverId = params.get("vserverId");
- if(StringUtils.isBlank(vserverId)){
- throw new Exception("VServerId is missing");
- }
- String tenantId = params.get("tenantId");
- if(StringUtils.isBlank(tenantId)){
- throw new Exception("TenantId is missing");
- }
- String cloudOwner = params.get("cloudOwner");
- if(StringUtils.isBlank(cloudOwner)){
- throw new Exception("Cloud Owner is missing");
- }
- String cloudRegionId = params.get("cloudRegionId");
- if(StringUtils.isBlank(cloudRegionId)){
- throw new Exception("Cloud region Id is missing");
- }
- String resourceKey = "vserver.vserver-id = '" +vserverId + "' AND tenant.tenant-id = '" + tenantId +
- "' AND cloud-region.cloud-owner = '" +cloudOwner +
- "' AND cloud-region.cloud-region-id = '" +cloudRegionId + "'";
- String queryPrefix = "vmInfo";
- String resourceType = "vserver";
- SvcLogicContext vmCtx = readResource(resourceKey,queryPrefix,resourceType);
+ ctx.setAttribute(prefix + ATTR_VNFC_COUNT, String.valueOf(vnfcCount)); // In case no vnfcs are found
+
+ VServerInfo vServerInfo = new VServerInfo(params);
- ctx.setAttribute(prefix+ "vm.prov-status", vmCtx.getAttribute("vmInfo.prov-status"));
- ctx.setAttribute(prefix+ "vm.vserver-name", vmCtx.getAttribute("vmInfo.vserver-name"));
+ String resourceKey =
+ "vserver.vserver-id = '" + vServerInfo.getVserverId() + "' AND tenant.tenant-id = '" + vServerInfo
+ .getTenantId()
+ + "' AND cloud-region.cloud-owner = '" + vServerInfo.getCloudOwner()
+ + "' AND cloud-region.cloud-region-id = '"
+ + vServerInfo.getCloudRegionId() + "'";
+
+ SvcLogicContext vmCtx = readResource(resourceKey, PARAM_VM_INFO, PARAM_VSERVER);
+ ctx.setAttribute(prefix + "vm.prov-status", vmCtx.getAttribute("vmInfo.prov-status"));
+ ctx.setAttribute(prefix + "vm.vserver-name", vmCtx.getAttribute("vmInfo.vserver-name"));
+ ctx.setAttribute(prefix + "vm.vserver-selflink", vmCtx.getAttribute("vmInfo.vserver-selflink"));
String relLen = vmCtx.getAttribute("vmInfo.relationship-list.relationship_length");
- int relationshipLength = 0;
- if ( relLen != null )
- relationshipLength = Integer.parseInt(relLen);
+ int relationshipLength = 0;
+ if (relLen != null) {
+ relationshipLength = Integer.parseInt(relLen);
+ }
log.info("RELLEN" + relationshipLength);
- for ( int i=0; i < relationshipLength; i++ ) {
- String vfModuleId = getRelationshipValue(i, vmCtx, "vf-module", "vf-module.vf-module-id", "vmInfo");
- if ( vfModuleId != null )
+ for (int i = 0; i < relationshipLength; i++) {
+ String vfModuleId = getRelationshipValue(i, vmCtx, "vf-module", "vf-module.vf-module-id",
+ PARAM_VM_INFO);
+ if (vfModuleId != null) {
ctx.setAttribute(prefix + "vm.vf-module-id", vfModuleId);
+ }
- String vnfcName = getRelationshipValue(i, vmCtx, "vnfc", "vnfc.vnfc-name", "vmInfo");
- if ( vnfcName != null ) {
- ctx.setAttribute(prefix + "vm.vnfc[" + vnfcCount + "].vnfc-name", vnfcName);
- vnfcCount++;
+ String vnfcName = getRelationshipValue(i, vmCtx, "vnfc", "vnfc.vnfc-name", PARAM_VM_INFO);
+ if (vnfcName != null) {
+ ctx.setAttribute(prefix + "vm.vnfc[" + vnfcCount + "].vnfc-name", vnfcName);
+ vnfcCount++;
}
- } //relationshipLength
- ctx.setAttribute(prefix + "vm.vnfc-count", String.valueOf(vnfcCount));
- log.info("VSERVERNAME " + ctx.getAttribute(prefix+ "vm.vserver-name") + " HAS NUM VNFCS = " + ctx.getAttribute(prefix+ "vm.vnfc-count"));
+ } // relationshipLength
+ ctx.setAttribute(prefix + ATTR_VNFC_COUNT, String.valueOf(vnfcCount));
+ log.info("VSERVERNAME " + ctx.getAttribute(prefix + "vm.vserver-name") + " HAS NUM VNFCS = "
+ + ctx.getAttribute(prefix + ATTR_VNFC_COUNT));
+ } catch (Exception e) {
+ log.error("An error occurred when fetching Vm info", e);
+ throw new SvcLogicException("Failed to fetch VM info", e);
+ }
}
- private String getRelationshipValue(int i, SvcLogicContext ctx, String relatedTo, String relationshipKey, String prefix) throws Exception {
+ private String getRelationshipValue(int i, SvcLogicContext ctx, String relatedTo, String relationshipKey,
+ String prefix) {
- if ( relatedTo.equals(ctx.getAttribute(prefix + ".relationship-list.relationship[" + i + "].related-to")) ) {
+ if (relatedTo.equals(ctx.getAttribute(prefix + STR_RELATIONSHIP_LIST + i + "].related-to"))) {
log.info("RELATEDTO " + relatedTo);
int relationshipDataLength = 0;
- String relDataLen = ctx.getAttribute(prefix + ".relationship-list.relationship[" + i + "].relationship-data_length");
- if ( relDataLen != null )
+ String relDataLen =
+ ctx.getAttribute(prefix + STR_RELATIONSHIP_LIST + i + "].relationship-data_length");
+ if (relDataLen != null) {
relationshipDataLength = Integer.parseInt(relDataLen);
+ }
- for ( int j =0 ; j < relationshipDataLength ; j++) {
+ for (int j = 0; j < relationshipDataLength; j++) {
- String key = ctx.getAttribute(prefix + ".relationship-list.relationship[" + i + "].relationship-data[" + j + "].relationship-key");
+ String key = ctx.getAttribute(prefix + STR_RELATIONSHIP_LIST + i + "].relationship-data["
+ + j + "].relationship-key");
- String value = ctx.getAttribute(prefix + ".relationship-list.relationship[" + i + "].relationship-data[" + j + "].relationship-value");
+ String value = ctx.getAttribute(prefix + STR_RELATIONSHIP_LIST + i + "].relationship-data["
+ + j + "].relationship-value");
log.info("GENERIC KEY " + key);
log.info("GENERIC VALUE " + value);
if (relationshipKey.equals(key)) {
- return value;
+ return value;
}
} // relationshipDataLength
-
} // if related-To
return null;
-
}
- public void getVnfcInfo(Map<String, String> params,SvcLogicContext ctx ) throws Exception {
+ public void getVnfcInfo(Map<String, String> params, SvcLogicContext ctx)
+ throws AaiServiceInternalException, SvcLogicException {
log.info("Received getVnfc call with params : " + params);
String prefix = params.get(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX);
- prefix = StringUtils.isNotBlank(prefix) ? (prefix+".") : "";
+ prefix = StringUtils.isNotBlank(prefix) ? (prefix + ".") : "";
- String vnfcName = params.get("vnfcName");
- if(StringUtils.isBlank(vnfcName)){
- throw new Exception("Vnfc Name is missing");
+ String vnfcName = params.get("vnfcName");
+ if (StringUtils.isBlank(vnfcName)) {
+ throw new AaiServiceInternalException("Vnfc Name is missing");
}
- String resourceKey = "vnfc.vnfc-name = '" + vnfcName + "'";
+ String resourceKey = STR_VNFC_NAME + vnfcName + "'";
+ SvcLogicContext vnfcCtx = readResource(resourceKey, "vnfcInfo", "vnfc");
- String queryPrefix = "vnfcInfo";
- String resourceType = "vnfc";
- SvcLogicContext vnfcCtx = readResource(resourceKey,queryPrefix,resourceType);
+ // Changes for US 315820 for 1710 vnfc-type renamed to nfc-function,vnfc-function-code renamed to
+ // nfc-naming-code
- // Changes for US 315820 for 1710 vnfc-type renamed to nfc-function,vnfc-function-code renamed to nfc-naming-code
-
- /*ctx.setAttribute(prefix+ "vnfc.vnfc-type", vnfcCtx.getAttribute("vnfcInfo.vnfc-type"));
- ctx.setAttribute(prefix+ "vnfc.vnfc-function-code", vnfcCtx.getAttribute("vnfcInfo.vnfc-function-code"));
- ctx.setAttribute(prefix+ "vnfc.group-notation", vnfcCtx.getAttribute("vnfcInfo.group-notation"));*/
-
- ctx.setAttribute(prefix+ "vnfc.vnfc-type", vnfcCtx.getAttribute("vnfcInfo.nfc-function"));
- ctx.setAttribute(prefix+ "vnfc.vnfc-function-code", vnfcCtx.getAttribute("vnfcInfo.nfc-naming-code"));
- ctx.setAttribute(prefix+ "vnfc.group-notation", vnfcCtx.getAttribute("vnfcInfo.group-notation"));
- ctx.setAttribute(prefix+ "vnfc.ipaddress-v4-oam-vip", vnfcCtx.getAttribute("vnfcInfo.ipaddress-v4-oam-vip"));
+ ctx.setAttribute(prefix + "vnfc.vnfc-type", vnfcCtx.getAttribute("vnfcInfo.nfc-function"));
+ ctx.setAttribute(prefix + "vnfc.vnfc-function-code", vnfcCtx.getAttribute("vnfcInfo.nfc-naming-code"));
+ ctx.setAttribute(prefix + "vnfc.group-notation", vnfcCtx.getAttribute("vnfcInfo.group-notation"));
+ ctx.setAttribute(prefix + "vnfc.ipaddress-v4-oam-vip", vnfcCtx.getAttribute("vnfcInfo.ipaddress-v4-oam-vip"));
}
- public void insertVnfcs(Map<String, String> params,SvcLogicContext ctx, int vnfcRefLen, int vmCount) throws Exception {
- log.info("Received insertVnfcs call with params : " + params);
-
- String prefix = params.get(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX);
-
- prefix = StringUtils.isNotBlank(prefix) ? (prefix +".") : "";
- int vnfcRefIndx = 0;
- log.debug("vnfcRefIndx" +vnfcRefIndx);
- for ( int i = 0; i < vmCount ; i++ ) {
- String aaiRefKey = prefix + "vm[" + i + "].";
-
- log.info("VNFCNAME IN INSERTVNFCS " + ctx.getAttribute(aaiRefKey + "vnfc-name"));
- String numVnfcsStr = ctx.getAttribute(aaiRefKey + "vnfc-count");
- String vnfcNameAAI = ctx.getAttribute(aaiRefKey + "vnfc-name");
- //if ( numVnfcsStr != null || Integer.parseInt(numVnfcsStr) >= 1 )
-
- // Get Vnfc_reference data from the table
- String vnfcRefKey = "vnfcReference[" + vnfcRefIndx + "].";
+ public void insertVnfcs(Map<String, String> params, SvcLogicContext ctx, int vnfcRefLen, int vmCount,
+ String vfModuleIdFromRequest)
+ throws AaiServiceInternalException, SvcLogicException {
+ log.info("Received insertVnfcs call with params : " + params);
- log.info("VNFCREFKEY " + vnfcRefKey);
- log.info("AAIREFKEY " + aaiRefKey);
-
- String vmInstance = ctx.getAttribute(vnfcRefKey+ "VM-INSTANCE");
- String vnfcInstance = ctx.getAttribute(vnfcRefKey+ "VNFC-INSTANCE");
+ String prefix = params.get(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX);
- String groupNotationType = ctx.getAttribute(vnfcRefKey+ "GROUP-NOTATION-TYPE");
- String groupNotationValue = ctx.getAttribute(vnfcRefKey+ "GROUP-NOTATION-VALUE");
+ prefix = StringUtils.isNotBlank(prefix) ? (prefix + ".") : "";
+ int vnfcRefIndx = 0;
+ log.debug("vnfcRefIndx" + vnfcRefIndx);
+ for (int i = 0; i < vmCount; i++) {
+ String aaiRefKey = prefix + "vm[" + i + "].";
- String vnfcType = ctx.getAttribute(vnfcRefKey+ "VNFC-TYPE");
+ //ConfigScaleOut - Do not process vms that are not associated with vfmodule id if vfmodule id is present
+ if (StringUtils.isNotBlank(vfModuleIdFromRequest)) {
+ String vmVfModuleId = ctx.getAttribute(aaiRefKey + "vf-module-id");
+ log.info("insertVnfcs():::vfModule for vm is=" + vmVfModuleId);
+ if (StringUtils.isBlank(vmVfModuleId) || !StringUtils
+ .equalsIgnoreCase(vmVfModuleId, vfModuleIdFromRequest)) {
+ continue;
+ }
+ }
- String vnfcFuncCode = ctx.getAttribute(vnfcRefKey+ "VNFC-FUNCTION-CODE");
+ log.info(QUERY_STR_VNFC_NAME + ctx.getAttribute(aaiRefKey + ATTR_VNFC_NAME));
+ String vnfcNameAAI = ctx.getAttribute(aaiRefKey + ATTR_VNFC_NAME);
- String populateIpAddressV4OamVip = ctx.getAttribute(vnfcRefKey+ "IPADDRESS-V4-OAM-VIP");
+ // Get Vnfc_reference data from the table
+ String vnfcRefKey = STR_VNFC_REF + vnfcRefIndx + "].";
+ log.info(STR_VNFC_REF_KEY + vnfcRefKey);
+ log.info(STR_AAI_REF_KEY + aaiRefKey);
- // Get vnfc Data to be added
- String vserverName = ctx.getAttribute(aaiRefKey + "vserver-name");
- String vnfcName = vserverName + vnfcFuncCode + "001";
+ String groupNotationType = ctx.getAttribute(vnfcRefKey + "GROUP-NOTATION-TYPE");
+ String groupNotationValue = ctx.getAttribute(vnfcRefKey + "GROUP-NOTATION-VALUE");
+ String vnfcType = ctx.getAttribute(vnfcRefKey + "VNFC-TYPE");
+ String vnfcFuncCode = ctx.getAttribute(vnfcRefKey + ATTR_VNFC_FUNC_CODE);
+ String populateIpAddressV4OamVip = ctx.getAttribute(vnfcRefKey + "IPADDRESS-V4-OAM-VIP");
- String groupNotation = getGroupNotation(groupNotationType, groupNotationValue, vnfcName, vserverName,prefix, ctx, vnfcType);
+ // Get vnfc Data to be added
+ String vserverName = ctx.getAttribute(aaiRefKey + ATTR_VSERVER_NAME);
+ String vnfcName = vserverName + vnfcFuncCode + "001";
+ String groupNotation = getGroupNotation(groupNotationType, groupNotationValue, vnfcName, vserverName,
+ prefix, ctx, vnfcType, vnfcFuncCode, vmCount);
- String ipAddressV4OamVip = null;
- if ( "Y".equals(populateIpAddressV4OamVip))
- ipAddressV4OamVip = ctx.getAttribute("vnf-host-ip-address"); // from input
- Map<String, String> vnfcParams = populateVnfcParams(ctx, aaiRefKey,
- ipAddressV4OamVip, groupNotation, vnfcType, vnfcFuncCode);
+ String ipAddressV4OamVip = null;
+ if ("Y".equals(populateIpAddressV4OamVip)) {
+ ipAddressV4OamVip = ctx.getAttribute("vnf-host-ip-address"); // from input
+ }
+ Map<String, String> vnfcParams =
+ populateVnfcParams(ctx, aaiRefKey, ipAddressV4OamVip, groupNotation, vnfcType, vnfcFuncCode);
- log.info("Vnfc name from AAI: "+ vnfcNameAAI);
+ log.info("Vnfc name from AAI: " + vnfcNameAAI);
log.info("Vnfc name generated: " + vnfcName);
if (StringUtils.isNotBlank(vnfcNameAAI)) {
-
if (vnfcName.equalsIgnoreCase(vnfcNameAAI)) {
-
updateVnfcStatus(vnfcNameAAI, params, prefix);
vnfcRefIndx++;
- continue;
-
- } else
- continue;
+ }
+ continue;
}
vnfcRefIndx++;
- addVnfc( vnfcName, vnfcParams, prefix);
-
- // Add VNFC Info to context for current added VNFC
- ctx.setAttribute(aaiRefKey + "vnfc-name", vnfcName);
- ctx.setAttribute(aaiRefKey + "vnfc-type", vnfcType);
- ctx.setAttribute(aaiRefKey + "vnfc-function-code", vnfcFuncCode);
- ctx.setAttribute(aaiRefKey + "group-notation", groupNotation);
-
- }
+ addVnfc(vnfcName, vnfcParams, prefix);
+ // Add VNFC Info to context for current added VNFC
+ ctx.setAttribute(aaiRefKey + ATTR_VNFC_NAME, vnfcName);
+ ctx.setAttribute(aaiRefKey + "vnfc-type", vnfcType);
+ ctx.setAttribute(aaiRefKey + "vnfc-function-code", vnfcFuncCode);
+ ctx.setAttribute(aaiRefKey + "group-notation", groupNotation);
+ }
}
-
- public List<String> getVnfcData(Map<String, String> params,SvcLogicContext ctx, int vnfcRefLen, int vmCount) throws Exception{
+ public List<String> getVnfcData(Map<String, String> params, SvcLogicContext ctx, int vnfcRefLen, int vmCount) {
String prefix = params.get(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX);
- prefix = StringUtils.isNotBlank(prefix) ? (prefix +".") : "";
- List<String> vnfcNames = new ArrayList<String>();
- int vnfcRefIndx =-1;
- for ( int i = 0; i < vmCount ; i++ ) {
+ prefix = StringUtils.isNotBlank(prefix) ? (prefix + ".") : "";
+ List<String> vnfcNames = new ArrayList<>();
+ int vnfcRefIndx = -1;
+ for (int i = 0; i < vmCount; i++) {
String aaiRefKey = prefix + "vm[" + i + "].";
- log.info("VNFCNAME IN INSERTVNFCS " + ctx.getAttribute(aaiRefKey + "vnfc-name"));
- if ( ctx.getAttribute(aaiRefKey + "vnfc-name") != null )
+ log.info(QUERY_STR_VNFC_NAME + ctx.getAttribute(aaiRefKey + ATTR_VNFC_NAME));
+ if (ctx.getAttribute(aaiRefKey + ATTR_VNFC_NAME) != null) {
continue;
- else
+ } else {
vnfcRefIndx++;
- String vnfcRefKey = "vnfcReference[" + vnfcRefIndx + "].";
- log.info("VNFCREFKEY " + vnfcRefKey);
- log.info("AAIREFKEY " + aaiRefKey);
- String groupNotationType = ctx.getAttribute(vnfcRefKey+ "GROUP-NOTATION-TYPE");
- String groupNotationValue = ctx.getAttribute(vnfcRefKey+ "GROUP-NOTATION-VALUE");
-
- String vnfcType = ctx.getAttribute(vnfcRefKey+ "VNFC-TYPE");
-
- String vnfcFuncCode = ctx.getAttribute(vnfcRefKey+ "VNFC-FUNCTION-CODE");
-
- String populateIpAddressV4OamVip = ctx.getAttribute(vnfcRefKey+ "IPADDRESS-V4-OAM-VIP");
-
+ }
+ String vnfcRefKey = STR_VNFC_REF + vnfcRefIndx + "].";
+ log.info(STR_VNFC_REF_KEY + vnfcRefKey);
+ log.info(STR_AAI_REF_KEY + aaiRefKey);
+ String vnfcFuncCode = ctx.getAttribute(vnfcRefKey + ATTR_VNFC_FUNC_CODE);
// Get vnfc Data to be added
- String vserverName = ctx.getAttribute(aaiRefKey + "vserver-name");
+ String vserverName = ctx.getAttribute(aaiRefKey + ATTR_VSERVER_NAME);
String vnfcName = vserverName + vnfcFuncCode + "001";
- String groupNotation = getGroupNotation(groupNotationType, groupNotationValue, vnfcName, vserverName,prefix, ctx, vnfcType);
-
- String ipAddressV4OamVip = null;
- if ( "Y".equals(populateIpAddressV4OamVip))
- ipAddressV4OamVip = ctx.getAttribute("vnf-host-ip-address"); // from input
-
- Map<String, String> vnfcParams = populateVnfcParams(ctx, aaiRefKey, ipAddressV4OamVip, groupNotation, vnfcType, vnfcFuncCode);
-
vnfcNames.add(vnfcName);
-
}
return vnfcNames;
-
}
- public Map<String, String> populateVnfcParams(SvcLogicContext ctx, String aaiRefKey,
- String ipAddressV4OamVip, String groupNotation, String vnfcType, String vnfcFuncCode) throws Exception {
-
- Map<String, String> vnfcParams = new HashMap<String, String>();
+ private Map<String, String> populateVnfcParams(SvcLogicContext ctx, String aaiRefKey, String ipAddressV4OamVip,
+ String groupNotation, String vnfcType, String vnfcFuncCode) {
- // Changes for US 315820 for 1710 vnfc-type renamed to nfc-function,vnfc-function-code renamed to nfc-naming-code
+ Map<String, String> vnfcParams = new HashMap<>();
- /*
- vnfcParams.put("vnfc-function-code", vnfcFuncCode);
- vnfcParams.put("vnfc-type", vnfcType);
- */
+ // Changes for vnfc-type renamed to nfc-function,vnfc-function-code renamed to
+ // nfc-naming-code
vnfcParams.put("nfc-naming-code", vnfcFuncCode);
vnfcParams.put("nfc-function", vnfcType);
-
- //
-
vnfcParams.put("ipaddress-v4-oam-vip", ipAddressV4OamVip);
-
- vnfcParams.put("prov-status", "NVTPROV");
+ vnfcParams.put(PARAM_PROV_STATUS, PARAM_VAL_NVTPROV);
vnfcParams.put("orchestration-status", "CONFIGURED");
vnfcParams.put("in-maint", "false");
vnfcParams.put("is-closed-loop", "false");
- vnfcParams.put("group-notation",groupNotation);
-
-
- vnfcParams.put("relationship-list.relationship[0].related-to","vserver");
- vnfcParams.put("relationship-list.relationship[0].relationship-data[0].relationship-key","vserver.vserver-id");
- vnfcParams.put("relationship-list.relationship[0].relationship-data[0].relationship-value",ctx.getAttribute(aaiRefKey + "vserver-id"));
-
-
- vnfcParams.put("relationship-list.relationship[0].relationship-data[1].relationship-key","tenant.tenant-id");
- vnfcParams.put("relationship-list.relationship[0].relationship-data[1].relationship-value",ctx.getAttribute(aaiRefKey + "tenant-id"));
-
-
- vnfcParams.put("relationship-list.relationship[0].relationship-data[2].relationship-key","cloud-region.cloud-owner");
- vnfcParams.put("relationship-list.relationship[0].relationship-data[2].relationship-value",ctx.getAttribute(aaiRefKey + "cloud-owner"));
-
-
- vnfcParams.put("relationship-list.relationship[0].relationship-data[3].relationship-key","cloud-region.cloud-region-id");
- vnfcParams.put("relationship-list.relationship[0].relationship-data[3].relationship-value",ctx.getAttribute(aaiRefKey + "cloud-region-id"));
-
-
-
- vnfcParams.put("relationship-list.relationship[1].related-to","generic-vnf");
- vnfcParams.put("relationship-list.relationship[1].relationship-data[0].relationship-key","generic-vnf.vnf-id");
- vnfcParams.put("relationship-list.relationship[1].relationship-data[0].relationship-value",ctx.getAttribute("vnf-id"));
-
-
- vnfcParams.put("relationship-list.relationship[2].related-to","vf-module");
- vnfcParams.put("relationship-list.relationship[2].relationship-data[0].relationship-key","generic-vnf.vnf-id");
- vnfcParams.put("relationship-list.relationship[2].relationship-data[0].relationship-value",ctx.getAttribute("vnf-id"));
-
-
- vnfcParams.put("relationship-list.relationship[2].relationship-data[1].relationship-key","vf-module.vf-module-id");
- vnfcParams.put("relationship-list.relationship[2].relationship-data[1].relationship-value",ctx.getAttribute(aaiRefKey + "vf-module-id"));
-
+ vnfcParams.put("group-notation", groupNotation);
+ vnfcParams.put("relationship-list.relationship[0].related-to", PARAM_VSERVER);
+ vnfcParams.put("relationship-list.relationship[0].relationship-data[0].relationship-key", "vserver.vserver-id");
+ vnfcParams.put("relationship-list.relationship[0].relationship-data[0].relationship-value",
+ ctx.getAttribute(aaiRefKey + ATTR_VSERVER_ID));
+ vnfcParams.put("relationship-list.relationship[0].relationship-data[1].relationship-key", "tenant.tenant-id");
+ vnfcParams.put("relationship-list.relationship[0].relationship-data[1].relationship-value",
+ ctx.getAttribute(aaiRefKey + ATTR_TENANT_ID));
+ vnfcParams.put("relationship-list.relationship[0].relationship-data[2].relationship-key",
+ "cloud-region.cloud-owner");
+ vnfcParams.put("relationship-list.relationship[0].relationship-data[2].relationship-value",
+ ctx.getAttribute(aaiRefKey + ATTR_CLOUD_OWNER));
+ vnfcParams.put("relationship-list.relationship[0].relationship-data[3].relationship-key",
+ "cloud-region.cloud-region-id");
+ vnfcParams.put("relationship-list.relationship[0].relationship-data[3].relationship-value",
+ ctx.getAttribute(aaiRefKey + ATTR_CLOUD_REGION_ID));
+ vnfcParams.put("relationship-list.relationship[1].related-to", PARAM_GENERIC_VNF);
+ vnfcParams.put("relationship-list.relationship[1].relationship-data[0].relationship-key", "generic-vnf.vnf-id");
+ vnfcParams.put("relationship-list.relationship[1].relationship-data[0].relationship-value",
+ ctx.getAttribute(ATTR_VNF_ID));
+ vnfcParams.put("relationship-list.relationship[2].related-to", "vf-module");
+ vnfcParams.put("relationship-list.relationship[2].relationship-data[0].relationship-key", "generic-vnf.vnf-id");
+ vnfcParams.put("relationship-list.relationship[2].relationship-data[0].relationship-value",
+ ctx.getAttribute(ATTR_VNF_ID));
+ vnfcParams.put("relationship-list.relationship[2].relationship-data[1].relationship-key",
+ "vf-module.vf-module-id");
+ vnfcParams.put("relationship-list.relationship[2].relationship-data[1].relationship-value",
+ ctx.getAttribute(aaiRefKey + "vf-module-id"));
return vnfcParams;
}
- public void addVnfc(String vnfcName, Map<String, String> params, String prefix) throws Exception {
+ public void addVnfc(String vnfcName, Map<String, String> params, String prefix)
+ throws AaiServiceInternalException, SvcLogicException {
- log.info("Received addVnfc call with vnfcName : " +vnfcName);
+ log.info("Received addVnfc call with vnfcName : " + vnfcName);
log.info("Received addVnfc call with params : " + params);
- String resourceKey = "vnfc.vnfc-name = '" + vnfcName + "'";
-
+ String resourceKey = STR_VNFC_NAME + vnfcName + "'";
log.info("Received addVnfc call with resourceKey : " + resourceKey);
+ SvcLogicContext vnfcCtx = new SvcLogicContext();
+ SvcLogicResource.QueryStatus response =
+ aaiClient.save("vnfc", true, false, resourceKey, params, prefix, vnfcCtx);
- SvcLogicContext vnfcCtx = new SvcLogicContext();
- SvcLogicResource.QueryStatus response = aaiClient.save("vnfc", true, false, resourceKey, params, prefix, vnfcCtx) ;
-
- if (SvcLogicResource.QueryStatus.SUCCESS.equals(response)) {
- log.info("Added VNFC SUCCESSFULLY " + vnfcName);
-
- }
- else if (SvcLogicResource.QueryStatus.FAILURE.equals(response)) {
- throw new Exception("VNFC Add failed for for vnfc_name " + vnfcName);
-
- }
-
-
+ if (SvcLogicResource.QueryStatus.SUCCESS.equals(response)) {
+ log.info("Added VNFC SUCCESSFULLY " + vnfcName);
+ } else if (SvcLogicResource.QueryStatus.FAILURE.equals(response)) {
+ throw new AaiServiceInternalException("VNFC Add failed for vnfc_name " + vnfcName);
+ }
}
public String getGroupNotation(String groupNotationType, String groupNotationValue, String vnfcName,
- String vserverName, String prefix, SvcLogicContext ctx, String vnfcRefVnfcType) throws Exception {
+ String vserverName, String prefix, SvcLogicContext ctx, String vnfcRefVnfcType, String vnfcFuncCode,
+ int vmCount) {
- String grpNotation = null;
+ String groupNotation = null;
- if ( "fixed-value".equals(groupNotationType)) {
- grpNotation = groupNotationValue;
+ if ("fixed-value".equals(groupNotationType)) {
+ groupNotation = groupNotationValue;
+ } else if ("first-vnfc-name".equals(groupNotationType)) {
- }
- else if ( "first-vnfc-name".equals(groupNotationType) ) {
-
- /*If the group-notation-type value = ?first-vnfc-name?,
+ /*
+ * If the group-notation-type value = ?first-vnfc-name?,
* then populate the group-notation value with the concatenation of
* [vnfc name associated with the first vnfc for the vnfc-type (e.g., *******)]
* and [the value in group-notation-value (e.g., pair)].
- * There may be several vnfc-types associated with the VM?s.
+ * There may be several vnfc-types associated with the VM?s.
*/
- /* Vnfc-type should be from refrence data */
+ /* Vnfc-type should be from refrence data */
/* vDBE has 2 VNFCs with same VNFC type . The pair name should be same for both . */
- /* When first VNFC is added details should be added to context so FirstVnfcName doesnt return null second time. */
- String tmpVnfcName = getFirstVnfcNameForVnfcType(ctx, prefix, vnfcRefVnfcType);
-
- log.info("RETURNED FIRSTVNFCNAME" + tmpVnfcName);
- log.info("CURRENTVNFCNAME" + vnfcName);
- if ( tmpVnfcName == null ) {
- log.info("CURRENTVNFCNAME" + vnfcName);
- // No Vnfcs currently exist. Use Current vnfcName
- grpNotation = vnfcName + groupNotationValue;
- }
- else
- grpNotation = tmpVnfcName + groupNotationValue;
-
+ /*
+ * When first VNFC is added details should be added to context so FirstVnfcName doesnt return null second
+ * time.
+ */
+ String tmpVnfcName = getFirstVnfcNameForVnfcType(ctx, prefix, vnfcRefVnfcType);
- }
- else if ( "relative-value".equals(groupNotationType) ) {
+ log.info("RETURNED FIRSTVNFCNAME" + tmpVnfcName);
+ log.info("CURRENTVNFCNAME" + vnfcName);
+ groupNotation = resolveGroupNotation(groupNotationValue, vnfcName, tmpVnfcName);
+ } else if ("relative-value".equals(groupNotationType)) {
- /*If the group-notation-type = ?relative-value?, then find the group-notation value
+ /*
+ * If the group-notation-type = ?relative-value?, then find the group-notation value
* from the prior vnfc (where prior means the vnfc with where the last three digits of the
* vm-name is one lower than the current one; note that this vnfc may have been previously configured.)
- 1. If the group-notation-value = next, then add 1 to the group-notation value from the prior vnfc and use this value
- 2. If the group-notation-value = same, then use the group-notation-value from the prior vnfc record*/
-
- // next and same cant be defined for first VM. if next will not generate grpNotation if Prior is not a number
- String tmpVserverName = null;
- if ( vserverName != null ) {
+ * 1. If the group-notation-value = next, then add 1 to the group-notation value from the prior vnfc and use
+ * this value
+ * 2. If the group-notation-value = same, then use the group-notation-value from the prior vnfc record
+ */
- String vmNamePrefix = vserverName.substring(0,vserverName.length()-3);
+ // next and same cant be defined for first VM. if next will not generate grpNotation if Prior is not a
+ // number
+ String tmpVserverName;
+ if (vserverName != null) {
+ String vmNamePrefix = vserverName.substring(0, vserverName.length() - 3);
String lastThreeChars = vserverName.substring(vserverName.length() - 3);
- if ( NumberUtils.isDigits(lastThreeChars)) {
+ if (NumberUtils.isDigits(lastThreeChars)) {
int vmNum = Integer.parseInt(lastThreeChars) - 1;
String formatted = String.format("%03d", vmNum);
tmpVserverName = vmNamePrefix + formatted;
-
String priorGroupNotation = getGroupNotationForVServer(ctx, prefix, tmpVserverName);
-
- if ( "same".equals(groupNotationValue))
- grpNotation = priorGroupNotation;
- else if ( "next".equals(groupNotationValue)) {
- if ( priorGroupNotation != null && NumberUtils.isDigits(priorGroupNotation)) {
- int nextGrpNotation = Integer.parseInt(priorGroupNotation) + 1;
- grpNotation = String.valueOf(nextGrpNotation);
- }
- }
+ groupNotation = resolveGroupNotation(groupNotationValue, priorGroupNotation);
}
-
}
+ } else if ("existing-value".equals(groupNotationType)) {
+ /* This is a new value being added. Find the existing vnfc records in A&AI inventory with the same vnfc-function code as the value in vnfc_reference table.
+ * Verify that the group-notation value is the same for all such records found in inventory.
+ * if all records do not have the same group-notation value, write the new vnfc record to A&AI inventory without a group-notation value and continue to the next VM in the vnfc_reference table. A 501 intermediate error message should be sent after all new VNFC records have been added to A&AI.
+ * If all records match, use the same group-notation value for the new vnfc record as found in the existing vnfc records.
+ */
+ groupNotation = getGroupNotationForExistigValue(ctx, prefix, vnfcFuncCode, vmCount);
+ }
+ log.info("RETURNED GROUPNOTATION " + groupNotation);
+ return groupNotation;
+ }
-
+ private String resolveGroupNotation(String groupNotationValue, String vnfcName, String tmpVnfcName) {
+ if (tmpVnfcName == null) {
+ log.info("CURRENTVNFCNAME" + vnfcName);
+ // No Vnfcs currently exist. Use Current vnfcName
+ return vnfcName + groupNotationValue;
+ } else {
+ return tmpVnfcName + groupNotationValue;
}
+ }
+ private String resolveGroupNotation(String groupNotationValue, String priorGroupNotation) {
+ if ("same".equals(groupNotationValue)) {
+ return priorGroupNotation;
+ } else if ("next".equals(groupNotationValue) && priorGroupNotation != null
+ && NumberUtils.isDigits(priorGroupNotation)) {
- log.info("RETURNED GROUPNOTATION " + grpNotation);
- return grpNotation;
+ int nextGrpNotation = Integer.parseInt(priorGroupNotation) + 1;
+ return String.valueOf(nextGrpNotation);
+ }
+ return null;
}
- public String getGroupNotationForVServer(SvcLogicContext ctx, String prefix, String vserverName) throws Exception {
+ public String getGroupNotationForExistigValue(SvcLogicContext ctx, String prefix, String vnfcFuncCode,
+ int vmCount) {
+ String vfModuleId = ctx.getAttribute("req-vf-module-id"); //Coming from request-params
+ boolean first = true;
+ String aaiGroupNotationValue = null;
+ for (int i = 0; i < vmCount; i++) {
+ String ind = "tmp.vnfInfo.vm[" + i + "].";
+ String aaiFuncCode = ctx.getAttribute(ind + "vnfc-function-code");
+ String aaiGroupNotation = ctx.getAttribute(ind + "group-notation");
+ String aaiVfModuleId = ctx.getAttribute(ind + "vf-module-id");
+
+ log.info("getGroupNotationForExistigValue()::: vfModuleId=" + vfModuleId + ", aaiFuncCode=" + aaiFuncCode
+ + ", aaiGroupNotation=" + aaiGroupNotation + ",aaiVfMOduleId=" + aaiVfModuleId);
+
+ if (StringUtils.isNotBlank(aaiFuncCode) && aaiFuncCode.equals(vnfcFuncCode) &&
+ (StringUtils.isNotBlank(vfModuleId) && StringUtils.isNotBlank(aaiVfModuleId) && aaiVfModuleId
+ .equals(vfModuleId))) {
+ if (null == aaiGroupNotationValue && first) {
+ if (null == aaiGroupNotation) {//Return if null
+ return null;
+ }
+ aaiGroupNotationValue = ctx.getAttribute(ind + "group-notation");
+ first = false;
+ } else {
+ if (!StringUtils.equals(aaiGroupNotationValue, ctx.getAttribute(ind + "group-notation"))) {
+ log.info("Values are different, returning null");
+ return null;
+ }
+ }
+ }
+ }
+ return aaiGroupNotationValue;
+ }
- String vmCountStr = ctx.getAttribute(prefix+"vnf.vm-count");
+ public String getGroupNotationForVServer(SvcLogicContext ctx, String prefix, String vserverName) {
- if ( vmCountStr == null )
- return null;
+ String vmCountStr = ctx.getAttribute(prefix + "vnf.vm-count");
- int vmCount = Integer.valueOf(vmCountStr);
- for ( int i = 0; i < vmCount ; i++ ) {
+ if (vmCountStr == null) {
+ return null;
+ }
- String tmpVserver = ctx.getAttribute(prefix+ "vm[" + i + "].vserver-name");
+ int vmCount = Integer.parseInt(vmCountStr);
+ for (int i = 0; i < vmCount; i++) {
- if (vserverName.equals(tmpVserver))
- return ctx.getAttribute(prefix+ "vm[" + i + "].group-notation");
+ String tmpVserver = ctx.getAttribute(prefix + "vm[" + i + "].vserver-name");
+ if (vserverName.equals(tmpVserver)) {
+ return ctx.getAttribute(prefix + "vm[" + i + "].group-notation");
+ }
} // vmCount
-
return null;
-
}
+ public String getFirstVnfcNameForVnfcType(SvcLogicContext ctx, String prefix, String vnfcRefVnfcType) {
-
-
- public String getFirstVnfcNameForVnfcType(SvcLogicContext ctx, String prefix, String vnfcRefVnfcType) throws Exception {
-
-
-
- /*if(StringUtils.isBlank(vnfcRefVnfcType)){
- throw new Exception("Vnfc Reference : VNFC Type is missing");
- }*/
-
-
- String vmCountStr = ctx.getAttribute(prefix+"vnf.vm-count");
-
- if ( vmCountStr == null )
+ String vmCountStr = ctx.getAttribute(prefix + "vnf.vm-count");
+ if (vmCountStr == null) {
return null;
+ }
+ int vmCount = Integer.parseInt(vmCountStr);
+ for (int i = 0; i < vmCount; i++) {
- int vmCount = Integer.valueOf(vmCountStr);
- for ( int i = 0; i < vmCount ; i++ ) {
-
- String tmpvnfcType = ctx.getAttribute(prefix+ "vm[" + i + "].vnfc-type");
-
- if (vnfcRefVnfcType.equals(tmpvnfcType))
- return ctx.getAttribute(prefix+ "vm[" + i + "].vnfc-name");
+ String tmpvnfcType = ctx.getAttribute(prefix + "vm[" + i + "].vnfc-type");
+ if (vnfcRefVnfcType.equals(tmpvnfcType)) {
+ return ctx.getAttribute(prefix + "vm[" + i + "].vnfc-name");
+ }
} // vmCount
-
-
-
return null;
-
}
- public void updateVServerStatus(Map<String, String> params,SvcLogicContext ctx, int vmCount) throws Exception {
+ public void updateVServerStatus(Map<String, String> params, SvcLogicContext ctx, int vmCount)
+ throws AaiServiceInternalException, SvcLogicException {
log.info("Received updateVServerStatus call with params : " + params);
String prefix = params.get(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX);
- prefix = StringUtils.isNotBlank(prefix) ? (prefix+".") : "";
-
+ prefix = StringUtils.isNotBlank(prefix) ? (prefix + ".") : "";
+ Map<String, String> vServerParams = new HashMap<>();
- Map<String, String> vServerParams = new HashMap<String, String>();
+ // TODO - Should this just update prov-status or both? What about generic-vnf status? Will that be updated by
+ // Dispatcher?
+ vServerParams.put(PARAM_PROV_STATUS, PARAM_VAL_NVTPROV);
- // TODO - Should this just update prov-status or both? What about generic-vnf status? Will that be updated by Dispatcher?
-
- vServerParams.put("prov-status", "NVTPROV");
- //vServerParams.put("orchestration-status", "CONFIGURED");
-
-
- for ( int i = 0; i < vmCount ; i++ ) {
+ for (int i = 0; i < vmCount; i++) {
String aaiRefKey = prefix + "vm[" + i + "].";
- log.info("VNFCNAME IN UpdateVServer " + ctx.getAttribute(aaiRefKey + "vnfc-name"));
+ log.info("VNFCNAME IN UpdateVServer " + ctx.getAttribute(aaiRefKey + ATTR_VNFC_NAME));
- if ( ctx.getAttribute(aaiRefKey + "vnfc-name") != null )
+ if (ctx.getAttribute(aaiRefKey + ATTR_VNFC_NAME) != null) {
continue;
+ }
+ String resourceKey = "vserver.vserver-id = '" + ctx.getAttribute(aaiRefKey + ATTR_VSERVER_ID) + "'"
+ + " AND tenant.tenant-id = '" + ctx.getAttribute(aaiRefKey + ATTR_TENANT_ID) + "'"
+ + " AND cloud-region.cloud-owner = '" + ctx.getAttribute(aaiRefKey + ATTR_CLOUD_OWNER) + "'"
+ + " AND cloud-region.cloud-region-id = '" + ctx.getAttribute(aaiRefKey + ATTR_CLOUD_REGION_ID) + "'";
-
- String resourceKey = "vserver.vserver-id = '" + ctx.getAttribute(aaiRefKey + "vserver-id") + "'" +
- " AND tenant.tenant-id = '" + ctx.getAttribute(aaiRefKey + "tenant-id") + "'" +
- " AND cloud-region.cloud-owner = '" + ctx.getAttribute(aaiRefKey + "cloud-owner") + "'" +
- " AND cloud-region.cloud-region-id = '" + ctx.getAttribute(aaiRefKey + "cloud-region-id") + "'";
-
-
- updateResource( "vserver", resourceKey, vServerParams);
-
+ updateResource(PARAM_VSERVER, resourceKey, vServerParams);
}
-
-
}
-
-
- public void updateVnfStatus(Map<String, String> params,SvcLogicContext ctx) throws Exception {
+ public void updateVnfStatus(Map<String, String> params, SvcLogicContext ctx)
+ throws AaiServiceInternalException, SvcLogicException {
log.info("Received updateVnfStatus call with params : " + params);
- String prefix = params.get(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX);
-
- prefix = StringUtils.isNotBlank(prefix) ? (prefix+".") : "";
-
-
- Map<String, String> vnfParams = new HashMap<String, String>();
-
-
- // TODO - Should this just update prov-status or both? What about generic-vnf status? Will that be updated by Dispatcher?
-
- vnfParams.put("prov-status", "NVTPROV");
- //vnfParams.put("orchestration-status", "CONFIGURED");
-
-
- String resourceKey = "generic-vnf.vnf-id = '" + ctx.getAttribute("vnf-id") + "'";
-
- updateResource( "generic-vnf" , resourceKey, vnfParams);
+ Map<String, String> vnfParams = new HashMap<>();
+ // TODO - Should this just update prov-status or both? What about generic-vnf status? Will that be updated by
+ // Dispatcher?
+ vnfParams.put(PARAM_PROV_STATUS, PARAM_VAL_NVTPROV);
+ String resourceKey = STR_VNF_ID + ctx.getAttribute(ATTR_VNF_ID) + "'";
+ updateResource(PARAM_GENERIC_VNF, resourceKey, vnfParams);
}
- public void updateResource( String resource, String resourceKey, Map<String, String> params) throws Exception {
-
- log.info("Received updateResource call with Key : " +resourceKey);
+ public void updateResource(String resource, String resourceKey, Map<String, String> params)
+ throws AaiServiceInternalException, SvcLogicException {
+ log.info("Received updateResource call with Key : " + resourceKey);
SvcLogicContext ctx = new SvcLogicContext();
-
-
- SvcLogicResource.QueryStatus response = aaiClient.update(resource, resourceKey , params, "tmp.update", ctx);
-
-
+ SvcLogicResource.QueryStatus response = aaiClient.update(resource, resourceKey, params, "tmp.update", ctx);
if (SvcLogicResource.QueryStatus.SUCCESS.equals(response)) {
log.info("Updated " + resource + " SUCCESSFULLY for " + resourceKey);
- }
- else if (SvcLogicResource.QueryStatus.FAILURE.equals(response)) {
- throw new Exception(resource + " Update failed for " + resourceKey);
-
+ } else if (SvcLogicResource.QueryStatus.FAILURE.equals(response)) {
+ throw new AaiServiceInternalException(resource + " Update failed for " + resourceKey);
}
}
- public SvcLogicContext readResource(String query, String prefix, String resourceType) throws Exception {
+ public SvcLogicContext readResource(String query, String prefix, String resourceType)
+ throws AaiServiceInternalException, SvcLogicException {
SvcLogicContext resourceContext = new SvcLogicContext();
- SvcLogicResource.QueryStatus response = aaiClient.query(resourceType,false,null,query,prefix,null,resourceContext);
+ SvcLogicResource.QueryStatus response =
+ aaiClient.query(resourceType, false, null, query, prefix, null, resourceContext);
log.info("AAIResponse: " + response.toString());
- if(!SvcLogicResource.QueryStatus.SUCCESS.equals(response)){
- throw new Exception("Error Retrieving " + resourceType + " from A&AI");
+ if (!SvcLogicResource.QueryStatus.SUCCESS.equals(response)) {
+ throw new AaiServiceInternalException("Error Retrieving " + resourceType + " from A&AI");
}
-
return resourceContext;
-
-
-
}
- //Added 1710 & Backward Compatibility
-
- public void checkAndUpdateVnfc(Map<String, String> params,SvcLogicContext ctx, int vnfcRefLen, int vmCount) throws Exception {
- log.info("Received checkAndUpdateVnfcStatus call with params : " + params);
+ // Added for Backward Compatibility
+ public void checkAndUpdateVnfc(Map<String, String> params, SvcLogicContext ctx, int vnfcRefLen, int vmCount)
+ throws AaiServiceInternalException, SvcLogicException {
+ log.info("Received checkAndUpdateVnfcStatus call with params : " + params);
- String prefix = params.get(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX);
-
- prefix = StringUtils.isNotBlank(prefix) ? (prefix+".") : "";
-
- for ( int i = 0; i < vmCount ; i++ ) {
- String aaiRefKey = prefix + "vm[" + i + "].";
-
- log.info("VNFCNAME IN INSERTVNFCS "+ aaiRefKey+"vnfc-name:" + ctx.getAttribute(aaiRefKey + "vnfc-name"));
-
- String numVnfcsStr = ctx.getAttribute(aaiRefKey + "vnfc-count");
- String vnfcNameAai = ctx.getAttribute(aaiRefKey + "vnfc-name");
+ String prefix = params.get(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX);
- if (StringUtils.isNotBlank(vnfcNameAai)) {
- // Get Vnfc_reference data
- for(int vnfcRefIndx=0;vnfcRefIndx < vnfcRefLen;vnfcRefIndx++ ) {
+ prefix = StringUtils.isNotBlank(prefix) ? (prefix + ".") : "";
- String vnfcRefKey = "vnfcReference[" + vnfcRefIndx + "].";
+ for (int i = 0; i < vmCount; i++) {
+ String aaiRefKey = prefix + "vm[" + i + "].";
- log.info("VNFCREFKEY " + vnfcRefKey);
- log.info("AAIREFKEY " + aaiRefKey);
+ log.info(QUERY_STR_VNFC_NAME + aaiRefKey + "vnfc-name:" + ctx.getAttribute(aaiRefKey + ATTR_VNFC_NAME));
- String vnfcFuncCode = ctx.getAttribute(vnfcRefKey+ "VNFC-FUNCTION-CODE");
- String vserverName = ctx.getAttribute(aaiRefKey + "vserver-name");
- String vnfcNameReference = vserverName + vnfcFuncCode + "001";
+ String vnfcNameAai = ctx.getAttribute(aaiRefKey + ATTR_VNFC_NAME);
- if(vnfcNameAai.equals(vnfcNameReference)) {
+ if (StringUtils.isNotBlank(vnfcNameAai)) {
+ // Get Vnfc_reference data
+ for (int vnfcRefIndx = 0; vnfcRefIndx < vnfcRefLen; vnfcRefIndx++) {
- updateVnfcStatus( vnfcNameAai, params, prefix);
- }
+ String vnfcRefKey = STR_VNFC_REF + vnfcRefIndx + "].";
+ log.info(STR_VNFC_REF_KEY + vnfcRefKey);
+ log.info(STR_AAI_REF_KEY + aaiRefKey);
- }
+ String vnfcFuncCode = ctx.getAttribute(vnfcRefKey + ATTR_VNFC_FUNC_CODE);
+ String vserverName = ctx.getAttribute(aaiRefKey + ATTR_VSERVER_NAME);
+ String vnfcNameReference = vserverName + vnfcFuncCode + "001";
+ tryUpdateVnfcStatus(params, prefix, vnfcNameAai, vnfcNameReference);
}
-
-
-
-
-
-
}
-
-
}
+ }
- public void updateVnfcStatus(String vnfcName, Map<String, String> params, String prefix) throws Exception {
-
- log.info("Received updateVnfcStatus call with vnfcName : " +vnfcName);
- log.info("Received updateVnfcStatus call with params : " + params);
-
- String resourceKey = "vnfc.vnfc-name = '" + vnfcName + "'";
- log.info("Received updateVnfcStatus call with resourceKey : " + resourceKey);
-
+ private void tryUpdateVnfcStatus(Map<String, String> params, String prefix, String vnfcNameAai,
+ String vnfcNameReference) throws AaiServiceInternalException, SvcLogicException {
+ if (vnfcNameAai.equals(vnfcNameReference)) {
+ updateVnfcStatus(vnfcNameAai, params, prefix);
+ }
+ }
- Map<String, String> vnfcParams = new HashMap<String, String>();
- vnfcParams.put("prov-status", "NVTPROV");
- vnfcParams.put("orchestration-status", "CONFIGURED");
+ public void updateVnfcStatus(String vnfcName, Map<String, String> params, String prefix)
+ throws AaiServiceInternalException, SvcLogicException {
- log.info("In updateVnfcStatus call with vnfcParams : " + vnfcParams);
+ log.info("Received updateVnfcStatus call with vnfcName : " + vnfcName);
+ log.info("Received updateVnfcStatus call with params : " + params);
- updateResource( "vnfc" , resourceKey, vnfcParams);
+ String resourceKey = STR_VNFC_NAME + vnfcName + "'";
+ log.info("Received updateVnfcStatus call with resourceKey : " + resourceKey);
- log.info("End of updateVnfcStatus");
+ Map<String, String> vnfcParams = new HashMap<>();
+ vnfcParams.put(PARAM_PROV_STATUS, PARAM_VAL_NVTPROV);
+ vnfcParams.put("orchestration-status", "CONFIGURED");
+ log.info("In updateVnfcStatus call with vnfcParams : " + vnfcParams);
- }
-public void updateVnfStatusWithOAMAddress(Map<String, String> params, SvcLogicContext ctx) throws Exception {
- log.info("Received updateVnfStatusWithOAMAddress call with params : " + params);
+ updateResource("vnfc", resourceKey, vnfcParams);
- String prefix = params.get(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX);
- String ipAddress = ctx.getAttribute("vnf-host-ip-address");
- log.debug("Vnf-host-ip-address" + ipAddress);
+ log.info("End of updateVnfcStatus");
+ }
- prefix = StringUtils.isNotBlank(prefix) ? (prefix+".") : "";
+ public void updateVnfStatusWithOAMAddress(Map<String, String> params, SvcLogicContext ctx)
+ throws AaiServiceInternalException, SvcLogicException {
+ log.info("Received updateVnfStatusWithOAMAddress call with params : " + params);
- Map<String, String> vnfParams = new HashMap<String, String>();
+ String ipAddress = ctx.getAttribute("vnf-host-ip-address");
+ log.debug("Vnf-host-ip-address" + ipAddress);
- vnfParams.put("ipv4-oam-address", ipAddress);
+ Map<String, String> vnfParams = new HashMap<>();
+ vnfParams.put("ipv4-oam-address", ipAddress);
+ String resourceKey = STR_VNF_ID + ctx.getAttribute(ATTR_VNF_ID) + "'";
+ updateResource(PARAM_GENERIC_VNF, resourceKey, vnfParams);
+ }
- String resourceKey = "generic-vnf.vnf-id = '" + ctx.getAttribute("vnf-id") + "'";
+ public void getVfModuleInfo(Map<String, String> params, SvcLogicContext vfModuleCtx) throws Exception {
+ log.info("Received getVfModuleInfo call with params : " + params);
+ String prefix = params.get(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX);
+ prefix = StringUtils.isNotBlank(prefix) ? (prefix + ".") : "";
+
+ String vnfId = params.get("vnfId");
+ String vfModuleId = params.get("vfModuleId");
+ String resourceKey = "generic-vnf.vnf-id = '" + vnfId +
+ "' AND vf-module.vf-module-id = '" + vfModuleId + "'";
+ String queryPrefix = "vfModuleInfo";
+ String resourceType = "vf-module";
+ SvcLogicContext vfmCtx = readResource(resourceKey, queryPrefix, resourceType);
+ String modelInvariantId = vfmCtx.getAttribute("vfModuleInfo.model-invariant-id");
+ log.info("getVfModuleInfo():::modelInvariant=" + modelInvariantId);
+ vfModuleCtx.setAttribute(prefix + "vfModule.model-invariant-id",
+ vfmCtx.getAttribute("vfModuleInfo.model-invariant-id"));
+ vfModuleCtx
+ .setAttribute(prefix + "vfModule.model-version-id", vfmCtx.getAttribute("vfModuleInfo.model-version-id"));
+ log.info("End - getVfModuleInfo");
+ }
- updateResource( "generic-vnf" , resourceKey, vnfParams);
+ public void getModelVersionInfo(Map<String, String> modelParams, SvcLogicContext modelCtx) throws Exception {
+ log.info("Received getModelVersionInfo call with params : " + modelParams);
+ String prefix = modelParams.get(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX);
+ prefix = StringUtils.isNotBlank(prefix) ? (prefix + ".") : "";
+
+ String modelInvariantId = modelParams.get("model-invariant-id");
+ String modelVersionId = modelParams.get("model-version-id");
+ String resourceKey = "model.model-invariant-id = '" + modelInvariantId +
+ "' AND model-ver.model-version-id = '" + modelVersionId + "'";
+ String queryPrefix = "modelInfo";
+ String resourceType = "model-ver";
+ SvcLogicContext vfmCtx = readResource(resourceKey, queryPrefix, resourceType);
+ log.info("getModelVersionInfo():::modelname=" + vfmCtx.getAttribute("modelInfo.model-name"));
+ modelCtx.setAttribute(prefix + "vfModule.model-name", vfmCtx.getAttribute("modelInfo.model-name"));
+ log.info("End - getModelVersionInfo");
+ }
- }
+ public void getIdentityUrl(Map<String, String> params, SvcLogicContext ctx) throws Exception{
+ log.info("Recieved getIdentityUrl call with params : "+params);
+ String prefix = params.get(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX);
+ prefix = StringUtils.isNotBlank(prefix) ? (prefix + ".") : "";
+
+ String cloudOwner = params.get("cloudOwner");
+ String cloudRegionId = params.get("cloudRegionId");
+ // per comment from git review, we need to sanitize the two parameters
+ // to avoid security issues
+ cloudOwner = cloudOwner.replaceAll("'", "");
+ cloudRegionId = cloudRegionId.replaceAll("'", "");
+ log.debug("cloudOwner" +cloudOwner +"," +"cloudRegionId"+ cloudRegionId);
+ String resourceKey = "depth = '" + 0 + "' AND cloud-region.cloud-owner = '" + cloudOwner +
+ "' AND cloud-region.cloud-region-id = '" + cloudRegionId + "'";
+ String queryPrefix ="urlInfo";
+ String resourceType = "cloud-region";
+ SvcLogicContext urlCtx = readResource(resourceKey, queryPrefix, resourceType);
+ log.info("IdentityUrl: "+urlCtx.getAttribute("urlInfo.identity-url"));
+ ctx.setAttribute(prefix+"cloud-region.identity-url", urlCtx.getAttribute("urlInfo.identity-url"));
+
+ }
}