diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/WebhookRepository.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/WebhookRepository.java index ed5e1275207..635b03f9cc9 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/WebhookRepository.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/WebhookRepository.java @@ -115,7 +115,7 @@ public class WebhookRepository extends EntityRepository { public void addWebhookPublisher(Webhook webhook) { if (Boolean.FALSE.equals(webhook.getEnabled())) { // Only add webhook that is enabled for publishing events - webhook.setStatus(Status.NOT_STARTED); + webhook.setStatus(Status.DISABLED); return; } WebhookPublisher publisher = new WebhookPublisher(webhook); @@ -138,7 +138,7 @@ public class WebhookRepository extends EntityRepository { // Update the existing publisher Status status = previousPublisher.getWebhook().getStatus(); previousPublisher.updateWebhook(webhook); - if (status != Status.STARTED && status != Status.AWAITING_RETRY) { + if (status != Status.ACTIVE && status != Status.AWAITING_RETRY) { // Restart the previously stopped publisher (in states notStarted, error, retryLimitReached) BatchEventProcessor processor = EventPubSub.addEventHandler(previousPublisher); previousPublisher.setProcessor(processor); @@ -357,8 +357,8 @@ public class WebhookRepository extends EntityRepository { if (response.getStatus() >= 200 && response.getStatus() < 300) { // All 2xx responses batch.clear(); webhook.getFailureDetails().setLastSuccessfulAt(changeEventHolder.get().getTimestamp()); - if (webhook.getStatus() != Status.STARTED) { - setStatus(Status.STARTED, null, null, null, null); + if (webhook.getStatus() != Status.ACTIVE) { + setStatus(Status.ACTIVE, null, null, null, null); } // 3xx response/redirection is not allowed for callback. Set the webhook state as in error } else if (response.getStatus() >= 300 && response.getStatus() < 400) { @@ -491,6 +491,7 @@ public class WebhookRepository extends EntityRepository { recordChange("status", origWebhook.getStatus(), updatedWebhook.getStatus()); recordChange("endPoint", origWebhook.getEndpoint(), updatedWebhook.getEndpoint()); recordChange("batchSize", origWebhook.getBatchSize(), updatedWebhook.getBatchSize()); + recordChange("timeout", origWebhook.getTimeout(), updatedWebhook.getTimeout()); if (fieldsChanged()) { // If updating the other fields, opportunistically use it to capture failure details WebhookPublisher publisher = WebhookRepository.this.getPublisher(origWebhook.getId()); @@ -499,7 +500,7 @@ public class WebhookRepository extends EntityRepository { .withStatus(publisher.getWebhook().getStatus()) .withFailureDetails(publisher.getWebhook().getFailureDetails()); if (Boolean.FALSE.equals(updatedWebhook.getEnabled())) { - updatedWebhook.setStatus(Status.NOT_STARTED); + updatedWebhook.setStatus(Status.DISABLED); } } recordChange( diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/resources/events/WebhookResource.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/resources/events/WebhookResource.java index b3c4cba2e19..648a3e070b2 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/resources/events/WebhookResource.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/resources/events/WebhookResource.java @@ -252,7 +252,7 @@ public class WebhookResource { throws IOException, ParseException { SecurityUtil.checkAdminOrBotRole(authorizer, securityContext); Webhook webhook = getWebhook(securityContext, create); - webhook.setStatus(Boolean.TRUE.equals(webhook.getEnabled()) ? Status.STARTED : Status.NOT_STARTED); + webhook.setStatus(Boolean.TRUE.equals(webhook.getEnabled()) ? Status.ACTIVE : Status.DISABLED); webhook = dao.create(uriInfo, webhook); dao.addWebhookPublisher(webhook); return Response.created(webhook.getHref()).entity(webhook).build(); @@ -277,7 +277,7 @@ public class WebhookResource { // SecurityUtil.checkAdminOrBotRole(authorizer, securityContext); // Table table = getTable(securityContext, create); Webhook webhook = getWebhook(securityContext, create); - webhook.setStatus(Boolean.TRUE.equals(webhook.getEnabled()) ? Status.STARTED : Status.NOT_STARTED); + webhook.setStatus(Boolean.TRUE.equals(webhook.getEnabled()) ? Status.ACTIVE : Status.DISABLED); PutResponse putResponse = dao.createOrUpdate(uriInfo, webhook); dao.updateWebhookPublisher(webhook); return putResponse.toResponse(); diff --git a/catalog-rest-service/src/main/resources/json/schema/entity/events/webhook.json b/catalog-rest-service/src/main/resources/json/schema/entity/events/webhook.json index b03a309486b..9336aaf4bc8 100644 --- a/catalog-rest-service/src/main/resources/json/schema/entity/events/webhook.json +++ b/catalog-rest-service/src/main/resources/json/schema/entity/events/webhook.json @@ -64,14 +64,14 @@ "type": "string" }, "status": { - "description": "Status is `notStarted`, when webhook was created with `enabled` set to false and it never started publishing events. Status is `started` when webhook is normally functioning and 200 OK response was received for callback notification. Status is `failed` on bad callback URL, connection failures, `1xx`, and `3xx` response was received for callback notification. Status is `awaitingRetry` when previous attempt at callback timed out or received `4xx`, `5xx` response. Status is `retryLimitReached` after all retries fail.", + "description": "Status is `disabled`, when webhook was created with `enabled` set to false and it never started publishing events. Status is `active` when webhook is normally functioning and 200 OK response was received for callback notification. Status is `failed` on bad callback URL, connection failures, `1xx`, and `3xx` response was received for callback notification. Status is `awaitingRetry` when previous attempt at callback timed out or received `4xx`, `5xx` response. Status is `retryLimitReached` after all retries fail.", "type": "string", "enum": [ - "notStarted", - "started", + "disabled", "failed", + "retryLimitReached", "awaitingRetry", - "retryLimitReached" + "active" ] }, "failureDetails": { diff --git a/catalog-rest-service/src/test/java/org/openmetadata/catalog/resources/events/WebhookResourceTest.java b/catalog-rest-service/src/test/java/org/openmetadata/catalog/resources/events/WebhookResourceTest.java index ffc13004e04..213c703dd71 100644 --- a/catalog-rest-service/src/test/java/org/openmetadata/catalog/resources/events/WebhookResourceTest.java +++ b/catalog-rest-service/src/test/java/org/openmetadata/catalog/resources/events/WebhookResourceTest.java @@ -78,9 +78,9 @@ public class WebhookResourceTest extends EntityResourceTest