From cd4e5b408603a13dabc58f832e4aae4194e81995 Mon Sep 17 00:00:00 2001 From: "Boslet, Cory" Date: Wed, 25 Mar 2020 16:04:41 -0400 Subject: convert openstack to external tasks Use external tasks to communicate with openstack adapter Will be more resilient to failures Refactored all flows to use external tasks not REST calls Rollback is now an external task Ensured backwards compatibility Issue-ID: SO-2767 Signed-off-by: Benjamin, Max (mb388a) Change-Id: I8afdb89c688d756aed0f25f7d9a7fb898142554d --- .../so/externaltasks/logging/AuditMDCSetup.java | 56 ------------- .../org/onap/so/logging/tasks/AuditMDCSetup.java | 57 +++++++++++++ .../onap/so/utils/ExternalTaskServiceUtils.java | 7 +- .../java/org/onap/so/utils/ExternalTaskUtils.java | 6 +- .../externaltasks/logging/AuditMDCSetupTest.java | 93 ---------------------- .../org/onap/so/logging/tasks/MDCSetupTest.java | 92 +++++++++++++++++++++ .../org/onap/so/utils/ExternalTaskUtilsTest.java | 5 ++ 7 files changed, 163 insertions(+), 153 deletions(-) delete mode 100644 common/src/main/java/org/onap/so/externaltasks/logging/AuditMDCSetup.java create mode 100644 common/src/main/java/org/onap/so/logging/tasks/AuditMDCSetup.java delete mode 100644 common/src/test/java/org/onap/so/externaltasks/logging/AuditMDCSetupTest.java create mode 100644 common/src/test/java/org/onap/so/logging/tasks/MDCSetupTest.java (limited to 'common') diff --git a/common/src/main/java/org/onap/so/externaltasks/logging/AuditMDCSetup.java b/common/src/main/java/org/onap/so/externaltasks/logging/AuditMDCSetup.java deleted file mode 100644 index 9f71e61e1f..0000000000 --- a/common/src/main/java/org/onap/so/externaltasks/logging/AuditMDCSetup.java +++ /dev/null @@ -1,56 +0,0 @@ -package org.onap.so.externaltasks.logging; - -import java.time.ZoneOffset; -import java.time.ZonedDateTime; -import java.time.format.DateTimeFormatter; -import org.camunda.bpm.client.task.ExternalTask; -import org.onap.logging.filter.base.MDCSetup; -import org.onap.logging.filter.base.ONAPComponents; -import org.onap.logging.ref.slf4j.ONAPLogConstants; -import org.onap.so.logger.MdcConstants; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.slf4j.MDC; -import org.springframework.stereotype.Component; - -@Component -public class AuditMDCSetup { - - private static final Logger logger = LoggerFactory.getLogger(AuditMDCSetup.class); - - private MDCSetup mdcSetup = new MDCSetup(); - - public void setupMDC(ExternalTask externalTask) { - MDC.put(ONAPLogConstants.MDCs.ENTRY_TIMESTAMP, - ZonedDateTime.now(ZoneOffset.UTC).format(DateTimeFormatter.ISO_INSTANT)); - String msoRequestId = externalTask.getVariable("mso-request-id"); - if (msoRequestId != null && !msoRequestId.isEmpty()) { - MDC.put(ONAPLogConstants.MDCs.REQUEST_ID, msoRequestId); - } - MDC.put(ONAPLogConstants.MDCs.SERVICE_NAME, externalTask.getTopicName()); - MDC.put(ONAPLogConstants.MDCs.PARTNER_NAME, ONAPComponents.OPENSTACK_ADAPTER.toString()); - setResponseCode(ONAPLogConstants.ResponseStatus.INPROGRESS.toString()); - setElapsedTime(); - mdcSetup.setServerFQDN(); - logger.info(ONAPLogConstants.Markers.ENTRY, "Entering"); - } - - public void setElapsedTime() { - DateTimeFormatter timeFormatter = DateTimeFormatter.ISO_ZONED_DATE_TIME; - MDC.put(ONAPLogConstants.MDCs.ELAPSED_TIME, Long.toString(System.currentTimeMillis() - ZonedDateTime - .parse(MDC.get(ONAPLogConstants.MDCs.ENTRY_TIMESTAMP), timeFormatter).toInstant().toEpochMilli())); - } - - public void setResponseCode(String code) { - MDC.put(MdcConstants.OPENSTACK_STATUS_CODE, code); - MDC.put(ONAPLogConstants.MDCs.RESPONSE_STATUS_CODE, code); - } - - public void clearClientMDCs() { - MDC.remove(ONAPLogConstants.MDCs.RESPONSE_STATUS_CODE); - MDC.remove(MdcConstants.OPENSTACK_STATUS_CODE); - MDC.remove(ONAPLogConstants.MDCs.ENTRY_TIMESTAMP); - MDC.remove(ONAPLogConstants.MDCs.ELAPSED_TIME); - MDC.remove(ONAPLogConstants.MDCs.PARTNER_NAME); - } -} diff --git a/common/src/main/java/org/onap/so/logging/tasks/AuditMDCSetup.java b/common/src/main/java/org/onap/so/logging/tasks/AuditMDCSetup.java new file mode 100644 index 0000000000..8d98307a43 --- /dev/null +++ b/common/src/main/java/org/onap/so/logging/tasks/AuditMDCSetup.java @@ -0,0 +1,57 @@ +package org.onap.so.logging.tasks; + +import java.time.ZoneOffset; +import java.time.ZonedDateTime; +import java.time.format.DateTimeFormatter; +import org.camunda.bpm.client.task.ExternalTask; +import org.onap.logging.filter.base.MDCSetup; +import org.onap.logging.filter.base.ONAPComponents; +import org.onap.logging.ref.slf4j.ONAPLogConstants; +import org.onap.so.logger.MdcConstants; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.slf4j.MDC; +import org.springframework.stereotype.Component; + +@Component +public class AuditMDCSetup { + + private static final Logger logger = LoggerFactory.getLogger(AuditMDCSetup.class); + + private MDCSetup mdcSetup = new MDCSetup(); + + public void setupMDC(ExternalTask externalTask) { + MDC.put(ONAPLogConstants.MDCs.ENTRY_TIMESTAMP, + ZonedDateTime.now(ZoneOffset.UTC).format(DateTimeFormatter.ISO_INSTANT)); + String msoRequestId = externalTask.getVariable("mso-request-id"); + if (msoRequestId != null && !msoRequestId.isEmpty()) { + MDC.put(ONAPLogConstants.MDCs.REQUEST_ID, msoRequestId); + } + MDC.put(ONAPLogConstants.MDCs.SERVICE_NAME, externalTask.getTopicName()); + MDC.put(ONAPLogConstants.MDCs.PARTNER_NAME, ONAPComponents.OPENSTACK_ADAPTER.toString()); + setResponseCode(ONAPLogConstants.ResponseStatus.INPROGRESS.toString()); + setElapsedTime(); + mdcSetup.setServerFQDN(); + logger.info(ONAPLogConstants.Markers.ENTRY, "Entering"); + } + + public void setElapsedTime() { + DateTimeFormatter timeFormatter = DateTimeFormatter.ISO_ZONED_DATE_TIME; + MDC.put(ONAPLogConstants.MDCs.ELAPSED_TIME, Long.toString(System.currentTimeMillis() - ZonedDateTime + .parse(MDC.get(ONAPLogConstants.MDCs.ENTRY_TIMESTAMP), timeFormatter).toInstant().toEpochMilli())); + } + + public void setResponseCode(String code) { + MDC.put(MdcConstants.OPENSTACK_STATUS_CODE, code); + MDC.put(ONAPLogConstants.MDCs.RESPONSE_STATUS_CODE, code); + } + + public void clearClientMDCs() { + MDC.remove(ONAPLogConstants.MDCs.RESPONSE_STATUS_CODE); + MDC.remove(MdcConstants.OPENSTACK_STATUS_CODE); + MDC.remove(ONAPLogConstants.MDCs.ENTRY_TIMESTAMP); + MDC.remove(ONAPLogConstants.MDCs.ELAPSED_TIME); + MDC.remove(ONAPLogConstants.MDCs.PARTNER_NAME); + } + +} diff --git a/common/src/main/java/org/onap/so/utils/ExternalTaskServiceUtils.java b/common/src/main/java/org/onap/so/utils/ExternalTaskServiceUtils.java index 035ad1dc81..840a978a61 100644 --- a/common/src/main/java/org/onap/so/utils/ExternalTaskServiceUtils.java +++ b/common/src/main/java/org/onap/so/utils/ExternalTaskServiceUtils.java @@ -51,7 +51,12 @@ public class ExternalTaskServiceUtils { } public int getMaxClients() { - return Integer.parseInt(env.getProperty("workflow.topics.maxClients", "3")); + return Integer.parseInt(env.getProperty("workflow.topics.maxClients", "10")); + } + + public Long getLockDuration() { + Long lockDuration = Long.parseLong(env.getProperty("mso.audit.lock-time", "60000")); + return lockDuration; } @ScheduledLogging diff --git a/common/src/main/java/org/onap/so/utils/ExternalTaskUtils.java b/common/src/main/java/org/onap/so/utils/ExternalTaskUtils.java index 9488187003..d414135570 100644 --- a/common/src/main/java/org/onap/so/utils/ExternalTaskUtils.java +++ b/common/src/main/java/org/onap/so/utils/ExternalTaskUtils.java @@ -9,11 +9,11 @@ import org.springframework.stereotype.Component; @Component public abstract class ExternalTaskUtils { + private static final Logger logger = LoggerFactory.getLogger(ExternalTaskUtils.class); + @Autowired Environment env; - private static final Logger logger = LoggerFactory.getLogger(ExternalTaskUtils.class); - private final RetrySequenceLevel retrySequenceLevel; public ExternalTaskUtils() { @@ -49,7 +49,7 @@ public abstract class ExternalTaskUtils { return seqInter; case LONG: String[] seqLong = {"1", "1", "2", "3", "5", "8", "13", "20"}; - if (env.getProperty("mso.workflow.topics.retrySequence") != null) { + if (env.getProperty("mso.workflow.topics.retrySequence.long") != null) { seqLong = env.getProperty("mso.workflow.topics.retrySequence", String[].class); } return seqLong; diff --git a/common/src/test/java/org/onap/so/externaltasks/logging/AuditMDCSetupTest.java b/common/src/test/java/org/onap/so/externaltasks/logging/AuditMDCSetupTest.java deleted file mode 100644 index c4609f0336..0000000000 --- a/common/src/test/java/org/onap/so/externaltasks/logging/AuditMDCSetupTest.java +++ /dev/null @@ -1,93 +0,0 @@ -package org.onap.so.externaltasks.logging; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; -import static org.mockito.Mockito.doReturn; -import org.camunda.bpm.client.task.ExternalTask; -import org.junit.After; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Spy; -import org.mockito.junit.MockitoJUnitRunner; -import org.onap.logging.filter.base.MDCSetup; -import org.onap.logging.ref.slf4j.ONAPLogConstants; -import org.onap.so.logger.MdcConstants; -import org.slf4j.MDC; - -@RunWith(MockitoJUnitRunner.class) -public class AuditMDCSetupTest { - - @Mock - private ExternalTask externalTask; - - @Mock - private MDCSetup mdcSet; - - @Spy - @InjectMocks - private AuditMDCSetup mdcSetup; - - private String requestId = "9bb86b8d-a02f-4a0b-81a9-2eb963850009"; - private String serviceName = "testServiceName"; - - @After - public void tearDown() { - MDC.clear(); - } - - @Test - public void setupMDCTest() { - doReturn(requestId).when(externalTask).getVariable("mso-request-id"); - doReturn(serviceName).when(externalTask).getTopicName(); - - mdcSetup.setupMDC(externalTask); - - assertNotNull(MDC.get(ONAPLogConstants.MDCs.ENTRY_TIMESTAMP)); - assertEquals(requestId, MDC.get(ONAPLogConstants.MDCs.REQUEST_ID)); - assertEquals(serviceName, MDC.get(ONAPLogConstants.MDCs.SERVICE_NAME)); - assertEquals("SO.OPENSTACK_ADAPTER", MDC.get(ONAPLogConstants.MDCs.PARTNER_NAME)); - assertEquals(ONAPLogConstants.ResponseStatus.INPROGRESS.toString(), - MDC.get(ONAPLogConstants.MDCs.RESPONSE_STATUS_CODE)); - } - - @Test - public void setElapsedTimeTest() { - MDC.put(ONAPLogConstants.MDCs.ENTRY_TIMESTAMP, "2019-06-18T02:09:06.024Z"); - - mdcSetup.setElapsedTime(); - - assertNotNull(MDC.get(ONAPLogConstants.MDCs.ELAPSED_TIME)); - } - - @Test - public void setResponseCodeTest() { - mdcSetup.setResponseCode(ONAPLogConstants.ResponseStatus.INPROGRESS.toString()); - - assertEquals(ONAPLogConstants.ResponseStatus.INPROGRESS.toString(), - MDC.get(ONAPLogConstants.MDCs.RESPONSE_STATUS_CODE)); - assertEquals(ONAPLogConstants.ResponseStatus.INPROGRESS.toString(), - MDC.get(MdcConstants.OPENSTACK_STATUS_CODE)); - } - - @Test - public void clearClientMDCsTest() { - MDC.put(ONAPLogConstants.MDCs.RESPONSE_STATUS_CODE, ONAPLogConstants.ResponseStatus.INPROGRESS.toString()); - MDC.put(MdcConstants.OPENSTACK_STATUS_CODE, ONAPLogConstants.ResponseStatus.INPROGRESS.toString()); - MDC.put(ONAPLogConstants.MDCs.ENTRY_TIMESTAMP, "2019-06-18T02:09:06.024Z"); - MDC.put(ONAPLogConstants.MDCs.ELAPSED_TIME, "318"); - MDC.put(ONAPLogConstants.MDCs.PARTNER_NAME, "SO.OPENSTACK_ADAPTER"); - - mdcSetup.clearClientMDCs(); - - assertNull(MDC.get(ONAPLogConstants.MDCs.RESPONSE_STATUS_CODE)); - assertNull(MDC.get(MdcConstants.OPENSTACK_STATUS_CODE)); - assertNull(MDC.get(ONAPLogConstants.MDCs.ENTRY_TIMESTAMP)); - assertNull(MDC.get(ONAPLogConstants.MDCs.ELAPSED_TIME)); - assertNull(MDC.get(ONAPLogConstants.MDCs.PARTNER_NAME)); - - } - -} diff --git a/common/src/test/java/org/onap/so/logging/tasks/MDCSetupTest.java b/common/src/test/java/org/onap/so/logging/tasks/MDCSetupTest.java new file mode 100644 index 0000000000..929db79910 --- /dev/null +++ b/common/src/test/java/org/onap/so/logging/tasks/MDCSetupTest.java @@ -0,0 +1,92 @@ +package org.onap.so.logging.tasks; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.mockito.Mockito.doReturn; +import org.camunda.bpm.client.task.ExternalTask; +import org.junit.After; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Spy; +import org.onap.logging.ref.slf4j.ONAPLogConstants; +import org.onap.so.logger.MdcConstants; +import org.slf4j.MDC; +import org.mockito.junit.MockitoJUnitRunner; + +@RunWith(MockitoJUnitRunner.class) +public class MDCSetupTest { + + @Mock + private org.onap.logging.filter.base.MDCSetup mdcSet; + + @Mock + private ExternalTask externalTask; + + private String requestId = "9bb86b8d-a02f-4a0b-81a9-2eb963850009"; + private String serviceName = "testServiceName"; + + @Spy + @InjectMocks + AuditMDCSetup setup = new AuditMDCSetup(); + + @After + public void tearDown() { + MDC.clear(); + } + + @Test + public void setupMDCTest() { + doReturn(requestId).when(externalTask).getVariable("mso-request-id"); + doReturn(serviceName).when(externalTask).getTopicName(); + + setup.setupMDC(externalTask); + + assertNotNull(MDC.get(ONAPLogConstants.MDCs.ENTRY_TIMESTAMP)); + assertEquals(requestId, MDC.get(ONAPLogConstants.MDCs.REQUEST_ID)); + assertEquals(serviceName, MDC.get(ONAPLogConstants.MDCs.SERVICE_NAME)); + assertEquals("SO.OPENSTACK_ADAPTER", MDC.get(ONAPLogConstants.MDCs.PARTNER_NAME)); + assertEquals(ONAPLogConstants.ResponseStatus.INPROGRESS.toString(), + MDC.get(ONAPLogConstants.MDCs.RESPONSE_STATUS_CODE)); + } + + @Test + public void setElapsedTimeTest() { + MDC.put(ONAPLogConstants.MDCs.ENTRY_TIMESTAMP, "2019-06-18T02:09:06.024Z"); + + setup.setElapsedTime(); + + assertNotNull(MDC.get(ONAPLogConstants.MDCs.ELAPSED_TIME)); + } + + @Test + public void setResponseCodeTest() { + setup.setResponseCode(ONAPLogConstants.ResponseStatus.INPROGRESS.toString()); + + assertEquals(ONAPLogConstants.ResponseStatus.INPROGRESS.toString(), + MDC.get(ONAPLogConstants.MDCs.RESPONSE_STATUS_CODE)); + assertEquals(ONAPLogConstants.ResponseStatus.INPROGRESS.toString(), + MDC.get(MdcConstants.OPENSTACK_STATUS_CODE)); + } + + @Test + public void clearClientMDCsTest() { + MDC.put(ONAPLogConstants.MDCs.RESPONSE_STATUS_CODE, ONAPLogConstants.ResponseStatus.INPROGRESS.toString()); + MDC.put(MdcConstants.OPENSTACK_STATUS_CODE, ONAPLogConstants.ResponseStatus.INPROGRESS.toString()); + MDC.put(ONAPLogConstants.MDCs.ENTRY_TIMESTAMP, "2019-06-18T02:09:06.024Z"); + MDC.put(ONAPLogConstants.MDCs.ELAPSED_TIME, "318"); + MDC.put(ONAPLogConstants.MDCs.PARTNER_NAME, "SO.OPENSTACK_ADAPTER"); + + setup.clearClientMDCs(); + + assertNull(MDC.get(ONAPLogConstants.MDCs.RESPONSE_STATUS_CODE)); + assertNull(MDC.get(MdcConstants.OPENSTACK_STATUS_CODE)); + assertNull(MDC.get(ONAPLogConstants.MDCs.ENTRY_TIMESTAMP)); + assertNull(MDC.get(ONAPLogConstants.MDCs.ELAPSED_TIME)); + assertNull(MDC.get(ONAPLogConstants.MDCs.PARTNER_NAME)); + + } + +} diff --git a/common/src/test/java/org/onap/so/utils/ExternalTaskUtilsTest.java b/common/src/test/java/org/onap/so/utils/ExternalTaskUtilsTest.java index e27caa6458..6c2dbb666c 100644 --- a/common/src/test/java/org/onap/so/utils/ExternalTaskUtilsTest.java +++ b/common/src/test/java/org/onap/so/utils/ExternalTaskUtilsTest.java @@ -1,17 +1,22 @@ package org.onap.so.utils; import static org.junit.Assert.assertEquals; +import org.camunda.bpm.client.task.ExternalTask; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Mockito; +import org.mockito.Spy; import org.mockito.junit.MockitoJUnitRunner; import org.springframework.core.env.Environment; @RunWith(MockitoJUnitRunner.class) public class ExternalTaskUtilsTest { + @Mock + private ExternalTask externalTask; + @Mock private Environment mockenv; -- cgit 1.2.3-korg