From 1dca0e2ef23d1d51e4d2b2f6675aeaa7320d44f6 Mon Sep 17 00:00:00 2001 From: Denes Nemeth Date: Thu, 24 May 2018 07:14:35 +0200 Subject: [PATCH] Fix extenstion handling Signed-off-by: Denes Nemeth Change-Id: I8788eccf9dc3200c277f8dadf04426dc7ef913d1 Issue-ID: VFC-728 --- nokiav2/docs/sampleVnfs/simple/etsi_config.json | 39 ++++++++ nokiav2/docs/sampleVnfs/simple/sdc.json | 1 - nokiav2/docs/sampleVnfs/simple/simple.csar | Bin 12123 -> 12133 bytes .../docs/sampleVnfs/simple_cmcc/etsi_config.json | 34 +++++++ nokiav2/docs/sampleVnfs/simple_cmcc/sdc.json | 1 - nokiav2/docs/sampleVnfs/simple_cmcc/simple.csar | Bin 12047 -> 12133 bytes .../svnfm/nokia/vnfm/AdditionalParameters.java | 38 +++++--- .../vnfm/svnfm/nokia/vnfm/LifecycleManager.java | 37 ++++++-- .../LifecycleChangeNotificationManager.java | 1 + .../svnfm/nokia/vnfm/TestLifecycleManager.java | 104 ++++++++++++++------- 10 files changed, 200 insertions(+), 55 deletions(-) create mode 100644 nokiav2/docs/sampleVnfs/simple/etsi_config.json delete mode 100644 nokiav2/docs/sampleVnfs/simple/sdc.json create mode 100644 nokiav2/docs/sampleVnfs/simple_cmcc/etsi_config.json delete mode 100644 nokiav2/docs/sampleVnfs/simple_cmcc/sdc.json diff --git a/nokiav2/docs/sampleVnfs/simple/etsi_config.json b/nokiav2/docs/sampleVnfs/simple/etsi_config.json new file mode 100644 index 00000000..a0cff014 --- /dev/null +++ b/nokiav2/docs/sampleVnfs/simple/etsi_config.json @@ -0,0 +1,39 @@ +{ + "extensions": [ + { + "name": "myNameKey", + "value": "myName" + } + ], + "computeResourceFlavours": [ + { + "vnfdVirtualComputeDescId": "server_compute", + "resourceId": "m1.small" + } + ], + "extVirtualLinks": [ + { + "extCps": [ + { + "cpdId": "universal_ecp" + } + ], + "resourceId": "pub_net" + } + ], + "zones": [ + { + "resourceId": "compute-a", + "id": "zoneInfoId" + } + ], + "flavourId": "scalable", + "vimType": "OPENSTACK_V3_INFO", + "instantiationLevel": "default", + "softwareImages": [ + { + "resourceId": "ubuntu.16.04", + "vnfdSoftwareImageId": "server_image" + } + ] +} \ No newline at end of file diff --git a/nokiav2/docs/sampleVnfs/simple/sdc.json b/nokiav2/docs/sampleVnfs/simple/sdc.json deleted file mode 100644 index e6da9e17..00000000 --- a/nokiav2/docs/sampleVnfs/simple/sdc.json +++ /dev/null @@ -1 +0,0 @@ -{ "computeResourceFlavours": [ { "vnfdVirtualComputeDescId": "server_compute", "resourceId": "m1.small" } ], "extVirtualLinks": [ { "extCps": [ { "cpdId": "universal_ecp" } ], "resourceId": "pub_net" } ], "zones": [ { "resourceId": "compute-a", "id": "zoneInfoId" } ], "flavourId": "scalable", "vimType": "OPENSTACK_V3_INFO", "instantiationLevel": "default", "softwareImages": [ { "resourceId": "ubuntu.16.04", "vnfdSoftwareImageId": "server_image" } ] } diff --git a/nokiav2/docs/sampleVnfs/simple/simple.csar b/nokiav2/docs/sampleVnfs/simple/simple.csar index fc03b56acc2f9a930841a56b567260d58ccf637b..a3726c19948e3d365c6be604260d5b9ba550efad 100644 GIT binary patch delta 1755 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 G0001XFg`Z` diff --git a/nokiav2/docs/sampleVnfs/simple_cmcc/etsi_config.json b/nokiav2/docs/sampleVnfs/simple_cmcc/etsi_config.json new file mode 100644 index 00000000..ef3bce5c --- /dev/null +++ b/nokiav2/docs/sampleVnfs/simple_cmcc/etsi_config.json @@ -0,0 +1,34 @@ +{ + "computeResourceFlavours": [ + { + "vnfdVirtualComputeDescId": "server_compute", + "resourceId": "m1.small" + } + ], + "extVirtualLinks": [ + { + "extCps": [ + { + "cpdId": "universal_ecp" + } + ], + "resourceId": "oam-nokia" + } + ], + "zones": [ + { + "resourceId": "nova", + "id": "zoneInfoId" + } + ], + "flavourId": "scalable", + "vimType": "OPENSTACK_V3_INFO", + "instantiationLevel": "default", + "softwareImages": [ + { + "resourceId": "ubuntu.16.04", + "vnfdSoftwareImageId": "server_image" + } + ], + "extensions" : [ { "name": "myNameKey", "value": "myName"} ] +} diff --git a/nokiav2/docs/sampleVnfs/simple_cmcc/sdc.json b/nokiav2/docs/sampleVnfs/simple_cmcc/sdc.json deleted file mode 100644 index 16563884..00000000 --- a/nokiav2/docs/sampleVnfs/simple_cmcc/sdc.json +++ /dev/null @@ -1 +0,0 @@ -{ "computeResourceFlavours": [ { "vnfdVirtualComputeDescId": "server_compute", "resourceId": "m1.small" } ], "extVirtualLinks": [ { "extCps": [ { "cpdId": "universal_ecp" } ], "resourceId": "oam-nokia" } ], "zones": [ { "resourceId": "nova", "id": "zoneInfoId" } ], "flavourId": "scalable", "vimType": "OPENSTACK_V3_INFO", "instantiationLevel": "default", "softwareImages": [ { "resourceId": "ubuntu.16.04", "vnfdSoftwareImageId": "server_image" } ] } \ No newline at end of file diff --git a/nokiav2/docs/sampleVnfs/simple_cmcc/simple.csar b/nokiav2/docs/sampleVnfs/simple_cmcc/simple.csar index da3637fe5ff01f30af7561c89377864b480d4e39..48a38b8e9dd827eaa79686b7fa2b75dd955d0537 100644 GIT binary patch delta 3012 zcmeH}hf|Z;8pgknLKH|)FhQh94UmKmLIg$FPy#9&ks5+D6)X^!UJM|TrCIWULTJ)d zKp==x1eB^&kp)4iqCga-EJZ*B7o59uXZK&Ych0;s@6375dC#1AW}e@5`Xv1Z4aE+r zv`ScSuLSr2fC9hit%l6?hC6N7&FpIB#b{Jd04IfmDua)r!C* z%HM7h$w+=T_lH1WZJ!zz?f&uYuSN1NcPDqcj%lqBe%MHm;?wIkzGpy9`}CN{4^My)nHq+WLz<8{I|6Zq;pv6-D3Eib;mNe1@wJs^> znJA)>N!FKVOl#}Te;m}4mj6id)FKLqN~I0sLtm`jZ#tDT9vMTmz4LtDp>Js z2S(O90Sm{**m?2k6_a49WL;;&uB&pN?n>2fE@L|8MjKuu2GSGHi3f)F ze`%yy>j)t)#F@p5guz{;%cX1;?`Rnxc3maU)+$uKZZ7gXb}-bes=$;vGM1$86J+Ou z^zr}ItB3l5ZCH&-%Q-03Zyoff5-zA>IBX>l)_(fJq|mR9epXH9ci4WY_KKn%etD@U za_`@@UN~IRCPw(MmrxczEcJ^+&WiA=-G~97Tn#S(z8cE45ByPmue9C#X+)UB5+&yJ zi^a6S+n!8_wIviL3IG7e<{L#N{=*^QWvCpIvt^I%`oBf~=PgpsfnR|L#RgYe`S`o_ z*2@7vJ*dKe09kex?zCNCDPk`eixe(r^E)C@+qz@v6}qqB0D#;FenV?9{}%cO2>=k- zG6VpAT5ra|>G-go=w+Ur{j`ZoKx4$&y$iN)^2tOb(UD%*zMzLnvG~$=JMxqF`q0W7 zh9ZN#S9S2Uw?dS#mj23bhop!2<#ZJE-1V`;zRKEk&HQnbxCERR-4@=I%+_Z;tG2P9 zu&ia>n`g>RM1dKSa(IW!zRo9Z`i^`o}14k`&x#eU(@HT|EN-1N8ciTtkn zs-cyA#tMF6W~h^T1+LuCka@K}*Yo0RtlPfj5T+1qLX)ax>XW|YC|i-=YT4bJ2W0Oc z>2LbZK2!NRa;b%)*hw-Ic{I^(Pkk2^PmX&ki?8}^*QmPVM%0@tu9W&pRq1b2Ey@M0 z=~#nfAtzgt%Oe+~2>B~&oWlIROT;f7!A5;*2K;c)t)AgUEa zo4E!vds5+a3EksJMOk;vC$cLjS7M6>@uBjgei8~dHLk*vklEmoe25bN#}4r)?8VH^NMyhHL2E%PPrk$?)t3lcQ{K zocs6M7?4|+jE8Pqi=BG3=R&+#a!h>t*P2&T+BV!h!rsr#Mf}We<;5@u*J>?!%seY2 z_3VdAKopLOobsnp<{fc?A;QwwN8Gokf|qCdo@8a)IYP(pwvOkTmb;N+xabq!i;a3m z7MLPRZJJE6sEsn&o%2G%;?1ErUPQgvoqB%Dl|2@v<~zINZ%(Xa+KJZXv>K|J_7LUB zFxkL&jC;Y6isRh48&t_#J>qtVmtjC_gth582yDx9#*7>4QPt!`|ZQ|0$>?hI9A8=F0sOd#PAoAN{>3*F6 zhdKH{0U;YBY$9p5Sl3iAr=iw%wB!A=89#QJ?L$N5$1PxMy?sjJIRz#@e_C?xp!S0` zwEE&jAL$HfbhMYJyG2lBY)<7cU{K80#(KN{JG4Zr3O`!o5@4Q!VXH>C>Sp9D9zUGp z(bqP}i7Q&y%4+J;N0z6le>tLwhKl=jcM)m7*mL`zk0e|flo4$X>-cCqq)ASg(V(DE zTBNi|{_>{W^QK={t}~Sk)7hV7!pGp*GBhKJY8!>flixDh*T14Tj5>R8>fI3MeaW?J zoE+%VpL!ue9azOcUi7if+eUJfO-mHXgSW^T>FVIQ$o4AD87%c$r;QQp*A25ntqie@9 zg2nyX_@-?1_n>v0^QO-FYCzv{S083(^Hmh8;Yhc(`x0NBJed3ZfCTW~*1{$AD;6W9Ux)?Op=(Rh5_dM|^HYDE>e9Z_kK`bor@N T<%a{%pPw?VDvgN7Z}0sDb4gKs delta 2919 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 auu+x#+npj@9MJx+I0Hj91x{7We#u|^TvW*b diff --git a/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/AdditionalParameters.java b/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/AdditionalParameters.java index c0b5c5b8..5895108f 100644 --- a/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/AdditionalParameters.java +++ b/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/AdditionalParameters.java @@ -31,6 +31,7 @@ public class AdditionalParameters { private List extManagedVirtualLinks = new ArrayList<>(); private Map> externalConnectionPointAddresses = new HashMap<>(); private List extVirtualLinks = new ArrayList<>(); + private List extensions = new ArrayList<>(); private Object additionalParams; private String domain; @@ -158,6 +159,28 @@ public class AdditionalParameters { this.extVirtualLinks = extVirtualLinks; } + public String getDomain() { + return domain; + } + + public void setDomain(String domain) { + this.domain = domain; + } + + /** + * @return the extensions of the VNF modifiable attributes + */ + public List getExtensions() { + return extensions; + } + + /** + * @param extensions the extensions of the VNF modifiable attributes + */ + public void setExtensions(List extensions) { + this.extensions = extensions; + } + @Override //generated code. This is the recommended way to formulate equals @SuppressWarnings({"squid:S00122", "squid:S1067"}) @@ -174,20 +197,19 @@ public class AdditionalParameters { Objects.equals(extManagedVirtualLinks, that.extManagedVirtualLinks) && Objects.equals(externalConnectionPointAddresses, that.externalConnectionPointAddresses) && Objects.equals(extVirtualLinks, that.extVirtualLinks) && + Objects.equals(extensions, that.extensions) && Objects.equals(additionalParams, that.additionalParams); } @Override public int hashCode() { - - return Objects.hash(vimType, domain, instantiationLevel, computeResourceFlavours, zones, softwareImages, extManagedVirtualLinks, externalConnectionPointAddresses, extVirtualLinks, additionalParams); + return Objects.hash(vimType, domain, instantiationLevel, computeResourceFlavours, zones, softwareImages, extManagedVirtualLinks, externalConnectionPointAddresses, extVirtualLinks, extensions, additionalParams); } @Override public String toString() { return "AdditionalParameters{" + "vimType=" + vimType + - ", domain='" + domain + '\'' + ", instantiationLevel='" + instantiationLevel + '\'' + ", computeResourceFlavours=" + computeResourceFlavours + ", zones=" + zones + @@ -195,15 +217,9 @@ public class AdditionalParameters { ", extManagedVirtualLinks=" + extManagedVirtualLinks + ", externalConnectionPointAddresses=" + externalConnectionPointAddresses + ", extVirtualLinks=" + extVirtualLinks + + ", extensions=" + extensions + ", additionalParams=" + additionalParams + + ", domain='" + domain + '\'' + '}'; } - - public String getDomain() { - return domain; - } - - public void setDomain(String domain) { - this.domain = domain; - } } \ No newline at end of file diff --git a/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/LifecycleManager.java b/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/LifecycleManager.java index 0adba680..5d65050c 100644 --- a/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/LifecycleManager.java +++ b/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/LifecycleManager.java @@ -17,6 +17,7 @@ package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm; +import com.google.common.base.Joiner; import com.google.gson.Gson; import com.google.gson.JsonElement; import com.google.gson.JsonObject; @@ -43,7 +44,9 @@ import static java.nio.charset.StandardCharsets.UTF_8; import static com.google.common.base.Splitter.on; import static com.google.common.collect.Iterables.find; +import static com.google.common.collect.Iterables.transform; import static com.google.common.collect.Lists.newArrayList; +import static com.google.common.collect.Ordering.natural; import static com.google.common.collect.Sets.newHashSet; import static com.nokia.cbam.lcm.v32.model.InstantiationState.INSTANTIATED; import static com.nokia.cbam.lcm.v32.model.OperationStatus.FINISHED; @@ -68,6 +71,7 @@ public class LifecycleManager { public static final String EXTERNAL_VNFM_ID = "externalVnfmId"; public static final String SCALE_OPERATION_NAME = "scale"; public static final String ETSI_CONFIG = "etsi_config"; + public static final String PROPERTIES = "properties"; private static Logger logger = getLogger(LifecycleManager.class); private final CatalogManager catalogManager; private final IGrantManager grantManager; @@ -215,6 +219,7 @@ public class LifecycleManager { @SuppressWarnings("squid:S00107") //wrapping them into an object makes the code less readable private void instantiateVnf(String vnfmId, List extVirtualLinkInfos, AdditionalParameters additionalParameters, String onapVnfdId, String vnfmVnfdId, String vnfId, String vimId, JobInfo jobInfo) { String vnfdContent = catalogManager.getCbamVnfdContent(vnfmId, vnfmVnfdId); + addSpecifiedExtensions(vnfmId, vnfId, additionalParameters); GrantVNFResponseVim vim = grantManager.requestGrantForInstantiate(vnfmId, vnfId, vimId, onapVnfdId, additionalParameters.getInstantiationLevel(), vnfdContent, jobInfo.getJobId()); handleBackwardIncompatibleApiChangesInVfc(vim); VimInfo vimInfo = vimInfoProvider.getVimInfo(vim.getVimId()); @@ -293,11 +298,11 @@ public class LifecycleManager { private AdditionalParameters convertInstantiationAdditionalParams(String csarId, Object additionalParams) { JsonObject root = new Gson().toJsonTree(additionalParams).getAsJsonObject(); - if(root.has("properties")){ - JsonObject properties = new JsonParser().parse(root.get("properties").getAsString()).getAsJsonObject(); + if(root.has(PROPERTIES)){ + JsonObject properties = new JsonParser().parse(root.get(PROPERTIES).getAsString()).getAsJsonObject(); if(properties.has(ETSI_CONFIG)){ - JsonElement etsi_config = properties.get(ETSI_CONFIG); - return new Gson().fromJson(etsi_config.getAsString(), AdditionalParameters.class); + JsonElement etsiConfig = properties.get(ETSI_CONFIG); + return new Gson().fromJson(etsiConfig.getAsString(), AdditionalParameters.class); } else{ logger.info("The instantiation input for VNF with {} CSAR id does not have an " + ETSI_CONFIG +" section", csarId); @@ -317,7 +322,7 @@ public class LifecycleManager { private String getFlavorId(String vnfdContent) { JsonObject root = new Gson().toJsonTree(new Yaml().load(vnfdContent)).getAsJsonObject(); JsonObject capabilities = child(child(child(root, "topology_template"), "substitution_mappings"), "capabilities"); - JsonObject deploymentFlavorProperties = child(child(capabilities, "deployment_flavour"), "properties"); + JsonObject deploymentFlavorProperties = child(child(capabilities, "deployment_flavour"), PROPERTIES); return childElement(deploymentFlavorProperties, "flavour_id").getAsString(); } @@ -345,21 +350,37 @@ public class LifecycleManager { private void addVnfdIdToVnfModifyableAttributeExtensions(String vnfmId, String vnfId, String onapCsarId) { ModifyVnfInfoRequest request = new ModifyVnfInfoRequest(); + request.setExtensions(new ArrayList<>()); VnfProperty onapCsarIdProperty = new VnfProperty(); onapCsarIdProperty.setName(ONAP_CSAR_ID); onapCsarIdProperty.setValue(onapCsarId); - request.setExtensions(new ArrayList<>()); request.getExtensions().add(onapCsarIdProperty); VnfProperty externalVnfmIdProperty = new VnfProperty(); externalVnfmIdProperty.setName(EXTERNAL_VNFM_ID); externalVnfmIdProperty.setValue(vnfmId); request.getExtensions().add(externalVnfmIdProperty); - request.setVnfConfigurableProperties(null); + executeModifyVnfInfo(vnfmId, vnfId, request); + } + + private void executeModifyVnfInfo(String vnfmId, String vnfId, ModifyVnfInfoRequest request) { try { OperationExecution operationExecution = cbamRestApiProvider.getCbamLcmApi(vnfmId).vnfsVnfInstanceIdPatch(vnfId, request, NOKIA_LCM_API_VERSION).blockingFirst(); waitForOperationToFinish(vnfmId, vnfId, operationExecution.getId()); } catch (Exception e) { - throw buildFatalFailure(logger, "Unable to set the " + ONAP_CSAR_ID + " property on the VNF", e); + String properties = Joiner.on(",").join(natural().sortedCopy(transform(request.getExtensions(), VnfProperty::getName))); + throw buildFatalFailure(logger, "Unable to set the " + properties + " properties on the VNF with " + vnfId + " identifier", e); + } + } + + private void addSpecifiedExtensions(String vnfmId, String vnfId, AdditionalParameters additionalParameters){ + if(!additionalParameters.getExtensions().isEmpty()){ + ModifyVnfInfoRequest request = new ModifyVnfInfoRequest(); + request.setExtensions(new ArrayList<>()); + request.getExtensions().addAll(additionalParameters.getExtensions()); + executeModifyVnfInfo(vnfmId, vnfId, request); + } + else{ + logger.info("No extensions specified for VNF with {} identifier", vnfId); } } diff --git a/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/notification/LifecycleChangeNotificationManager.java b/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/notification/LifecycleChangeNotificationManager.java index 4829d296..c4cd4342 100644 --- a/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/notification/LifecycleChangeNotificationManager.java +++ b/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/notification/LifecycleChangeNotificationManager.java @@ -223,6 +223,7 @@ public class LifecycleChangeNotificationManager implements ILifecycleChangeNotif throw handledFailuire; } catch (Exception e) { + logger.warn("Unable to build affected connection points", e); return toleratedFailure(); } } diff --git a/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/TestLifecycleManager.java b/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/TestLifecycleManager.java index 7760011d..d91c8477 100644 --- a/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/TestLifecycleManager.java +++ b/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/TestLifecycleManager.java @@ -26,6 +26,7 @@ import io.reactivex.Observable; import java.nio.file.Paths; import java.util.*; import javax.servlet.http.HttpServletResponse; +import org.assertj.core.util.Lists; import org.junit.Before; import org.junit.Test; import org.mockito.ArgumentCaptor; @@ -177,8 +178,7 @@ public class TestLifecycleManager extends TestBase { @Test public void testInstantiation() throws Exception { //given - VnfInstantiateRequest instantiationRequest = prepareInstantiationRequest(VimInfo.VimInfoTypeEnum.OPENSTACK_V2_INFO); - + VnfInstantiateRequest instantiationRequest = prepareInstantiationRequest(VimInfo.VimInfoTypeEnum.OPENSTACK_V2_INFO, true); when(vnfApi.vnfsPost(createRequest.capture(), eq(NOKIA_LCM_API_VERSION))).thenReturn(buildObservable(vnfInfo)); additionalParam.setInstantiationLevel(INSTANTIATION_LEVEL); when(vfcGrantManager.requestGrantForInstantiate(VNFM_ID, VNF_ID, VIM_ID, ONAP_CSAR_ID, INSTANTIATION_LEVEL, cbamVnfdContent, JOB_ID)).thenReturn(grantResponse); @@ -252,12 +252,32 @@ public class TestLifecycleManager extends TestBase { assertTrue(actualVim.getInterfaceInfo().isSkipCertificateVerification()); assertTrue(actualVim.getInterfaceInfo().isSkipCertificateHostnameCheck()); - assertEquals(1, actualVnfModifyRequest.getAllValues().size()); - assertEquals(2, actualVnfModifyRequest.getValue().getExtensions().size()); - assertEquals(LifecycleManager.ONAP_CSAR_ID, actualVnfModifyRequest.getValue().getExtensions().get(0).getName()); - assertEquals(ONAP_CSAR_ID, actualVnfModifyRequest.getValue().getExtensions().get(0).getValue()); - assertEquals(LifecycleManager.EXTERNAL_VNFM_ID, actualVnfModifyRequest.getValue().getExtensions().get(1).getName()); - assertEquals(VNFM_ID, actualVnfModifyRequest.getValue().getExtensions().get(1).getValue()); + assertEquals(2, actualVnfModifyRequest.getAllValues().size()); + assertEquals(2, actualVnfModifyRequest.getAllValues().get(0).getExtensions().size()); + assertEquals(LifecycleManager.ONAP_CSAR_ID, actualVnfModifyRequest.getAllValues().get(0).getExtensions().get(0).getName()); + assertEquals(ONAP_CSAR_ID, actualVnfModifyRequest.getAllValues().get(0).getExtensions().get(0).getValue()); + assertEquals(LifecycleManager.EXTERNAL_VNFM_ID, actualVnfModifyRequest.getAllValues().get(0).getExtensions().get(1).getName()); + assertEquals(VNFM_ID, actualVnfModifyRequest.getAllValues().get(0).getExtensions().get(1).getValue()); + + assertEquals(3, actualVnfModifyRequest.getAllValues().get(1).getExtensions().size()); + + VnfProperty p1 = new VnfProperty(); + p1.setName("n1"); + p1.setValue(Lists.newArrayList("a", "b")); + VnfProperty p2 = new VnfProperty(); + p2.setName("n2"); + p2.setValue("a"); + VnfProperty p3 = new VnfProperty(); + p2.setName("n2"); + JsonObject o = new JsonObject(); + p2.setValue(o); + o.addProperty("a", "b"); + assertEquals(p1, actualVnfModifyRequest.getAllValues().get(1).getExtensions().get(0)); + assertEquals("n2", actualVnfModifyRequest.getAllValues().get(1).getExtensions().get(1).getName()); + HashMap expected = new HashMap<>(); + expected.put("a", "b"); + assertEquals(expected, actualVnfModifyRequest.getAllValues().get(1).getExtensions().get(1).getValue()); + assertEquals(p3, actualVnfModifyRequest.getAllValues().get(1).getExtensions().get(2)); //the 3.2 API does not accept empty array assertNull(actualVnfModifyRequest.getValue().getVnfConfigurableProperties()); @@ -273,7 +293,7 @@ public class TestLifecycleManager extends TestBase { @Test public void testInstantiationWithInvalidVimType() throws Exception { //given - VnfInstantiateRequest instantiationRequest = prepareInstantiationRequest(VimInfo.VimInfoTypeEnum.OTHER_VIM_INFO); + VnfInstantiateRequest instantiationRequest = prepareInstantiationRequest(VimInfo.VimInfoTypeEnum.OTHER_VIM_INFO, false); when(vnfApi.vnfsPost(createRequest.capture(), eq(NOKIA_LCM_API_VERSION))).thenReturn(buildObservable(vnfInfo)); when(logger.isInfoEnabled()).thenReturn(false); //when @@ -295,7 +315,7 @@ public class TestLifecycleManager extends TestBase { */ @Test public void testInstantiationV2WithSsl() throws Exception { - VnfInstantiateRequest instantiationRequest = prepareInstantiationRequest(VimInfo.VimInfoTypeEnum.OPENSTACK_V2_INFO); + VnfInstantiateRequest instantiationRequest = prepareInstantiationRequest(VimInfo.VimInfoTypeEnum.OPENSTACK_V2_INFO, false); when(logger.isInfoEnabled()).thenReturn(false); when(vnfApi.vnfsPost(createRequest.capture(), eq(NOKIA_LCM_API_VERSION))).thenReturn(buildObservable(vnfInfo)); additionalParam.setInstantiationLevel(INSTANTIATION_LEVEL); @@ -331,7 +351,7 @@ public class TestLifecycleManager extends TestBase { */ @Test public void testInstantiationV2WithoutSsl() throws Exception { - VnfInstantiateRequest instantiationRequest = prepareInstantiationRequest(VimInfo.VimInfoTypeEnum.OPENSTACK_V2_INFO); + VnfInstantiateRequest instantiationRequest = prepareInstantiationRequest(VimInfo.VimInfoTypeEnum.OPENSTACK_V2_INFO, false); when(vnfApi.vnfsPost(createRequest.capture(), eq(NOKIA_LCM_API_VERSION))).thenReturn(buildObservable(vnfInfo)); additionalParam.setInstantiationLevel(INSTANTIATION_LEVEL); @@ -358,7 +378,7 @@ public class TestLifecycleManager extends TestBase { */ @Test public void testInstantiationV3() throws Exception { - VnfInstantiateRequest instantiationRequest = prepareInstantiationRequest(VimInfo.VimInfoTypeEnum.OPENSTACK_V3_INFO); + VnfInstantiateRequest instantiationRequest = prepareInstantiationRequest(VimInfo.VimInfoTypeEnum.OPENSTACK_V3_INFO, false); when(vnfApi.vnfsPost(createRequest.capture(), eq(NOKIA_LCM_API_VERSION))).thenReturn(buildObservable(vnfInfo)); additionalParam.setInstantiationLevel(INSTANTIATION_LEVEL); when(vfcGrantManager.requestGrantForInstantiate(VNFM_ID, VNF_ID, VIM_ID, ONAP_CSAR_ID, INSTANTIATION_LEVEL, cbamVnfdContent, JOB_ID)).thenReturn(grantResponse); @@ -396,7 +416,7 @@ public class TestLifecycleManager extends TestBase { @Test public void testInstantiationNoVimId() throws Exception { //given - VnfInstantiateRequest instantiationRequest = prepareInstantiationRequest(VimInfo.VimInfoTypeEnum.OPENSTACK_V2_INFO); + VnfInstantiateRequest instantiationRequest = prepareInstantiationRequest(VimInfo.VimInfoTypeEnum.OPENSTACK_V2_INFO, false); when(vnfApi.vnfsPost(createRequest.capture(), eq(NOKIA_LCM_API_VERSION))).thenReturn(buildObservable(vnfInfo)); additionalParam.setInstantiationLevel(INSTANTIATION_LEVEL); when(vfcGrantManager.requestGrantForInstantiate(VNFM_ID, VNF_ID, VIM_ID, ONAP_CSAR_ID, INSTANTIATION_LEVEL, cbamVnfdContent, JOB_ID)).thenReturn(grantResponse); @@ -489,7 +509,7 @@ public class TestLifecycleManager extends TestBase { */ @Test public void testInstantiationV3WithSsl() throws Exception { - VnfInstantiateRequest instantiationRequest = prepareInstantiationRequest(VimInfo.VimInfoTypeEnum.OPENSTACK_V3_INFO); + VnfInstantiateRequest instantiationRequest = prepareInstantiationRequest(VimInfo.VimInfoTypeEnum.OPENSTACK_V3_INFO, false); when(vnfApi.vnfsPost(createRequest.capture(), eq(NOKIA_LCM_API_VERSION))).thenReturn(buildObservable(vnfInfo)); additionalParam.setInstantiationLevel(INSTANTIATION_LEVEL); when(vfcGrantManager.requestGrantForInstantiate(VNFM_ID, VNF_ID, VIM_ID, ONAP_CSAR_ID, INSTANTIATION_LEVEL, cbamVnfdContent, JOB_ID)).thenReturn(grantResponse); @@ -528,7 +548,7 @@ public class TestLifecycleManager extends TestBase { */ @Test public void testInstantiationV3WithNonSpecifiedSsl() throws Exception { - VnfInstantiateRequest instantiationRequest = prepareInstantiationRequest(VimInfo.VimInfoTypeEnum.OPENSTACK_V3_INFO); + VnfInstantiateRequest instantiationRequest = prepareInstantiationRequest(VimInfo.VimInfoTypeEnum.OPENSTACK_V3_INFO, false); when(vnfApi.vnfsPost(createRequest.capture(), eq(NOKIA_LCM_API_VERSION))).thenReturn(buildObservable(vnfInfo)); additionalParam.setInstantiationLevel(INSTANTIATION_LEVEL); when(vfcGrantManager.requestGrantForInstantiate(VNFM_ID, VNF_ID, VIM_ID, ONAP_CSAR_ID, INSTANTIATION_LEVEL, cbamVnfdContent, JOB_ID)).thenReturn(grantResponse); @@ -565,7 +585,7 @@ public class TestLifecycleManager extends TestBase { public void testInstantiationV3WithNoDomain() throws Exception { additionalParam.setInstantiationLevel(INSTANTIATION_LEVEL); additionalParam.setDomain("myDomain"); - VnfInstantiateRequest instantiationRequest = prepareInstantiationRequest(VimInfo.VimInfoTypeEnum.OPENSTACK_V3_INFO); + VnfInstantiateRequest instantiationRequest = prepareInstantiationRequest(VimInfo.VimInfoTypeEnum.OPENSTACK_V3_INFO, false); vimInfo.setDomain(null); when(vnfApi.vnfsPost(createRequest.capture(), eq(NOKIA_LCM_API_VERSION))).thenReturn(buildObservable(vnfInfo)); when(vfcGrantManager.requestGrantForInstantiate(VNFM_ID, VNF_ID, VIM_ID, ONAP_CSAR_ID, INSTANTIATION_LEVEL, cbamVnfdContent, JOB_ID)).thenReturn(grantResponse); @@ -602,7 +622,7 @@ public class TestLifecycleManager extends TestBase { */ @Test public void testInstantiationV3WithNoDomainFail() throws Exception { - VnfInstantiateRequest instantiationRequest = prepareInstantiationRequest(VimInfo.VimInfoTypeEnum.OPENSTACK_V3_INFO); + VnfInstantiateRequest instantiationRequest = prepareInstantiationRequest(VimInfo.VimInfoTypeEnum.OPENSTACK_V3_INFO, false); vimInfo.setDomain(null); when(vnfApi.vnfsPost(createRequest.capture(), eq(NOKIA_LCM_API_VERSION))).thenReturn(buildObservable(vnfInfo)); additionalParam.setInstantiationLevel(INSTANTIATION_LEVEL); @@ -627,7 +647,7 @@ public class TestLifecycleManager extends TestBase { */ @Test public void testInstantiationVcloud() throws Exception { - VnfInstantiateRequest instantiationRequest = prepareInstantiationRequest(VimInfo.VimInfoTypeEnum.VMWARE_VCLOUD_INFO); + VnfInstantiateRequest instantiationRequest = prepareInstantiationRequest(VimInfo.VimInfoTypeEnum.VMWARE_VCLOUD_INFO, false); when(vnfApi.vnfsPost(createRequest.capture(), eq(NOKIA_LCM_API_VERSION))).thenReturn(buildObservable(vnfInfo)); additionalParam.setInstantiationLevel(INSTANTIATION_LEVEL); @@ -661,7 +681,7 @@ public class TestLifecycleManager extends TestBase { */ @Test public void testInstantiationVcloudWithSsl() throws Exception { - VnfInstantiateRequest instantiationRequest = prepareInstantiationRequest(VimInfo.VimInfoTypeEnum.VMWARE_VCLOUD_INFO); + VnfInstantiateRequest instantiationRequest = prepareInstantiationRequest(VimInfo.VimInfoTypeEnum.VMWARE_VCLOUD_INFO, false); when(vnfApi.vnfsPost(createRequest.capture(), eq(NOKIA_LCM_API_VERSION))).thenReturn(buildObservable(vnfInfo)); additionalParam.setInstantiationLevel(INSTANTIATION_LEVEL); @@ -699,7 +719,7 @@ public class TestLifecycleManager extends TestBase { */ @Test public void testInstantiationVcloudWithNonSecifedSSl() throws Exception { - VnfInstantiateRequest instantiationRequest = prepareInstantiationRequest(VimInfo.VimInfoTypeEnum.VMWARE_VCLOUD_INFO); + VnfInstantiateRequest instantiationRequest = prepareInstantiationRequest(VimInfo.VimInfoTypeEnum.VMWARE_VCLOUD_INFO, false); when(vnfApi.vnfsPost(createRequest.capture(), eq(NOKIA_LCM_API_VERSION))).thenReturn(buildObservable(vnfInfo)); additionalParam.setInstantiationLevel(INSTANTIATION_LEVEL); @@ -733,7 +753,7 @@ public class TestLifecycleManager extends TestBase { */ @Test public void testFailureInTheInstantiationRequest() throws Exception { - VnfInstantiateRequest instantiationRequest = prepareInstantiationRequest(VimInfo.VimInfoTypeEnum.OPENSTACK_V2_INFO); + VnfInstantiateRequest instantiationRequest = prepareInstantiationRequest(VimInfo.VimInfoTypeEnum.OPENSTACK_V2_INFO, false); when(vnfApi.vnfsPost(createRequest.capture(), eq(NOKIA_LCM_API_VERSION))).thenReturn(buildObservable(vnfInfo)); additionalParam.setInstantiationLevel(INSTANTIATION_LEVEL); when(vfcGrantManager.requestGrantForInstantiate(VNFM_ID, VNF_ID, VIM_ID, ONAP_CSAR_ID, INSTANTIATION_LEVEL, cbamVnfdContent, JOB_ID)).thenReturn(grantResponse); @@ -759,7 +779,7 @@ public class TestLifecycleManager extends TestBase { */ @Test public void testVfcFailsToSendVimId() throws Exception { - VnfInstantiateRequest instantiationRequest = prepareInstantiationRequest(VimInfo.VimInfoTypeEnum.OPENSTACK_V2_INFO); + VnfInstantiateRequest instantiationRequest = prepareInstantiationRequest(VimInfo.VimInfoTypeEnum.OPENSTACK_V2_INFO, false); when(vnfApi.vnfsPost(createRequest.capture(), eq(NOKIA_LCM_API_VERSION))).thenReturn(buildObservable(vnfInfo)); additionalParam.setInstantiationLevel(INSTANTIATION_LEVEL); @@ -786,7 +806,7 @@ public class TestLifecycleManager extends TestBase { */ @Test public void testVfcFailsToSendAccessInfo() throws Exception { - VnfInstantiateRequest instantiationRequest = prepareInstantiationRequest(VimInfo.VimInfoTypeEnum.OPENSTACK_V2_INFO); + VnfInstantiateRequest instantiationRequest = prepareInstantiationRequest(VimInfo.VimInfoTypeEnum.OPENSTACK_V2_INFO, false); when(vnfApi.vnfsPost(createRequest.capture(), eq(NOKIA_LCM_API_VERSION))).thenReturn(buildObservable(vnfInfo)); additionalParam.setInstantiationLevel(INSTANTIATION_LEVEL); @@ -813,7 +833,7 @@ public class TestLifecycleManager extends TestBase { */ @Test public void testFailureInTheOperationExecutionPollingDuringInstantiationRequest() throws Exception { - VnfInstantiateRequest instantiationRequest = prepareInstantiationRequest(VimInfo.VimInfoTypeEnum.OPENSTACK_V2_INFO); + VnfInstantiateRequest instantiationRequest = prepareInstantiationRequest(VimInfo.VimInfoTypeEnum.OPENSTACK_V2_INFO, false); when(vnfApi.vnfsPost(createRequest.capture(), eq(NOKIA_LCM_API_VERSION))).thenReturn(buildObservable(vnfInfo)); additionalParam.setInstantiationLevel(INSTANTIATION_LEVEL); when(vfcGrantManager.requestGrantForInstantiate(VNFM_ID, VNF_ID, VIM_ID, ONAP_CSAR_ID, INSTANTIATION_LEVEL, cbamVnfdContent, JOB_ID)).thenReturn(grantResponse); @@ -854,7 +874,7 @@ public class TestLifecycleManager extends TestBase { @Test public void failureInVnfCreationIsPropagated() throws Exception { //given - VnfInstantiateRequest instantiationRequest = prepareInstantiationRequest(VimInfo.VimInfoTypeEnum.OPENSTACK_V2_INFO); + VnfInstantiateRequest instantiationRequest = prepareInstantiationRequest(VimInfo.VimInfoTypeEnum.OPENSTACK_V2_INFO, false); RuntimeException expectedException = new RuntimeException(); when(vnfApi.vnfsPost(createRequest.capture(), eq(NOKIA_LCM_API_VERSION))).thenThrow(expectedException); @@ -875,7 +895,7 @@ public class TestLifecycleManager extends TestBase { @Test public void failureInVnfModificationIsPropagated() throws Exception { //given - VnfInstantiateRequest instantiationRequest = prepareInstantiationRequest(VimInfo.VimInfoTypeEnum.OPENSTACK_V2_INFO); + VnfInstantiateRequest instantiationRequest = prepareInstantiationRequest(VimInfo.VimInfoTypeEnum.OPENSTACK_V2_INFO, false); RuntimeException expectedException = new RuntimeException(); when(vnfApi.vnfsPost(createRequest.capture(), eq(NOKIA_LCM_API_VERSION))).thenReturn(buildObservable(vnfInfo)); @@ -888,7 +908,7 @@ public class TestLifecycleManager extends TestBase { fail(); } catch (RuntimeException e) { assertEquals(expectedException, e.getCause().getCause()); - verify(logger).error("Unable to set the onapCsarId property on the VNF", expectedException); + verify(logger).error("Unable to set the externalVnfmId,onapCsarId properties on the VNF with " + VNF_ID +" identifier", expectedException); } } @@ -898,7 +918,7 @@ public class TestLifecycleManager extends TestBase { */ @Test public void testFailureInQueryVimInfo() throws Exception { - VnfInstantiateRequest instantiationRequest = prepareInstantiationRequest(VimInfo.VimInfoTypeEnum.OPENSTACK_V2_INFO); + VnfInstantiateRequest instantiationRequest = prepareInstantiationRequest(VimInfo.VimInfoTypeEnum.OPENSTACK_V2_INFO, false); when(vnfApi.vnfsPost(createRequest.capture(), eq(NOKIA_LCM_API_VERSION))).thenReturn(buildObservable(vnfInfo)); when(vfcGrantManager.requestGrantForInstantiate(VNFM_ID, VNF_ID, VIM_ID, ONAP_CSAR_ID, INSTANTIATION_LEVEL, cbamVnfdContent, JOB_ID)).thenReturn(grantResponse); grantResponse.setVimId(VIM_ID); @@ -1185,7 +1205,7 @@ public class TestLifecycleManager extends TestBase { @Test public void testMissingVnfParameters() throws Exception { //given - VnfInstantiateRequest instantiationRequest = prepareInstantiationRequest(VimInfo.VimInfoTypeEnum.OPENSTACK_V2_INFO); + VnfInstantiateRequest instantiationRequest = prepareInstantiationRequest(VimInfo.VimInfoTypeEnum.OPENSTACK_V2_INFO, false); String src = "{ \"inputs\" : { \"vnfs\" : { \"" + ONAP_CSAR_ID + "invalid" + "\" : {}}}, \"vimId\" : \"" + VIM_ID + "\"}"; instantiationRequest.setAdditionalParam(new JsonParser().parse(src)); //when @@ -1670,7 +1690,7 @@ public class TestLifecycleManager extends TestBase { public String properties; } - private VnfInstantiateRequest prepareInstantiationRequest(VimInfo.VimInfoTypeEnum cloudType) { + private VnfInstantiateRequest prepareInstantiationRequest(VimInfo.VimInfoTypeEnum cloudType, boolean addExtension) { VnfInstantiateRequest instantiationRequest = new VnfInstantiateRequest(); instantiationRequest.setVnfPackageId(ONAP_CSAR_ID); instantiationRequest.setVnfDescriptorId(ONAP_CSAR_ID); @@ -1682,7 +1702,7 @@ public class TestLifecycleManager extends TestBase { externalVirtualLink.setResourceSubnetId("notUsedSubnetId"); instantiationRequest.setExtVirtualLink(new ArrayList<>()); instantiationRequest.getExtVirtualLink().add(externalVirtualLink); - buildAdditionalParams(cloudType); + buildAdditionalParams(cloudType, addExtension); String params = new Gson().toJson(additionalParam); X x = new X(); x.inputs.put(ONAP_CSAR_ID, params); @@ -1692,7 +1712,7 @@ public class TestLifecycleManager extends TestBase { return instantiationRequest; } - private void buildAdditionalParams(VimInfo.VimInfoTypeEnum cloudType) { + private void buildAdditionalParams(VimInfo.VimInfoTypeEnum cloudType, boolean addExtensions) { additionalParam.setInstantiationLevel("level1"); switch (cloudType) { case OPENSTACK_V2_INFO: @@ -1745,6 +1765,22 @@ public class TestLifecycleManager extends TestBase { image.setVnfdSoftwareImageId("imageId"); additionalParam.getSoftwareImages().add(image); additionalParam.setAdditionalParams(new JsonParser().parse("{ \"a\" : \"b\" }")); + if(addExtensions) { + VnfProperty p1 = new VnfProperty(); + p1.setName("n1"); + p1.setValue(Lists.newArrayList("a", "b")); + VnfProperty p2 = new VnfProperty(); + p2.setName("n2"); + p2.setValue("a"); + VnfProperty p3 = new VnfProperty(); + p2.setName("n2"); + JsonObject o = new JsonObject(); + p2.setValue(o); + o.addProperty("a", "b"); + additionalParam.getExtensions().add(p1); + additionalParam.getExtensions().add(p2); + additionalParam.getExtensions().add(p3); + } } /** @@ -1761,7 +1797,7 @@ public class TestLifecycleManager extends TestBase { */ @Test public void testVnfConfigurationBasedOnPackageParameters() throws Exception { - VnfInstantiateRequest instantiationRequest = prepareInstantiationRequest(VimInfo.VimInfoTypeEnum.OPENSTACK_V3_INFO); + VnfInstantiateRequest instantiationRequest = prepareInstantiationRequest(VimInfo.VimInfoTypeEnum.OPENSTACK_V3_INFO, false); when(vnfApi.vnfsPost(createRequest.capture(), eq(NOKIA_LCM_API_VERSION))).thenReturn(buildObservable(vnfInfo)); additionalParam.setInstantiationLevel(INSTANTIATION_LEVEL); when(vfcGrantManager.requestGrantForInstantiate(VNFM_ID, VNF_ID, VIM_ID, ONAP_CSAR_ID, INSTANTIATION_LEVEL, cbamVnfdContent, JOB_ID)).thenReturn(grantResponse); @@ -1803,7 +1839,7 @@ public class TestLifecycleManager extends TestBase { */ @Test public void testVnfConfigurationBasedOnPackageParametersMissingPropertiesEtsiConfig() throws Exception { - VnfInstantiateRequest instantiationRequest = prepareInstantiationRequest(VimInfo.VimInfoTypeEnum.OPENSTACK_V3_INFO); + VnfInstantiateRequest instantiationRequest = prepareInstantiationRequest(VimInfo.VimInfoTypeEnum.OPENSTACK_V3_INFO, false); when(vnfApi.vnfsPost(createRequest.capture(), eq(NOKIA_LCM_API_VERSION))).thenReturn(buildObservable(vnfInfo)); additionalParam.setInstantiationLevel(INSTANTIATION_LEVEL); when(vfcGrantManager.requestGrantForInstantiate(VNFM_ID, VNF_ID, VIM_ID, ONAP_CSAR_ID, INSTANTIATION_LEVEL, cbamVnfdContent, JOB_ID)).thenReturn(grantResponse); -- 2.16.6