summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--catalog-be/src/main/java/org/openecomp/sdc/be/components/distribution/engine/AuditDistributionNotificationBuilder.java109
-rw-r--r--catalog-be/src/main/java/org/openecomp/sdc/be/components/distribution/engine/DistributionNotificationSender.java44
-rw-r--r--catalog-be/src/test/java/org/openecomp/sdc/be/components/distribution/engine/AuditDistributionNotificationBuilderTest.java65
3 files changed, 205 insertions, 13 deletions
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/distribution/engine/AuditDistributionNotificationBuilder.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/distribution/engine/AuditDistributionNotificationBuilder.java
new file mode 100644
index 0000000000..54047b497b
--- /dev/null
+++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/distribution/engine/AuditDistributionNotificationBuilder.java
@@ -0,0 +1,109 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2019 Samsung Electronics Co., Ltd. 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.openecomp.sdc.be.components.distribution.engine;
+
+import org.openecomp.sdc.be.model.Service;
+import org.openecomp.sdc.be.model.User;
+
+public class AuditDistributionNotificationBuilder {
+
+ private String topicName;
+ private String distributionId;
+ private CambriaErrorResponse status;
+ private Service service;
+ private String envId;
+ private User modifier;
+ private String workloadContext;
+ private String tenant;
+
+ public AuditDistributionNotificationBuilder() {}
+
+ public String getTopicName() {
+ return topicName;
+ }
+
+ public AuditDistributionNotificationBuilder setTopicName(String topicName) {
+ this.topicName = topicName;
+ return this;
+ }
+
+ public String getDistributionId() {
+ return distributionId;
+ }
+
+ public AuditDistributionNotificationBuilder setDistributionId(String distributionId) {
+ this.distributionId = distributionId;
+ return this;
+ }
+
+ public CambriaErrorResponse getStatus() {
+ return status;
+ }
+
+ public AuditDistributionNotificationBuilder setStatus(CambriaErrorResponse status) {
+ this.status = status;
+ return this;
+ }
+
+ public Service getService() {
+ return service;
+ }
+
+ public AuditDistributionNotificationBuilder setService(Service service) {
+ this.service = service;
+ return this;
+ }
+
+ public String getEnvId() {
+ return envId;
+ }
+
+ public AuditDistributionNotificationBuilder setEnvId(String envId) {
+ this.envId = envId;
+ return this;
+ }
+
+ public User getModifier() {
+ return modifier;
+ }
+
+ public AuditDistributionNotificationBuilder setModifier(User modifier) {
+ this.modifier = modifier;
+ return this;
+ }
+
+ public String getWorkloadContext() {
+ return workloadContext;
+ }
+
+ public AuditDistributionNotificationBuilder setWorkloadContext(String workloadContext) {
+ this.workloadContext = workloadContext;
+ return this;
+ }
+
+ public String getTenant() {
+ return tenant;
+ }
+
+ public AuditDistributionNotificationBuilder setTenant(String tenant) {
+ this.tenant = tenant;
+ return this;
+ }
+}
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/distribution/engine/DistributionNotificationSender.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/distribution/engine/DistributionNotificationSender.java
index 80518c2da4..1c6afe5a98 100644
--- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/distribution/engine/DistributionNotificationSender.java
+++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/distribution/engine/DistributionNotificationSender.java
@@ -40,29 +40,47 @@ public class DistributionNotificationSender {
@javax.annotation.Resource
protected ComponentsUtils componentUtils;
private CambriaHandler cambriaHandler = new CambriaHandler();
- private DistributionEngineConfiguration deConfiguration = ConfigurationManager.getConfigurationManager().getDistributionEngineConfiguration();
+ private DistributionEngineConfiguration deConfiguration =
+ ConfigurationManager.getConfigurationManager().getDistributionEngineConfiguration();
- public ActionStatus sendNotification(String topicName, String distributionId, EnvironmentMessageBusData messageBusData, INotificationData notificationData, Service service, User modifier) {
+ public ActionStatus sendNotification(String topicName, String distributionId,
+ EnvironmentMessageBusData messageBusData, INotificationData notificationData, Service service,
+ User modifier) {
long startTime = System.currentTimeMillis();
- CambriaErrorResponse status = cambriaHandler.sendNotificationAndClose(topicName, messageBusData.getUebPublicKey(), messageBusData.getUebPrivateKey(), messageBusData.getDmaaPuebEndpoints(), notificationData,
- deConfiguration.getDistributionNotificationTopic().getMaxWaitingAfterSendingSeconds());
- logger.info("After publishing service {} of version {}. Status is {}", service.getName(), service.getVersion(), status.getHttpCode());
- auditDistributionNotification(topicName, distributionId, status, service, messageBusData.getEnvId(), modifier, notificationData.getWorkloadContext(), messageBusData.getTenant());
+ CambriaErrorResponse status =
+ cambriaHandler.sendNotificationAndClose(topicName, messageBusData.getUebPublicKey(),
+ messageBusData.getUebPrivateKey(), messageBusData.getDmaaPuebEndpoints(), notificationData,
+ deConfiguration.getDistributionNotificationTopic().getMaxWaitingAfterSendingSeconds());
+
+ logger.info("After publishing service {} of version {}. Status is {}", service.getName(), service.getVersion(),
+ status.getHttpCode());
+
+ auditDistributionNotification(new AuditDistributionNotificationBuilder().setTopicName(topicName)
+ .setDistributionId(distributionId).setStatus(status).setService(service)
+ .setEnvId(messageBusData.getEnvId()).setModifier(modifier)
+ .setWorkloadContext(notificationData.getWorkloadContext()).setTenant(messageBusData.getTenant()));
+
long endTime = System.currentTimeMillis();
- logger.debug("After building and publishing artifacts object. Total took {} milliseconds", (endTime - startTime));
+
+ if (logger.isDebugEnabled()) {
+ logger.debug("After building and publishing artifacts object. Total took {} milliseconds",
+ endTime - startTime);
+ }
+
return convertCambriaResponse(status);
}
- private void auditDistributionNotification(String topicName, String distributionId, CambriaErrorResponse status, Service service, String envId, User modifier
- , String workloadContext, String tenant) {
+ private void auditDistributionNotification(AuditDistributionNotificationBuilder builder) {
if (this.componentUtils != null) {
- Integer httpCode = status.getHttpCode();
+ Integer httpCode = builder.getStatus().getHttpCode();
String httpCodeStr = String.valueOf(httpCode);
- String desc = getDescriptionFromErrorResponse(status);
+ String desc = getDescriptionFromErrorResponse(builder.getStatus());
- this.componentUtils.auditDistributionNotification(service.getUUID(), service.getName(), "Service", service.getVersion(), modifier, envId, service.getLifecycleState().name(), topicName,
- distributionId, desc, httpCodeStr, workloadContext, tenant);
+ this.componentUtils.auditDistributionNotification(builder.getService().getUUID(),
+ builder.getService().getName(), "Service", builder.getService().getVersion(), builder.getModifier(),
+ builder.getEnvId(), builder.getService().getLifecycleState().name(), builder.getTopicName(),
+ builder.getDistributionId(), desc, httpCodeStr, builder.getWorkloadContext(), builder.getTenant());
}
}
diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/components/distribution/engine/AuditDistributionNotificationBuilderTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/components/distribution/engine/AuditDistributionNotificationBuilderTest.java
new file mode 100644
index 0000000000..f3d901c456
--- /dev/null
+++ b/catalog-be/src/test/java/org/openecomp/sdc/be/components/distribution/engine/AuditDistributionNotificationBuilderTest.java
@@ -0,0 +1,65 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2019 Samsung Electronics Co., Ltd. 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.openecomp.sdc.be.components.distribution.engine;
+
+import static org.mockito.Mockito.RETURNS_DEFAULTS;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+import org.junit.Test;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
+import org.openecomp.sdc.be.model.Service;
+import org.openecomp.sdc.be.model.User;
+
+public class AuditDistributionNotificationBuilderTest {
+
+
+ public class SelfReturningAnswer implements Answer<Object>{
+
+ public Object answer(InvocationOnMock invocation) throws Throwable {
+ Object mock = invocation.getMock();
+ if( invocation.getMethod().getReturnType().isInstance( mock )){
+ return mock;
+ }
+ else{
+ return RETURNS_DEFAULTS.answer(invocation);
+ }
+ }
+ }
+
+
+ private CambriaErrorResponse status;
+ private Service service;
+ private User modifier;
+
+ @Test
+ public void testBuilder() {
+
+ AuditDistributionNotificationBuilder mockBuilder =
+ mock(AuditDistributionNotificationBuilder.class, new SelfReturningAnswer());
+
+ when(mockBuilder.setTopicName("topicName").setDistributionId("distributionId").setStatus(status)
+ .setService(service).setEnvId("envId").setModifier(modifier).setWorkloadContext("workloadContext")
+ .setTenant("tenant")).thenReturn(mockBuilder);
+ assert mockBuilder.setTopicName("topicName").setDistributionId("distributionId").setStatus(status)
+ .setService(service).setEnvId("envId").setModifier(modifier).setWorkloadContext("workloadContext")
+ .setTenant("tenant") == mockBuilder;
+ }
+}