summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoMulticloudUtils.java2
-rw-r--r--adapters/mso-catalog-db-adapter/src/main/resources/db/migration/V7.3__UpdateVnfcCustResourceInputLength.sql4
-rw-r--r--adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/network/MsoNetworkAdapterImpl.java9
-rw-r--r--adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/tenant/TenantAdapterRest.java2
-rw-r--r--asdc-controller/src/main/java/org/onap/so/asdc/installer/heat/ToscaResourceInstaller.java63
-rw-r--r--bpmn/MSOCommonBPMN/src/test/java/org/onap/so/BuildingBlockTestDataSetup.java149
-rw-r--r--bpmn/MSOCommonBPMN/src/test/java/org/onap/so/SerializableChecker.java163
-rw-r--r--bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/servicedecomposition/SerializationTest.java4
-rw-r--r--bpmn/so-bpmn-building-blocks/src/test/java/org/onap/so/SerializableChecker.java163
-rw-r--r--bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCRequestTasks.java3
-rw-r--r--docs/release-notes.rst120
11 files changed, 160 insertions, 522 deletions
diff --git a/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoMulticloudUtils.java b/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoMulticloudUtils.java
index 3eb3fe188d..c648cc2137 100644
--- a/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoMulticloudUtils.java
+++ b/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoMulticloudUtils.java
@@ -525,7 +525,7 @@ public class MsoMulticloudUtils extends MsoHeatUtils implements VduPlugin {
private StackInfo getStackStatus(String cloudSiteId, String cloudOwner, String tenantId, String instanceId,
boolean pollForCompletion, int timeoutMinutes, boolean backout) throws MsoException {
- StackInfo stackInfo = new StackInfo();
+ StackInfo stackInfo;
// If client has requested a final response, poll for stack completion
if (pollForCompletion) {
diff --git a/adapters/mso-catalog-db-adapter/src/main/resources/db/migration/V7.3__UpdateVnfcCustResourceInputLength.sql b/adapters/mso-catalog-db-adapter/src/main/resources/db/migration/V7.3__UpdateVnfcCustResourceInputLength.sql
new file mode 100644
index 0000000000..66c01538f7
--- /dev/null
+++ b/adapters/mso-catalog-db-adapter/src/main/resources/db/migration/V7.3__UpdateVnfcCustResourceInputLength.sql
@@ -0,0 +1,4 @@
+use catalogdb;
+
+ALTER TABLE vnfc_customization
+ MODIFY IF EXISTS RESOURCE_INPUT varchar(20000); \ No newline at end of file
diff --git a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/network/MsoNetworkAdapterImpl.java b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/network/MsoNetworkAdapterImpl.java
index 52b97da61a..5641186eca 100644
--- a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/network/MsoNetworkAdapterImpl.java
+++ b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/network/MsoNetworkAdapterImpl.java
@@ -310,7 +310,6 @@ public class MsoNetworkAdapterImpl implements MsoNetworkAdapter {
// First, look up to see if the Network already exists (by name).
// For HEAT orchestration of networks, the stack name will always match the network name
StackInfo heatStack = null;
- long queryNetworkStarttime = System.currentTimeMillis();
try {
heatStack = heat.queryStack(cloudSiteId, CLOUD_OWNER, tenantId, networkName);
} catch (MsoException me) {
@@ -564,7 +563,6 @@ public class MsoNetworkAdapterImpl implements MsoNetworkAdapter {
// Verify that the Network exists
// For Neutron-based orchestration, the networkId is the Neutron Network UUID.
NetworkInfo netInfo = null;
- long queryNetworkStarttime = System.currentTimeMillis();
try {
netInfo = neutron.queryNetwork(networkId, tenantId, cloudSiteId);
} catch (MsoException me) {
@@ -608,7 +606,6 @@ public class MsoNetworkAdapterImpl implements MsoNetworkAdapter {
// First, look up to see that the Network already exists.
// For Heat-based orchestration, the networkId is the network Stack ID.
StackInfo heatStack = null;
- long queryStackStarttime = System.currentTimeMillis();
try {
heatStack = heat.queryStack(cloudSiteId, CLOUD_OWNER, tenantId, networkName);
} catch (MsoException me) {
@@ -728,7 +725,6 @@ public class MsoNetworkAdapterImpl implements MsoNetworkAdapter {
// Update the network stack
// Ignore MsoStackNotFound exception because we already checked.
- long updateStackStarttime = System.currentTimeMillis();
try {
heatStack = heatWithUpdate.updateStack(cloudSiteId, CLOUD_OWNER, tenantId, networkId, template,
stackParams, true, heatTemplate.getTimeoutMinutes());
@@ -892,9 +888,6 @@ public class MsoNetworkAdapterImpl implements MsoNetworkAdapter {
logger.debug("*** QUERY Network with Network: {} in {}/{}", networkNameOrId, cloudSiteId, tenantId);
- // Will capture execution time for metrics
- long startTime = System.currentTimeMillis();
-
if (commonUtils.isNullOrEmpty(cloudSiteId) || commonUtils.isNullOrEmpty(tenantId)
|| commonUtils.isNullOrEmpty(networkNameOrId)) {
@@ -919,7 +912,6 @@ public class MsoNetworkAdapterImpl implements MsoNetworkAdapter {
String neutronId = null;
// Try Heat first, since networks may be named the same as the Heat stack
StackInfo heatStack = null;
- long queryStackStarttime = System.currentTimeMillis();
try {
heatStack = heat.queryStack(cloudSiteId, CLOUD_OWNER, tenantId, networkNameOrId);
} catch (MsoException me) {
@@ -961,7 +953,6 @@ public class MsoNetworkAdapterImpl implements MsoNetworkAdapter {
// Query directly against the Neutron Network for the details
// no RouteTargets available for ContrailV2 in neutron net-show
// networkId is heatStackId
- long queryNetworkStarttime = System.currentTimeMillis();
try {
NetworkInfo netInfo = neutron.queryNetwork(neutronId, tenantId, cloudSiteId);
if (netInfo != null) {
diff --git a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/tenant/TenantAdapterRest.java b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/tenant/TenantAdapterRest.java
index 6a38cc60e6..c782adec64 100644
--- a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/tenant/TenantAdapterRest.java
+++ b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/tenant/TenantAdapterRest.java
@@ -100,7 +100,7 @@ public class TenantAdapterRest {
logger.debug("createTenant enter: {}", req.toJsonString());
String newTenantId = null;
- TenantRollback tenantRollback = new TenantRollback();
+ TenantRollback tenantRollback;
try {
Holder<String> htenant = new Holder<>();
diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/installer/heat/ToscaResourceInstaller.java b/asdc-controller/src/main/java/org/onap/so/asdc/installer/heat/ToscaResourceInstaller.java
index 8b3bccf892..00ca74b5f4 100644
--- a/asdc-controller/src/main/java/org/onap/so/asdc/installer/heat/ToscaResourceInstaller.java
+++ b/asdc-controller/src/main/java/org/onap/so/asdc/installer/heat/ToscaResourceInstaller.java
@@ -1068,10 +1068,11 @@ public class ToscaResourceInstaller {
EntityQuery.newBuilder("org.openecomp.groups.VfcInstanceGroup"),
TopologyTemplateQuery.newBuilder(SdcTypes.VF).customizationUUID(vfCustomizationUUID), false);
+ Set<VnfcCustomization> existingVnfcGroupSet = new HashSet<>();
for (IEntityDetails groupEntity : vfcEntityList) {
- VnfcInstanceGroupCustomization vnfcInstanceGroupCustomization =
- createVNFCInstanceGroup(groupEntity, nodeTemplate, vnfResource, toscaResourceStruct);
+ VnfcInstanceGroupCustomization vnfcInstanceGroupCustomization = createVNFCInstanceGroup(groupEntity,
+ nodeTemplate, vnfResource, toscaResourceStruct, existingVnfcGroupSet);
vnfcInstanceGroupCustomizationRepo.saveAndFlush(vnfcInstanceGroupCustomization);
}
@@ -1888,7 +1889,7 @@ public class ToscaResourceInstaller {
protected VnfcInstanceGroupCustomization createVNFCInstanceGroup(IEntityDetails vfcInstanceEntity,
NodeTemplate vnfcNodeTemplate, VnfResourceCustomization vnfResourceCustomization,
- ToscaResourceStructure toscaResourceStructure) {
+ ToscaResourceStructure toscaResourceStructure, Set<VnfcCustomization> existingVnfcGroupSet) {
Metadata instanceMetadata = vfcInstanceEntity.getMetadata();
@@ -1958,39 +1959,47 @@ public class ToscaResourceInstaller {
vfcInstanceGroupCustom.setInstanceGroup(vfcInstanceGroup);
ArrayList<Input> inputs = vnfcNodeTemplate.getSubMappingToscaTemplate().getInputs();
- createVFCInstanceGroupMembers(vfcInstanceGroupCustom, vfcInstanceEntity, inputs);
+ createVFCInstanceGroupMembers(vfcInstanceGroupCustom, vfcInstanceEntity, inputs, existingVnfcGroupSet);
return vfcInstanceGroupCustom;
}
private void createVFCInstanceGroupMembers(VnfcInstanceGroupCustomization vfcInstanceGroupCustom,
- IEntityDetails vfcModuleEntity, List<Input> inputList) {
+ IEntityDetails vfcModuleEntity, List<Input> inputList, Set<VnfcCustomization> existingVnfcGroupSet) {
List<IEntityDetails> members = vfcModuleEntity.getMemberNodes();
if (!CollectionUtils.isEmpty(members)) {
for (IEntityDetails vfcEntity : members) {
- VnfcCustomization vnfcCustomization = new VnfcCustomization();
-
- Metadata metadata = vfcEntity.getMetadata();
- vnfcCustomization
- .setModelCustomizationUUID(metadata.getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID));
- vnfcCustomization.setModelInstanceName(vfcEntity.getName());
- vnfcCustomization.setModelUUID(metadata.getValue(SdcPropertyNames.PROPERTY_NAME_UUID));
- vnfcCustomization
- .setModelInvariantUUID(metadata.getValue(SdcPropertyNames.PROPERTY_NAME_INVARIANTUUID));
- vnfcCustomization.setModelVersion(metadata.getValue(SdcPropertyNames.PROPERTY_NAME_VERSION));
- vnfcCustomization.setModelName(metadata.getValue(SdcPropertyNames.PROPERTY_NAME_NAME));
- vnfcCustomization.setToscaNodeType(testNull(vfcEntity.getToscaType()));
- vnfcCustomization
- .setDescription(testNull(metadata.getValue(SdcPropertyNames.PROPERTY_NAME_DESCRIPTION)));
- vnfcCustomization.setResourceInput(getVnfcResourceInput(vfcEntity, inputList));
- vnfcCustomization.setVnfcInstanceGroupCustomization(vfcInstanceGroupCustom);
- List<VnfcCustomization> vnfcCustomizations = vfcInstanceGroupCustom.getVnfcCustomizations();
-
- if (vnfcCustomizations == null) {
- vnfcCustomizations = new ArrayList<>();
- vfcInstanceGroupCustom.setVnfcCustomizations(vnfcCustomizations);
+
+ VnfcCustomization existingVfcGroup = findExistingVfc(existingVnfcGroupSet,
+ vfcEntity.getMetadata().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID));
+
+ if (existingVfcGroup == null) {
+ VnfcCustomization vnfcCustomization = new VnfcCustomization();
+
+ Metadata metadata = vfcEntity.getMetadata();
+ vnfcCustomization.setModelCustomizationUUID(
+ metadata.getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID));
+ vnfcCustomization.setModelInstanceName(vfcEntity.getName());
+ vnfcCustomization.setModelUUID(metadata.getValue(SdcPropertyNames.PROPERTY_NAME_UUID));
+ vnfcCustomization
+ .setModelInvariantUUID(metadata.getValue(SdcPropertyNames.PROPERTY_NAME_INVARIANTUUID));
+ vnfcCustomization.setModelVersion(metadata.getValue(SdcPropertyNames.PROPERTY_NAME_VERSION));
+ vnfcCustomization.setModelName(metadata.getValue(SdcPropertyNames.PROPERTY_NAME_NAME));
+ vnfcCustomization.setToscaNodeType(testNull(vfcEntity.getToscaType()));
+ vnfcCustomization
+ .setDescription(testNull(metadata.getValue(SdcPropertyNames.PROPERTY_NAME_DESCRIPTION)));
+ vnfcCustomization.setResourceInput(getVnfcResourceInput(vfcEntity, inputList));
+ vnfcCustomization.setVnfcInstanceGroupCustomization(vfcInstanceGroupCustom);
+ List<VnfcCustomization> vnfcCustomizations = vfcInstanceGroupCustom.getVnfcCustomizations();
+
+ if (vnfcCustomizations == null) {
+ vnfcCustomizations = new ArrayList<>();
+ vfcInstanceGroupCustom.setVnfcCustomizations(vnfcCustomizations);
+ }
+ vnfcCustomizations.add(vnfcCustomization);
+
+ existingVnfcGroupSet.add(vnfcCustomization);
}
- vnfcCustomizations.add(vnfcCustomization);
}
}
}
diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/BuildingBlockTestDataSetup.java b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/BuildingBlockTestDataSetup.java
index e9d8a5dee9..c421a67e7b 100644
--- a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/BuildingBlockTestDataSetup.java
+++ b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/BuildingBlockTestDataSetup.java
@@ -26,7 +26,6 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
-import org.assertj.core.util.Arrays;
import org.camunda.bpm.engine.delegate.DelegateExecution;
import org.camunda.bpm.engine.impl.pvm.runtime.ExecutionImpl;
import org.junit.Before;
@@ -65,9 +64,6 @@ import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoServiceInstance;
import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoVfModule;
import org.onap.so.bpmn.servicedecomposition.tasks.ExtractPojosForBB;
import org.onap.so.client.exception.BBObjectNotFoundException;
-import org.onap.so.bpmn.servicedecomposition.bbobjects.AllottedResource;
-import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoAllottedResource;
-import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoServiceProxy;
public class BuildingBlockTestDataSetup {
private int collectionCounter;
@@ -80,7 +76,6 @@ public class BuildingBlockTestDataSetup {
private int pnfCounter;
private int projectCounter;
private int serviceInstanceCounter;
- private int serviceProxyCounter;
private int serviceSubscriptionCounter;
private int vfModuleCounter;
private int volumeGroupCounter;
@@ -112,7 +107,6 @@ public class BuildingBlockTestDataSetup {
pnfCounter = 0;
projectCounter = 0;
serviceInstanceCounter = 0;
- serviceProxyCounter = 0;
serviceSubscriptionCounter = 0;
vfModuleCounter = 0;
volumeGroupCounter = 0;
@@ -145,14 +139,6 @@ public class BuildingBlockTestDataSetup {
return userInput;
}
- public Map<String, String> setUserInput() {
- Map<String, String> userInput = buildUserInput();
-
- gBBInput.setUserInput(userInput);
-
- return userInput;
- }
-
public RequestContext buildRequestContext() {
RequestContext requestContext = new RequestContext();
requestContext.setMsoRequestId(UUID.randomUUID().toString());
@@ -216,14 +202,6 @@ public class BuildingBlockTestDataSetup {
return orchestrationContext;
}
- public OrchestrationContext setOrchestrationContext() {
- OrchestrationContext orchestrationContext = buildOrchestrationContext();
-
- gBBInput.setOrchContext(orchestrationContext);
-
- return orchestrationContext;
- }
-
public Collection buildCollection() {
collectionCounter++;
@@ -350,7 +328,7 @@ public class BuildingBlockTestDataSetup {
Collection collection = new Collection();
collection.setId("testId");
- ServiceInstance serviceInstance = null;
+ ServiceInstance serviceInstance;
try {
serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
@@ -363,30 +341,6 @@ public class BuildingBlockTestDataSetup {
return collection;
}
- public InstanceGroup setInstanceGroup() {
- InstanceGroup instanceGroup = new InstanceGroup();
- instanceGroup.setId("testId");
- instanceGroup.setInstanceGroupFunction("testInstanceGroupFunction");
-
- Collection collection = null;
-
- try {
- ServiceInstance serviceInstance =
- extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
- collection = serviceInstance.getCollection();
-
- if (collection == null) {
- collection = setCollection();
- }
- } catch (BBObjectNotFoundException e) {
- collection = setCollection();
- }
-
- collection.setInstanceGroup(instanceGroup);
-
- return instanceGroup;
- }
-
public VpnBinding buildVpnBinding() {
vpnBindingCounter++;
@@ -398,21 +352,6 @@ public class BuildingBlockTestDataSetup {
return vpnBinding;
}
- public VpnBinding setVpnBinding() {
- VpnBinding vpnBinding = buildVpnBinding();
-
- Customer customer = gBBInput.getCustomer();
-
- if (customer == null) {
- customer = buildCustomer();
- }
-
- customer.getVpnBindings().add(vpnBinding);
- lookupKeyMap.put(ResourceKey.VPN_ID, vpnBinding.getVpnId());
-
- return vpnBinding;
- }
-
public InstanceGroup buildInstanceGroup() {
instanceGroupCounter++;
@@ -529,7 +468,7 @@ public class BuildingBlockTestDataSetup {
public VfModule setVfModule() {
VfModule vfModule = buildVfModule();
- GenericVnf genericVnf = null;
+ GenericVnf genericVnf;
try {
genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
@@ -582,8 +521,6 @@ public class BuildingBlockTestDataSetup {
}
public ServiceProxy buildServiceProxy() {
- serviceProxyCounter++;
-
ServiceProxy serviceProxy = new ServiceProxy();
serviceProxy.setServiceInstance(buildServiceInstance());
serviceProxy.getServiceInstance().getVnfs().add(buildGenericVnf());
@@ -617,86 +554,4 @@ public class BuildingBlockTestDataSetup {
return vpnBondingLink;
}
-
- public VpnBondingLink setVpnBondingLink() {
- VpnBondingLink vpnBondingLink = buildVpnBondingLink();
-
- ServiceInstance serviceInstance = null;
-
- try {
- serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
- } catch (BBObjectNotFoundException e) {
- serviceInstance = setServiceInstance();
- }
-
- serviceInstance.getVpnBondingLinks().add(vpnBondingLink);
- lookupKeyMap.put(ResourceKey.VPN_BONDING_LINK_ID, vpnBondingLink.getVpnBondingLinkId());
-
-
- return vpnBondingLink;
- }
-
- public Customer setAvpnCustomer() {
- Customer customer = buildCustomer();
-
- gBBInput.setCustomer(customer);
-
- return customer;
- }
-
- public ServiceProxy setServiceProxy(String uniqueIdentifier, String type) {
- ServiceProxy serviceProxy = new ServiceProxy();
- serviceProxy.setId("testProxyId" + uniqueIdentifier);
- serviceProxy.setType(type);
-
- ModelInfoServiceProxy modelInfo = new ModelInfoServiceProxy();
- modelInfo.setModelInvariantUuid("testProxyModelInvariantUuid" + uniqueIdentifier);
- modelInfo.setModelName("testProxyModelName" + uniqueIdentifier);
- modelInfo.setModelUuid("testProxyModelUuid" + uniqueIdentifier);
- modelInfo.setModelVersion("testProxyModelVersion" + uniqueIdentifier);
- modelInfo.setModelInstanceName("testProxyInstanceName" + uniqueIdentifier);
-
- serviceProxy.setModelInfoServiceProxy(modelInfo);
-
- return serviceProxy;
- }
-
- public AllottedResource setAllottedResource(String uniqueIdentifier) {
- AllottedResource ar = new AllottedResource();
- ar.setId("testAllottedResourceId" + uniqueIdentifier);
-
- ModelInfoAllottedResource modelInfo = new ModelInfoAllottedResource();
- modelInfo.setModelInvariantUuid("testAllottedModelInvariantUuid" + uniqueIdentifier);
- modelInfo.setModelName("testAllottedModelName" + uniqueIdentifier);
- modelInfo.setModelUuid("testAllottedModelUuid" + uniqueIdentifier);
- modelInfo.setModelVersion("testAllottedModelVersion" + uniqueIdentifier);
- modelInfo.setModelInstanceName("testAllottedInstanceName" + uniqueIdentifier);
-
- ar.setModelInfoAllottedResource(modelInfo);
-
- return ar;
- }
-
- public Configuration setConfiguration() {
- Configuration config = new Configuration();
- config.setConfigurationId("testConfigurationId");
- ModelInfoConfiguration modelInfoConfig = new ModelInfoConfiguration();
- modelInfoConfig.setModelCustomizationId("modelCustomizationId");
- modelInfoConfig.setModelVersionId("modelVersionId");
- modelInfoConfig.setModelInvariantId("modelInvariantId");
- modelInfoConfig.setPolicyName("policyName");
- config.setModelInfoConfiguration(modelInfoConfig);
-
- List<Configuration> configurations = new ArrayList<>();
- configurations.add(config);
- ServiceInstance serviceInstance = new ServiceInstance();
- try {
- serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
- } catch (BBObjectNotFoundException e) {
- serviceInstance = setServiceInstance();
- }
- lookupKeyMap.put(ResourceKey.CONFIGURATION_ID, "testConfigurationId");
- serviceInstance.setConfigurations(configurations);
- return config;
- }
}
diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/SerializableChecker.java b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/SerializableChecker.java
deleted file mode 100644
index 47ddea1b4f..0000000000
--- a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/SerializableChecker.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 - 2018 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.onap.so;
-
-import java.io.Serializable;
-import java.lang.reflect.Field;
-import java.lang.reflect.Modifier;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-public final class SerializableChecker {
- public static class SerializationFailure {
- private final String mContainingClass;
- private final String mMemberName;
-
- public SerializationFailure(String inNonSerializableClass, String inMemberName) {
- mContainingClass = inNonSerializableClass;
- mMemberName = inMemberName;
- }
-
- public String getContainingClass() {
- return mContainingClass;
- }
-
- public String getMemberName() {
- return mMemberName;
- }
-
- public String getBadMemberString() {
- if (mMemberName == null)
- return mContainingClass;
- return mContainingClass + "." + mMemberName;
- }
-
- @Override
- public String toString() {
- return "SerializationFailure [mNonSerializableClass=" + mContainingClass + ", mMemberName=" + mMemberName
- + "]";
- }
- }
-
- private static class SerializationCheckerData {
- private Set<Class<?>> mSerializableClasses;
-
- SerializationCheckerData() {
- mSerializableClasses = new HashSet<Class<?>>();
- }
-
- boolean isAlreadyChecked(Class<?> inClass) {
- return mSerializableClasses.contains(inClass);
- }
-
- void addSerializableClass(Class<?> inClass) {
- mSerializableClasses.add(inClass);
- }
- }
-
- private SerializableChecker() {}
-
- public static SerializationFailure isFullySerializable(Class<?> inClass) {
- if (!isSerializable(inClass))
- return new SerializationFailure(inClass.getName(), null);
-
- return isFullySerializable(inClass, new SerializationCheckerData());
- }
-
- private static SerializationFailure isFullySerializable(Class<?> inClass,
- SerializationCheckerData inSerializationCheckerData) {
- for (Field field : declaredFields(inClass)) {
- Class<?> fieldDeclaringClass = field.getType();
-
- if (field.getType() == Object.class)
- continue;
-
- if (Modifier.isStatic(field.getModifiers()))
- continue;
-
- if (field.isSynthetic())
- continue;
-
- if (fieldDeclaringClass.isInterface() || fieldDeclaringClass.isPrimitive())
- continue;
-
- if (Modifier.isAbstract(field.getType().getModifiers()))
- continue;
-
- if (inSerializationCheckerData.isAlreadyChecked(fieldDeclaringClass))
- continue;
-
- if (isSerializable(fieldDeclaringClass)) {
- inSerializationCheckerData.addSerializableClass(inClass);
-
- SerializationFailure failure = isFullySerializable(field.getType(), inSerializationCheckerData);
- if (failure != null)
- return failure;
- else
- continue;
- }
-
- if (Modifier.isTransient(field.getModifiers()))
- continue;
-
- return new SerializationFailure(field.getDeclaringClass().getName(), field.getName());
- }
- return null;
- }
-
- private static boolean isSerializable(Class<?> inClass) {
- Set<Class<?>> interfaces = getInterfaces(inClass);
- if (interfaces == null)
- return false;
- boolean isSerializable = interfaces.contains(Serializable.class);
- if (isSerializable)
- return true;
-
- for (Class<?> classInterface : interfaces) {
- if (isSerializable(classInterface))
- return true;
- }
-
- if (inClass.getSuperclass() != null && isSerializable(inClass.getSuperclass()))
- return true;
-
- return false;
- }
-
- private static Set<Class<?>> getInterfaces(Class<?> inFieldDeclaringClass) {
- return new HashSet<Class<?>>(Arrays.asList(inFieldDeclaringClass.getInterfaces()));
- }
-
- private static List<Field> declaredFields(Class<?> inClass) {
- List<Field> fields = new ArrayList<Field>(Arrays.asList(inClass.getDeclaredFields()));
-
- Class<?> parentClasses = inClass.getSuperclass();
-
- if (parentClasses == null)
- return fields;
- fields.addAll(declaredFields(parentClasses));
-
- return fields;
- }
-}
diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/servicedecomposition/SerializationTest.java b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/servicedecomposition/SerializationTest.java
index b970b95b97..e9e83a59ae 100644
--- a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/servicedecomposition/SerializationTest.java
+++ b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/servicedecomposition/SerializationTest.java
@@ -20,7 +20,6 @@
package org.onap.so.bpmn.servicedecomposition;
-import static org.junit.Assert.assertEquals;
import java.io.ByteArrayOutputStream;
import java.io.Externalizable;
import java.io.File;
@@ -33,8 +32,7 @@ import java.util.Map;
import org.camunda.bpm.engine.delegate.DelegateExecution;
import org.camunda.bpm.engine.impl.pvm.runtime.ExecutionImpl;
import org.junit.Test;
-import org.onap.so.SerializableChecker;
-import org.onap.so.SerializableChecker.SerializationFailure;
+import static org.junit.Assert.assertEquals;
import org.onap.so.bpmn.common.BuildingBlockExecution;
import org.onap.so.bpmn.common.DelegateExecutionImpl;
import org.onap.so.bpmn.servicedecomposition.entities.GeneralBuildingBlock;
diff --git a/bpmn/so-bpmn-building-blocks/src/test/java/org/onap/so/SerializableChecker.java b/bpmn/so-bpmn-building-blocks/src/test/java/org/onap/so/SerializableChecker.java
deleted file mode 100644
index 47ddea1b4f..0000000000
--- a/bpmn/so-bpmn-building-blocks/src/test/java/org/onap/so/SerializableChecker.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 - 2018 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.onap.so;
-
-import java.io.Serializable;
-import java.lang.reflect.Field;
-import java.lang.reflect.Modifier;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-public final class SerializableChecker {
- public static class SerializationFailure {
- private final String mContainingClass;
- private final String mMemberName;
-
- public SerializationFailure(String inNonSerializableClass, String inMemberName) {
- mContainingClass = inNonSerializableClass;
- mMemberName = inMemberName;
- }
-
- public String getContainingClass() {
- return mContainingClass;
- }
-
- public String getMemberName() {
- return mMemberName;
- }
-
- public String getBadMemberString() {
- if (mMemberName == null)
- return mContainingClass;
- return mContainingClass + "." + mMemberName;
- }
-
- @Override
- public String toString() {
- return "SerializationFailure [mNonSerializableClass=" + mContainingClass + ", mMemberName=" + mMemberName
- + "]";
- }
- }
-
- private static class SerializationCheckerData {
- private Set<Class<?>> mSerializableClasses;
-
- SerializationCheckerData() {
- mSerializableClasses = new HashSet<Class<?>>();
- }
-
- boolean isAlreadyChecked(Class<?> inClass) {
- return mSerializableClasses.contains(inClass);
- }
-
- void addSerializableClass(Class<?> inClass) {
- mSerializableClasses.add(inClass);
- }
- }
-
- private SerializableChecker() {}
-
- public static SerializationFailure isFullySerializable(Class<?> inClass) {
- if (!isSerializable(inClass))
- return new SerializationFailure(inClass.getName(), null);
-
- return isFullySerializable(inClass, new SerializationCheckerData());
- }
-
- private static SerializationFailure isFullySerializable(Class<?> inClass,
- SerializationCheckerData inSerializationCheckerData) {
- for (Field field : declaredFields(inClass)) {
- Class<?> fieldDeclaringClass = field.getType();
-
- if (field.getType() == Object.class)
- continue;
-
- if (Modifier.isStatic(field.getModifiers()))
- continue;
-
- if (field.isSynthetic())
- continue;
-
- if (fieldDeclaringClass.isInterface() || fieldDeclaringClass.isPrimitive())
- continue;
-
- if (Modifier.isAbstract(field.getType().getModifiers()))
- continue;
-
- if (inSerializationCheckerData.isAlreadyChecked(fieldDeclaringClass))
- continue;
-
- if (isSerializable(fieldDeclaringClass)) {
- inSerializationCheckerData.addSerializableClass(inClass);
-
- SerializationFailure failure = isFullySerializable(field.getType(), inSerializationCheckerData);
- if (failure != null)
- return failure;
- else
- continue;
- }
-
- if (Modifier.isTransient(field.getModifiers()))
- continue;
-
- return new SerializationFailure(field.getDeclaringClass().getName(), field.getName());
- }
- return null;
- }
-
- private static boolean isSerializable(Class<?> inClass) {
- Set<Class<?>> interfaces = getInterfaces(inClass);
- if (interfaces == null)
- return false;
- boolean isSerializable = interfaces.contains(Serializable.class);
- if (isSerializable)
- return true;
-
- for (Class<?> classInterface : interfaces) {
- if (isSerializable(classInterface))
- return true;
- }
-
- if (inClass.getSuperclass() != null && isSerializable(inClass.getSuperclass()))
- return true;
-
- return false;
- }
-
- private static Set<Class<?>> getInterfaces(Class<?> inFieldDeclaringClass) {
- return new HashSet<Class<?>>(Arrays.asList(inFieldDeclaringClass.getInterfaces()));
- }
-
- private static List<Field> declaredFields(Class<?> inClass) {
- List<Field> fields = new ArrayList<Field>(Arrays.asList(inClass.getDeclaredFields()));
-
- Class<?> parentClasses = inClass.getSuperclass();
-
- if (parentClasses == null)
- return fields;
- fields.addAll(declaredFields(parentClasses));
-
- return fields;
- }
-}
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCRequestTasks.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCRequestTasks.java
index 3383fde0a8..e55fa9e24b 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCRequestTasks.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/sdnc/tasks/SDNCRequestTasks.java
@@ -102,6 +102,9 @@ public class SDNCRequestTasks {
String asyncRequest = (String) execution.getVariable(request.getCorrelationName() + MESSAGE);
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+ dbf.setFeature("http://xml.org/sax/features/external-general-entities", false);
+ dbf.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
+ dbf.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new InputSource(new StringReader(asyncRequest)));
diff --git a/docs/release-notes.rst b/docs/release-notes.rst
index 05c0c14042..4ad5f5876f 100644
--- a/docs/release-notes.rst
+++ b/docs/release-notes.rst
@@ -7,12 +7,12 @@ Service Orchestrator Release Notes
==================================
The SO provides the highest level of service orchestration in the ONAP architecture.
-The SO provides the highest level of service orchestration in the ONAP architecture.
-Version: 1.5.3
+
+Version: 5.0.1
-----------------------
-:Release Date: 2019-10-10
+:Release Date: 2019-10-11
**Docker Images**
@@ -28,6 +28,7 @@ Version: 1.5.3
- onap/so/so-monitoring,1.5.3
- onap/so/vfc-adapter,1.5.3
- onap/so/vnfm-adapter,1.5.3
+ - onap/so/vnfm-simulator,1.5.3
**Release Purpose**
@@ -38,11 +39,109 @@ The R5 El Alto release of ONAP is a maintenance release, focusing on deployabili
The main goal of the El-Alto release was to improve documentation, UT improvement for various kinds of resources.
**Epics**
-
+- [`SO-1756 <https://jira.onap.org/browse/SO-1756>`__\ ] - Enhance SO VNFM Adapter
**Stories**
+- [`SO-2376 <https://jira.onap.org/browse/SO-2376>`__\ ] - Improve fall out case handling
+- [`SO-2363 <https://jira.onap.org/browse/SO-2363>`__\ ] - Update Resume Logic and Add Workflow Listeners
+- [`SO-2353 <https://jira.onap.org/browse/SO-2353>`__\ ] - update logging to match onap logging library
+- [`SO-2352 <https://jira.onap.org/browse/SO-2352>`__\ ] - Improvements to relationship handling in VNFM adapter
+- [`SO-2332 <https://jira.onap.org/browse/SO-2332>`__\ ] - Remove unused table requestdb.active_requests.
+- [`SO-2306 <https://jira.onap.org/browse/SO-2306>`__\ ] - getentity csar logging
+- [`SO-2301 <https://jira.onap.org/browse/SO-2301>`__\ ] - Integrate Logging Library
+- [`SO-2297 <https://jira.onap.org/browse/SO-2297>`__\ ] - updated all sql files including in tests to use
+- [`SO-2291 <https://jira.onap.org/browse/SO-2291>`__\ ] - Created external task utils in a common location
+- [`SO-2283 <https://jira.onap.org/browse/SO-2283>`__\ ] - Convert NetworkCollection to use GetEntity API.
+- [`SO-2282 <https://jira.onap.org/browse/SO-2282>`__\ ] - Convert to use the GetEntity API
+- [`SO-2259 <https://jira.onap.org/browse/SO-2259>`__\ ] - Added default value for when ErrorCode is null in mdc
+- [`SO-2244 <https://jira.onap.org/browse/SO-2244>`__\ ] - Updated VNF and VfModules to use the getEntity API.
+- [`SO-2233 <https://jira.onap.org/browse/SO-2233>`__\ ] - fixed dsl builder to correctly add output
+- [`SO-2232 <https://jira.onap.org/browse/SO-2232>`__\ ] - Initial commit of validation framework to APIH
+- [`SO-2231 <https://jira.onap.org/browse/SO-2231>`__\ ] - asdc controller treat distributionid as requestid in mdc
+- [`SO-2224 <https://jira.onap.org/browse/SO-2224>`__\ ] - Updated vnfc instance groups to use the getEntity API.
+- [`SO-2216 <https://jira.onap.org/browse/SO-2216>`__\ ] - health check now entirely config based
+- [`SO-2205 <https://jira.onap.org/browse/SO-2205>`__\ ] - add rainy day handling with SERVICE_ROLE and type
+- [`SO-2202 <https://jira.onap.org/browse/SO-2202>`__\ ] - Updated cvnfc's to use the getEntity API
+- [`SO-2190 <https://jira.onap.org/browse/SO-2190>`__\ ] - VNFM adapter support two way TLS
+- [`SO-2180 <https://jira.onap.org/browse/SO-2180>`__\ ] - Support oauth for calls from VNFM to VNFM adapter
+- [`SO-2169 <https://jira.onap.org/browse/SO-2169>`__\ ] - Add oauth for calls from VNFM adapter to VNFM
+- [`SO-2157 <https://jira.onap.org/browse/SO-2157>`__\ ] - Upgrade springboot.version from 2.0.5 to 2.1.5
+- [`SO-2147 <https://jira.onap.org/browse/SO-2147>`__\ ] - Converted NetworkResource to use the parser getEntity method
+- [`SO-2143 <https://jira.onap.org/browse/SO-2143>`__\ ] - Implement TLS for calls into VNFM adapter
+- [`SO-2142 <https://jira.onap.org/browse/SO-2142>`__\ ] - mso to enhance get orchestration request to include workflow step
+- [`SO-2122 <https://jira.onap.org/browse/SO-2122>`__\ ] - Added servicename to MDC so that it gets logged and added enter and exit markers
+- [`SO-2121 <https://jira.onap.org/browse/SO-2121>`__\ ] - Removing the application-local.yaml files from the projects to fix CSO pen test issues
+- [`SO-2116 <https://jira.onap.org/browse/SO-2116>`__\ ] - Implement TLS for calls from VNFM adapter to VNFM
+- [`SO-2114 <https://jira.onap.org/browse/SO-2114>`__\ ] - We need to expand column request_status on table archived_infra_requests as well
+- [`SO-2111 <https://jira.onap.org/browse/SO-2111>`__\ ] - add query stack data and populate table step
+- [`SO-2097 <https://jira.onap.org/browse/SO-2097>`__\ ] - Global JJB Migration of SO
+- [`SO-2093 <https://jira.onap.org/browse/SO-2093>`__\ ] - mso will support new requeststate values
+- [`SO-2092 <https://jira.onap.org/browse/SO-2092>`__\ ] - update bpmn to save extsystemerrorsource
+- [`SO-2080 <https://jira.onap.org/browse/SO-2080>`__\ ] - support new query param format
+- [`SO-2068 <https://jira.onap.org/browse/SO-2068>`__\ ] - improved logging when no exception data is found
+- [`SO-2066 <https://jira.onap.org/browse/SO-2066>`__\ ] - SO API Security Matrix
+- [`SO-2064 <https://jira.onap.org/browse/SO-2064>`__\ ] - Alpine porting check
+- [`SO-2057 <https://jira.onap.org/browse/SO-2057>`__\ ] - Update failsafe dependency to 2.0.1
+- [`SO-2055 <https://jira.onap.org/browse/SO-2055>`__\ ] - enhance workflowaction to handle resume func
+- [`SO-2054 <https://jira.onap.org/browse/SO-2054>`__\ ] - add rollback ext system error source
+- [`SO-2052 <https://jira.onap.org/browse/SO-2052>`__\ ] - Javadoc and logging improvement
+- [`SO-2048 <https://jira.onap.org/browse/SO-2048>`__\ ] - Building individual repos for reducing compilation time
+- [`SO-2043 <https://jira.onap.org/browse/SO-2043>`__\ ] - Security updates for maven dependencies
+- [`SO-2035 <https://jira.onap.org/browse/SO-2035>`__\ ] - update apih to accept new uri parameter
+- [`SO-2032 <https://jira.onap.org/browse/SO-2032>`__\ ] - support no payload for alacarte deletes
+- [`SO-2024 <https://jira.onap.org/browse/SO-2024>`__\ ] - Validate ServiceInstance name using createNodesUri.
+- [`SO-2023 <https://jira.onap.org/browse/SO-2023>`__\ ] - add is_data_internal column to request processing data
+- [`SO-2022 <https://jira.onap.org/browse/SO-2022>`__\ ] - Validate name for InstanceGroup, Configuration and Network.
+- [`SO-2021 <https://jira.onap.org/browse/SO-2021>`__\ ] - update multi stage code to accurately skip bbs if true
+- [`SO-2020 <https://jira.onap.org/browse/SO-2020>`__\ ] - mso to validate the name uniqueness during object creation in a ai
+- [`SO-2018 <https://jira.onap.org/browse/SO-2018>`__\ ] - Changes related to eviction of connections from connection pool
+- [`SO-2017 <https://jira.onap.org/browse/SO-2017>`__\ ] - use count format and limit one for exists
+- [`SO-2015 <https://jira.onap.org/browse/SO-2015>`__\ ] - support async operation for vf module operations with sdnc
+- [`SO-2001 <https://jira.onap.org/browse/SO-2001>`__\ ] - Added ext_system_error_source column to requestdb
+- [`SO-1999 <https://jira.onap.org/browse/SO-1999>`__\ ] - replaced String.repeat with static final strings
+- [`SO-1990 <https://jira.onap.org/browse/SO-1990>`__\ ] - resume request copying request body rewrite requestorid
+- [`SO-1976 <https://jira.onap.org/browse/SO-1976>`__\ ] - Enhance naming service support
+- [`SO-1975 <https://jira.onap.org/browse/SO-1975>`__\ ] - Accommodate WAN Networking
+- [`SO-1963 <https://jira.onap.org/browse/SO-1963>`__\ ] - apih resume request handling more generic
+- [`SO-1960 <https://jira.onap.org/browse/SO-1960>`__\ ] - apih to populate original request id
+- [`SO-1914 <https://jira.onap.org/browse/SO-1914>`__\ ] - Renamed NF fields in catalog db pojo
+- [`SO-1902 <https://jira.onap.org/browse/SO-1902>`__\ ] - Added script for adding original_request_id column
+- [`SO-1898 <https://jira.onap.org/browse/SO-1898>`__\ ] - Audit service enhancements
+- [`SO-1897 <https://jira.onap.org/browse/SO-1897>`__\ ] - fix keypair conflict issue in openstack adapter
+- [`SO-1893 <https://jira.onap.org/browse/SO-1893>`__\ ] - Initial checkin of updates for vf module replace
+- [`SO-1867 <https://jira.onap.org/browse/SO-1867>`__\ ] - store openstack request status in requestdb
+- [`SO-1866 <https://jira.onap.org/browse/SO-1866>`__\ ] - Update Rainy day handling to be more robust
+- [`SO-1847 <https://jira.onap.org/browse/SO-1847>`__\ ] - Added inProgress request check to resume
+- [`SO-1831 <https://jira.onap.org/browse/SO-1831>`__\ ] - Resume APIH Functionality
+- [`SO-1807 <https://jira.onap.org/browse/SO-1807>`__\ ] - Store Cloud Request in Database, add to request service
+- [`SO-1697 <https://jira.onap.org/browse/SO-1697>`__\ ] - Support State transition for configuration building blocks
+- [`SO-1538 <https://jira.onap.org/browse/SO-1538>`__\ ] - Integration Test for SO VNFM Adapter - Perform the functional test to validate VNFM Adapter NBI and SOL003-based SBI
+- [`SO-1447 <https://jira.onap.org/browse/SO-1447>`__\ ] - Refine multicloud use of SO cloudsites and identify DB
+- [`SO-1446 <https://jira.onap.org/browse/SO-1446>`__\ ] - Multicloud API updates for generic clouds
-
+**Key Issues Addressed**
+- [`SO-2400 <https://jira.onap.org/browse/SO-2400>`__\ ] - vCPE Create Res Cust Service Error : Execption in create execution list
+- [`SO-2382 <https://jira.onap.org/browse/SO-2382>`__\ ] - SO ConfigAssign Java Exception
+- [`SO-2378 <https://jira.onap.org/browse/SO-2378>`__\ ] - Java lang exception in Homing
+- [`SO-2375 <https://jira.onap.org/browse/SO-2375>`__\ ] - vCPE instantiate gmux fails due to API Handler error
+- [`SO-2357 <https://jira.onap.org/browse/SO-2357>`__\ ] - Distribution of K8S service fails
+- [`SO-2354 <https://jira.onap.org/browse/SO-2354>`__\ ] - vCPE model_customization_id not found on create vfmodule
+- [`SO-2351 <https://jira.onap.org/browse/SO-2351>`__\ ] - SO Distribution Error on Allotted Resource - duplicate primary
+- [`SO-2349 <https://jira.onap.org/browse/SO-2349>`__\ ] - Exception in DMAAP Client when PNF_READY event arrives from PRH
+- [`SO-2337 <https://jira.onap.org/browse/SO-2337>`__\ ] - Git clone not working for CSIT filename too long
+- [`SO-2289 <https://jira.onap.org/browse/SO-2289>`__\ ] - CreateVcpeResCustService_simplified workflow used in PnP PNF registration workflow returns an exception in Dmaap listener
+- [`SO-2229 <https://jira.onap.org/browse/SO-2229>`__\ ] - sdc adapter and openstack container in crash loopback
+- [`SO-2228 <https://jira.onap.org/browse/SO-2228>`__\ ] - SDC Handler crash loopback
+- [`SO-2222 <https://jira.onap.org/browse/SO-2222>`__\ ] - SO 1.5.0-STAGING-latest containers fail liveness probe
+- [`SO-2221 <https://jira.onap.org/browse/SO-2221>`__\ ] - SO 1.5.0-STAGING-latest container fails to start
+- [`SO-2082 <https://jira.onap.org/browse/SO-2082>`__\ ] - Delete Network does not work correctly
+- [`SO-2038 <https://jira.onap.org/browse/SO-2038>`__\ ] - Fix build and harkari-cp version, Get LF to add dependency
+- [`SO-2003 <https://jira.onap.org/browse/SO-2003>`__\ ] - No workflow assigned to 'Dissociate' button in VID
+- [`SO-1934 <https://jira.onap.org/browse/SO-1934>`__\ ] - ETSI Building Block Fails to Execute - Due to variables not being mapped correctly in the workflow
+- [`SO-1892 <https://jira.onap.org/browse/SO-1892>`__\ ] - CatalogDbClent - sql query error
+- [`SO-1809 <https://jira.onap.org/browse/SO-1809>`__\ ] - 'DoDeleteE2EServiceInstance' calls 'AAI GenericGetService' sub-process which is deleted from SO common-bpmn
+- [`SO-1644 <https://jira.onap.org/browse/SO-1644>`__\ ] - SO doesn't keep the proxy settings within the containers
+- [`SO-1605 <https://jira.onap.org/browse/SO-1605>`__\ ] - SO fails on updating Camunda table when DoCreateVfModule for vCPE infra service
**Security Notes**
@@ -54,14 +153,19 @@ The main goal of the El-Alto release was to improve documentation, UT improvemen
**Known Issues**
+- [`SO-2063 <https://jira.onap.org/browse/SO-2063>`__\ ] - AAF integration
+- [`SO-2403 <https://jira.onap.org/browse/SO-2403>`__\ ] - Not Displaying correct Workflow Name
+- [`SO-2430 <https://jira.onap.org/browse/SO-2430>`__\ ] - vCPE Create VFmodule Fails on Query to SDNC
+- [`SO-2433 <https://jira.onap.org/browse/SO-2433>`__\ ] - Not providing user options during Pause For Manual Task
+- [`SO-2434 <https://jira.onap.org/browse/SO-2434>`__\ ] - Displaying Un-needed Mandatory User Inputs for Workflow with Pause
+- [`SO-1754 <https://jira.onap.org/browse/SO-1754>`__\ ] - SO-Mariadb: 'VNF_RESOURCE_CUSTOMIZATION' DB update bug when service is distributed.
+- [`SO-2447 <https://jira.onap.org/browse/SO-2447>`__\ ] - Openstack Adatper fails to find Stack Name and creates duplicate stack with address conflict
+
OJSI Issues
- [`OJSI-110 <https://jira.onap.org/browse/OJSI-110>`__\ ] - so-monitor exposes plain text HTTP endpoint using port 30224
-
- [`OJSI-138 <https://jira.onap.org/browse/OJSI-138>`__\ ] - so exposes plain text HTTP endpoint using port 30277
-
- [`OJSI-169 <https://jira.onap.org/browse/OJSI-169>`__\ ] - Port 30224 exposes unprotected service outside of cluster
-
- [`OJSI-203 <https://jira.onap.org/browse/OJSI-203>`__\ ] - SO exposes unprotected APIs/UIs (CVE-2019-12128