From 2a65f44fc463f204ef51367dff9a894ce0acceb8 Mon Sep 17 00:00:00 2001 From: "Balaji, Ramya (rb111y)" Date: Fri, 2 Mar 2018 16:39:47 -0500 Subject: Code changes to retrieve template-id Functionality to retrieve vf-module and associated model information from A&AI Issue-ID: APPC-623 Change-Id: I9d2e12748641978c689566756a6301808e41b69a Signed-off-by: Balaji, Ramya (rb111y) --- .../org/onap/appc/aai/client/aai/AaiService.java | 39 +++++++++++- .../onap/appc/aai/client/node/AAIResourceNode.java | 72 ++++++++++++++++++++-- .../onap/appc/aai/client/node/MockAaiService.java | 41 +++++++----- .../appc/aai/client/node/TestAAIResourceNode.java | 51 +++++++++------ 4 files changed, 162 insertions(+), 41 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 a3e274c1c..cb439ee16 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 @@ -2,7 +2,7 @@ * ============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 * ============================================================================= @@ -644,4 +644,41 @@ public class AaiService { updateResource("generic-vnf", resourceKey, vnfParams); } + + public void getVfModuleInfo(Map 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"); + } + + public void getModelVersionInfo(Map 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"); + + } } 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 5e25f576d..0e28727bc 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 @@ -2,22 +2,22 @@ * ============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========================================================= */ @@ -235,7 +235,7 @@ public class AAIResourceNode implements SvcLogicJavaPlugin { responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix + ".") : ""; AaiService aai = getAaiService(); - //no:of vnfcs from the vnfc_reference table + //no:of vnfcs from the vnfc_reference table String vnfcRefLenStr = ctx.getAttribute("vnfcReference_length"); vnfcRefLen = trySetVnfcRefLen(vnfcRefLenStr); @@ -432,4 +432,64 @@ public class AAIResourceNode implements SvcLogicJavaPlugin { log.info("setVmParams()::setVmParamsVM level action:" + params.toString()); return params; } -} \ No newline at end of file + + public void getVfModuleModelInfo(Map inParams, SvcLogicContext ctx) throws SvcLogicException { + log.info("vfModuleInfo()::Retrieving vf-module information :" + inParams.toString()); + String responsePrefix = inParams.get(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX); + try { + responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix + ".") : ""; + AaiService aaiService = getAaiService(); + processForVfModuleModelInfo(aaiService,inParams,ctx); + } 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 vfModuleInfo", e); + } + } + + public void processForVfModuleModelInfo(AaiService aaiService, Map inParams, SvcLogicContext ctx) { + log.info("processForVfModuleModelInfo()::Retrieving vf-module information :" + inParams.toString()); + String responsePrefix = inParams.get(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX); + try { + responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix + ".") : ""; + Map params = new HashMap<>(); + params.put(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX, + inParams.get(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX)); + params.put("vnfId", inParams.get("vnf-id")); + params.put("vfModuleId", inParams.get("vf-module-id")); + SvcLogicContext vfModuleCtx = new SvcLogicContext(); + aaiService.getVfModuleInfo(params, vfModuleCtx); + + String modelInvariantId = vfModuleCtx.getAttribute(responsePrefix + "vfModule.model-invariant-id"); + String modelVersionId = vfModuleCtx.getAttribute(responsePrefix + "vfModule.model-version-id"); + log.info("processForVfModuleModelInfo()::modelInvariantId=" + modelInvariantId+",modelVersionId="+modelVersionId); + + Map modelParams = new HashMap<>(); + modelParams.put(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX, + inParams.get(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX)); + SvcLogicContext modelCtx = new SvcLogicContext(); + if (StringUtils.isNotBlank(modelInvariantId) && StringUtils.isNotBlank(modelVersionId)) { + modelParams.put("model-invariant-id", modelInvariantId); + modelParams.put("model-version-id", modelVersionId); + + } else { + log.info("processForVfModuleModelInfo()::model-invariant-id or model-version-id is blank, not getting model info !!!!"); + return; + } + aaiService.getModelVersionInfo(modelParams,modelCtx); + String modelName = modelCtx.getAttribute(responsePrefix+"vfModule.model-name"); + log.info("processForVfModuleModelInfo()::modelName for vfModule:::"+modelName); + log.info("Setting context template-model-id as :::"+modelName); + ctx.setAttribute("template-model-id", modelName); + log.info("processForVfModuleModelInfo() ::: End"); + } + 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 vfModuleInfo", e); + } + +} +} diff --git a/appc-outbound/appc-aai-client/provider/src/test/java/org/onap/appc/aai/client/node/MockAaiService.java b/appc-outbound/appc-aai-client/provider/src/test/java/org/onap/appc/aai/client/node/MockAaiService.java index 2e03e6b5a..ddbb97954 100644 --- a/appc-outbound/appc-aai-client/provider/src/test/java/org/onap/appc/aai/client/node/MockAaiService.java +++ b/appc-outbound/appc-aai-client/provider/src/test/java/org/onap/appc/aai/client/node/MockAaiService.java @@ -2,22 +2,22 @@ * ============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========================================================= */ @@ -37,23 +37,24 @@ import org.onap.appc.aai.client.aai.AaiService; import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; import org.onap.ccsdk.sli.core.sli.SvcLogicContext; +import org.onap.ccsdk.sli.core.sli.SvcLogicResource; import org.onap.ccsdk.sli.adaptors.aai.AAIClient; public class MockAaiService extends AaiService { - + // ONAP merging private static final EELFLogger log = EELFManager.getInstance().getLogger(MockAaiService.class); private AAIClient aaiClient; - + /*public MockAaiService() { super(new AAIClientMock()); }*/ - + public MockAaiService(AAIClient aaic) { super(aaic); } - + public void getVMInfo(Map params,SvcLogicContext ctx ) throws Exception { log.info("Received Mock getVmInfo call with params : " + params); String vserverId = params.get("vserverId"); @@ -67,22 +68,32 @@ public class MockAaiService extends AaiService { ctx.setAttribute(prefix + ".vm.vf-module-id", "vfModule2"); ctx.setAttribute(prefix + ".vm.vnfc[0].vnfc-name", "vnfcName2"); } - + } - - + + public void getVnfcInfo(Map params,SvcLogicContext ctx ) throws Exception { log.info("Received Mock getVmInfo call with params : " + params); String prefix = params.get(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX); - + String vnfcName = params.get("vnfcName"); - + if ( vnfcName.equals("vnfcName2") ) { ctx.setAttribute(prefix + ".vnfc.vnfc-type", "vnfcType2"); ctx.setAttribute(prefix + ".vnfc.vnfc-function-code", "vnfcFuncCode2"); ctx.setAttribute(prefix + ".vnfc.group-notation", "vnfcGrpNot2"); } - - + + + } + + @Override + public SvcLogicContext readResource(String query, String prefix, String resourceType) throws Exception { + SvcLogicContext resourceContext = new SvcLogicContext(); + resourceContext.setAttribute("vfModuleInfo.model-invariant-id","invid01"); + resourceContext.setAttribute("vfModuleInfo.model-version-id","versid01"); + resourceContext.setAttribute("modelInfo.model-name","model0001"); + + return resourceContext; } } diff --git a/appc-outbound/appc-aai-client/provider/src/test/java/org/onap/appc/aai/client/node/TestAAIResourceNode.java b/appc-outbound/appc-aai-client/provider/src/test/java/org/onap/appc/aai/client/node/TestAAIResourceNode.java index 6b05c08bb..e6ac0567a 100644 --- a/appc-outbound/appc-aai-client/provider/src/test/java/org/onap/appc/aai/client/node/TestAAIResourceNode.java +++ b/appc-outbound/appc-aai-client/provider/src/test/java/org/onap/appc/aai/client/node/TestAAIResourceNode.java @@ -2,22 +2,22 @@ * ============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========================================================= */ @@ -54,16 +54,16 @@ import com.fasterxml.jackson.databind.ObjectMapper; public class TestAAIResourceNode { - + //Removed for ONAP integration private static final EELFLogger log = EELFManager.getInstance().getLogger(TestAAIResourceNode.class); - + @Test public void sortVServer() throws Exception{ - + //log.info("Test"); - + ArrayList> vservers = new ArrayList>(); HashMap vserverMap = new HashMap(); vserverMap.put("vserver-id", "vserverId9"); @@ -92,7 +92,7 @@ public class TestAAIResourceNode { return o1.get("vserver-name").compareTo(o2.get("vserver-name")); } }); - + SvcLogicContext ctx = new SvcLogicContext(); AAIResourceNode aai = new AAIResourceNode(); aai.populateContext(vservers, ctx, "vserver."); @@ -101,7 +101,7 @@ public class TestAAIResourceNode { @Test public void testAllVServer() throws Exception{ - + MockAAIResourceNode mrn = new MockAAIResourceNode(); SvcLogicContext ctx = new SvcLogicContext(); populateAllVServerInfo(ctx, "tmp.vnfInfo"); @@ -119,7 +119,7 @@ public class TestAAIResourceNode { assertEquals(ctx.getAttribute("tmp.vnfInfo.vm[0].vserver-name"), "vserverName2"); assertEquals(ctx.getAttribute("tmp.vnfInfo.vm[0].vf-module-id"), "vfModule2"); //assertNull(ctx.getAttribute("tmp.vnfInfo.vm[0].vnfc-name")); - + // VM2 assertEquals(ctx.getAttribute("tmp.vnfInfo.vm[1].vserver-id"), "ibcxvm0001id"); assertEquals(ctx.getAttribute("tmp.vnfInfo.vm[1].tenant-id"), "tenantid1"); @@ -144,13 +144,13 @@ public class TestAAIResourceNode { ctx.setAttribute(prefix+ ".vm[1].tenant-id", "tenantid1"); ctx.setAttribute(prefix+ ".vm[1].cloud-owner", "cloudOwner1"); ctx.setAttribute(prefix+ ".vm[1].cloud-region-id", "cloudRegionId1"); - + } - + public static class MockAAIResourceNode extends AAIResourceNode { private static final EELFLogger log = EELFManager.getInstance().getLogger(MockAAIResourceNode.class); private AAIClient aaiClient; - + public AaiService getAaiService() { log.info("In MockAAI"); return new MockAaiService(aaiClient); @@ -159,7 +159,7 @@ public class TestAAIResourceNode { @Test public void testPopulateContext() throws Exception{ - + ArrayList> vservers = new ArrayList>(); HashMap vserverMap = new HashMap(); vserverMap = new HashMap(); @@ -194,7 +194,7 @@ public class TestAAIResourceNode { assertEquals(ctx.getAttribute("tmp.vnfInfo.vm[0].vserver-id"), "vserverId1"); assertEquals(ctx.getAttribute("vm-name"), "vServerName3"); } - + @Test public final void testGetVnfInfo() { SvcLogicContext ctx = new SvcLogicContext(); @@ -206,7 +206,7 @@ Map inParams =new HashMap(); } catch (SvcLogicException e) { e.printStackTrace(); } - + } @Test public final void testaddVnfcs() @@ -220,14 +220,14 @@ Map inParams =new HashMap(); } catch (SvcLogicException e) { e.printStackTrace(); } - + } @Test public final void testupdateVnfAndVServerStatus(){ SvcLogicContext ctx = new SvcLogicContext(); AAIResourceNode aai = new AAIResourceNode(); Map inParams =new HashMap(); - + inParams.put("responsePrefix", "tmp.vnfInfo"); try { aai.updateVnfAndVServerStatus(inParams, ctx); @@ -235,4 +235,17 @@ Map inParams =new HashMap(); e.printStackTrace(); } } + + @Test + public void testgetVfModduleModelInfo() throws Exception{ + SvcLogicContext ctx = new SvcLogicContext(); + AAIResourceNode aai = new AAIResourceNode(); + AAIClient aaic=null; + MockAaiService aaiService=new MockAaiService(aaic); + Map inParams =new HashMap(); + inParams.put("responsePrefix", "tmp.vnfInfo"); + aai.processForVfModuleModelInfo(aaiService,inParams, ctx); + assertEquals(ctx.getAttribute("template-model-id"),"model0001"); + + } } -- cgit 1.2.3-korg