diff options
author | 2017-04-11 13:30:42 +0200 | |
---|---|---|
committer | 2017-04-11 15:34:19 +0200 | |
commit | b6b7bef8bdcad15af01ac88a038dd763ce59f68f (patch) | |
tree | 399d39da23aaa37701e487df064e3e0c27709ef3 /asdc-controller/src/main/java/org/openecomp/mso/asdc/installer | |
parent | 19340cad94eeaa1b580f7c0c99531de499e8ca14 (diff) |
[MSO-8] Update the maven dependency
Update the maven depenency for sdc-distribution-client to cooperate with the sdc changes.
Change-Id: I2da936e5c40cb68c7181bb78307192dd5655b5dc
Signed-off-by: xg353y <xg353y@intl.att.com>
Diffstat (limited to 'asdc-controller/src/main/java/org/openecomp/mso/asdc/installer')
6 files changed, 593 insertions, 186 deletions
diff --git a/asdc-controller/src/main/java/org/openecomp/mso/asdc/installer/ASDCElementInfo.java b/asdc-controller/src/main/java/org/openecomp/mso/asdc/installer/ASDCElementInfo.java index 5e59be526f..e649a992f8 100644 --- a/asdc-controller/src/main/java/org/openecomp/mso/asdc/installer/ASDCElementInfo.java +++ b/asdc-controller/src/main/java/org/openecomp/mso/asdc/installer/ASDCElementInfo.java @@ -7,9 +7,9 @@ * 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. @@ -35,12 +35,12 @@ import org.openecomp.mso.asdc.client.ASDCConfiguration; * A class representing a generic element whose information can be used for example to log artifacts, resource... data. */ public class ASDCElementInfo { - + /** * A default, empty instance used in case a source element was not correctly provided. */ public static final ASDCElementInfo EMPTY_INSTANCE = new ASDCElementInfo(); - + /** * Used to define the other possible ASDC Element types (usually in addition to existing artifact types, etc.).<br/> * <br/> @@ -60,17 +60,17 @@ public class ASDCElementInfo { * The map of element information fields useful for logging. The complete contents of this list will be concatenated. */ private final Map<String, String> elementInfoMap = new HashMap<>(); - + /** * The type of this element. */ private final String type; - + private ASDCElementInfo () { // Private parameterless constructor. Not visible, only used for EMPTY_INSTANCE. this.type = ""; } - + /** * Artifact-type based constructor. Requires a valid artifact type. * @param artifactType The artifact type @@ -79,7 +79,7 @@ public class ASDCElementInfo { // We need the exact type name here... this.type = artifactType; } - + /** * 'Other element type'-based constructor. Requires a valid element type. * @param elementType An ASDCElementTypeEnum entry. This will usually contain enumerated types not in the existing @@ -88,10 +88,10 @@ public class ASDCElementInfo { // We need the exact type name here... this.type = elementType.name(); } - + /** * Add an information entry (name, UUID, etc.) from an artifact/resource/..., once a at time. - * + * * @param key The key (name) of the information entry (Artifact UUID, Resource Name, etc.) * @param value The value bound to the information entry. */ @@ -100,7 +100,7 @@ public class ASDCElementInfo { this.getElementInfoMap().put(key, value); } } - + /** * Returns an aggregated, formatted list of the expected details about an ASDC element. * (non-Javadoc) @@ -123,7 +123,7 @@ public class ASDCElementInfo { } return sb.toString(); } - + /** * The type that was defined at creation time. This is typically VNF_RESOURCE, VF_MODULE_METADATA, HEAT_ENV, etc. * @return The type of this element information type. This will usually be either an ArtifactTypeEnum entry name or an ASDCElementTypeEnum entry name. @@ -150,7 +150,7 @@ public class ASDCElementInfo { * <li>Resource Instance Name</li> * <li>Resource Instance UUID</li> * </ul> - * + * * @param vfResourceStructure The VfResourceStructure to use as source of information (see {@link VfResourceStructure}). * @return an ASDCElementInfo using the information held in the VNF Resource. */ @@ -173,7 +173,7 @@ public class ASDCElementInfo { * <li>Module Model Name</li> * <li>Module Model UUID</li> * </ul> - * + * * @param vfModuleStructure The VfModuleStructure to use as source of information (see {@link VfModuleStructure}). * @return an ASDCElementInfo using the information held in the VF Module. */ @@ -182,12 +182,12 @@ public class ASDCElementInfo { return EMPTY_INSTANCE; } ASDCElementInfo elementInfo = new ASDCElementInfo(ASDCConfiguration.VF_MODULES_METADATA); - IVfModuleMetadata moduleMetadata = vfModuleStructure.getVfModuleMetadata(); + IVfModuleData moduleMetadata = vfModuleStructure.getVfModuleMetadata(); elementInfo.addElementInfo("Module Model Name", moduleMetadata.getVfModuleModelName()); elementInfo.addElementInfo("Module Model Invariant UUID", moduleMetadata.getVfModuleModelInvariantUUID()); return elementInfo; } - + /** * Create an ASDCElementInfo object from an IArtfiactInfo instance.<br/> * <br/> @@ -196,7 +196,7 @@ public class ASDCElementInfo { * <li>IArtifactInfo Name</li> * <li>IArtifactInfo UUID</li> * </ul> - * + * * @param artifactInfo The VfModuleStructure to use as source of information (see {@link IArtifactInfo}). * @return an ASDCElementInfo using the information held in the IArtifactInfo instance. */ diff --git a/asdc-controller/src/main/java/org/openecomp/mso/asdc/installer/IVfModuleData.java b/asdc-controller/src/main/java/org/openecomp/mso/asdc/installer/IVfModuleData.java new file mode 100644 index 0000000000..d3aa0411a9 --- /dev/null +++ b/asdc-controller/src/main/java/org/openecomp/mso/asdc/installer/IVfModuleData.java @@ -0,0 +1,54 @@ +/*- + * ============LICENSE_START======================================================= + * OPENECOMP - MSO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.mso.asdc.installer; + +import java.util.Map; + + +public interface IVfModuleData { + + // Method descriptor #4 ()Ljava/lang/String; + public abstract java.lang.String getVfModuleModelName(); + + // Method descriptor #4 ()Ljava/lang/String; + public abstract java.lang.String getVfModuleModelInvariantUUID(); + + // Method descriptor #4 ()Ljava/lang/String; + public abstract java.lang.String getVfModuleModelCustomizationUUID(); + + // Method descriptor #4 ()Ljava/lang/String; + public abstract java.lang.String getVfModuleModelVersion(); + + // Method descriptor #4 ()Ljava/lang/String; + public abstract java.lang.String getVfModuleModelUUID(); + + // Method descriptor #4 ()Ljava/lang/String; + public abstract java.lang.String getVfModuleModelDescription(); + + // Method descriptor #10 ()Z + public abstract boolean isBase(); + + // Method descriptor #12 ()Ljava/util/List; + // Signature: ()Ljava/util/List<Ljava/lang/String;>; + public abstract java.util.List<String> getArtifacts(); + + public abstract java.util.Map<String,String> getProperties(); +} diff --git a/asdc-controller/src/main/java/org/openecomp/mso/asdc/installer/VfModuleMetaData.java b/asdc-controller/src/main/java/org/openecomp/mso/asdc/installer/VfModuleMetaData.java new file mode 100644 index 0000000000..284141b91d --- /dev/null +++ b/asdc-controller/src/main/java/org/openecomp/mso/asdc/installer/VfModuleMetaData.java @@ -0,0 +1,99 @@ +/*- + * ============LICENSE_START======================================================= + * OPENECOMP - MSO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.mso.asdc.installer; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.codehaus.jackson.annotate.JsonAnySetter; +import org.codehaus.jackson.annotate.JsonIgnore; +import org.codehaus.jackson.annotate.JsonProperty; + +import org.openecomp.sdc.api.notification.IVfModuleMetadata; + +public class VfModuleMetaData implements IVfModuleData { + + @JsonProperty("artifacts") + private List<String> artifacts; + + @JsonProperty("properties") + //private List<Map<String, Object>> properties = new ArrayList<>(); + private Map<String,String> properties = new HashMap<>(); + + @JsonIgnore + private Map<String,Object> attributesMap = new HashMap<>(); + + @Override + public List<String> getArtifacts() { + return artifacts; + } + + public Map<String, String> getProperties() { + return properties; + } + + @Override + public String getVfModuleModelDescription() { + return (String)attributesMap.get("vfModuleModelDescription"); + } + + @Override + public String getVfModuleModelInvariantUUID() { + return (String)attributesMap.get("vfModuleModelInvariantUUID"); + } + + public String getVfModuleModelCustomizationUUID() { + return (String)attributesMap.get("vfModuleModelCustomizationUUID"); + } + + @Override + public String getVfModuleModelName() { + return (String)attributesMap.get("vfModuleModelName"); + } + + @Override + public String getVfModuleModelUUID() { + return (String)attributesMap.get("vfModuleModelUUID"); + } + + @Override + public String getVfModuleModelVersion() { + return (String)attributesMap.get("vfModuleModelVersion"); + } + + @Override + public boolean isBase() { + return (boolean)attributesMap.get("isBase"); + } + + + + @SuppressWarnings("unused") + @JsonAnySetter + public final void setAttribute(String attrName, Object attrValue) { + if ((null != attrName) && (!attrName.isEmpty()) && (null != attrValue) && (null != attrValue.toString())) { + this.attributesMap.put(attrName,attrValue); + } + } + +} diff --git a/asdc-controller/src/main/java/org/openecomp/mso/asdc/installer/VfModuleStructure.java b/asdc-controller/src/main/java/org/openecomp/mso/asdc/installer/VfModuleStructure.java index 239bc8ab99..b1e670883c 100644 --- a/asdc-controller/src/main/java/org/openecomp/mso/asdc/installer/VfModuleStructure.java +++ b/asdc-controller/src/main/java/org/openecomp/mso/asdc/installer/VfModuleStructure.java @@ -7,9 +7,9 @@ * 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. @@ -31,24 +31,24 @@ import org.openecomp.mso.asdc.client.exceptions.ArtifactInstallerException; import org.openecomp.mso.db.catalog.beans.VfModule; public final class VfModuleStructure { - - private final IVfModuleMetadata vfModuleMetadata; - + + private final IVfModuleData vfModuleMetadata; + private final VfResourceStructure parentVfResource; - + private VfModule catalogVfModule; /** * The list of artifact existing in this resource hashed by artifactType. */ private final Map<String, List<VfModuleArtifact>> artifactsMap; - - public VfModuleStructure(VfResourceStructure vfParentResource,IVfModuleMetadata vfmoduleMetadata) throws ArtifactInstallerException { - + + public VfModuleStructure(VfResourceStructure vfParentResource,IVfModuleData vfmoduleMetadata) throws ArtifactInstallerException { + vfModuleMetadata = vfmoduleMetadata; parentVfResource = vfParentResource; - + artifactsMap = new HashMap<String, List<VfModuleArtifact>>(); - + for (String artifactUUID:this.vfModuleMetadata.getArtifacts()) { if (vfParentResource.getArtifactsMapByUUID().containsKey(artifactUUID)) { this.addToStructure(vfParentResource.getArtifactsMapByUUID().get(artifactUUID)); @@ -57,42 +57,42 @@ public final class VfModuleStructure { } } } - + private void addToStructure(VfModuleArtifact vfModuleArtifact) { - + if (artifactsMap.containsKey(vfModuleArtifact.getArtifactInfo().getArtifactType())) { artifactsMap.get(vfModuleArtifact.getArtifactInfo().getArtifactType()).add(vfModuleArtifact); - + } else { List<VfModuleArtifact> nestedList = new LinkedList<VfModuleArtifact>(); nestedList.add(vfModuleArtifact); - + artifactsMap.put(vfModuleArtifact.getArtifactInfo().getArtifactType(), nestedList); } } - + public List<VfModuleArtifact> getOrderedArtifactList() { - + List <VfModuleArtifact> artifactsList = new LinkedList <VfModuleArtifact>(); - + artifactsList.addAll(artifactsMap.get(ASDCConfiguration.HEAT)); artifactsList.addAll(artifactsMap.get(ASDCConfiguration.HEAT_ENV)); artifactsList.addAll(artifactsMap.get(ASDCConfiguration.HEAT_VOL)); - + for (VfModuleArtifact artifact:(artifactsMap.get(ASDCConfiguration.HEAT_NESTED))) { artifactsList.add(artifact); } - + for (VfModuleArtifact artifact:(artifactsMap.get(ASDCConfiguration.HEAT_ARTIFACT))) { artifactsList.add(artifact); } - + artifactsList.addAll(artifactsMap.get(ASDCConfiguration.HEAT_VOL)); - + return null; } - public IVfModuleMetadata getVfModuleMetadata() { + public IVfModuleData getVfModuleMetadata() { return vfModuleMetadata; } @@ -112,6 +112,6 @@ public final class VfModuleStructure { public void setCatalogVfModule(VfModule catalogVfModule) { this.catalogVfModule = catalogVfModule; } - - + + } diff --git a/asdc-controller/src/main/java/org/openecomp/mso/asdc/installer/VfResourceStructure.java b/asdc-controller/src/main/java/org/openecomp/mso/asdc/installer/VfResourceStructure.java index 7be5e7010b..d27819bb38 100644 --- a/asdc-controller/src/main/java/org/openecomp/mso/asdc/installer/VfResourceStructure.java +++ b/asdc-controller/src/main/java/org/openecomp/mso/asdc/installer/VfResourceStructure.java @@ -7,9 +7,9 @@ * 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. @@ -20,13 +20,18 @@ package org.openecomp.mso.asdc.installer; - +import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; +import org.codehaus.jackson.JsonParseException; +import org.codehaus.jackson.map.JsonMappingException; +import org.codehaus.jackson.map.ObjectMapper; +import org.codehaus.jackson.type.TypeReference; + import org.openecomp.sdc.api.IDistributionClient; import org.openecomp.sdc.api.notification.IArtifactInfo; import org.openecomp.sdc.api.notification.INotificationData; @@ -35,72 +40,84 @@ import org.openecomp.sdc.api.notification.IVfModuleMetadata; import org.openecomp.sdc.api.results.IDistributionClientDownloadResult; import org.openecomp.mso.asdc.client.ASDCConfiguration; import org.openecomp.mso.asdc.client.exceptions.ArtifactInstallerException; +import org.openecomp.mso.db.catalog.beans.NetworkResourceCustomization; +import org.openecomp.mso.db.catalog.beans.AllottedResourceCustomization; import org.openecomp.mso.db.catalog.beans.Service; +import org.openecomp.mso.db.catalog.beans.ServiceToAllottedResources; +import org.openecomp.mso.db.catalog.beans.ServiceToNetworks; import org.openecomp.mso.db.catalog.beans.VnfResource; /** * This structure exists to avoid having issues if the order of the vfResource/vfmodule artifact is not good (tree structure). - * * */ public final class VfResourceStructure { - + private boolean isDeployedSuccessfully=false; /** - * The Raw notification data. + * The Raw notification data. */ private final INotificationData notification; - + /** * The resource we will try to deploy. */ private final IResourceInstance resourceInstance; - + /** * The list of VfModules defined for this resource. */ private final List<VfModuleStructure> vfModulesStructureList; - + /** * The list of VfModulesMetadata defined for this resource. */ - private List<IVfModuleMetadata> vfModulesMetadataList; - + private List<IVfModuleData> vfModulesMetadataList; + private VnfResource catalogVnfResource; - + + private NetworkResourceCustomization catalogNetworkResourceCustomization; + + private ServiceToNetworks catalogServiceToNetworks; + + private ServiceToAllottedResources catalogServiceToAllottedResources; + + private AllottedResourceCustomization catalogResourceCustomization; + private Service catalogService; - + /** * The list of artifacts existing in this resource hashed by UUID. */ - private final Map<String, VfModuleArtifact> artifactsMapByUUID; - - + private final Map<String, VfModuleArtifact> artifactsMapByUUID; + + public VfResourceStructure(INotificationData notificationdata, IResourceInstance resourceinstance) { notification=notificationdata; resourceInstance=resourceinstance; - + vfModulesStructureList = new LinkedList<VfModuleStructure>(); artifactsMapByUUID = new HashMap<String, VfModuleArtifact>(); } - + + //@Override public void addArtifactToStructure(IDistributionClient distributionClient,IArtifactInfo artifactinfo,IDistributionClientDownloadResult clientResult) throws UnsupportedEncodingException { VfModuleArtifact vfModuleArtifact = new VfModuleArtifact(artifactinfo,clientResult); - + switch(artifactinfo.getArtifactType()) { case ASDCConfiguration.HEAT: case ASDCConfiguration.HEAT_ENV: case ASDCConfiguration.HEAT_VOL: case ASDCConfiguration.HEAT_NESTED: // For 1607 only 1 level tree is supported - case ASDCConfiguration.HEAT_ARTIFACT: + case ASDCConfiguration.HEAT_ARTIFACT: case ASDCConfiguration.HEAT_NET: case ASDCConfiguration.OTHER: artifactsMapByUUID.put(artifactinfo.getArtifactUUID(), vfModuleArtifact); break; case ASDCConfiguration.VF_MODULES_METADATA: - vfModulesMetadataList = distributionClient.decodeVfModuleArtifact(clientResult.getArtifactPayload()); + vfModulesMetadataList = this.decodeVfModuleArtifact(clientResult.getArtifactPayload()); break; default: @@ -110,15 +127,15 @@ public final class VfResourceStructure { } public void createVfModuleStructures() throws ArtifactInstallerException { - + if (vfModulesMetadataList == null) { throw new ArtifactInstallerException("VfModule Meta DATA could not be decoded properly or was not present in the notification"); } - for (IVfModuleMetadata vfModuleMeta:vfModulesMetadataList) { + for (IVfModuleData vfModuleMeta:vfModulesMetadataList) { vfModulesStructureList.add(new VfModuleStructure(this,vfModuleMeta)); } } - + public INotificationData getNotification() { return notification; } @@ -134,7 +151,7 @@ public final class VfResourceStructure { public boolean isDeployedSuccessfully() { return isDeployedSuccessfully; } - + public void setSuccessfulDeployment() { isDeployedSuccessfully = true; } @@ -155,6 +172,42 @@ public final class VfResourceStructure { this.catalogVnfResource = catalogVnfResource; } + // Network Only + public NetworkResourceCustomization getCatalogNetworkResourceCustomization() { + return catalogNetworkResourceCustomization; + } + // Network Only + public void setCatalogNetworkResourceCustomization(NetworkResourceCustomization catalogNetworkResourceCustomization) { + this.catalogNetworkResourceCustomization = catalogNetworkResourceCustomization; + } + // Network Only + public ServiceToNetworks getCatalogServiceToNetworks() { + return catalogServiceToNetworks; + } + // Network Only + public void setCatalogServiceToNetworks( + ServiceToNetworks catalogServiceToNetworks) { + this.catalogServiceToNetworks = catalogServiceToNetworks; + } + + public ServiceToAllottedResources getCatalogServiceToAllottedResources() { + return catalogServiceToAllottedResources; + } + + public void setCatalogServiceToAllottedResources( + ServiceToAllottedResources catalogServiceToAllottedResources) { + this.catalogServiceToAllottedResources = catalogServiceToAllottedResources; + } + + public AllottedResourceCustomization getCatalogResourceCustomization() { + return catalogResourceCustomization; + } + + public void setCatalogResourceCustomization( + AllottedResourceCustomization catalogResourceCustomization) { + this.catalogResourceCustomization = catalogResourceCustomization; + } + public Service getCatalogService() { return catalogService; } @@ -162,4 +215,19 @@ public final class VfResourceStructure { public void setCatalogService(Service catalogService) { this.catalogService = catalogService; } + + public List<IVfModuleData> decodeVfModuleArtifact(byte[] arg0) { + try { + List<IVfModuleData> listVFModuleMetaData = new ObjectMapper().readValue(arg0, new TypeReference<List<VfModuleMetaData>>(){}); + return listVFModuleMetaData; + + } catch (JsonParseException e) { + e.printStackTrace(); + } catch (JsonMappingException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } } diff --git a/asdc-controller/src/main/java/org/openecomp/mso/asdc/installer/heat/VfResourceInstaller.java b/asdc-controller/src/main/java/org/openecomp/mso/asdc/installer/heat/VfResourceInstaller.java index 4cef0f1013..114f6f246b 100644 --- a/asdc-controller/src/main/java/org/openecomp/mso/asdc/installer/heat/VfResourceInstaller.java +++ b/asdc-controller/src/main/java/org/openecomp/mso/asdc/installer/heat/VfResourceInstaller.java @@ -7,9 +7,9 @@ * 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. @@ -20,15 +20,19 @@ package org.openecomp.mso.asdc.installer.heat; - +import java.sql.Timestamp; +import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.Set; import org.hibernate.exception.ConstraintViolationException; import org.hibernate.exception.LockAcquisitionException; - import org.openecomp.sdc.api.notification.IArtifactInfo; + import org.openecomp.mso.asdc.client.ASDCConfiguration; import org.openecomp.mso.asdc.client.exceptions.ArtifactInstallerException; import org.openecomp.mso.asdc.installer.ASDCElementInfo; @@ -43,7 +47,11 @@ import org.openecomp.mso.db.catalog.beans.HeatEnvironment; import org.openecomp.mso.db.catalog.beans.HeatFiles; import org.openecomp.mso.db.catalog.beans.HeatTemplate; import org.openecomp.mso.db.catalog.beans.HeatTemplateParam; +import org.openecomp.mso.db.catalog.beans.NetworkResourceCustomization; +import org.openecomp.mso.db.catalog.beans.AllottedResourceCustomization; import org.openecomp.mso.db.catalog.beans.Service; +import org.openecomp.mso.db.catalog.beans.ServiceToAllottedResources; +import org.openecomp.mso.db.catalog.beans.ServiceToNetworks; import org.openecomp.mso.db.catalog.beans.VfModule; import org.openecomp.mso.db.catalog.beans.VnfResource; import org.openecomp.mso.logger.MessageEnum; @@ -58,18 +66,26 @@ public class VfResourceInstaller implements IVfResourceInstaller { } @Override - public boolean isResourceAlreadyDeployed(VfResourceStructure vfResourceStructure) + public boolean isResourceAlreadyDeployed(VfResourceStructure vfResourceStruct) throws ArtifactInstallerException { + + CatalogDatabase db = new CatalogDatabase(); boolean status = false; + VfResourceStructure vfResourceStructure = (VfResourceStructure)vfResourceStruct; + + try { - try (CatalogDatabase db = new CatalogDatabase()) { + String resourceType = vfResourceStruct.getResourceInstance().getResourceType(); + String category = vfResourceStruct.getResourceInstance().getCategory(); - logger.info(MessageEnum.ASDC_CHECK_HEAT_TEMPLATE, "VNFResource", + // Check for duplicate VF Module that is not an Allotted Resource + if(resourceType.equals("VF") && !category.equalsIgnoreCase("Allotted Resource")){ + logger.info(MessageEnum.ASDC_CHECK_HEAT_TEMPLATE, "VNFResource", VfResourceInstaller.createVNFName(vfResourceStructure), BigDecimalVersion.castAndCheckNotificationVersionToString( vfResourceStructure.getNotification().getServiceVersion()), "", ""); - VnfResource vnfResource = db.getVnfResource( + VnfResource vnfResource = db.getVnfResource( VfResourceInstaller.createVNFName(vfResourceStructure), BigDecimalVersion.castAndCheckNotificationVersionToString( vfResourceStructure.getNotification().getServiceVersion())); @@ -79,23 +95,73 @@ public class VfResourceInstaller implements IVfResourceInstaller { } + } + + // Check dup for VF Allotted Resource + if(resourceType.equals("VF") && category.equalsIgnoreCase("Allotted Resource")){ + logger.info(MessageEnum.ASDC_CHECK_HEAT_TEMPLATE, "AllottedResource", + vfResourceStruct.getResourceInstance().getResourceInstanceName(), + BigDecimalVersion.castAndCheckNotificationVersionToString( + vfResourceStructure.getNotification().getServiceVersion()), "", ""); + + List<AllottedResourceCustomization> allottedResources = db.getAllAllottedResourcesByServiceModelUuid(vfResourceStruct.getNotification().getServiceUUID()); + + if(allottedResources != null && allottedResources.size() > 0){ + for(AllottedResourceCustomization allottedResource : allottedResources){ + + String existingAllottedResource = allottedResource.getModelCustomizationUuid(); + String notificationAllottedResource = vfResourceStruct.getResourceInstance().getResourceCustomizationUUID(); + + if(existingAllottedResource.equals(notificationAllottedResource)){ + status=true; + break; + } + } + + } + } + + // Check Network for duplicates + if(resourceType.equals("VL")){ + logger.info(MessageEnum.ASDC_CHECK_HEAT_TEMPLATE, "NetworkResource", + vfResourceStruct.getResourceInstance().getResourceInstanceName(), + BigDecimalVersion.castAndCheckNotificationVersionToString( + vfResourceStructure.getNotification().getServiceVersion()), "", ""); + + List<NetworkResourceCustomization> networkResources = db.getAllNetworksByServiceModelUuid(vfResourceStruct.getNotification().getServiceUUID()); + + if(networkResources != null && networkResources.size() > 0){ + for(NetworkResourceCustomization networkResource : networkResources){ + + String existingNetworkResource = networkResource.getModelCustomizationUuid(); + String notificationNetworkResource = vfResourceStruct.getResourceInstance().getResourceCustomizationUUID(); + + if(existingNetworkResource.equals(notificationNetworkResource)){ + status=true; + break; + } + } + + } + } + if (status) { logger.info(MessageEnum.ASDC_ARTIFACT_ALREADY_DEPLOYED_DETAIL, vfResourceStructure.getResourceInstance().getResourceInstanceName(), - vfResourceStructure.getResourceInstance().getResourceUUID(), + vfResourceStructure.getResourceInstance().getResourceCustomizationUUID(), vfResourceStructure.getNotification().getServiceName(), BigDecimalVersion.castAndCheckNotificationVersionToString( vfResourceStructure.getNotification().getServiceVersion()), vfResourceStructure.getNotification().getServiceUUID(), - vfResourceStructure.getResourceInstance().getResourceName(), "", ""); + vfResourceStructure.getResourceInstance().getResourceName(),"", ""); } else { logger.info(MessageEnum.ASDC_ARTIFACT_NOT_DEPLOYED_DETAIL, vfResourceStructure.getResourceInstance().getResourceInstanceName(), - vfResourceStructure.getResourceInstance().getResourceUUID(), + vfResourceStructure.getResourceInstance().getResourceCustomizationUUID(), vfResourceStructure.getNotification().getServiceName(), BigDecimalVersion.castAndCheckNotificationVersionToString( vfResourceStructure.getNotification().getServiceVersion()), - vfResourceStructure.getNotification().getServiceUUID(), + vfResourceStructure.getNotification().getServiceUUID(), vfResourceStructure.getResourceInstance().getResourceName(),"", ""); } @@ -108,13 +174,15 @@ public class VfResourceInstaller implements IVfResourceInstaller { } @Override - public void installTheResource(VfResourceStructure vfResourceStructure) throws ArtifactInstallerException { + public void installTheResource(VfResourceStructure vfResourceStruct) throws ArtifactInstallerException { // 1. Add the DB object list (Hashed) to be created from the HashMap // UUID // The DB objects will be stored in each VfModuleArtifact objects // Those objects could be reused by different VfModule + VfResourceStructure vfResourceStructure = (VfResourceStructure)vfResourceStruct; + for (VfModuleArtifact vfModuleArtifact : vfResourceStructure.getArtifactsMapByUUID().values()) { switch (vfModuleArtifact.getArtifactInfo().getArtifactType()) { @@ -138,26 +206,53 @@ public class VfResourceInstaller implements IVfResourceInstaller { } } - + // in case of deployment failure, use a string that will represent the type of artifact that failed... List<ASDCElementInfo> artifactListForLogging = new ArrayList<>(); - + CatalogDatabase catalogDB = new CatalogDatabase(); // 2. Create the VFModules/VNFResource objects by linking them to the // objects created before and store them in Resource/module structure // Opening a DB transaction, starting from here try { - + VfResourceInstaller.createService(vfResourceStructure); - - VfResourceInstaller.createVnfResource(vfResourceStructure); + + String resourceType = vfResourceStructure.getResourceInstance().getResourceType(); + String resourceCategory = vfResourceStructure.getResourceInstance().getCategory(); + + if(resourceType.equals("VF")){ + + if(resourceCategory.equalsIgnoreCase("Allotted Resource")){ + VfResourceInstaller.createAllottedResourceCustomization(vfResourceStructure); + catalogDB.saveAllottedResourceCustomization(vfResourceStructure.getCatalogResourceCustomization()); + } else { + VfResourceInstaller.createVnfResource(vfResourceStructure); + catalogDB.saveOrUpdateVnfResource(vfResourceStructure.getCatalogVnfResource()); + } + } + + if(resourceType.equals("VL")){ + VfResourceInstaller.createNetworkResourceCustomization(vfResourceStructure); + catalogDB.saveNetworkResourceCustomization(vfResourceStructure.getCatalogNetworkResourceCustomization()); + } // Add this one for logging artifactListForLogging.add(ASDCElementInfo.createElementFromVfResourceStructure(vfResourceStructure)); - - catalogDB.saveOrUpdateVnfResource(vfResourceStructure.getCatalogVnfResource()); + + //catalogDB.saveOrUpdateVnfResource(vfResourceStructure.getCatalogVnfResource()); catalogDB.saveService(vfResourceStructure.getCatalogService()); - + + // Now that the service has been added we can populate the Service_to_AllottedResources table + if(resourceType.equals("VF") && resourceCategory.equalsIgnoreCase("Allotted Resource")){ + catalogDB.saveServiceToAllottedResources(vfResourceStructure.getCatalogServiceToAllottedResources()); + } + + // Now that the service has been added we can populate the Service_to_Network table + if(resourceType.equals("VL")){ + catalogDB.saveServiceToNetworks(vfResourceStructure.getCatalogServiceToNetworks()); + } + for (VfModuleStructure vfModuleStructure : vfResourceStructure.getVfModuleStructure()) { // Here we set the right db structure according to the Catalog @@ -170,14 +265,14 @@ public class VfResourceInstaller implements IVfResourceInstaller { HeatTemplate heatMainTemplate = null; HeatEnvironment heatEnv = null; - + HeatTemplate heatVolumeTemplate = null; HeatEnvironment heatVolumeEnv = null; - + if (vfModuleStructure.getArtifactsMap().containsKey(ASDCConfiguration.HEAT)) { IArtifactInfo mainEnvArtifactInfo = vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT) .get(0).getArtifactInfo().getGeneratedArtifact(); - + // MAIN HEAT heatMainTemplate = (HeatTemplate) vfModuleStructure.getArtifactsMap() .get(ASDCConfiguration.HEAT).get(0).getCatalogObject(); @@ -185,77 +280,77 @@ public class VfResourceInstaller implements IVfResourceInstaller { // Add this one for logging artifactListForLogging.add(ASDCElementInfo .createElementFromVfArtifactInfo(vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT).get(0).getArtifactInfo())); - + catalogDB.saveHeatTemplate(heatMainTemplate, heatMainTemplate.getParameters()); // Indicate we have deployed it in the DB vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT).get(0).incrementDeployedInDB(); - - + + // VOLUME HEAT // We expect only one VOL HEAT per VFMODULE // we can also obtain from it the Env ArtifactInfo, that's why // we get the Volume IArtifactInfo - + if (vfModuleStructure.getArtifactsMap().containsKey(ASDCConfiguration.HEAT_VOL)) { IArtifactInfo volEnvArtifactInfo = vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT_VOL).get(0) .getArtifactInfo().getGeneratedArtifact(); - + heatVolumeTemplate = (HeatTemplate) vfModuleStructure.getArtifactsMap() .get(ASDCConfiguration.HEAT_VOL).get(0).getCatalogObject(); - + // Add this one for logging artifactListForLogging.add(ASDCElementInfo.createElementFromVfArtifactInfo(vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT_VOL).get(0).getArtifactInfo())); catalogDB.saveHeatTemplate(heatVolumeTemplate, heatVolumeTemplate.getParameters()); // Indicate we have deployed it in the DB vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT_VOL).get(0).incrementDeployedInDB(); - + if (volEnvArtifactInfo != null) { heatVolumeEnv = (HeatEnvironment) vfResourceStructure.getArtifactsMapByUUID() .get(volEnvArtifactInfo.getArtifactUUID()).getCatalogObject(); // Add this one for logging artifactListForLogging.add(ASDCElementInfo.createElementFromVfArtifactInfo(volEnvArtifactInfo)); - + catalogDB.saveHeatEnvironment(heatVolumeEnv); // Indicate we have deployed it in the DB vfResourceStructure.getArtifactsMapByUUID().get(volEnvArtifactInfo.getArtifactUUID()).incrementDeployedInDB(); } - + } - + // NESTED HEAT // Here we expect many HEAT_NESTED template to be there // check first if we really have nested heat templates if (vfModuleStructure.getArtifactsMap().containsKey(ASDCConfiguration.HEAT_NESTED)) { for (VfModuleArtifact heatNestedArtifact : vfModuleStructure.getArtifactsMap() .get(ASDCConfiguration.HEAT_NESTED)) { - + // Check if this nested is well referenced by the MAIN HEAT String parentArtifactType = VfResourceInstaller.identifyParentOfNestedTemplate(vfModuleStructure,heatNestedArtifact); HeatTemplate heatNestedTemplate = (HeatTemplate) heatNestedArtifact.getCatalogObject(); - + if (parentArtifactType != null) { - + switch (parentArtifactType) { case ASDCConfiguration.HEAT: - + // Add this one for logging artifactListForLogging.add(ASDCElementInfo.createElementFromVfArtifactInfo(heatNestedArtifact.getArtifactInfo())); - + catalogDB.saveNestedHeatTemplate (heatMainTemplate.getId(), heatNestedTemplate, heatNestedTemplate.getTemplateName()); // Indicate we have deployed it in the DB heatNestedArtifact.incrementDeployedInDB(); break; case ASDCConfiguration.HEAT_VOL: - + // Add this one for logging artifactListForLogging.add(ASDCElementInfo.createElementFromVfArtifactInfo(heatNestedArtifact.getArtifactInfo())); catalogDB.saveNestedHeatTemplate (heatVolumeTemplate.getId(), heatNestedTemplate, heatNestedTemplate.getTemplateName()); // Indicate we have deployed it in the DB heatNestedArtifact.incrementDeployedInDB(); break; - + default: break; @@ -263,49 +358,49 @@ public class VfResourceInstaller implements IVfResourceInstaller { } else { // Assume it belongs to HEAT MAIN // Add this one for logging artifactListForLogging.add(ASDCElementInfo.createElementFromVfArtifactInfo(heatNestedArtifact.getArtifactInfo())); - + catalogDB.saveNestedHeatTemplate (heatMainTemplate.getId(), heatNestedTemplate, heatNestedTemplate.getTemplateName()); // Indicate we have deployed it in the DB heatNestedArtifact.incrementDeployedInDB(); } } } - + if (mainEnvArtifactInfo != null) { heatEnv = (HeatEnvironment) vfResourceStructure.getArtifactsMapByUUID() .get(mainEnvArtifactInfo.getArtifactUUID()).getCatalogObject(); // Add this one for logging artifactListForLogging.add(ASDCElementInfo.createElementFromVfArtifactInfo(mainEnvArtifactInfo)); - + catalogDB.saveHeatEnvironment(heatEnv); // Indicate we have deployed it in the DB vfResourceStructure.getArtifactsMapByUUID().get(mainEnvArtifactInfo.getArtifactUUID()).incrementDeployedInDB(); } - + } - - + + // here we expect one VFModule to be there VfResourceInstaller.createVfModule(vfModuleStructure,heatMainTemplate, heatVolumeTemplate, heatEnv, heatVolumeEnv); VfModule vfModule = vfModuleStructure.getCatalogVfModule(); // Add this one for logging artifactListForLogging.add(ASDCElementInfo.createElementFromVfModuleStructure(vfModuleStructure)); - + catalogDB.saveOrUpdateVfModule(vfModule); // Here we expect many HEAT_TEMPLATE files to be there if (vfModuleStructure.getArtifactsMap().containsKey(ASDCConfiguration.HEAT_ARTIFACT)) { for (VfModuleArtifact heatArtifact : vfModuleStructure.getArtifactsMap() .get(ASDCConfiguration.HEAT_ARTIFACT)) { - + HeatFiles heatFile = (HeatFiles) heatArtifact.getCatalogObject(); - + // Add this one for logging artifactListForLogging.add(ASDCElementInfo.createElementFromVfArtifactInfo(heatArtifact.getArtifactInfo())); - - + + catalogDB.saveVfModuleToHeatFiles (vfModule.getId(), heatFile); // Indicate we will deploy it in the DB heatArtifact.incrementDeployedInDB(); @@ -313,10 +408,10 @@ public class VfResourceInstaller implements IVfResourceInstaller { } } - + catalogDB.commit(); vfResourceStructure.setSuccessfulDeployment(); - + } catch (Exception e) { Throwable dbExceptionToCapture = e; @@ -329,12 +424,12 @@ public class VfResourceInstaller implements IVfResourceInstaller { logger.warn(MessageEnum.ASDC_ARTIFACT_ALREADY_DEPLOYED, vfResourceStructure.getResourceInstance().getResourceName(), vfResourceStructure.getNotification().getServiceVersion(), "", "", MsoLogger.ErrorCode.DataError, "Exception - ASCDC Artifact already deployed", e); } else { - String endEvent = "Exception caught during installation of the VFResource. Transaction rollback."; + String endEvent = "Exception caught during installation of " + vfResourceStructure.getResourceInstance().getResourceName() + ". Transaction rollback."; String elementToLog = (artifactListForLogging.size() > 0 ? artifactListForLogging.get(artifactListForLogging.size()-1).toString() : "No element listed"); - logger.error(MessageEnum.ASDC_ARTIFACT_INSTALL_EXC, elementToLog, "", "", MsoLogger.ErrorCode.DataError, "Exception caught during installation of the VFResource. Transaction rollback", e); + logger.error(MessageEnum.ASDC_ARTIFACT_INSTALL_EXC, elementToLog, "", "", MsoLogger.ErrorCode.DataError, "Exception caught during installation of " + vfResourceStructure.getResourceInstance().getResourceName() + ". Transaction rollback", e); catalogDB.rollback(); throw new ArtifactInstallerException( - "Exception caught during installation of the VFResource. Transaction rollback.", e); + "Exception caught during installation of " + vfResourceStructure.getResourceInstance().getResourceName() + ". Transaction rollback.", e); } } finally { @@ -344,10 +439,10 @@ public class VfResourceInstaller implements IVfResourceInstaller { } } - + private static String identifyParentOfNestedTemplate(VfModuleStructure vfModuleStructure,VfModuleArtifact heatNestedArtifact) { - if (vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT) != null + if (vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT) != null && vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT).get(0).getArtifactInfo().getRelatedArtifacts() != null) { for (IArtifactInfo unknownArtifact : vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT).get(0) .getArtifactInfo().getRelatedArtifacts()) { @@ -356,29 +451,29 @@ public class VfResourceInstaller implements IVfResourceInstaller { } } - } - - if (vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT_VOL) != null + } + + if (vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT_VOL) != null && vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT_VOL).get(0).getArtifactInfo().getRelatedArtifacts() != null) { for (IArtifactInfo unknownArtifact:vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT_VOL).get(0).getArtifactInfo().getRelatedArtifacts()) { if (heatNestedArtifact.getArtifactInfo().getArtifactUUID().equals(unknownArtifact.getArtifactUUID())) { return ASDCConfiguration.HEAT_VOL; } - + } } - + // Does not belong to anything return null; - + } - + private static void createVnfResource(VfResourceStructure vfResourceStructure) { VnfResource vnfResource = new VnfResource(); - + vnfResource.setAsdcUuid(vfResourceStructure.getResourceInstance().getResourceUUID()); vnfResource.setDescription(vfResourceStructure.getNotification().getServiceDescription()); - + vnfResource.setOrchestrationMode("HEAT"); // Set the version but Version is stored into ASDC_SERVICE_MODEL_VERSION vnfResource.setVersion(BigDecimalVersion @@ -386,15 +481,59 @@ public class VfResourceInstaller implements IVfResourceInstaller { vnfResource.setVnfType(VfResourceInstaller.createVNFName(vfResourceStructure)); vnfResource.setModelVersion(BigDecimalVersion .castAndCheckNotificationVersionToString(vfResourceStructure.getResourceInstance().getResourceVersion())); - + vnfResource.setModelInvariantUuid(vfResourceStructure.getResourceInstance().getResourceInvariantUUID()); vnfResource.setModelCustomizationName(vfResourceStructure.getResourceInstance().getResourceInstanceName()); + vnfResource.setModelCustomizationUuid(vfResourceStructure.getResourceInstance().getResourceCustomizationUUID()); vnfResource.setModelName(vfResourceStructure.getResourceInstance().getResourceName()); vnfResource.setServiceModelInvariantUUID(vfResourceStructure.getNotification().getServiceInvariantUUID()); - + //vnfResource.setCreated(getCurrentTimeStamp()); + vfResourceStructure.setCatalogVnfResource(vnfResource); } + private static void createNetworkResourceCustomization(VfResourceStructure vfResourceStructure) { + NetworkResourceCustomization networkResourceCustomization = new NetworkResourceCustomization(); + + networkResourceCustomization.setModelCustomizationUuid(vfResourceStructure.getResourceInstance().getResourceCustomizationUUID().trim()); + networkResourceCustomization.setModelName(vfResourceStructure.getResourceInstance().getResourceName().trim()); + networkResourceCustomization.setModelInstanceName(vfResourceStructure.getResourceInstance().getResourceInstanceName().trim()); + networkResourceCustomization.setModelInvariantUuid(vfResourceStructure.getResourceInstance().getResourceInvariantUUID().trim()); + networkResourceCustomization.setModelUuid(vfResourceStructure.getResourceInstance().getResourceUUID().trim()); + networkResourceCustomization.setModelVersion(vfResourceStructure.getResourceInstance().getResourceVersion().trim()); + //networkResourceCustomization.setCreated(getCurrentTimeStamp()); + + vfResourceStructure.setCatalogNetworkResourceCustomization(networkResourceCustomization); + + ServiceToNetworks serviceNetworks = new ServiceToNetworks(); + serviceNetworks.setNetworkModelCustomizationUuid(networkResourceCustomization.getModelCustomizationUuid()); + serviceNetworks.setServiceModelUuid(vfResourceStructure.getNotification().getServiceUUID()); + + vfResourceStructure.setCatalogServiceToNetworks(serviceNetworks); + + } + + private static void createAllottedResourceCustomization(VfResourceStructure vfResourceStructure) { + AllottedResourceCustomization resourceCustomization = new AllottedResourceCustomization(); + + resourceCustomization.setModelCustomizationUuid(vfResourceStructure.getResourceInstance().getResourceCustomizationUUID().trim()); + resourceCustomization.setModelName(vfResourceStructure.getResourceInstance().getResourceName().trim()); + resourceCustomization.setModelInstanceName(vfResourceStructure.getResourceInstance().getResourceInstanceName().trim()); + resourceCustomization.setModelInvariantUuid(vfResourceStructure.getResourceInstance().getResourceInvariantUUID().trim()); + resourceCustomization.setModelUuid(vfResourceStructure.getResourceInstance().getResourceUUID().trim()); + resourceCustomization.setVersion(vfResourceStructure.getResourceInstance().getResourceVersion().trim()); + //resourceCustomization.setCreated(getCurrentTimeStamp()); + + vfResourceStructure.setCatalogResourceCustomization(resourceCustomization); + + ServiceToAllottedResources serviceAllottedResources = new ServiceToAllottedResources(); + serviceAllottedResources.setArModelCustomizationUuid(resourceCustomization.getModelCustomizationUuid()); + serviceAllottedResources.setServiceModelUuid(vfResourceStructure.getNotification().getServiceUUID()); + + vfResourceStructure.setCatalogServiceToAllottedResources(serviceAllottedResources); + + } + private static void createVfModule(VfModuleStructure vfModuleStructure,HeatTemplate heatMain, HeatTemplate heatVolume,HeatEnvironment heatEnv, HeatEnvironment heatVolumeEnv) { VfModule vfModule = new VfModule(); vfModule.setType(createVfModuleName(vfModuleStructure)); @@ -407,21 +546,41 @@ public class VfResourceInstaller implements IVfResourceInstaller { vfModule.setIsBase(0); } + vfModule.setModelCustomizationUuid(vfModuleStructure.getVfModuleMetadata().getVfModuleModelCustomizationUUID()); vfModule.setModelInvariantUuid(vfModuleStructure.getVfModuleMetadata().getVfModuleModelInvariantUUID()); vfModule.setModelName(vfModuleStructure.getVfModuleMetadata().getVfModuleModelName()); - + vfModule.setVersion(BigDecimalVersion.castAndCheckNotificationVersionToString(vfModuleStructure.getParentVfResource().getNotification().getServiceVersion())); vfModule.setModelVersion(BigDecimalVersion.castAndCheckNotificationVersionToString( vfModuleStructure.getVfModuleMetadata().getVfModuleModelVersion())); - + + Map<String,String> map = vfModuleStructure.getVfModuleMetadata().getProperties(); + + if(map != null){ + + if(map.get("vf_module_label") != null){ + vfModule.setLabel(map.get("vf_module_label")); + } + if(map.get("initial_count") != null && map.get("initial_count").length() > 0){ + vfModule.setInitialCount(Integer.parseInt(map.get("initial_count"))); + } + if(map.get("min_vf_module_instances") != null && map.get("min_vf_module_instances").length() > 0){ + vfModule.setMinInstances(Integer.parseInt(map.get("min_vf_module_instances"))); + } + if(map.get("max_vf_module_instances") != null && map.get("max_vf_module_instances").length() > 0){ + vfModule.setMaxInstances(Integer.parseInt(map.get("max_vf_module_instances"))); + } + + } + vfModuleStructure.setCatalogVfModule(vfModule); - + VfResourceInstaller.createVfModuleLinks(vfModule, vfModuleStructure.getParentVfResource().getCatalogVnfResource(), heatMain,heatVolume, heatEnv,heatVolumeEnv); } private static void createVfModuleLinks(VfModule vfModule, VnfResource vnfResource, HeatTemplate heatMain, HeatTemplate heatVolume, HeatEnvironment heatEnv, HeatEnvironment heatVolumeEnv) { - + if (heatMain !=null) { vfModule.setTemplateId(heatMain.getId()); } @@ -434,7 +593,7 @@ public class VfResourceInstaller implements IVfResourceInstaller { if (heatVolumeEnv != null) { vfModule.setVolEnvironmentId(heatVolumeEnv.getId()); } - + vfModule.setVnfResourceId(vnfResource.getId()); } @@ -448,53 +607,53 @@ public class VfResourceInstaller implements IVfResourceInstaller { } - + public static String verifyTheFilePrefixInArtifacts(String filebody, VfResourceStructure vfResourceStructure, List<String> listTypes) { String newFileBody = filebody; for (VfModuleArtifact moduleArtifact:vfResourceStructure.getArtifactsMapByUUID().values()) { - + if (listTypes.contains(moduleArtifact.getArtifactInfo().getArtifactType())) { - + newFileBody = verifyTheFilePrefixInString(newFileBody,moduleArtifact.getArtifactInfo().getArtifactName()); } } return newFileBody; } - + public static String verifyTheFilePrefixInString(final String body, final String filenameToVerify) { - + String needlePrefix = "file:///"; String prefixedFilenameToVerify = needlePrefix+filenameToVerify; - - if ((body == null) || (body.length() == 0) || (filenameToVerify == null) || (filenameToVerify.length() == 0)) { - return body; - } - - StringBuffer sb = new StringBuffer(body.length()); - - int currentIndex = 0; - int startIndex = 0; - - while (currentIndex != -1) { - startIndex = currentIndex; - currentIndex = body.indexOf(prefixedFilenameToVerify, startIndex); - - if (currentIndex == -1) { - break; - } - - // We append from the startIndex up to currentIndex (start of File Name) - sb.append(body.substring(startIndex, currentIndex)); - sb.append(filenameToVerify); - - currentIndex += prefixedFilenameToVerify.length(); - } - - sb.append(body.substring(startIndex)); - + + if ((body == null) || (body.length() == 0) || (filenameToVerify == null) || (filenameToVerify.length() == 0)) { + return body; + } + + StringBuffer sb = new StringBuffer(body.length()); + + int currentIndex = 0; + int startIndex = 0; + + while (currentIndex != -1) { + startIndex = currentIndex; + currentIndex = body.indexOf(prefixedFilenameToVerify, startIndex); + + if (currentIndex == -1) { + break; + } + + // We append from the startIndex up to currentIndex (start of File Name) + sb.append(body.substring(startIndex, currentIndex)); + sb.append(filenameToVerify); + + currentIndex += prefixedFilenameToVerify.length(); + } + + sb.append(body.substring(startIndex)); + return sb.toString(); } - + private static void createHeatTemplateFromArtifact(VfResourceStructure vfResourceStructure, VfModuleArtifact vfModuleArtifact) { HeatTemplate heatTemplate = new HeatTemplate(); @@ -505,11 +664,11 @@ public class VfResourceInstaller implements IVfResourceInstaller { // reused heatTemplate.setAsdcResourceName(vfResourceStructure.getResourceInstance().getResourceName()); heatTemplate.setAsdcUuid(vfModuleArtifact.getArtifactInfo().getArtifactUUID()); - + List<String> typeList = new ArrayList<String>(); typeList.add(ASDCConfiguration.HEAT_NESTED); typeList.add(ASDCConfiguration.HEAT_ARTIFACT); - + heatTemplate.setTemplateBody(verifyTheFilePrefixInArtifacts(vfModuleArtifact.getResult(),vfResourceStructure,typeList)); heatTemplate.setTemplateName(vfModuleArtifact.getArtifactInfo().getArtifactName()); @@ -522,6 +681,13 @@ public class VfResourceInstaller implements IVfResourceInstaller { heatTemplate.setDescription(vfModuleArtifact.getArtifactInfo().getArtifactDescription()); heatTemplate.setVersion(BigDecimalVersion .castAndCheckNotificationVersionToString(vfModuleArtifact.getArtifactInfo().getArtifactVersion())); + + if(vfModuleArtifact.getArtifactInfo().getArtifactChecksum() != null){ + heatTemplate.setArtifactChecksum(vfModuleArtifact.getArtifactInfo().getArtifactChecksum()); + } else { + heatTemplate.setArtifactChecksum("MANUAL_RECORD"); + } + Set<HeatTemplateParam> heatParam = VfResourceInstaller .extractHeatTemplateParameters(vfModuleArtifact.getResult()); heatTemplate.setParameters(heatParam); @@ -536,11 +702,11 @@ public class VfResourceInstaller implements IVfResourceInstaller { heatEnvironment.setName(vfModuleArtifact.getArtifactInfo().getArtifactName()); // TODO Set the label heatEnvironment.setAsdcLabel("Label"); - + List<String> typeList = new ArrayList<String>(); typeList.add(ASDCConfiguration.HEAT); typeList.add(ASDCConfiguration.HEAT_VOL); - + heatEnvironment.setEnvironment(verifyTheFilePrefixInArtifacts(vfModuleArtifact.getResult(),vfResourceStructure,typeList)); heatEnvironment.setAsdcUuid(vfModuleArtifact.getArtifactInfo().getArtifactUUID()); heatEnvironment.setDescription(vfModuleArtifact.getArtifactInfo().getArtifactDescription()); @@ -548,8 +714,14 @@ public class VfResourceInstaller implements IVfResourceInstaller { .castAndCheckNotificationVersionToString(vfModuleArtifact.getArtifactInfo().getArtifactVersion())); heatEnvironment.setAsdcResourceName(VfResourceInstaller.createVNFName(vfResourceStructure)); + if(vfModuleArtifact.getArtifactInfo().getArtifactChecksum() != null){ + heatEnvironment.setArtifactChecksum(vfModuleArtifact.getArtifactInfo().getArtifactChecksum()); + } else{ + heatEnvironment.setArtifactChecksum("MANUAL_RECORD"); + } + vfModuleArtifact.setCatalogObject(heatEnvironment); - + } private static void createHeatFileFromArtifact(VfResourceStructure vfResourceStructure, @@ -566,31 +738,45 @@ public class VfResourceInstaller implements IVfResourceInstaller { .castAndCheckNotificationVersionToString(vfModuleArtifact.getArtifactInfo().getArtifactVersion())); heatFile.setAsdcResourceName(vfResourceStructure.getResourceInstance().getResourceName()); + + if(vfModuleArtifact.getArtifactInfo().getArtifactChecksum() != null){ + heatFile.setArtifactChecksum(vfModuleArtifact.getArtifactInfo().getArtifactChecksum()); + } else { + heatFile.setArtifactChecksum("MANUAL_RECORD"); + } + vfModuleArtifact.setCatalogObject(heatFile); - + } private static void createService(VfResourceStructure vfResourceStructure) { - + Service service = new Service(); service.setDescription(vfResourceStructure.getNotification().getServiceDescription()); service.setServiceName(vfResourceStructure.getNotification().getServiceName()); service.setServiceNameVersionId(vfResourceStructure.getNotification().getServiceUUID()); service.setVersion(vfResourceStructure.getNotification().getServiceVersion()); service.setModelInvariantUUID(vfResourceStructure.getNotification().getServiceInvariantUUID()); - + vfResourceStructure.setCatalogService(service); } - - + + private static String createVNFName(VfResourceStructure vfResourceStructure) { return vfResourceStructure.getNotification().getServiceName() + "/" + vfResourceStructure.getResourceInstance().getResourceInstanceName(); } private static String createVfModuleName(VfModuleStructure vfModuleStructure) { - + return createVNFName(vfModuleStructure.getParentVfResource())+"::"+vfModuleStructure.getVfModuleMetadata().getVfModuleModelName(); } + + private static Timestamp getCurrentTimeStamp() { + + return new Timestamp(new Date().getTime()); + } + + } |