Skip to content
Snippets Groups Projects
Commit 0a13831b authored by Lukasz Lopatowski's avatar Lukasz Lopatowski
Browse files

Small update of webhooks

parent fc102ad0
No related branches found
No related tags found
1 merge request!273Release 1.8.0 update
Pipeline #95389 passed
...@@ -29,7 +29,7 @@ public class DomainActionJob extends WebhookJob { ...@@ -29,7 +29,7 @@ public class DomainActionJob extends WebhookJob {
@Override @Override
public void execute(JobExecutionContext context) throws JobExecutionException { public void execute(JobExecutionContext context) throws JobExecutionException {
log.debug("Started DomainRemovalJob ..."); log.debug("Started DomainActionJob ...");
JobDataMap dataMap = context.getJobDetail().getJobDataMap(); JobDataMap dataMap = context.getJobDetail().getJobDataMap();
Long webhookId = dataMap.getLong("webhookId"); Long webhookId = dataMap.getLong("webhookId");
String action = dataMap.getString("action"); String action = dataMap.getString("action");
......
...@@ -36,7 +36,7 @@ public class DomainGroupJob extends WebhookJob { ...@@ -36,7 +36,7 @@ public class DomainGroupJob extends WebhookJob {
try { try {
WebhookEventDto webhook = webhookEventService.getById(webhookId); WebhookEventDto webhook = webhookEventService.getById(webhookId);
if (!WebhookEventType.DOMAIN_GROUP_CHANGE.equals(webhook.getEventType())) { if (!WebhookEventType.DOMAIN_GROUP_ACTION.equals(webhook.getEventType())) {
log.warn("Webhook's event type with id {} has been updated. DomainGroupJob is abandoned", webhookId); log.warn("Webhook's event type with id {} has been updated. DomainGroupJob is abandoned", webhookId);
return; return;
} }
......
...@@ -3,7 +3,8 @@ package net.geant.nmaas.portal.persistent.entity; ...@@ -3,7 +3,8 @@ package net.geant.nmaas.portal.persistent.entity;
public enum WebhookEventType { public enum WebhookEventType {
DOMAIN_ACTION, DOMAIN_ACTION,
DOMAIN_GROUP_ACTION,
APPLICATION_DEPLOYMENT, APPLICATION_DEPLOYMENT,
USER_ASSIGNMENT, USER_ASSIGNMENT
DOMAIN_GROUP_CHANGE
} }
...@@ -3,8 +3,8 @@ package net.geant.nmaas.portal.service.impl; ...@@ -3,8 +3,8 @@ package net.geant.nmaas.portal.service.impl;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.geant.nmaas.orchestration.jobs.AppDeploymentJob; import net.geant.nmaas.orchestration.jobs.AppDeploymentJob;
import net.geant.nmaas.orchestration.jobs.DomainGroupJob;
import net.geant.nmaas.orchestration.jobs.DomainActionJob; import net.geant.nmaas.orchestration.jobs.DomainActionJob;
import net.geant.nmaas.orchestration.jobs.DomainGroupJob;
import net.geant.nmaas.orchestration.jobs.UserDomainAssignmentJob; import net.geant.nmaas.orchestration.jobs.UserDomainAssignmentJob;
import net.geant.nmaas.portal.api.domain.DomainGroupView; import net.geant.nmaas.portal.api.domain.DomainGroupView;
import net.geant.nmaas.portal.api.domain.DomainView; import net.geant.nmaas.portal.api.domain.DomainView;
...@@ -43,7 +43,12 @@ public class WebhooksEventListener { ...@@ -43,7 +43,12 @@ public class WebhooksEventListener {
public void trigger(DomainCreatedEvent event) { public void trigger(DomainCreatedEvent event) {
final Domain domain = event.getDomainEntity(); final Domain domain = event.getDomainEntity();
webhookEventRepository.findIdByEventType(WebhookEventType.DOMAIN_ACTION) webhookEventRepository.findIdByEventType(WebhookEventType.DOMAIN_ACTION)
.forEach(id -> scheduleManager.createOneTimeJob(DomainActionJob.class, "DomainCreate_"+ event.getDomain()+"_" + id + "_" + domain.getId(), Map.of("webhookId", id, "domain", modelMapper.map(domain, DomainView.class), "action", "create"))); .forEach(id ->
scheduleManager.createOneTimeJob(
DomainActionJob.class,
"DomainCreate_" + id + "_" + domain.getId(),
Map.of("webhookId", id, "domain", modelMapper.map(domain, DomainView.class), "action", "create"))
);
} }
@EventListener @EventListener
...@@ -53,7 +58,12 @@ public class WebhooksEventListener { ...@@ -53,7 +58,12 @@ public class WebhooksEventListener {
final DomainView domainView = event.getDomainView(); final DomainView domainView = event.getDomainView();
String action = event.isHardRemoval() ? "delete" : "softDelete"; String action = event.isHardRemoval() ? "delete" : "softDelete";
webhookEventRepository.findIdByEventType(WebhookEventType.DOMAIN_ACTION) webhookEventRepository.findIdByEventType(WebhookEventType.DOMAIN_ACTION)
.forEach(id -> scheduleManager.createOneTimeJob(DomainActionJob.class, "Domain" +action+"_"+ event.getDomainView()+"_" + id + "_" + domainView.getId(), Map.of("webhookId", id, "domain", domainView, "action", action))); .forEach(id ->
scheduleManager.createOneTimeJob(
DomainActionJob.class,
"Domain" + action + "_" + id + "_" + domainView.getId(),
Map.of("webhookId", id, "domain", domainView, "action", action))
);
} }
@EventListener @EventListener
...@@ -62,20 +72,37 @@ public class WebhooksEventListener { ...@@ -62,20 +72,37 @@ public class WebhooksEventListener {
public void trigger(DomainGroupChangedEvent event) { public void trigger(DomainGroupChangedEvent event) {
final DomainGroupView domainGroup = event.getDomainGroup(); final DomainGroupView domainGroup = event.getDomainGroup();
domainGroup.setManagers(Collections.emptyList()); domainGroup.setManagers(Collections.emptyList());
webhookEventRepository.findIdByEventType(WebhookEventType.DOMAIN_GROUP_CHANGE) webhookEventRepository.findIdByEventType(WebhookEventType.DOMAIN_GROUP_ACTION)
.forEach(id -> scheduleManager.createOneTimeJob(DomainGroupJob.class, "DomainGroup_" + id + "_" + domainGroup.getId() + "_" + LocalDateTime.now(), Map.of("webhookId", id, "action", event.getAction(), "domainGroup", domainGroup))); .forEach(id ->
scheduleManager.createOneTimeJob(
DomainGroupJob.class,
"DomainGroup_" + id + "_" + domainGroup.getId() + "_" + LocalDateTime.now(),
Map.of("webhookId", id, "action", event.getAction(), "domainGroup", domainGroup))
);
} }
@EventListener @EventListener
@Loggable(LogLevel.INFO) @Loggable(LogLevel.INFO)
public void trigger(UserDomainAssignmentEvent event) { public void trigger(UserDomainAssignmentEvent event) {
webhookEventRepository.findIdByEventType(WebhookEventType.USER_ASSIGNMENT).forEach(id -> scheduleManager.createOneTimeJob(UserDomainAssignmentJob.class, "UserDomainAssignmentJobCreate_" + id + "_user" + event.getUserId() + "_domain" + event.getDomainId() + "_" + LocalDateTime.now(), Map.of("webhookId", id, "domainId", event.getDomainId(), "userId", event.getUserId(), "role", event.getRole(), "action", event.getAction()))); webhookEventRepository.findIdByEventType(WebhookEventType.USER_ASSIGNMENT)
.forEach(id ->
scheduleManager.createOneTimeJob(
UserDomainAssignmentJob.class,
"UserDomainAssignmentJobCreate_" + id + "_user" + event.getUserId() + "_domain" + event.getDomainId() + "_" + LocalDateTime.now(),
Map.of("webhookId", id, "domainId", event.getDomainId(), "userId", event.getUserId(), "role", event.getRole(), "action", event.getAction()))
);
} }
@EventListener @EventListener
@Loggable(LogLevel.INFO) @Loggable(LogLevel.INFO)
public void trigger(AppDeploymentEvent event) { public void trigger(AppDeploymentEvent event) {
webhookEventRepository.findIdByEventType(WebhookEventType.APPLICATION_DEPLOYMENT).forEach(id -> scheduleManager.createOneTimeJob(AppDeploymentJob.class, "AppDeploymentJob_" + id + "_" + event.getDeploymentIdStr() + "_time" + LocalDateTime.now(), Map.of("webhookId", id, "deploymentId", event.getDeploymentIdStr()))); webhookEventRepository.findIdByEventType(WebhookEventType.APPLICATION_DEPLOYMENT)
.forEach(id ->
scheduleManager.createOneTimeJob(
AppDeploymentJob.class,
"AppDeploymentJob_" + id + "_" + event.getDeploymentIdStr() + "_time" + LocalDateTime.now(),
Map.of("webhookId", id, "deploymentId", event.getDeploymentIdStr()))
);
} }
} }
\ No newline at end of file
...@@ -36,7 +36,7 @@ public class DomainGroupJobTest { ...@@ -36,7 +36,7 @@ public class DomainGroupJobTest {
JobExecutionContext jobExecutionContext = mock(JobExecutionContext.class); JobExecutionContext jobExecutionContext = mock(JobExecutionContext.class);
when(jobExecutionContext.getJobDetail()).thenReturn(jobDetail); when(jobExecutionContext.getJobDetail()).thenReturn(jobDetail);
when(webhookEventService.getById(10L)).thenReturn( when(webhookEventService.getById(10L)).thenReturn(
new WebhookEventDto(10L, "webhook-name", "https://example.webhook-url.pl", WebhookEventType.DOMAIN_GROUP_CHANGE)); new WebhookEventDto(10L, "webhook-name", "https://example.webhook-url.pl", WebhookEventType.DOMAIN_GROUP_ACTION));
assertThrows(JobExecutionException.class, () -> { assertThrows(JobExecutionException.class, () -> {
DomainGroupJob job = new DomainGroupJob(restClient, webhookEventService, new ModelMapper()); DomainGroupJob job = new DomainGroupJob(restClient, webhookEventService, new ModelMapper());
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment