diff options
author | Denes Nemeth <denes.nemeth@nokia.com> | 2018-04-13 00:46:20 +0200 |
---|---|---|
committer | Denes Nemeth <denes.nemeth@nokia.com> | 2018-04-13 00:49:43 +0200 |
commit | b754227da778e1e835336ae39e304ffc8059a009 (patch) | |
tree | effc31892c2018b0cef20e41b8481e99707557f9 /nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm | |
parent | b6618c139b786a947efd695b7bc484eac3401642 (diff) |
Fix backward compatibility issues
Change-Id: I4f79713050074622e5375096baca64ae52594647
Signed-off-by: Denes Nemeth <denes.nemeth@nokia.com>
Issue-ID: VFC-728
Diffstat (limited to 'nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm')
9 files changed, 94 insertions, 52 deletions
diff --git a/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/vfc/VfcExternalSystemInfoProvider.java b/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/vfc/VfcExternalSystemInfoProvider.java index 83b10872..eb8e1f65 100644 --- a/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/vfc/VfcExternalSystemInfoProvider.java +++ b/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/vfc/VfcExternalSystemInfoProvider.java @@ -46,7 +46,7 @@ public class VfcExternalSystemInfoProvider extends GenericExternalSystemInfoProv @Override public VnfmInfo queryVnfmInfoFromSource(String vnfmId) { try { - return vfcRestApiProvider.getNsLcmApi().queryVnfmInfo(vnfmId).execute().body(); + return vfcRestApiProvider.getNsLcmApi().queryVnfmInfo(vnfmId).blockingFirst(); } catch (Exception e) { throw buildFatalFailure(logger, "Unable to query VNFM from VF-C with " + vnfmId + " identifier", e); } @@ -55,7 +55,7 @@ public class VfcExternalSystemInfoProvider extends GenericExternalSystemInfoProv @Override public VimInfo getVimInfo(String vimId) { try { - return vfcRestApiProvider.getNsLcmApi().queryVIMInfo(vimId).execute().body(); + return vfcRestApiProvider.getNsLcmApi().queryVIMInfo(vimId).blockingFirst(); } catch (Exception e) { throw buildFatalFailure(logger, "Unable to query VIM from VF-C with " + vimId + " identifier", e); } diff --git a/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/vfc/VfcGrantManager.java b/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/vfc/VfcGrantManager.java index 01b75027..7b985c84 100644 --- a/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/vfc/VfcGrantManager.java +++ b/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/vfc/VfcGrantManager.java @@ -157,14 +157,17 @@ public class VfcGrantManager implements IGrantManager { private GrantVNFResponseVim requestGrant(GrantVNFRequest grantRequest) { try { - return vfcRestApiProvider.getNsLcmApi().grantvnf(grantRequest).execute().body().getVim(); + logger.info("Requesting grant with ", grantRequest); + GrantVNFResponse grantVNFResponse = vfcRestApiProvider.getNsLcmApi().grantvnf(grantRequest).blockingFirst(); + logger.info("Successfully received grant {}", grantVNFResponse); + return grantVNFResponse.getVim(); } catch (Exception e) { - throw buildFatalFailure(logger, "Unable to request grant", e); + throw buildFatalFailure(logger, "Unable to request grant with " + grantRequest, e); } } - private Set<ResourceChange> calculateResourceChangeDuringInstantiate(String vnfdContent, String instantiationLevelId) { - JsonObject root = new Gson().toJsonTree(new Yaml().load(vnfdContent)).getAsJsonObject(); + private Set<ResourceChange> calculateResourceChangeDuringInstantiate(String cbamVnfdContent, String instantiationLevelId) { + JsonObject root = new Gson().toJsonTree(new Yaml().load(cbamVnfdContent)).getAsJsonObject(); JsonObject capabilities = child(child(child(root, "topology_template"), "substitution_mappings"), "capabilities"); JsonObject deploymentFlavorProperties = child(child(capabilities, "deployment_flavour"), "properties"); JsonObject instantiationLevels = child(deploymentFlavorProperties, "instantiation_levels"); diff --git a/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/vfc/VfcPackageProvider.java b/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/vfc/VfcPackageProvider.java index 9ade5f4a..5831d9b5 100644 --- a/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/vfc/VfcPackageProvider.java +++ b/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/vfc/VfcPackageProvider.java @@ -62,7 +62,7 @@ public class VfcPackageProvider implements IPackageProvider { VnfPkgDetailInfo vnfPackageDetails; try { VnfpackageApi onapCatalogApi = restApiProvider.getVfcCatalogApi(); - vnfPackageDetails = onapCatalogApi.queryVnfPackage(csarId).execute().body(); + vnfPackageDetails = onapCatalogApi.queryVnfPackage(csarId).blockingFirst(); } catch (Exception e) { throw buildFatalFailure(logger, "Unable to query VNF package with " + csarId, e); } @@ -75,7 +75,7 @@ public class VfcPackageProvider implements IPackageProvider { String downloadUrl; try { VnfpackageApi onapCatalogApi = restApiProvider.getVfcCatalogApi(); - VnfPkgDetailInfo vnfPackageDetails = onapCatalogApi.queryVnfPackage(csarId).execute().body(); + VnfPkgDetailInfo vnfPackageDetails = onapCatalogApi.queryVnfPackage(csarId).blockingFirst(); String urlFromVfc = vnfPackageDetails.getPackageInfo().getDownloadUrl(); String host = new URL(urlFromVfc).getHost(); downloadUrl = urlFromVfc.replaceFirst("://" + host, "://" + ipMappingProvider.mapPrivateIpToPublicIp(host)); diff --git a/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/CbamVnfdBuilder.java b/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/CbamVnfdBuilder.java index 1c1e4c76..ec2ad27c 100644 --- a/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/CbamVnfdBuilder.java +++ b/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/CbamVnfdBuilder.java @@ -37,6 +37,8 @@ public class CbamVnfdBuilder { JsonObject extensions = addChild(addChild(addChild(addChild(addChild(substitutionMappings, "capabilities"), "vnf"), "properties"), "modifiable_attributes"), "extensions"); JsonObject onapCsarId = addChild(extensions, "onapCsarId"); onapCsarId.add("default", new JsonPrimitive("kuku")); + JsonObject externalVnfmId = addChild(extensions, "externalVnfmId"); + externalVnfmId.add("default", new JsonPrimitive("kuku")); JsonObject vimId = addChild(extensions, "vimId"); vimId.add("default", new JsonPrimitive("kuku")); JsonObject interfaces = child(substitutionMappings, "interfaces"); diff --git a/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/OnapVnfdBuilder.java b/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/OnapVnfdBuilder.java index dcac5cdf..6a20bc20 100644 --- a/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/OnapVnfdBuilder.java +++ b/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/OnapVnfdBuilder.java @@ -51,6 +51,11 @@ public class OnapVnfdBuilder { return pattern.matcher(content).replaceAll(sb.toString() + "$1"); } + private static String trimUnit(String data) { + //FIXME the unit should not be trimmed VF-C bug + return data.trim().replaceAll("[^0-9]", ""); + } + /** * @param cbamVnfd the CBAM VNFD * @return the converted ONAP VNFD @@ -121,8 +126,7 @@ public class OnapVnfdBuilder { if ("virtual_compute".equals(s)) { JsonObject virtualCompute = get(next.getValue().getAsString(), nodes).getAsJsonObject(); cpuCount = childElement(child(child(virtualCompute, PROPERTIES), "virtual_cpu"), "num_virtual_cpu").getAsString(); - memorySize = childElement(child(child(virtualCompute, PROPERTIES), "virtual_memory"), "virtual_mem_size").getAsString(); - + memorySize = trimUnit(childElement(child(child(virtualCompute, PROPERTIES), "virtual_memory"), "virtual_mem_size").getAsString()); } else if ("virtual_storage".equals(s)) { String item = indent( "- virtual_storage:\n" + @@ -140,7 +144,7 @@ public class OnapVnfdBuilder { indent( "properties:\n" + " virtual_memory:\n" + - " virtual_mem_size: " + memorySize + "\n" + + " virtual_mem_size: " + trimUnit(memorySize) + "\n" + " virtual_cpu:\n" + " num_virtual_cpu: " + cpuCount + "\n", 3) + " " + REQUIREMENTS + ":\n", 2); @@ -258,7 +262,7 @@ public class OnapVnfdBuilder { " properties:\n" + " id: " + nodeName + "\n" + " type_of_storage: volume\n" + - " size_of_storage: " + childElement(child(volume, PROPERTIES), "size_of_storage").getAsString() + "\n", 2); + " size_of_storage: " + trimUnit(childElement(child(volume, PROPERTIES), "size_of_storage").getAsString()) + "\n", 2); } private String buildVl(String name) { diff --git a/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/restapi/LcmApi.java b/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/restapi/LcmApi.java index 92148029..a3be0636 100644 --- a/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/restapi/LcmApi.java +++ b/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/restapi/LcmApi.java @@ -64,7 +64,7 @@ public class LcmApi { @RequestMapping(value = "/{vnfmId}/vnfs", method = POST, produces = APPLICATION_JSON_VALUE, consumes = APPLICATION_JSON_VALUE) @ResponseBody public VnfInstantiateResponse instantiateVnf(@RequestBody VnfInstantiateRequest request, @PathVariable("vnfmId") String vnfmId, HttpServletResponse httpResponse) { - logger.info("REST: Instantiate VNF"); + logger.info("REST: Instantiate VNF with " + request.getVnfPackageId() + " CSAR identifier"); VnfInstantiateResponse response = lifecycleManager.createAndInstantiate(vnfmId, request, httpResponse); httpResponse.setStatus(SC_CREATED); return response; @@ -73,32 +73,32 @@ public class LcmApi { /** * Terminate the VNF (defined further in the VF-C driver integration documentation) * - * @param request the termination request - * @param vnfmId the identifier of the VNFM - * @param vnfInstanceId the identifier of the VNF - * @param httpResponse the HTTP response + * @param request the termination request + * @param vnfmId the identifier of the VNFM + * @param vnfId the identifier of the VNF + * @param httpResponse the HTTP response * @return the job representing the VNF termination operation */ @RequestMapping(value = "/{vnfmId}/vnfs/{vnfId}/terminate", method = POST, produces = APPLICATION_JSON_VALUE) @ResponseBody - public JobInfo terminateVnf(@RequestBody VnfTerminateRequest request, @PathVariable("vnfmId") String vnfmId, @PathVariable("vnfId") String vnfInstanceId, HttpServletResponse httpResponse) { - logger.info("REST: Terminate VNF"); - return lifecycleManager.terminateAndDelete(vnfmId, vnfInstanceId, request, httpResponse); + public JobInfo terminateVnf(@RequestBody VnfTerminateRequest request, @PathVariable("vnfmId") String vnfmId, @PathVariable("vnfId") String vnfId, HttpServletResponse httpResponse) { + logger.info("REST: Terminate VNF with " + vnfId + " identifier"); + return lifecycleManager.terminateAndDelete(vnfmId, vnfId, request, httpResponse); } /** * Query the VNF (defined further in the VF-C driver integration documentation) * - * @param vnfmId the identifier of the VNFM - * @param vnfInstanceId the identifier of the VNF - * @param httpResponse the HTTP response + * @param vnfmId the identifier of the VNFM + * @param vnfId the identifier of the VNF + * @param httpResponse the HTTP response * @return the VNF info */ @RequestMapping(value = "/{vnfmId}/vnfs/{vnfId}", method = GET, produces = APPLICATION_JSON_VALUE, consumes = APPLICATION_JSON_VALUE) @ResponseBody - public VnfInfo queryVnf(@PathVariable("vnfmId") String vnfmId, @PathVariable("vnfId") String vnfInstanceId, HttpServletResponse httpResponse) { - logger.info("REST: Query VNF"); - return lifecycleManager.queryVnf(vnfmId, vnfInstanceId); + public VnfInfo queryVnf(@PathVariable("vnfmId") String vnfmId, @PathVariable("vnfId") String vnfId, HttpServletResponse httpResponse) { + logger.info("REST: Query VNF with " + vnfId + " identifier"); + return lifecycleManager.queryVnf(vnfmId, vnfId); } /** @@ -112,39 +112,39 @@ public class LcmApi { @RequestMapping(value = "/{vnfmId}/jobs/{jobId}", method = GET, produces = APPLICATION_JSON_VALUE) @ResponseBody public JobDetailInfo getJob(@PathVariable("vnfmId") String vnfmId, @PathVariable("jobId") String jobId, HttpServletResponse httpResponse) { - logger.debug("REST: Query job"); + logger.debug("REST: Query job with " + jobId + " identifier"); return jobManager.getJob(vnfmId, jobId); } /** * Scale the VNF (defined further in the VF-C driver integration documentation) * - * @param request the scaling request - * @param vnfmId the identifier of the VNFM - * @param vnfInstanceId the identifier of the VNF - * @param httpResponse the HTTP response + * @param request the scaling request + * @param vnfmId the identifier of the VNFM + * @param vnfId the identifier of the VNF + * @param httpResponse the HTTP response * @return the job representing the scaling operation */ @RequestMapping(value = "/{vnfmId}/vnfs/{vnfId}/scale", method = POST, produces = APPLICATION_JSON_VALUE, consumes = APPLICATION_JSON_VALUE) @ResponseBody - public JobInfo scaleVnf(@RequestBody VnfScaleRequest request, @PathVariable("vnfmId") String vnfmId, @PathVariable("vnfId") String vnfInstanceId, HttpServletResponse httpResponse) { - logger.info("REST: Scale VNF"); - return lifecycleManager.scaleVnf(vnfmId, vnfInstanceId, request, httpResponse); + public JobInfo scaleVnf(@RequestBody VnfScaleRequest request, @PathVariable("vnfmId") String vnfmId, @PathVariable("vnfId") String vnfId, HttpServletResponse httpResponse) { + logger.info("REST: Scale VNF with " + vnfId + " identifier"); + return lifecycleManager.scaleVnf(vnfmId, vnfId, request, httpResponse); } /** * Heal the VNF (defined further in the VF-C driver integration documentation) * - * @param request the healing request - * @param vnfmId the identifier of the VNFM - * @param vnfInstanceId the identifier of the VNF - * @param httpResponse the HTTP response + * @param request the healing request + * @param vnfmId the identifier of the VNFM + * @param vnfId the identifier of the VNF + * @param httpResponse the HTTP response * @return the job representing the healing operation */ @RequestMapping(value = "/{vnfmId}/vnfs/{vnfId}/heal", method = POST, produces = APPLICATION_JSON_VALUE, consumes = APPLICATION_JSON_VALUE) @ResponseBody - public JobInfo healVnf(@RequestBody VnfHealRequest request, @PathVariable("vnfmId") String vnfmId, @PathVariable("vnfId") String vnfInstanceId, HttpServletResponse httpResponse) { - logger.info("REST: Heal VNF"); - return lifecycleManager.healVnf(vnfmId, vnfInstanceId, request, empty(), httpResponse); + public JobInfo healVnf(@RequestBody VnfHealRequest request, @PathVariable("vnfmId") String vnfmId, @PathVariable("vnfId") String vnfId, HttpServletResponse httpResponse) { + logger.info("REST: Heal VNF with " + vnfId + " identifier"); + return lifecycleManager.healVnf(vnfmId, vnfId, request, empty(), httpResponse); } } 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 1ec129ea..c0b5c5b8 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 @@ -32,6 +32,7 @@ public class AdditionalParameters { private Map<String, List<NetworkAddress>> externalConnectionPointAddresses = new HashMap<>(); private List<ExtVirtualLinkData> extVirtualLinks = new ArrayList<>(); private Object additionalParams; + private String domain; public AdditionalParameters() { //only used through reflection (gson) @@ -165,6 +166,7 @@ public class AdditionalParameters { if (o == null || getClass() != o.getClass()) return false; AdditionalParameters that = (AdditionalParameters) o; return vimType == that.vimType && + Objects.equals(domain, that.domain) && Objects.equals(instantiationLevel, that.instantiationLevel) && Objects.equals(computeResourceFlavours, that.computeResourceFlavours) && Objects.equals(zones, that.zones) && @@ -178,13 +180,14 @@ public class AdditionalParameters { @Override public int hashCode() { - return Objects.hash(vimType, instantiationLevel, computeResourceFlavours, zones, softwareImages, extManagedVirtualLinks, externalConnectionPointAddresses, extVirtualLinks, additionalParams); + return Objects.hash(vimType, domain, instantiationLevel, computeResourceFlavours, zones, softwareImages, extManagedVirtualLinks, externalConnectionPointAddresses, extVirtualLinks, additionalParams); } @Override public String toString() { return "AdditionalParameters{" + "vimType=" + vimType + + ", domain='" + domain + '\'' + ", instantiationLevel='" + instantiationLevel + '\'' + ", computeResourceFlavours=" + computeResourceFlavours + ", zones=" + zones + @@ -195,4 +198,12 @@ public class AdditionalParameters { ", additionalParams=" + additionalParams + '}'; } + + 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/CatalogManager.java b/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/CatalogManager.java index 5b99bad1..6283cfbc 100644 --- a/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/CatalogManager.java +++ b/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/CatalogManager.java @@ -115,7 +115,7 @@ public class CatalogManager { if (!isPackageReplicated(cbamVnfdId, cbamCatalogApi)) { try { ByteArrayOutputStream cbamPackage = getFileInZip(new ByteArrayInputStream(packageProvider.getPackage(csarId)), CBAM_PACKAGE_NAME_IN_ZIP); - return cbamCatalogApi.create(create(parse(APPLICATION_OCTET_STREAM.toString()), cbamPackage.toByteArray())).execute().body(); + return cbamCatalogApi.create(create(parse(APPLICATION_OCTET_STREAM.toString()), cbamPackage.toByteArray())).blockingFirst(); } catch (Exception e) { logger.debug("Probably concurrent package uploads", e); //retest if the VNF package exists in CBAM. It might happen that an other operation @@ -140,7 +140,7 @@ public class CatalogManager { */ public String getCbamVnfdContent(String vnfmId, String vnfdId) { try { - byte[] vnfdContent = cbamRestApiProvider.getCbamCatalogApi(vnfmId).content(vnfdId).execute().body().bytes(); + byte[] vnfdContent = cbamRestApiProvider.getCbamCatalogApi(vnfmId).content(vnfdId).blockingFirst().bytes(); String vnfdPath = getVnfdLocation(new ByteArrayInputStream(vnfdContent)); return new String(getFileInZip(new ByteArrayInputStream(vnfdContent), vnfdPath).toByteArray()); } catch (Exception e) { @@ -158,14 +158,14 @@ public class CatalogManager { private CatalogAdapterVnfpackage queryPackageFromCBAM(String cbamVnfdId, DefaultApi cbamCatalogApi) { try { - return cbamCatalogApi.getById(cbamVnfdId).execute().body(); + return cbamCatalogApi.getById(cbamVnfdId).blockingFirst(); } catch (Exception e) { throw buildFatalFailure(logger, "Unable to query VNF package with " + cbamVnfdId + " from CBAM", e); } } private boolean isPackageReplicatedToCbam(String cbamVnfdId, DefaultApi cbamCatalogApi) throws IOException { - for (CatalogAdapterVnfpackage vnfPackage : cbamCatalogApi.list().execute().body()) { + for (CatalogAdapterVnfpackage vnfPackage : cbamCatalogApi.list().blockingFirst()) { if (vnfPackage.getVnfdId().equals(cbamVnfdId)) { return true; } 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 b7dd7168..ce9da78c 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 @@ -218,9 +218,7 @@ public class LifecycleManager { private void instantiateVnf(String vnfmId, List<ExtVirtualLinkInfo> extVirtualLinkInfos, AdditionalParameters additionalParameters, String onapVnfdId, String vnfmVnfdId, String vnfId, String vimId, JobInfo jobInfo) { String vnfdContent = catalogManager.getCbamVnfdContent(vnfmId, vnfmVnfdId); GrantVNFResponseVim vim = grantManager.requestGrantForInstantiate(vnfmId, vnfId, vimId, onapVnfdId, additionalParameters.getInstantiationLevel(), vnfdContent, jobInfo.getJobId()); - if (vim.getVimId() == null) { - throw buildFatalFailure(logger, "VF-C did not send VIM identifier in grant response"); - } + handleBackwardIncompatibleApiChangesInVfc(vim); VimInfo vimInfo = vimInfoProvider.getVimInfo(vim.getVimId()); InstantiateVnfRequest instantiationRequest = new InstantiateVnfRequest(); addExternalLinksToRequest(extVirtualLinkInfos, additionalParameters, instantiationRequest, vimId); @@ -248,13 +246,37 @@ public class LifecycleManager { waitForOperationToFinish(vnfmId, vnfId, operationExecution.getId()); } + private void handleBackwardIncompatibleApiChangesInVfc(GrantVNFResponseVim vim) { + if (vim.getVimId() == null) { + if (vim.getVimid() == null) { + throw buildFatalFailure(logger, "VF-C did not send VIM identifier in grant response"); + } else { + vim.setVimId(vim.getVimid()); + } + } + if (vim.getAccessInfo() == null) { + if (vim.getAccessinfo() == null) { + throw buildFatalFailure(logger, "VF-C did not send access info in grant response"); + } else { + vim.setAccessInfo(vim.getAccessinfo()); + } + } + } + private com.nokia.cbam.lcm.v32.model.VimInfo addVim(AdditionalParameters additionalParameters, String vimId, GrantVNFResponseVim vim, VimInfo vimInfo) { if (additionalParameters.getVimType() == OPENSTACK_V2_INFO) { return buildOpenStackV2INFO(vimId, vim, vimInfo); } else if (additionalParameters.getVimType() == OPENSTACK_V3_INFO) { + if (isEmpty(vimInfo.getDomain())) { + if (isEmpty(additionalParameters.getDomain())) { + throw buildFatalFailure(logger, "The cloud did not supply the cloud domain (Amsterdam release) and was not supplied as additional data"); + } else { + logger.warn("Setting domain from additional parameters"); + vimInfo.setDomain(additionalParameters.getDomain()); + } + } return buildOpenStackV3INFO(vimId, vim, vimInfo); - } else { //OTHER VIM TYPE is not possible return buildVcloudInfo(vimId, vimInfo); @@ -287,10 +309,10 @@ public class LifecycleManager { return childElement(deploymentFlavorProperties, "flavour_id").getAsString(); } - private Set<Map.Entry<String, JsonElement>> getAcceptableOperationParameters(String vnfdContent, String categroryOfOperation, String operationName) { + private Set<Map.Entry<String, JsonElement>> getAcceptableOperationParameters(String vnfdContent, String categoryOfOperation, String operationName) { JsonObject root = new Gson().toJsonTree(new Yaml().load(vnfdContent)).getAsJsonObject(); JsonObject interfaces = child(child(child(root, "topology_template"), "substitution_mappings"), "interfaces"); - JsonObject additionalParameters = child(child(child(child(interfaces, categroryOfOperation), operationName), "inputs"), "additional_parameters"); + JsonObject additionalParameters = child(child(child(child(interfaces, categoryOfOperation), operationName), "inputs"), "additional_parameters"); return additionalParameters.entrySet(); } |