diff options
author | Boslet, Cory <cory.boslet@att.com> | 2020-11-19 18:10:56 -0500 |
---|---|---|
committer | k.kedron <k.kedron@partner.samsung.com> | 2021-02-26 14:05:51 +0100 |
commit | 1c7b9ee675bf79c192f04d8723f3f935f8f8534c (patch) | |
tree | 766c0f4503d7e2236d3904215bedeb49682001e5 | |
parent | 16b4369694a865a1c4bfaa6b562562ecbd102ed3 (diff) |
Use the timeout from the heat templates for
Use the timeout from the heat templates for polling
Removed unused imports and code from base
Added to get timeout from the rest client
Fixed unit test for polling to account for changes
Issue-ID: SO-3397
Signed-off-by: Benjamin, Max (mb388a) <mb388a@att.com>
Signed-off-by: Krystian Kedron <k.kedron@partner.samsung.com>
Change-Id: If633f4f49d88eb797020b7d72c6edd0fbee0926c
8 files changed, 182 insertions, 78 deletions
diff --git a/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoHeatUtils.java b/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoHeatUtils.java index c4ef3678c3..ba4b30903d 100644 --- a/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoHeatUtils.java +++ b/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoHeatUtils.java @@ -31,9 +31,10 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; -import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; +import static org.apache.commons.lang3.StringUtils.isBlank; +import static org.apache.commons.lang3.StringUtils.isNotBlank; import org.onap.logging.filter.base.ErrorCode; import org.onap.logging.ref.slf4j.ONAPLogConstants; import org.onap.so.adapters.vdu.CloudInfo; @@ -49,6 +50,11 @@ import org.onap.so.adapters.vdu.VduStatus; import org.onap.so.cloud.authentication.KeystoneAuthHolder; import org.onap.so.db.catalog.beans.HeatTemplate; import org.onap.so.db.catalog.beans.HeatTemplateParam; +import org.onap.so.db.catalog.beans.NetworkResource; +import org.onap.so.db.catalog.beans.NetworkResourceCustomization; +import org.onap.so.db.catalog.beans.VfModule; +import org.onap.so.db.catalog.beans.VfModuleCustomization; +import org.onap.so.db.catalog.client.CatalogDbClient; import org.onap.so.db.request.beans.CloudApiRequests; import org.onap.so.db.request.beans.InfraActiveRequests; import org.onap.so.db.request.client.RequestsDbClient; @@ -108,6 +114,7 @@ public class MsoHeatUtils extends MsoCommonUtils implements VduPlugin { public static final String EXCEPTION_ROLLING_BACK_STACK = "{} Create Stack: Nested exception rolling back stack: {} "; public static final String IN_PROGRESS = "in_progress"; + private static final int DEFAULT_POLLING_TIMEOUT = 118; @Autowired private Environment environment; @@ -121,6 +128,9 @@ public class MsoHeatUtils extends MsoCommonUtils implements VduPlugin { @Autowired RequestsDbClient requestDBClient; + @Autowired + private CatalogDbClient catalogClient; + private static final Logger logger = LoggerFactory.getLogger(MsoHeatUtils.class); // Properties names and variables (with default values) @@ -898,11 +908,6 @@ public class MsoHeatUtils extends MsoCommonUtils implements VduPlugin { if (inputs == null) { return new HashMap<>(); } - try { - Set<HeatTemplateParam> paramSet = template.getParameters(); - } catch (Exception e) { - logger.debug("Exception occurred in convertInputMap {} :", e.getMessage(), e); - } for (HeatTemplateParam htp : template.getParameters()) { params.put(htp.getParamName(), htp); @@ -1232,4 +1237,72 @@ public class MsoHeatUtils extends MsoCommonUtils implements VduPlugin { } } + public int getVfHeatTimeoutValue(String modelCustomizationUuid, boolean isVolumeGroup) { + int timeoutMinutes = DEFAULT_POLLING_TIMEOUT; + try { + VfModuleCustomization vfmc = null; + if (modelCustomizationUuid != null) { + vfmc = catalogClient.getVfModuleCustomizationByModelCuztomizationUUID(modelCustomizationUuid); + if (vfmc != null) { + VfModule vf = vfmc.getVfModule(); + if (vf != null) { + HeatTemplate heat = vf.getModuleHeatTemplate(); + if (isVolumeGroup) { + heat = vf.getVolumeHeatTemplate(); + } + if (heat != null && heat.getTimeoutMinutes() != null) { + if (heat.getTimeoutMinutes() < DEFAULT_POLLING_TIMEOUT) { + timeoutMinutes = heat.getTimeoutMinutes(); + } + } + } + } else { + logger.debug( + "Unable to find Vf Module Customization with model customization uuid {}. Using default timeout {}", + modelCustomizationUuid, timeoutMinutes); + } + } + } catch (Exception e) { + logger.warn("Exception occured while getting heat timeout value. Using default timeout {}", timeoutMinutes, + e); + } + return timeoutMinutes; + } + + public int getNetworkHeatTimeoutValue(String modelCustomizationUuid, String networkType) { + int timeoutMinutes = DEFAULT_POLLING_TIMEOUT; + try { + NetworkResource networkResource = null; + if (isBlank(modelCustomizationUuid)) { + if (isNotBlank(networkType)) { + networkResource = catalogClient.getNetworkResourceByModelName(networkType); + } + } else { + NetworkResourceCustomization nrc = + catalogClient.getNetworkResourceCustomizationByModelCustomizationUUID(modelCustomizationUuid); + if (nrc != null) { + networkResource = nrc.getNetworkResource(); + } + } + + if (networkResource != null) { + networkResource.getHeatTemplate().getTimeoutMinutes(); + HeatTemplate heat = networkResource.getHeatTemplate(); + if (heat != null && heat.getTimeoutMinutes() != null) { + if (heat.getTimeoutMinutes() < DEFAULT_POLLING_TIMEOUT) { + timeoutMinutes = heat.getTimeoutMinutes(); + } + } + } else { + logger.debug( + "Unable to find Network Resource with model customization uuid {} or network type {}. Using default timeout {}", + modelCustomizationUuid, networkType, timeoutMinutes); + } + } catch (Exception e) { + logger.warn("Exception occured while getting heat timeout value. Using default timeout {}", timeoutMinutes, + e); + } + return timeoutMinutes; + } + } diff --git a/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoHeatUtilsTest.java b/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoHeatUtilsTest.java index 5bd7c29313..f20f6f1448 100644 --- a/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoHeatUtilsTest.java +++ b/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoHeatUtilsTest.java @@ -46,6 +46,12 @@ import org.mockito.Mockito; import org.mockito.Spy; import org.mockito.junit.MockitoJUnitRunner; import org.onap.logging.ref.slf4j.ONAPLogConstants; +import org.onap.so.db.catalog.beans.HeatTemplate; +import org.onap.so.db.catalog.beans.NetworkResource; +import org.onap.so.db.catalog.beans.NetworkResourceCustomization; +import org.onap.so.db.catalog.beans.VfModule; +import org.onap.so.db.catalog.beans.VfModuleCustomization; +import org.onap.so.db.catalog.client.CatalogDbClient; import org.onap.so.db.request.beans.CloudApiRequests; import org.onap.so.db.request.beans.InfraActiveRequests; import org.onap.so.db.request.client.RequestsDbClient; @@ -103,6 +109,9 @@ public class MsoHeatUtilsTest extends MsoHeatUtils { @Mock private CreateStack mockCreateStack; + @Mock + private CatalogDbClient catalogDbClient; + private String cloudSiteId = "cloudSiteId"; private String tenantId = "tenantId"; @@ -564,4 +573,38 @@ public class MsoHeatUtilsTest extends MsoHeatUtils { Mockito.verify(heatUtils, times(0)).handleUnknownCreateStackFailure(stack, 120, cloudSiteId, tenantId); } + @Test + public void testGetVfHeatTimeoutValue() { + + VfModuleCustomization vfmc = new VfModuleCustomization(); + VfModule vf = new VfModule(); + HeatTemplate heat = new HeatTemplate(); + heat.setTimeoutMinutes(110); + vf.setModuleHeatTemplate(heat); + vfmc.setVfModule(vf); + + Mockito.when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("uuid")).thenReturn(vfmc); + + int timeout = heatUtils.getVfHeatTimeoutValue("uuid", false); + assertEquals(110, timeout); + Mockito.verify(catalogDbClient, times(1)).getVfModuleCustomizationByModelCuztomizationUUID("uuid"); + } + + @Test + public void testGetNetworkHeatTimeoutValue() { + + NetworkResourceCustomization mc = new NetworkResourceCustomization(); + NetworkResource nr = new NetworkResource(); + HeatTemplate heat = new HeatTemplate(); + heat.setTimeoutMinutes(110); + nr.setHeatTemplate(heat); + mc.setNetworkResource(nr); + + Mockito.when(catalogDbClient.getNetworkResourceCustomizationByModelCustomizationUUID("uuid")).thenReturn(mc); + + int timeout = heatUtils.getNetworkHeatTimeoutValue("uuid", "type"); + assertEquals(110, timeout); + Mockito.verify(catalogDbClient, times(1)).getNetworkResourceCustomizationByModelCustomizationUUID("uuid"); + } + } 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 489585c04b..9123ac9f36 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 @@ -962,31 +962,7 @@ public class MsoNetworkAdapterImpl implements MsoNetworkAdapter { pollForCompletion = true; } - // Retrieve the Network Resource definition - NetworkResource networkResource = null; - if (commonUtils.isNullOrEmpty(modelCustomizationUuid)) { - if (!commonUtils.isNullOrEmpty(networkType)) { - networkResource = networkResourceRepo.findFirstByModelNameOrderByModelVersionDesc(networkType); - } - } else { - NetworkResourceCustomization nrc = - networkCustomRepo.findOneByModelCustomizationUUID(modelCustomizationUuid); - if (nrc != null) { - networkResource = nrc.getNetworkResource(); - } - } - - int timeoutMinutes = 118; - if (networkResource != null) { - logger.debug(LOG_DEBUG_MSG, networkResource.toString()); - networkResource.getHeatTemplate().getTimeoutMinutes(); - HeatTemplate heat = networkResource.getHeatTemplate(); - if (heat != null && heat.getTimeoutMinutes() != null) { - if (heat.getTimeoutMinutes() < 118) { - timeoutMinutes = heat.getTimeoutMinutes(); - } - } - } + int timeoutMinutes = heat.getNetworkHeatTimeoutValue(modelCustomizationUuid, networkType); try { StackInfo stack = diff --git a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/tasks/orchestration/PollService.java b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/tasks/orchestration/PollService.java index c319fdc23c..ddbda5da62 100644 --- a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/tasks/orchestration/PollService.java +++ b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/tasks/orchestration/PollService.java @@ -90,7 +90,9 @@ public class PollService extends ExternalTaskUtils { JAXB.unmarshal(new StringReader(xmlRequest), DeleteVfModuleRequest.class); boolean isMulticloud = vnfAdapterUtils.isMulticloudMode(null, req.getCloudSiteId()); if (!isMulticloud) { - pollDeleteResource(req.getCloudSiteId(), req.getTenantId(), externalTask, success); + int timeoutMinutes = msoHeatUtils.getVfHeatTimeoutValue(req.getModelCustomizationUuid(), false); + pollDeleteResource(timeoutMinutes, req.getCloudSiteId(), req.getTenantId(), externalTask, + success); } else { success.setTrue(); } @@ -100,7 +102,7 @@ public class PollService extends ExternalTaskUtils { JAXB.unmarshal(new StringReader(xmlRequest), DeleteVolumeGroupRequest.class); boolean isMulticloud = vnfAdapterUtils.isMulticloudMode(null, req.getCloudSiteId()); if (!isMulticloud) { - pollDeleteResource(req.getCloudSiteId(), req.getTenantId(), externalTask, success); + pollDeleteResource(118, req.getCloudSiteId(), req.getTenantId(), externalTask, success); } else { success.setTrue(); } @@ -109,7 +111,7 @@ public class PollService extends ExternalTaskUtils { } else if ("deleteNetworkRequest".equals(requestType.get())) { logger.debug("Executing External Task Poll Service for Delete Network"); DeleteNetworkRequest req = JAXB.unmarshal(new StringReader(xmlRequest), DeleteNetworkRequest.class); - pollDeleteResource(req.getCloudSiteId(), req.getTenantId(), externalTask, success); + pollDeleteResource(118, req.getCloudSiteId(), req.getTenantId(), externalTask, success); } else if ("updateNetworkRequest".equals(requestType.get())) { UpdateNetworkRequest req = JAXB.unmarshal(new StringReader(xmlRequest), UpdateNetworkRequest.class); pollUpdateResource(req.getCloudSiteId(), req.getTenantId(), externalTask, success); @@ -152,9 +154,10 @@ public class PollService extends ExternalTaskUtils { boolean pollRollbackStatus = externalTask.getVariable("PollRollbackStatus"); if (pollRollbackStatus) { logger.debug("Executing External Task Poll Service for Rollback Create Volume Group"); - pollDeleteResource(req.getCloudSiteId(), req.getTenantId(), externalTask, success); + pollDeleteResource(118, req.getCloudSiteId(), req.getTenantId(), externalTask, success); } else { - pollCreateResource(req.getCloudSiteId(), req.getTenantId(), externalTask, success); + int timeoutMinutes = msoHeatUtils.getVfHeatTimeoutValue(req.getModelCustomizationUuid(), true); + pollCreateResource(timeoutMinutes, req.getCloudSiteId(), req.getTenantId(), externalTask, success); } } else { success.setTrue(); @@ -167,12 +170,13 @@ public class PollService extends ExternalTaskUtils { boolean isMulticloud = vnfAdapterUtils.isMulticloudMode(null, req.getCloudSiteId()); if (!isMulticloud) { boolean pollRollbackStatus = externalTask.getVariable("PollRollbackStatus"); + int timeoutMinutes = msoHeatUtils.getVfHeatTimeoutValue(req.getModelCustomizationUuid(), false); if (pollRollbackStatus) { logger.debug("Executing External Task Poll Service for Rollback Create Vf Module"); - pollDeleteResource(req.getCloudSiteId(), req.getTenantId(), externalTask, success); + pollDeleteResource(timeoutMinutes, req.getCloudSiteId(), req.getTenantId(), externalTask, success); } else { logger.debug("Executing External Task Poll Service for Create Vf Module"); - pollCreateResource(req.getCloudSiteId(), req.getTenantId(), externalTask, success); + pollCreateResource(timeoutMinutes, req.getCloudSiteId(), req.getTenantId(), externalTask, success); } } else { success.setTrue(); @@ -183,29 +187,31 @@ public class PollService extends ExternalTaskUtils { throws MsoException { CreateNetworkRequest req = JAXB.unmarshal(new StringReader(xmlRequest), CreateNetworkRequest.class); boolean pollRollbackStatus = externalTask.getVariable("PollRollbackStatus"); + int timeoutMinutes = + msoHeatUtils.getNetworkHeatTimeoutValue(req.getModelCustomizationUuid(), req.getNetworkType()); if (pollRollbackStatus) { logger.debug("Executing External Task Poll Service for Rollback Create Network"); - pollDeleteResource(req.getCloudSiteId(), req.getTenantId(), externalTask, success); + pollDeleteResource(timeoutMinutes, req.getCloudSiteId(), req.getTenantId(), externalTask, success); } else { logger.debug("Executing External Task Poll Service for Create Network"); - pollCreateResource(req.getCloudSiteId(), req.getTenantId(), externalTask, success); + pollCreateResource(timeoutMinutes, req.getCloudSiteId(), req.getTenantId(), externalTask, success); } } - private void pollCreateResource(String cloudSiteId, String tenantId, ExternalTask externalTask, + private void pollCreateResource(int pollingTimeout, String cloudSiteId, String tenantId, ExternalTask externalTask, MutableBoolean success) throws MsoException { Stack currentStack = createCurrentStack(externalTask.getVariable("stackId")); - Stack stack = - msoHeatUtils.pollStackForStatus(1, currentStack, "CREATE_IN_PROGRESS", cloudSiteId, tenantId, false); + Stack stack = msoHeatUtils.pollStackForStatus(pollingTimeout, currentStack, "CREATE_IN_PROGRESS", cloudSiteId, + tenantId, false); msoHeatUtils.postProcessStackCreate(stack, false, 0, false, cloudSiteId, tenantId, null); success.setTrue(); } - private void pollDeleteResource(String cloudSiteId, String tenantId, ExternalTask externalTask, + private void pollDeleteResource(int pollingTimeout, String cloudSiteId, String tenantId, ExternalTask externalTask, MutableBoolean success) throws MsoException { Stack currentStack = createCurrentStack(externalTask.getVariable("stackId")); - Stack stack = - msoHeatUtils.pollStackForStatus(1, currentStack, "DELETE_IN_PROGRESS", cloudSiteId, tenantId, true); + Stack stack = msoHeatUtils.pollStackForStatus(pollingTimeout, currentStack, "DELETE_IN_PROGRESS", cloudSiteId, + tenantId, true); if (stack != null) { // if stack is null it was not found and no need to do post process msoHeatUtils.postProcessStackDelete(stack); } @@ -245,5 +251,4 @@ public class PollService extends ExternalTaskUtils { currentStack.setStackName(stackName); return currentStack; } - } diff --git a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/MsoVnfAdapterImpl.java b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/MsoVnfAdapterImpl.java index 26bce5f362..7acf953282 100644 --- a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/MsoVnfAdapterImpl.java +++ b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/MsoVnfAdapterImpl.java @@ -158,6 +158,7 @@ public class MsoVnfAdapterImpl { * @param outputs Holder for Map of VNF outputs from heat (assigned IPs, etc) * @param rollback Holder for returning VnfRollback object */ + @Deprecated public void createVnf(String cloudSiteId, String cloudOwner, String tenantId, String vnfType, String vnfVersion, String vnfName, String requestType, String volumeGroupHeatStackId, Map<String, Object> inputs, Boolean failIfExists, Boolean backout, Boolean enableBridge, MsoRequest msoRequest, Holder<String> vnfId, @@ -212,6 +213,7 @@ public class MsoVnfAdapterImpl { * @param vnfName VNF Name or Openstack ID * @param msoRequest Request tracking information for logs */ + @Deprecated public void deleteVnf(String cloudSiteId, String cloudOwner, String tenantId, String vnfName, MsoRequest msoRequest) throws VnfException { @@ -251,6 +253,7 @@ public class MsoVnfAdapterImpl { * @param vnfName VNF Name or Openstack ID * @param msoRequest Request tracking information for logs */ + @Deprecated public void deleteVnf(String cloudSiteId, String cloudOwner, String tenantId, String vnfName, MsoRequest msoRequest, boolean pollStackStatus) throws VnfException { @@ -988,29 +991,7 @@ public class MsoVnfAdapterImpl { // call method which handles the conversion from Map<String,Object> to Map<String,String> for our expected // Object types outputs.value = this.convertMapStringObjectToStringString(stackOutputs); - int timeoutMinutes = 118; - VfModule vf = null; - VfModuleCustomization vfmc = null; - if (modelCustomizationUuid != null) { - vfmc = vfModuleCustomRepo.findFirstByModelCustomizationUUIDOrderByCreatedDesc(modelCustomizationUuid); - if (vfmc != null) { - vf = vfmc.getVfModule(); - } - if (vf != null) { - logger.trace("Found vfModuleCust entry {}", vfmc.toString()); - HeatTemplate heat = vf.getModuleHeatTemplate(); - if (heat != null && heat.getTimeoutMinutes() != null) { - if (heat.getTimeoutMinutes() < 118) { - timeoutMinutes = heat.getTimeoutMinutes(); - } - } - - } else { - logger.debug( - "Unable to find vfModuleCust with modelCustomizationUuid={} . Using default timeout for polling", - modelCustomizationUuid); - } - } + int timeoutMinutes = msoHeatUtils.getVfHeatTimeoutValue(modelCustomizationUuid, false); try { StackInfo currentStack = diff --git a/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/tasks/orchestration/PollServiceTest.java b/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/tasks/orchestration/PollServiceTest.java index 60826705fd..0214fdd265 100644 --- a/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/tasks/orchestration/PollServiceTest.java +++ b/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/tasks/orchestration/PollServiceTest.java @@ -52,15 +52,17 @@ public class PollServiceTest { Mockito.when(mockExternalTask.getVariable("openstackAdapterTaskRequest")).thenReturn(xmlString); Mockito.when(mockExternalTask.getVariable("PollRollbackStatus")).thenReturn(false); Mockito.when(mockExternalTask.getVariable("stackId")).thenReturn("stackId/stack123"); - Mockito.when(msoHeatUtils.pollStackForStatus(eq(1), any(Stack.class), eq("CREATE_IN_PROGRESS"), eq("regionOne"), - eq("0422ffb57ba042c0800a29dc85ca70f8"), eq(false))).thenReturn(new Stack()); + Mockito.when(msoHeatUtils.pollStackForStatus(eq(118), any(Stack.class), eq("CREATE_IN_PROGRESS"), + eq("regionOne"), eq("0422ffb57ba042c0800a29dc85ca70f8"), eq(false))).thenReturn(new Stack()); + Mockito.when(msoHeatUtils.getVfHeatTimeoutValue(any(), eq(false))).thenReturn(118); // Mockito.doNothing().when(msoHeatUtils).postProcessStackCreate(Mockito.any(), Mockito.any(), Mockito.any(), // Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any()); pollService.executeExternalTask(mockExternalTask, mockExternalTaskService); - Mockito.verify(msoHeatUtils).pollStackForStatus(eq(1), any(Stack.class), eq("CREATE_IN_PROGRESS"), + Mockito.verify(msoHeatUtils).pollStackForStatus(eq(118), any(Stack.class), eq("CREATE_IN_PROGRESS"), eq("regionOne"), eq("0422ffb57ba042c0800a29dc85ca70f8"), eq(false)); + Mockito.verify(msoHeatUtils).getVfHeatTimeoutValue(any(), eq(false)); } @@ -72,16 +74,16 @@ public class PollServiceTest { Mockito.when(mockExternalTask.getVariable("openstackAdapterTaskRequest")).thenReturn(xmlString); Mockito.when(mockExternalTask.getVariable("PollRollbackStatus")).thenReturn(true); Mockito.when(mockExternalTask.getVariable("stackId")).thenReturn("stackId/stack123"); - Mockito.when(msoHeatUtils.pollStackForStatus(eq(1), any(), eq("DELETE_IN_PROGRESS"), eq("regionOne"), + Mockito.when(msoHeatUtils.pollStackForStatus(eq(118), any(), eq("DELETE_IN_PROGRESS"), eq("regionOne"), eq("0422ffb57ba042c0800a29dc85ca70f8"), eq(true))).thenReturn(new Stack()); Mockito.doNothing().when(msoHeatUtils).postProcessStackDelete(Mockito.any()); - + Mockito.when(msoHeatUtils.getVfHeatTimeoutValue(any(), eq(false))).thenReturn(118); pollService.executeExternalTask(mockExternalTask, mockExternalTaskService); - Mockito.verify(msoHeatUtils).pollStackForStatus(eq(1), any(), eq("DELETE_IN_PROGRESS"), eq("regionOne"), + Mockito.verify(msoHeatUtils).pollStackForStatus(eq(118), any(), eq("DELETE_IN_PROGRESS"), eq("regionOne"), eq("0422ffb57ba042c0800a29dc85ca70f8"), eq(true)); - + Mockito.verify(msoHeatUtils).getVfHeatTimeoutValue(any(), eq(false)); } } diff --git a/mso-catalog-db/src/main/java/org/onap/so/db/catalog/client/CatalogDbClient.java b/mso-catalog-db/src/main/java/org/onap/so/db/catalog/client/CatalogDbClient.java index ef90dd6984..91cfb00911 100644 --- a/mso-catalog-db/src/main/java/org/onap/so/db/catalog/client/CatalogDbClient.java +++ b/mso-catalog-db/src/main/java/org/onap/so/db/catalog/client/CatalogDbClient.java @@ -47,6 +47,7 @@ import org.onap.so.db.catalog.beans.HomingInstance; import org.onap.so.db.catalog.beans.InstanceGroup; import org.onap.so.db.catalog.beans.NetworkCollectionResourceCustomization; import org.onap.so.db.catalog.beans.NetworkRecipe; +import org.onap.so.db.catalog.beans.NetworkResource; import org.onap.so.db.catalog.beans.NetworkResourceCustomization; import org.onap.so.db.catalog.beans.OrchestrationAction; import org.onap.so.db.catalog.beans.OrchestrationStatus; @@ -98,6 +99,7 @@ public class CatalogDbClient { private static final String RAINY_DAY_HANDLER_MACRO = "/rainy_day_handler_macro"; private static final String NORTHBOUND_REQUEST_REF_LOOKUP = "/northbound_request_ref_lookup"; private static final String NETWORK_RESOURCE_CUSTOMIZATION = "/networkResourceCustomization"; + private static final String NETWORK_RESOURCE = "/networkResource"; private static final String COLLECTION_RESOURCE_INSTANCE_GROUP_CUSTOMIZATION = "/collectionResourceInstanceGroupCustomization"; private static final String VNFC_INSTANCE_GROUP_CUSTOMIZATION = "/vnfcInstanceGroupCustomization"; @@ -223,6 +225,7 @@ public class CatalogDbClient { private String vnfResourceURI; private String networkCollectionResourceCustomizationURI; private String networkResourceCustomizationURI; + private String networkResourceURI; private String collectionNetworkResourceCustomizationURI; private String instanceGroupURI; private String cloudifyManagerURI; @@ -375,6 +378,7 @@ public class CatalogDbClient { networkCollectionResourceCustomizationURI = endpoint + NETWORK_COLLECTION_RESOURCE_CUSTOMIZATION + URI_SEPARATOR; networkResourceCustomizationURI = endpoint + NETWORK_RESOURCE_CUSTOMIZATION + URI_SEPARATOR; + networkResourceURI = endpoint + NETWORK_RESOURCE + SEARCH; collectionNetworkResourceCustomizationURI = endpoint + COLLECTION_NETWORK_RESOURCE_CUSTOMIZATION + URI_SEPARATOR; instanceGroupURI = endpoint + INSTANCE_GROUP + URI_SEPARATOR; @@ -607,6 +611,25 @@ public class CatalogDbClient { return networkResourceCustomization; } + public NetworkResource getNetworkResourceByModelName(String networkType) { + if (Strings.isNullOrEmpty(networkType)) { + throw new EntityNotFoundException("networkType passed as Null or Empty String"); + } + try { + HttpEntity<?> entity = getHttpEntity(); + return restTemplate.exchange( + UriBuilder.fromUri(networkResourceURI + "/findFirstByModelNameOrderByModelVersionDesc") + .queryParam("modelName", networkType).build(), + HttpMethod.GET, entity, NetworkResource.class).getBody(); + } catch (HttpClientErrorException e) { + if (HttpStatus.SC_NOT_FOUND == e.getStatusCode().value()) { + throw new EntityNotFoundException("Unable to find NetworkResource By networkType " + networkType); + } + throw e; + } + } + + public BuildingBlockDetail getBuildingBlockDetail(String buildingBlockName) { BuildingBlockDetail buildingBlockDetail = diff --git a/mso-catalog-db/src/main/java/org/onap/so/db/catalog/data/repository/NetworkResourceRepository.java b/mso-catalog-db/src/main/java/org/onap/so/db/catalog/data/repository/NetworkResourceRepository.java index 42d107c1ff..30f3df7110 100644 --- a/mso-catalog-db/src/main/java/org/onap/so/db/catalog/data/repository/NetworkResourceRepository.java +++ b/mso-catalog-db/src/main/java/org/onap/so/db/catalog/data/repository/NetworkResourceRepository.java @@ -23,6 +23,7 @@ package org.onap.so.db.catalog.data.repository; import org.onap.so.db.catalog.beans.NetworkResource; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import org.springframework.data.rest.core.annotation.RepositoryRestResource; import org.springframework.stereotype.Repository; @@ -38,7 +39,7 @@ public interface NetworkResourceRepository extends JpaRepository<NetworkResource */ @Query(value = "SELECT * FROM network_resource WHERE MODEL_NAME = ?1 ORDER BY INET_ATON(SUBSTRING_INDEX(CONCAT(MODEL_VERSION,'.0.0.0'),'.',4)) DESC LIMIT 1;", nativeQuery = true) - NetworkResource findFirstByModelNameOrderByModelVersionDesc(String modelName); + NetworkResource findFirstByModelNameOrderByModelVersionDesc(@Param("modelName") String modelName); NetworkResource findResourceByModelUUID(String modelUUID); |