diff options
Diffstat (limited to 'appc-outbound/appc-aai-client')
2 files changed, 1209 insertions, 1144 deletions
diff --git a/appc-outbound/appc-aai-client/provider/src/main/java/org/onap/appc/aai/client/aai/AaiService.java b/appc-outbound/appc-aai-client/provider/src/main/java/org/onap/appc/aai/client/aai/AaiService.java index f03e7f319..ea59d9686 100644 --- a/appc-outbound/appc-aai-client/provider/src/main/java/org/onap/appc/aai/client/aai/AaiService.java +++ b/appc-outbound/appc-aai-client/provider/src/main/java/org/onap/appc/aai/client/aai/AaiService.java @@ -25,6 +25,11 @@ package org.onap.appc.aai.client.aai; 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; @@ -44,732 +49,712 @@ import org.osgi.framework.ServiceReference; public class AaiService { - private static final EELFLogger log = EELFManager.getInstance().getLogger(AaiService.class); - private 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 void getGenericVnfInfo(Map<String, String> params, SvcLogicContext ctx) throws Exception { - - - 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")); - - - - 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 Exception { - log.info("Received getVmInfo call with params : " + params); - - String prefix = params.get(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_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+ "vm.prov-status", vmCtx.getAttribute("vmInfo.prov-status")); - - ctx.setAttribute(prefix+ "vm.vserver-name", vmCtx.getAttribute("vmInfo.vserver-name")); - - - - String relLen = vmCtx.getAttribute("vmInfo.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 vfModuleId = getRelationshipValue(i, vmCtx, "vf-module", "vf-module.vf-module-id", "vmInfo"); - - 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++; - } - - - - - } //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")); - - } - - - - private String getRelationshipValue(int i, SvcLogicContext ctx, String relatedTo, String relationshipKey, String prefix) throws Exception { - - - if ( relatedTo.equals(ctx.getAttribute(prefix + ".relationship-list.relationship[" + 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 ) - relationshipDataLength = Integer.parseInt(relDataLen); - - - - for ( int j =0 ; j < relationshipDataLength ; j++) { - - String key = ctx.getAttribute(prefix + ".relationship-list.relationship[" + i + "].relationship-data[" + j + "].relationship-key"); - - String value = ctx.getAttribute(prefix + ".relationship-list.relationship[" + i + "].relationship-data[" + j + "].relationship-value"); - - log.info("GENERIC KEY " + key); - log.info("GENERIC VALUE " + value); - - if (relationshipKey.equals(key)) { + private static final EELFLogger log = EELFManager.getInstance().getLogger(AaiService.class); + private 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 void getGenericVnfInfo(Map<String, String> params, SvcLogicContext ctx) throws Exception { + + 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 Exception { + log.info("Received getVmInfo call with params : " + params); + String prefix = params.get(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_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+ "vm.prov-status", vmCtx.getAttribute("vmInfo.prov-status")); + ctx.setAttribute(prefix+ "vm.vserver-name", vmCtx.getAttribute("vmInfo.vserver-name")); + + String relLen = vmCtx.getAttribute("vmInfo.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 vfModuleId = getRelationshipValue(i, vmCtx, "vf-module", "vf-module.vf-module-id", "vmInfo"); + 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++; + } + + } //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")); + } + + private String getRelationshipValue(int i, SvcLogicContext ctx, String relatedTo, String relationshipKey, String prefix) throws Exception { + + if ( relatedTo.equals(ctx.getAttribute(prefix + ".relationship-list.relationship[" + 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 ) + relationshipDataLength = Integer.parseInt(relDataLen); + + for ( int j =0 ; j < relationshipDataLength ; j++) { + + String key = ctx.getAttribute(prefix + ".relationship-list.relationship[" + i + "].relationship-data[" + j + "].relationship-key"); + + String value = ctx.getAttribute(prefix + ".relationship-list.relationship[" + i + "].relationship-data[" + j + "].relationship-value"); + + log.info("GENERIC KEY " + key); + log.info("GENERIC VALUE " + value); + + if (relationshipKey.equals(key)) { return value; - } - - } // relationshipDataLength - - - } // if related-To - - - return null; - - - } - - - public void getVnfcInfo(Map<String, String> params,SvcLogicContext ctx ) throws Exception { - log.info("Received getVnfc call with params : " + params); - - String prefix = params.get(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX); - prefix = StringUtils.isNotBlank(prefix) ? (prefix+".") : ""; - - String vnfcName = params.get("vnfcName"); - if(StringUtils.isBlank(vnfcName)){ - throw new Exception("Vnfc Name is missing"); - } - - String resourceKey = "vnfc.vnfc-name = '" + vnfcName + "'"; - - 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 - - /*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")); - - - } - - 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 =-1; - 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"); - - - //if ( numVnfcsStr != null || Integer.parseInt(numVnfcsStr) >= 1 ) - - - if ( ctx.getAttribute(aaiRefKey + "vnfc-name") != null ) - continue; - else - vnfcRefIndx++; - - - // Get Vnfc_reference data - String vnfcRefKey = "vnfcReference[" + vnfcRefIndx + "]."; - - log.info("VNFCREFKEY " + vnfcRefKey); - log.info("AAIREFKEY " + aaiRefKey); - - String vmInstance = ctx.getAttribute(vnfcRefKey+ "VM-INSTANCE"); - String vnfcInstance = ctx.getAttribute(vnfcRefKey+ "VNFC-INSTANCE"); - - 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"); - - - // Get vnfc Data to be added - String vserverName = ctx.getAttribute(aaiRefKey + "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); - - - 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); - - } - - - } - - - - 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>(); - - // Changes for US 315820 for 1710 vnfc-type renamed to nfc-function,vnfc-function-code renamed to nfc-naming-code - - /* - vnfcParams.put("vnfc-function-code", vnfcFuncCode); - vnfcParams.put("vnfc-type", vnfcType); - */ - 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("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")); - - - return vnfcParams; - } - - public void addVnfc(String vnfcName, Map<String, String> params, String prefix) throws Exception { - - log.info("Received addVnfc call with vnfcName : " +vnfcName); - log.info("Received addVnfc call with params : " + params); - String resourceKey = "vnfc.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) ; - - 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); - - } - - - } - - public String getGroupNotation(String groupNotationType, String groupNotationValue, String vnfcName, - String vserverName, String prefix, SvcLogicContext ctx, String vnfcRefVnfcType) throws Exception { - - String grpNotation = null; - - if ( "fixed-value".equals(groupNotationType)) { - grpNotation = groupNotationValue; - - } - else if ( "first-vnfc-name".equals(groupNotationType) ) { - - /*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. - */ - /* 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; - - - } - else if ( "relative-value".equals(groupNotationType) ) { - - /*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 ) { - - String vmNamePrefix = vserverName.substring(0,vserverName.length()-3); - - String lastThreeChars = vserverName.substring(vserverName.length() - 3); - - if ( NumberUtils.isDigits(lastThreeChars)) { - int vmNum = Integer.parseInt(lastThreeChars) - 1; - String formatted = String.format("%03d", vmNum); - - log.info("FORMATTED " + formatted); - - 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); - } - } - } - - } - - - - } - - - log.info("RETURNED GROUPNOTATION " + grpNotation); - return grpNotation; - } - - public String getGroupNotationForVServer(SvcLogicContext ctx, String prefix, String vserverName) throws Exception { - - - String vmCountStr = ctx.getAttribute(prefix+"vnf.vm-count"); - - if ( vmCountStr == null ) - return null; - - int vmCount = Integer.valueOf(vmCountStr); - for ( int i = 0; i < vmCount ; i++ ) { - - 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) 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 ) - return null; - - 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"); - - } // vmCount - - - - return null; - - } - - public void updateVServerStatus(Map<String, String> params,SvcLogicContext ctx, int vmCount) throws Exception { - log.info("Received updateVServerStatus call with params : " + params); - - String prefix = params.get(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX); - - prefix = StringUtils.isNotBlank(prefix) ? (prefix+".") : ""; - - - 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("prov-status", "NVTPROV"); - //vServerParams.put("orchestration-status", "CONFIGURED"); - - - for ( int i = 0; i < vmCount ; i++ ) { - String aaiRefKey = prefix + "vm[" + i + "]."; - - log.info("VNFCNAME IN UpdateVServer " + ctx.getAttribute(aaiRefKey + "vnfc-name")); - - if ( ctx.getAttribute(aaiRefKey + "vnfc-name") != null ) - continue; - - - - 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); - - } - - - } - - - - public void updateVnfStatus(Map<String, String> params,SvcLogicContext ctx) throws Exception { - 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); - - - - - } - - public void updateResource( String resource, String resourceKey, Map<String, String> params) throws Exception { - - log.info("Received updateResource call with Key : " +resourceKey); - - - SvcLogicContext ctx = new SvcLogicContext(); - - - 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); - - } - } - - public SvcLogicContext readResource(String query, String prefix, String resourceType) throws Exception { + + } // relationshipDataLength + + } // if related-To + + return null; + + } + + public void getVnfcInfo(Map<String, String> params,SvcLogicContext ctx ) throws Exception { + log.info("Received getVnfc call with params : " + params); + + String prefix = params.get(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX); + prefix = StringUtils.isNotBlank(prefix) ? (prefix+".") : ""; + + String vnfcName = params.get("vnfcName"); + if(StringUtils.isBlank(vnfcName)){ + throw new Exception("Vnfc Name is missing"); + } + + String resourceKey = "vnfc.vnfc-name = '" + vnfcName + "'"; + + 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 + + /*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")); + + } + + 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 + "]."; + + log.info("VNFCREFKEY " + vnfcRefKey); + log.info("AAIREFKEY " + aaiRefKey); + + String vmInstance = ctx.getAttribute(vnfcRefKey+ "VM-INSTANCE"); + String vnfcInstance = ctx.getAttribute(vnfcRefKey+ "VNFC-INSTANCE"); + + 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"); + + + // Get vnfc Data to be added + String vserverName = ctx.getAttribute(aaiRefKey + "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); + + 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; + } + 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); + + } + + } + + + public List<String> getVnfcData(Map<String, String> params,SvcLogicContext ctx, int vnfcRefLen, int vmCount) throws Exception{ + + 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++ ) { + String aaiRefKey = prefix + "vm[" + i + "]."; + log.info("VNFCNAME IN INSERTVNFCS " + ctx.getAttribute(aaiRefKey + "vnfc-name")); + if ( ctx.getAttribute(aaiRefKey + "vnfc-name") != null ) + continue; + 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"); + + + // Get vnfc Data to be added + String vserverName = ctx.getAttribute(aaiRefKey + "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>(); + + // Changes for US 315820 for 1710 vnfc-type renamed to nfc-function,vnfc-function-code renamed to nfc-naming-code + + /* + vnfcParams.put("vnfc-function-code", vnfcFuncCode); + vnfcParams.put("vnfc-type", vnfcType); + */ + 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("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")); + + + return vnfcParams; + } + + public void addVnfc(String vnfcName, Map<String, String> params, String prefix) throws Exception { + + log.info("Received addVnfc call with vnfcName : " +vnfcName); + log.info("Received addVnfc call with params : " + params); + String resourceKey = "vnfc.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) ; + + 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); + + } + + + } + + public String getGroupNotation(String groupNotationType, String groupNotationValue, String vnfcName, + String vserverName, String prefix, SvcLogicContext ctx, String vnfcRefVnfcType) throws Exception { + + String grpNotation = null; + + if ( "fixed-value".equals(groupNotationType)) { + grpNotation = groupNotationValue; + + } + else if ( "first-vnfc-name".equals(groupNotationType) ) { + + /*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. + */ + /* 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; + + + } + else if ( "relative-value".equals(groupNotationType) ) { + + /*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 ) { + + String vmNamePrefix = vserverName.substring(0,vserverName.length()-3); + + String lastThreeChars = vserverName.substring(vserverName.length() - 3); + + if ( NumberUtils.isDigits(lastThreeChars)) { + int vmNum = Integer.parseInt(lastThreeChars) - 1; + String formatted = String.format("%03d", vmNum); + + log.info("FORMATTED " + formatted); + + 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); + } + } + } + + } + + + + } + + + log.info("RETURNED GROUPNOTATION " + grpNotation); + return grpNotation; + } + + public String getGroupNotationForVServer(SvcLogicContext ctx, String prefix, String vserverName) throws Exception { + + + String vmCountStr = ctx.getAttribute(prefix+"vnf.vm-count"); + + if ( vmCountStr == null ) + return null; + + int vmCount = Integer.valueOf(vmCountStr); + for ( int i = 0; i < vmCount ; i++ ) { + + 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) 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 ) + return null; + + 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"); + + } // vmCount + + + + return null; + + } + + public void updateVServerStatus(Map<String, String> params,SvcLogicContext ctx, int vmCount) throws Exception { + log.info("Received updateVServerStatus call with params : " + params); + + String prefix = params.get(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX); + + prefix = StringUtils.isNotBlank(prefix) ? (prefix+".") : ""; + + + 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("prov-status", "NVTPROV"); + //vServerParams.put("orchestration-status", "CONFIGURED"); + + + for ( int i = 0; i < vmCount ; i++ ) { + String aaiRefKey = prefix + "vm[" + i + "]."; + + log.info("VNFCNAME IN UpdateVServer " + ctx.getAttribute(aaiRefKey + "vnfc-name")); + + if ( ctx.getAttribute(aaiRefKey + "vnfc-name") != null ) + continue; + + + + 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); + + } + + + } + + + + public void updateVnfStatus(Map<String, String> params,SvcLogicContext ctx) throws Exception { + 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); + + + + + } + + public void updateResource( String resource, String resourceKey, Map<String, String> params) throws Exception { + + log.info("Received updateResource call with Key : " +resourceKey); + + + SvcLogicContext ctx = new SvcLogicContext(); + + + 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); + + } + } + + public SvcLogicContext readResource(String query, String prefix, String resourceType) throws Exception { SvcLogicContext resourceContext = new SvcLogicContext(); - + 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"); } - + 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 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); + + 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("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"); + log.info("VNFCREFKEY " + vnfcRefKey); + log.info("AAIREFKEY " + aaiRefKey); - if (StringUtils.isNotBlank(vnfcNameAai)) { - // Get Vnfc_reference data - for(int vnfcRefIndx=0;vnfcRefIndx < vnfcRefLen;vnfcRefIndx++ ) { + String vnfcFuncCode = ctx.getAttribute(vnfcRefKey+ "VNFC-FUNCTION-CODE"); + String vserverName = ctx.getAttribute(aaiRefKey + "vserver-name"); + String vnfcNameReference = vserverName + vnfcFuncCode + "001"; - String vnfcRefKey = "vnfcReference[" + vnfcRefIndx + "]."; + if(vnfcNameAai.equals(vnfcNameReference)) { - log.info("VNFCREFKEY " + vnfcRefKey); - log.info("AAIREFKEY " + aaiRefKey); + updateVnfcStatus( vnfcNameAai, params, prefix); + } - String vnfcFuncCode = ctx.getAttribute(vnfcRefKey+ "VNFC-FUNCTION-CODE"); - String vserverName = ctx.getAttribute(aaiRefKey + "vserver-name"); - String vnfcNameReference = vserverName + vnfcFuncCode + "001"; - if(vnfcNameAai.equals(vnfcNameReference)) { + } + } + - updateVnfcStatus( vnfcNameAai, params, prefix); - } - - } - } + } + } - } + 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); - 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); + Map<String, String> vnfcParams = new HashMap<String, String>(); + vnfcParams.put("prov-status", "NVTPROV"); + vnfcParams.put("orchestration-status", "CONFIGURED"); - String resourceKey = "vnfc.vnfc-name = '" + vnfcName + "'"; - log.info("Received updateVnfcStatus call with resourceKey : " + resourceKey); + log.info("In updateVnfcStatus call with vnfcParams : " + vnfcParams); + updateResource( "vnfc" , resourceKey, vnfcParams); - Map<String, String> vnfcParams = new HashMap<String, String>(); - vnfcParams.put("prov-status", "NVTPROV"); - vnfcParams.put("orchestration-status", "CONFIGURED"); + log.info("End of updateVnfcStatus"); - log.info("In updateVnfcStatus call with vnfcParams : " + vnfcParams); - updateResource( "vnfc" , resourceKey, vnfcParams); + } +public void updateVnfStatusWithOAMAddress(Map<String, String> params, SvcLogicContext ctx) throws Exception { + log.info("Received updateVnfStatusWithOAMAddress call with params : " + params); - log.info("End of updateVnfcStatus"); + String prefix = params.get(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX); + String ipAddress = ctx.getAttribute("vnf-host-ip-address"); + log.debug("Vnf-host-ip-address" + ipAddress); + prefix = StringUtils.isNotBlank(prefix) ? (prefix+".") : ""; - } + Map<String, String> vnfParams = new HashMap<String, String>(); + vnfParams.put("ipv4-oam-address", ipAddress); + String resourceKey = "generic-vnf.vnf-id = '" + ctx.getAttribute("vnf-id") + "'"; - //Added for 1710 - - + updateResource( "generic-vnf" , resourceKey, vnfParams); + + + } } diff --git a/appc-outbound/appc-aai-client/provider/src/main/java/org/onap/appc/aai/client/node/AAIResourceNode.java b/appc-outbound/appc-aai-client/provider/src/main/java/org/onap/appc/aai/client/node/AAIResourceNode.java index 250508358..b3a20b049 100644 --- a/appc-outbound/appc-aai-client/provider/src/main/java/org/onap/appc/aai/client/node/AAIResourceNode.java +++ b/appc-outbound/appc-aai-client/provider/src/main/java/org/onap/appc/aai/client/node/AAIResourceNode.java @@ -51,464 +51,544 @@ import org.onap.ccsdk.sli.core.sli.SvcLogicJavaPlugin; public class AAIResourceNode implements SvcLogicJavaPlugin { - private static final EELFLogger log = EELFManager.getInstance().getLogger(AAIResourceNode.class); - - - public AaiService getAaiService() { - return new AaiService(); - } - /* Gets VNF Info and All VServers associated with Vnf */ - public void getVnfInfo(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException { - - log.info("Received getVnfInfo call with params : " + inParams); - - String responsePrefix = inParams.get(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX); - - try { - - - responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : ""; - AaiService aai = getAaiService(); - - - - aai.getGenericVnfInfo(inParams,ctx); - - - - - ctx.setAttribute(responsePrefix + AppcAaiClientConstant.OUTPUT_PARAM_STATUS, - AppcAaiClientConstant.OUTPUT_STATUS_SUCCESS); - log.info("getVnfInfo Successful "); - } catch (Exception e) { - ctx.setAttribute(responsePrefix + AppcAaiClientConstant.OUTPUT_PARAM_STATUS, - AppcAaiClientConstant.OUTPUT_STATUS_FAILURE); - ctx.setAttribute(responsePrefix + AppcAaiClientConstant.OUTPUT_PARAM_ERROR_MESSAGE, e.getMessage()); - log.error("Failed in getVnfInfo " + e.getMessage()); - - throw new SvcLogicException(e.getMessage()); - } - } - - - - public void getAllVServersVnfcsInfo(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException { - - log.info("Received getAllVServersVnfcsInfo call with params : " + inParams); - - String responsePrefix = inParams.get(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX); - - try { - responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : ""; - AaiService aai = getAaiService(); - - - - ArrayList<Map<String, String>> vservers = new ArrayList<Map<String, String>>(); - - int vmWithNoVnfcsCount = 0; - String vmCountStr = ctx.getAttribute(responsePrefix + "vm-count"); - - if ( vmCountStr == null ) - throw new Exception("Unable to get VServers for the VNF"); - - int vmCount = Integer.parseInt(vmCountStr); - for ( int i = 0; i < vmCount; i++ ) { - - SvcLogicContext vmServerCtx = new SvcLogicContext(); - - Map<String, String> paramsVm = new HashMap<String, String>(); - paramsVm.put("vserverId", ctx.getAttribute(responsePrefix + "vm[" + i + "].vserver-id")); - paramsVm.put("tenantId", ctx.getAttribute(responsePrefix +"vm[" + i + "].tenant-id")); - paramsVm.put("cloudOwner", ctx.getAttribute(responsePrefix +"vm[" + i + "].cloud-owner")); - paramsVm.put("cloudRegionId", ctx.getAttribute(responsePrefix +"vm[" + i + "].cloud-region-id")); - paramsVm.put(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX, inParams.get(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX)); - - - - aai.getVMInfo(paramsVm, vmServerCtx); - - HashMap<String, String> vserverMap = new HashMap<String, String>(); - vserverMap.put("vserver-id", ctx.getAttribute(responsePrefix + "vm[" + i + "].vserver-id")); - vserverMap.put("tenant-id", ctx.getAttribute(responsePrefix +"vm[" + i + "].tenant-id")); - vserverMap.put("cloud-owner", ctx.getAttribute(responsePrefix +"vm[" + i + "].cloud-owner")); - vserverMap.put("cloud-region-id", ctx.getAttribute(responsePrefix +"vm[" + i + "].cloud-region-id")); - - // Parameters returned by getVMInfo - vserverMap.put("vserver-name", vmServerCtx.getAttribute(responsePrefix + "vm.vserver-name")); - vserverMap.put("vf-module-id", vmServerCtx.getAttribute(responsePrefix + "vm.vf-module-id")); - - - // as Per 17.07 requirements we are supporting only one VNFC per VM. - - String vnfcName = vmServerCtx.getAttribute(responsePrefix + "vm.vnfc[0].vnfc-name"); - vserverMap.put("vnfc-name", vnfcName); - - - String vnfcCount = vmServerCtx.getAttribute(responsePrefix + "vm.vnfc-count"); - if ( vnfcCount == null ) - vnfcCount = "0"; - - vserverMap.put("vnfc-count", vnfcCount); - - if ( vnfcName != null ) { - Map<String, String> paramsVnfc = new HashMap<String, String>(); + private static final EELFLogger log = EELFManager.getInstance().getLogger(AAIResourceNode.class); + + + public AaiService getAaiService() { + return new AaiService(); + } + /* Gets VNF Info and All VServers associated with Vnf */ + public void getVnfInfo(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException { + + log.info("Received getVnfInfo call with params : " + inParams); + + String responsePrefix = inParams.get(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX); + + try { + + responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : ""; + AaiService aai = getAaiService(); + aai.getGenericVnfInfo(inParams,ctx); + + ctx.setAttribute(responsePrefix + AppcAaiClientConstant.OUTPUT_PARAM_STATUS, + AppcAaiClientConstant.OUTPUT_STATUS_SUCCESS); + log.info("getVnfInfo Successful "); + } catch (Exception e) { + ctx.setAttribute(responsePrefix + AppcAaiClientConstant.OUTPUT_PARAM_STATUS, + AppcAaiClientConstant.OUTPUT_STATUS_FAILURE); + ctx.setAttribute(responsePrefix + AppcAaiClientConstant.OUTPUT_PARAM_ERROR_MESSAGE, e.getMessage()); + log.error("Failed in getVnfInfo " + e.getMessage()); + + throw new SvcLogicException(e.getMessage()); + } + } + + + public void getAllVServersVnfcsInfo(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException { + + log.info("Received getAllVServersVnfcsInfo call with params : " + inParams); + + String responsePrefix = inParams.get(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX); + + try { + responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : ""; + AaiService aai = getAaiService(); + + + + ArrayList<Map<String, String>> vservers = new ArrayList<Map<String, String>>(); + + int vmWithNoVnfcsCount = 0; + String vmCountStr = ctx.getAttribute(responsePrefix + "vm-count"); + + if ( vmCountStr == null ) + throw new Exception("Unable to get VServers for the VNF"); + + int vmCount = Integer.parseInt(vmCountStr); + for ( int i = 0; i < vmCount; i++ ) { + + SvcLogicContext vmServerCtx = new SvcLogicContext(); + + Map<String, String> paramsVm = new HashMap<String, String>(); + paramsVm.put("vserverId", ctx.getAttribute(responsePrefix + "vm[" + i + "].vserver-id")); + paramsVm.put("tenantId", ctx.getAttribute(responsePrefix +"vm[" + i + "].tenant-id")); + paramsVm.put("cloudOwner", ctx.getAttribute(responsePrefix +"vm[" + i + "].cloud-owner")); + paramsVm.put("cloudRegionId", ctx.getAttribute(responsePrefix +"vm[" + i + "].cloud-region-id")); + paramsVm.put(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX, inParams.get(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX)); + + + + aai.getVMInfo(paramsVm, vmServerCtx); + + HashMap<String, String> vserverMap = new HashMap<String, String>(); + vserverMap.put("vserver-id", ctx.getAttribute(responsePrefix + "vm[" + i + "].vserver-id")); + vserverMap.put("tenant-id", ctx.getAttribute(responsePrefix +"vm[" + i + "].tenant-id")); + vserverMap.put("cloud-owner", ctx.getAttribute(responsePrefix +"vm[" + i + "].cloud-owner")); + vserverMap.put("cloud-region-id", ctx.getAttribute(responsePrefix +"vm[" + i + "].cloud-region-id")); + + // Parameters returned by getVMInfo + vserverMap.put("vserver-name", vmServerCtx.getAttribute(responsePrefix + "vm.vserver-name")); + vserverMap.put("vf-module-id", vmServerCtx.getAttribute(responsePrefix + "vm.vf-module-id")); + + + // as Per 17.07 requirements we are supporting only one VNFC per VM. + + String vnfcName = vmServerCtx.getAttribute(responsePrefix + "vm.vnfc[0].vnfc-name"); + vserverMap.put("vnfc-name", vnfcName); + + + String vnfcCount = vmServerCtx.getAttribute(responsePrefix + "vm.vnfc-count"); + if ( vnfcCount == null ) + vnfcCount = "0"; + + vserverMap.put("vnfc-count", vnfcCount); + + if ( vnfcName != null ) { + Map<String, String> paramsVnfc = new HashMap<String, String>(); paramsVnfc.put("vnfcName", vnfcName); - - paramsVnfc.put(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX, inParams.get(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX)); - - SvcLogicContext vnfcCtx = new SvcLogicContext(); - - aai.getVnfcInfo(paramsVnfc, vnfcCtx); - - vserverMap.put("vnfc-type", vnfcCtx.getAttribute(responsePrefix + "vnfc.vnfc-type")); - vserverMap.put("vnfc-function-code", vnfcCtx.getAttribute(responsePrefix + "vnfc.vnfc-function-code")); - vserverMap.put("group-notation", vnfcCtx.getAttribute(responsePrefix + "vnfc.group-notation")); - - - } - else - vmWithNoVnfcsCount++; - - - - vservers.add(vserverMap); - - } // vmCount - - - - - Collections.sort(vservers, new Comparator<Map<String, String>>() { - @Override - public int compare(Map<String, String> o1, Map<String, String> o2) { - return o1.get("vserver-name").compareTo(o2.get("vserver-name")); - } - }); - - log.info("SORTED VSERVERS " + vservers.toString()); - - populateContext(vservers, ctx, responsePrefix); - - log.info("VMCOUNT IN GETALLVSERVERS " + vmCount); - log.info("VMSWITHNOVNFCSCOUNT IN GETALLVSERVERS " + vmWithNoVnfcsCount); - ctx.setAttribute(responsePrefix+"vnf.vm-count", String.valueOf(vmCount)); - ctx.setAttribute(responsePrefix+"vnf.vm-with-no-vnfcs-count", String.valueOf(vmWithNoVnfcsCount)); - - - } catch (Exception e) { - ctx.setAttribute(responsePrefix + AppcAaiClientConstant.OUTPUT_PARAM_STATUS, - AppcAaiClientConstant.OUTPUT_STATUS_FAILURE); - ctx.setAttribute(responsePrefix + AppcAaiClientConstant.OUTPUT_PARAM_ERROR_MESSAGE, e.getMessage()); - log.error("Failed in getAllVServersVnfcsInfo " + e.getMessage()); - - throw new SvcLogicException(e.getMessage()); - } - } - - - - - public void populateContext(ArrayList<Map<String, String>> vservers, SvcLogicContext ctx, String prefix) { - - - log.info("Populating Final Context"); - int ctr = 0; - - for (Map<String, String> entry : vservers) { - for (String key : entry.keySet()) { - String value = entry.get(key); - - ctx.setAttribute(prefix+ "vm[" + ctr + "]."+ key, value); - log.info("Populating Context Key = " + prefix+ "vm[" + ctr + "]."+ key + " Value = " + value); - - } - - - ctr++; - } - - String firstVServerName = null; - for ( int i =0; i < ctr; i++ ) { - String vnfcName = ctx.getAttribute(prefix + "vm[" + i + "].vnfc-name"); - log.info("VNFCNAME " + i + vnfcName); - if ( vnfcName == null && firstVServerName == null ) { - firstVServerName = ctx.getAttribute(prefix + "vm[" + i + "].vserver-name"); - ctx.setAttribute("vm-name" , firstVServerName); - log.info("Populating Context Key = " + "vm-name" + " Value = " + firstVServerName); - } - } - } - - - - public void addVnfcs(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException { - - log.info("Received addVnfcs call with params : " + inParams); - - String responsePrefix = inParams.get(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX); - - int vnfcRefLen =0 ; - int vmCount = 0; - int vmWithNoVnfcCount = 0; - - try { - - responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : ""; - AaiService aai = getAaiService(); - - - - String vnfcRefLenStr = ctx.getAttribute("vnfcReference_length"); - - if ( vnfcRefLenStr == null) { - log.info("Vnfc Reference data is missing"); - throw new Exception("Vnfc Reference data is missing"); - - } - else - vnfcRefLen = Integer.parseInt(vnfcRefLenStr); - - String vmWithNoVnfcCountStr = ctx.getAttribute(responsePrefix+"vnf.vm-with-no-vnfcs-count"); - + + paramsVnfc.put(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX, inParams.get(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX)); + + SvcLogicContext vnfcCtx = new SvcLogicContext(); + + aai.getVnfcInfo(paramsVnfc, vnfcCtx); + + vserverMap.put("vnfc-type", vnfcCtx.getAttribute(responsePrefix + "vnfc.vnfc-type")); + vserverMap.put("vnfc-function-code", vnfcCtx.getAttribute(responsePrefix + "vnfc.vnfc-function-code")); + vserverMap.put("group-notation", vnfcCtx.getAttribute(responsePrefix + "vnfc.group-notation")); + vserverMap.put("vnfc-ipaddress-v4-oam-vip", vnfcCtx.getAttribute(responsePrefix + "vnfc.ipaddress-v4-oam-vip")); + + } + else + vmWithNoVnfcsCount++; + vservers.add(vserverMap); + + } // vmCount + + Collections.sort(vservers, new Comparator<Map<String, String>>() { + @Override + public int compare(Map<String, String> o1, Map<String, String> o2) { + return o1.get("vserver-name").compareTo(o2.get("vserver-name")); + } + }); + + log.info("SORTED VSERVERS " + vservers.toString()); + + populateContext(vservers, ctx, responsePrefix); + + log.info("VMCOUNT IN GETALLVSERVERS " + vmCount); + log.info("VMSWITHNOVNFCSCOUNT IN GETALLVSERVERS " + vmWithNoVnfcsCount); + ctx.setAttribute(responsePrefix+"vnf.vm-count", String.valueOf(vmCount)); + ctx.setAttribute(responsePrefix+"vnf.vm-with-no-vnfcs-count", String.valueOf(vmWithNoVnfcsCount)); + + + } catch (Exception e) { + ctx.setAttribute(responsePrefix + AppcAaiClientConstant.OUTPUT_PARAM_STATUS, + AppcAaiClientConstant.OUTPUT_STATUS_FAILURE); + ctx.setAttribute(responsePrefix + AppcAaiClientConstant.OUTPUT_PARAM_ERROR_MESSAGE, e.getMessage()); + log.error("Failed in getAllVServersVnfcsInfo " + e.getMessage()); + + throw new SvcLogicException(e.getMessage()); + } + } + + public void populateContext(ArrayList<Map<String, String>> vservers, SvcLogicContext ctx, String prefix) { + + + log.info("Populating Final Context"); + int ctr = 0; + + for (Map<String, String> entry : vservers) { + for (String key : entry.keySet()) { + String value = entry.get(key); + + ctx.setAttribute(prefix+ "vm[" + ctr + "]."+ key, value); + log.info("Populating Context Key = " + prefix+ "vm[" + ctr + "]."+ key + " Value = " + value); + + } + ctr++; + } + + String firstVServerName = null; + for ( int i =0; i < ctr; i++ ) { + String vnfcName = ctx.getAttribute(prefix + "vm[" + i + "].vnfc-name"); + log.info("VNFCNAME " + i + vnfcName); + if ( vnfcName == null && firstVServerName == null ) { + firstVServerName = ctx.getAttribute(prefix + "vm[" + i + "].vserver-name"); + ctx.setAttribute("vm-name" , firstVServerName); + log.info("Populating Context Key = " + "vm-name" + " Value = " + firstVServerName); + } + } + } + + + + public void addVnfcs(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException { + + log.info("Received addVnfcs call with params : " + inParams); + + String responsePrefix = inParams.get(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX); + + int vnfcRefLen =0 ; + int vmCount = 0; + int vmWithNoVnfcCount = 0; + + try { + + responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : ""; + AaiService aai = getAaiService(); + + String vnfcRefLenStr = ctx.getAttribute("vnfcReference_length"); + + if ( vnfcRefLenStr == null) { + log.info("Vnfc Reference data is missing"); + throw new Exception("Vnfc Reference data is missing"); + + } + else + vnfcRefLen = Integer.parseInt(vnfcRefLenStr); + + String vmWithNoVnfcCountStr = ctx.getAttribute(responsePrefix+"vnf.vm-with-no-vnfcs-count"); + //Commented for backward compatibility - - /*if ( vmWithNoVnfcCountStr == null) { - throw new Exception("VNFCs to be added data from A&AI is missing"); - //log.info("VNFCs to be added data from A&AI is missing"); - } - else - vmWithNoVnfcCount = Integer.parseInt(vmWithNoVnfcCountStr); - - if ( vmWithNoVnfcCount!= vnfcRefLen ) - throw new Exception("Unable to Add Vnfcs to A&AI. Reference data mismatch."); - - String vmCountStr = ctx.getAttribute(responsePrefix+"vnf.vm-count"); - - if ( vmCountStr == null) - throw new Exception("VM data from A&AI is missing"); - else - vmCount = Integer.parseInt(vmCountStr); - - - log.info("VMCOUNT " + vmCount); - log.info("VNFCREFLEN " + vnfcRefLen); - aai.insertVnfcs(inParams,ctx, vnfcRefLen, vmCount); - - */ - - - // Modified for 1710 - - if ( vmWithNoVnfcCountStr == null) { - log.info("Parameter VM without VNFCs(vmWithNoVnfcCountStr) from A&AI is Null"); - } - else - vmWithNoVnfcCount = Integer.parseInt(vmWithNoVnfcCountStr); - - log.info("No of VM without VNFCs(vmWithNoVnfcCount) from A&AI is " +vmWithNoVnfcCount); - - String vmCountStr = ctx.getAttribute(responsePrefix+"vnf.vm-count"); - - if ( vmCountStr == null) - throw new Exception("VM data from A&AI is missing"); - else - vmCount = Integer.parseInt(vmCountStr); - - log.info("VMCOUNT " + vmCount); - log.info("VNFCREFLEN " + vnfcRefLen); - - if ( vmWithNoVnfcCount!= vnfcRefLen ) { - //throw new Exception("Unable to Add Vnfcs to A&AI. Reference data mismatch."); - log.info("vmWithNoVnfcCount and vnfcRefLen data from table are not same "); - aai.checkAndUpdateVnfc(inParams,ctx, vnfcRefLen, vmCount); - } - - else { - - aai.insertVnfcs(inParams,ctx, vnfcRefLen, vmCount); - } - - //// Modified 1710 - - ctx.setAttribute(responsePrefix + AppcAaiClientConstant.OUTPUT_PARAM_STATUS, - AppcAaiClientConstant.OUTPUT_STATUS_SUCCESS); - - log.info("addVnfcs Successful "); - } catch (Exception e) { - ctx.setAttribute(responsePrefix + AppcAaiClientConstant.OUTPUT_PARAM_STATUS, - AppcAaiClientConstant.OUTPUT_STATUS_FAILURE); - ctx.setAttribute(responsePrefix + AppcAaiClientConstant.OUTPUT_PARAM_ERROR_MESSAGE, e.getMessage()); - log.error("Failed in addVnfcs " + e.getMessage()); - - throw new SvcLogicException(e.getMessage()); - } - } - - - public void updateVnfAndVServerStatus(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException { - - log.info("Received updateVnfAndVServerStatus call with params : " + inParams); - - String responsePrefix = inParams.get(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX); - - - int vmCount = 0; - - - try { - - responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : ""; - AaiService aai = getAaiService(); - - - - String vmCountStr = ctx.getAttribute(responsePrefix+"vnf.vm-count"); - - if ( vmCountStr == null) - throw new Exception("VM data from A&AI is missing"); - else - vmCount = Integer.parseInt(vmCountStr); - - - log.info("VMCOUNT " + vmCount); - - - aai.updateVnfStatus(inParams, ctx); - aai.updateVServerStatus(inParams,ctx, vmCount); - - ctx.setAttribute(responsePrefix + AppcAaiClientConstant.OUTPUT_PARAM_STATUS, - AppcAaiClientConstant.OUTPUT_STATUS_SUCCESS); - - log.info("updateVnfAndVServerStatus Successful "); - } catch (Exception e) { - ctx.setAttribute(responsePrefix + AppcAaiClientConstant.OUTPUT_PARAM_STATUS, - AppcAaiClientConstant.OUTPUT_STATUS_FAILURE); - ctx.setAttribute(responsePrefix + AppcAaiClientConstant.OUTPUT_PARAM_ERROR_MESSAGE, e.getMessage()); - log.error("Failed in updateVnfAndVServerStatus " + e.getMessage()); - - throw new SvcLogicException(e.getMessage()); - } - } - - /*public void getDummyValues(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException { - - log.info("Received getDummyValues call with params : " + inParams); - - String responsePrefix = inParams.get(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX); - - try { - - responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : ""; - String instarKeys = inParams.get("instarKeys"); - ObjectMapper mapper = new ObjectMapper(); - if ( instarKeys != null ) { - - List<String> keyList = mapper.readValue(instarKeys, ArrayList.class); - - Map<String, String> instarParams =new HashMap<String, String>(); - if(keyList != null){ - //System.out.println(keyList.toString()); - - - for(int i=0;i<keyList.size();i++) - { - log.info(" -->"+keyList.get(i)); - - //ctx.setAttribute(keyList.get(i), "test" + i); - - instarParams.put( keyList.get(i), "test" + i); - } - - } - log.info("INSTARPARAMMAP " + instarParams); - String jsonString = mapper.writeValueAsString(instarParams); - log.info(jsonString); - ctx.setAttribute(responsePrefix + "configuration-parameters", jsonString); - - } - - log.info("getDummyValues Successful "); - } catch (Exception e) { - ctx.setAttribute(responsePrefix + AppcAaiClientConstant.OUTPUT_PARAM_STATUS, - AppcAaiClientConstant.OUTPUT_STATUS_FAILURE); - ctx.setAttribute(responsePrefix + AppcAaiClientConstant.OUTPUT_PARAM_ERROR_MESSAGE, e.getMessage()); - log.error("Failed in getDummyValues " + e.getMessage()); - - throw new SvcLogicException(e.getMessage()); - } - - } - - */ - /*public void getRequestKeys(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException { - - log.info("Received getRequestKeys call with params : " + inParams); - - String responsePrefix = inParams.get(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX); - - try { - - responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : ""; - String instarKeys = inParams.get("instarKeys"); - - ObjectMapper mapper = new ObjectMapper(); - if ( instarKeys != null ) { - - List<String> keyList = mapper.readValue(instarKeys, ArrayList.class); - - //Map<String, String> instarParams =new HashMap<String, String>(); - if(keyList != null){ - - - for(int i=0;i<keyList.size();i++) - { - log.info("INSTARKEY -->"+keyList.get(i)); - - - String instarParameter = ctx.getAttribute("INSTAR." + keyList.get(i)); - log.info("INSTARPARAMETER " + instarParameter); - Parameter param = parseParameterContent(instarParameter); - - log.info("PARAMETER KEY SIZE " + param.getRequestKeys().size()); - log.info("RULE TYPE " + param.getClassType()); - - for ( int j =0 ; j < param.getRequestKeys().size() ; j++ ) { - - log.info(" PARAM KEY NAME " + param.getRequestKeys().get(j).getKeyName()); - log.info(" PARAM KEY VALUE " + param.getRequestKeys().get(j).getKeyValue()); - } - - // instarParams.put( keyList.get(i), "test" + i); - } - - } - //log.info("INSTARPARAMMAP " + instarParams); - //String jsonString = mapper.writeValueAsString(instarParams); - //log.info(jsonString); - //ctx.setAttribute(responsePrefix + "configuration-parameters", jsonString); - - } - - log.info("getRequestKeys Successful "); - } catch (Exception e) { - ctx.setAttribute(responsePrefix + AppcAaiClientConstant.OUTPUT_PARAM_STATUS, - AppcAaiClientConstant.OUTPUT_STATUS_FAILURE); - ctx.setAttribute(responsePrefix + AppcAaiClientConstant.OUTPUT_PARAM_ERROR_MESSAGE, e.getMessage()); - log.error("Failed in getRequestKeys " + e.getMessage()); - - throw new SvcLogicException(e.getMessage()); - } - - } - - - public Parameter parseParameterContent(String parameter) throws JsonParseException, JsonMappingException, IOException{ - Parameter parameterDefinition = null; - if(StringUtils.isNotBlank(parameter)){ - ObjectMapper mapper = new ObjectMapper(); - parameterDefinition = mapper.readValue(parameter, Parameter.class); - } - return parameterDefinition; - }*/ + + /*if ( vmWithNoVnfcCountStr == null) { + throw new Exception("VNFCs to be added data from A&AI is missing"); + //log.info("VNFCs to be added data from A&AI is missing"); + } + else + vmWithNoVnfcCount = Integer.parseInt(vmWithNoVnfcCountStr); + + if ( vmWithNoVnfcCount!= vnfcRefLen ) + throw new Exception("Unable to Add Vnfcs to A&AI. Reference data mismatch."); + + String vmCountStr = ctx.getAttribute(responsePrefix+"vnf.vm-count"); + + if ( vmCountStr == null) + throw new Exception("VM data from A&AI is missing"); + else + vmCount = Integer.parseInt(vmCountStr); + + + log.info("VMCOUNT " + vmCount); + log.info("VNFCREFLEN " + vnfcRefLen); + aai.insertVnfcs(inParams,ctx, vnfcRefLen, vmCount); + + */ + + + // Modified for 1710 + + if ( vmWithNoVnfcCountStr == null) { + log.info("Parameter VM without VNFCs(vmWithNoVnfcCountStr) from A&AI is Null"); + } + else + vmWithNoVnfcCount = Integer.parseInt(vmWithNoVnfcCountStr); + + log.info("No of VM without VNFCs(vmWithNoVnfcCount) from A&AI is " +vmWithNoVnfcCount); + + String vmCountStr = ctx.getAttribute(responsePrefix+"vnf.vm-count"); + + if ( vmCountStr == null) + throw new Exception("VM data from A&AI is missing"); + else + vmCount = Integer.parseInt(vmCountStr); + if(vmCount<vnfcRefLen) + throw new Exception("Vnfc and VM count mismatch"); + + + log.info("VMCOUNT " + vmCount); + log.info("VNFCREFLEN " + vnfcRefLen); + if(StringUtils.isBlank(ctx.getAttribute("vnfc-type"))){ + aai.updateVnfStatusWithOAMAddress(inParams, ctx); + } + + if ( vmWithNoVnfcCount!= vnfcRefLen ) { + //throw new Exception("Unable to Add Vnfcs to A&AI. Reference data mismatch."); + log.info("vmWithNoVnfcCount and vnfcRefLen data from table are not same "); + aai.checkAndUpdateVnfc(inParams,ctx, vnfcRefLen, vmCount); + } + + else { + + aai.insertVnfcs(inParams,ctx, vnfcRefLen, vmCount); + } + + //// Modified 1710 + + ctx.setAttribute(responsePrefix + AppcAaiClientConstant.OUTPUT_PARAM_STATUS, + AppcAaiClientConstant.OUTPUT_STATUS_SUCCESS); + + log.info("addVnfcs Successful "); + } catch (Exception e) { + ctx.setAttribute(responsePrefix + AppcAaiClientConstant.OUTPUT_PARAM_STATUS, + AppcAaiClientConstant.OUTPUT_STATUS_FAILURE); + ctx.setAttribute(responsePrefix + AppcAaiClientConstant.OUTPUT_PARAM_ERROR_MESSAGE, e.getMessage()); + log.error("Failed in addVnfcs " + e.getMessage()); + + throw new SvcLogicException(e.getMessage()); + } + } + + + public void updateVnfAndVServerStatus(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException { + + log.info("Received updateVnfAndVServerStatus call with params : " + inParams); + + String responsePrefix = inParams.get(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX); + + + int vmCount = 0; + + + try { + + responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : ""; + AaiService aai = getAaiService(); + + + + String vmCountStr = ctx.getAttribute(responsePrefix+"vnf.vm-count"); + + if ( vmCountStr == null) + throw new Exception("VM data from A&AI is missing"); + else + vmCount = Integer.parseInt(vmCountStr); + + + log.info("VMCOUNT " + vmCount); + + + aai.updateVnfStatus(inParams, ctx); + aai.updateVServerStatus(inParams,ctx, vmCount); + + ctx.setAttribute(responsePrefix + AppcAaiClientConstant.OUTPUT_PARAM_STATUS, + AppcAaiClientConstant.OUTPUT_STATUS_SUCCESS); + + log.info("updateVnfAndVServerStatus Successful "); + } catch (Exception e) { + ctx.setAttribute(responsePrefix + AppcAaiClientConstant.OUTPUT_PARAM_STATUS, + AppcAaiClientConstant.OUTPUT_STATUS_FAILURE); + ctx.setAttribute(responsePrefix + AppcAaiClientConstant.OUTPUT_PARAM_ERROR_MESSAGE, e.getMessage()); + log.error("Failed in updateVnfAndVServerStatus " + e.getMessage()); + + throw new SvcLogicException(e.getMessage()); + } + } + + /*public void getDummyValues(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException { + + log.info("Received getDummyValues call with params : " + inParams); + + String responsePrefix = inParams.get(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX); + + try { + + responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : ""; + String instarKeys = inParams.get("instarKeys"); + ObjectMapper mapper = new ObjectMapper(); + if ( instarKeys != null ) { + + List<String> keyList = mapper.readValue(instarKeys, ArrayList.class); + + Map<String, String> instarParams =new HashMap<String, String>(); + if(keyList != null){ + //System.out.println(keyList.toString()); + + + for(int i=0;i<keyList.size();i++) + { + log.info(" -->"+keyList.get(i)); + + //ctx.setAttribute(keyList.get(i), "test" + i); + + instarParams.put( keyList.get(i), "test" + i); + } + + } + log.info("INSTARPARAMMAP " + instarParams); + String jsonString = mapper.writeValueAsString(instarParams); + log.info(jsonString); + ctx.setAttribute(responsePrefix + "configuration-parameters", jsonString); + + } + + log.info("getDummyValues Successful "); + } catch (Exception e) { + ctx.setAttribute(responsePrefix + AppcAaiClientConstant.OUTPUT_PARAM_STATUS, + AppcAaiClientConstant.OUTPUT_STATUS_FAILURE); + ctx.setAttribute(responsePrefix + AppcAaiClientConstant.OUTPUT_PARAM_ERROR_MESSAGE, e.getMessage()); + log.error("Failed in getDummyValues " + e.getMessage()); + + throw new SvcLogicException(e.getMessage()); + } + + } + + */ + /*public void getRequestKeys(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException { + + log.info("Received getRequestKeys call with params : " + inParams); + + String responsePrefix = inParams.get(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX); + + try { + + responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : ""; + String instarKeys = inParams.get("instarKeys"); + + ObjectMapper mapper = new ObjectMapper(); + if ( instarKeys != null ) { + + List<String> keyList = mapper.readValue(instarKeys, ArrayList.class); + + //Map<String, String> instarParams =new HashMap<String, String>(); + if(keyList != null){ + + + for(int i=0;i<keyList.size();i++) + { + log.info("INSTARKEY -->"+keyList.get(i)); + + + String instarParameter = ctx.getAttribute("INSTAR." + keyList.get(i)); + log.info("INSTARPARAMETER " + instarParameter); + Parameter param = parseParameterContent(instarParameter); + + log.info("PARAMETER KEY SIZE " + param.getRequestKeys().size()); + log.info("RULE TYPE " + param.getClassType()); + + for ( int j =0 ; j < param.getRequestKeys().size() ; j++ ) { + + log.info(" PARAM KEY NAME " + param.getRequestKeys().get(j).getKeyName()); + log.info(" PARAM KEY VALUE " + param.getRequestKeys().get(j).getKeyValue()); + } + + // instarParams.put( keyList.get(i), "test" + i); + } + + } + //log.info("INSTARPARAMMAP " + instarParams); + //String jsonString = mapper.writeValueAsString(instarParams); + //log.info(jsonString); + //ctx.setAttribute(responsePrefix + "configuration-parameters", jsonString); + + } + + log.info("getRequestKeys Successful "); + } catch (Exception e) { + ctx.setAttribute(responsePrefix + AppcAaiClientConstant.OUTPUT_PARAM_STATUS, + AppcAaiClientConstant.OUTPUT_STATUS_FAILURE); + ctx.setAttribute(responsePrefix + AppcAaiClientConstant.OUTPUT_PARAM_ERROR_MESSAGE, e.getMessage()); + log.error("Failed in getRequestKeys " + e.getMessage()); + + throw new SvcLogicException(e.getMessage()); + } + + } + + + public Parameter parseParameterContent(String parameter) throws JsonParseException, JsonMappingException, IOException{ + Parameter parameterDefinition = null; + if(StringUtils.isNotBlank(parameter)){ + ObjectMapper mapper = new ObjectMapper(); + parameterDefinition = mapper.readValue(parameter, Parameter.class); + } + return parameterDefinition; + }*/ +public void getVserverInfo(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException { + log.debug("getVserverInfo()::Retrieving vm and vnfc information for vserver:" + inParams.toString()); + String responsePrefix = inParams.get(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX); + try { + responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix + ".") : ""; + AaiService aaiService = getAaiService(); + String vServerId = inParams.get("vserverId"); + Map<String, String> params = setVmParams(ctx, vServerId); + Map<String, String> vnfcParams = new HashMap<String, String>(); + if (null == params) { + log.error("getVserverInfo()::No Vm Info found!!"); + throw new SvcLogicException("No Vm Info in Context"); + } + params.put(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX, + inParams.get(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX)); + SvcLogicContext newVmCtx = new SvcLogicContext(); + aaiService.getVMInfo(params, newVmCtx); + + String vnfcName = newVmCtx.getAttribute(responsePrefix + "vm.vnfc[0].vnfc-name"); + log.debug("getVnfcFunctionCodeForVserver()::vnfcName=" + vnfcName); + SvcLogicContext newVnfcCtx = new SvcLogicContext(); + if (StringUtils.isNotBlank(vnfcName)) { + vnfcParams.put("vnfcName", vnfcName); + } else { + log.info("getVserverInfo()::vnfc Name is blank, not setting vnfc info !!!!"); + return; + } + getVnfcInformationForVserver(vnfcParams, newVnfcCtx, inParams, ctx, aaiService, responsePrefix); + } catch (Exception e) { + ctx.setAttribute(responsePrefix + AppcAaiClientConstant.OUTPUT_PARAM_STATUS, + AppcAaiClientConstant.OUTPUT_STATUS_FAILURE); + ctx.setAttribute(responsePrefix + AppcAaiClientConstant.OUTPUT_PARAM_ERROR_MESSAGE, e.getMessage()); + log.error("Failed in getVserverInfo " + e.getMessage()); + } + } + + public void getVnfcInformationForVserver(Map<String, String> vnfcParams, SvcLogicContext newVnfcCtx, + Map<String, String> inParams, SvcLogicContext ctx, AaiService aaiService, String responsePrefix) + throws Exception { + log.debug("getVnfcInformationForVserver()::vnfcParams:" + vnfcParams.toString()); + vnfcParams.put(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX, + inParams.get(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX)); + + aaiService.getVnfcInfo(vnfcParams, newVnfcCtx); + + String vnfcType = newVnfcCtx.getAttribute(responsePrefix + "vnfc.vnfc-type"); + String vnfcFunctionCode = newVnfcCtx.getAttribute(responsePrefix + "vnfc.vnfc-function-code"); + String vnfcGroupNotation = newVnfcCtx.getAttribute(responsePrefix + "vnfc.group-notation"); + String vnfcV4OamIp = newVnfcCtx.getAttribute(responsePrefix + "vnfc.ipaddress-v4-oam-vip"); + + if (StringUtils.isBlank(vnfcType) || StringUtils.isBlank(vnfcFunctionCode) + || StringUtils.isBlank(vnfcGroupNotation) || StringUtils.isBlank(vnfcV4OamIp)) { + log.info("getVnfcInformationForVserver()::Some vnfc parameters are blank!!!!"); + } + log.debug("getVnfcInformationForVserver()::vnfcType=" + vnfcType + ",vnfcFunctionCode=" + vnfcFunctionCode, + ", vnfc-ipaddress-v4-oam-vip=" + vnfcV4OamIp); + ctx.setAttribute(responsePrefix + "vm.vnfc.vnfc-name", vnfcParams.get("vnfcName")); + ctx.setAttribute(responsePrefix + "vm.vnfc.vnfc-type", vnfcType); + ctx.setAttribute(responsePrefix + "vm.vnfc.vnfc-function-code", vnfcFunctionCode); + ctx.setAttribute(responsePrefix + "vm.vnfc.vnfc-group-notation", vnfcGroupNotation); + ctx.setAttribute(responsePrefix + "vm.vnfc.vnfc-ipaddress-v4-oam-vip", vnfcV4OamIp); + + } + + public Map<String, String> setVmParams(SvcLogicContext ctx, String vServerId) { + log.debug("setVmParams()::setVmParamsVM level action:" + vServerId); + Map<String, String> params = new HashMap<String, String>(); + int vmCount = 0, arrayIndex = -1; + String vmCountStr = ctx.getAttribute("tmp.vnfInfo.vm-count"); + if (StringUtils.isNotBlank(vmCountStr)) + vmCount = Integer.parseInt(vmCountStr); + for (int cnt = 0; cnt < vmCount; cnt++) { + String vsId = ctx.getAttribute("tmp.vnfInfo.vm[" + cnt + "].vserver-id"); + log.debug("setVmParams():::vserver details::" + cnt + ":" + vsId); + if (StringUtils.equals(vServerId, vsId)) { + arrayIndex = cnt; + } + } + if (arrayIndex < 0) { + log.info("setVmParams()::VserverId not found in context!! Returning null for params!!"); + return null; + } + String tenantId = ctx.getAttribute("tmp.vnfInfo.vm[" + arrayIndex + "].tenant-id"); + String cloudOwner = ctx.getAttribute("tmp.vnfInfo.vm[" + arrayIndex + "].cloud-region-id"); + String cloudRegionId = ctx.getAttribute("tmp.vnfInfo.vm[" + arrayIndex + "].cloud-owner"); + log.debug("setVmParams()::tenantId=" + tenantId + " cloudOwner=" + cloudOwner + " cloudRegiodId= " + + cloudRegionId); + params.put("vserverId", vServerId); + params.put("tenantId", tenantId); + params.put("cloudOwner", cloudOwner); + params.put("cloudRegionId", cloudRegionId); + log.debug("setVmParams()::setVmParamsVM level action:" + params.toString()); + return params; + + } } |