diff --git a/docs/content/docs/self-hosting/configuration/environment-variables.md b/docs/content/docs/self-hosting/configuration/environment-variables.md index 4dc4ed96d27..08cf3af152a 100644 --- a/docs/content/docs/self-hosting/configuration/environment-variables.md +++ b/docs/content/docs/self-hosting/configuration/environment-variables.md @@ -82,7 +82,6 @@ ByteChef can be configured using environment variables. This page documents all | Environment Variable | Description | Default Value | |---|---|---| | `BYTECHEF_COORDINATOR_TRIGGER_POLLING_CHECK_PERIOD` | Trigger polling interval in minutes | `5` | -| `BYTECHEF_COORDINATOR_TRIGGER_SCHEDULER_PROVIDER` | Scheduler provider (AWS, QUARTZ) | `QUARTZ` | | `BYTECHEF_COORDINATOR_TRIGGER_SUBSCRIPTIONS_APPLICATION_EVENTS` | Number of application event subscribers | `1` | | `BYTECHEF_COORDINATOR_TRIGGER_SUBSCRIPTIONS_TRIGGER_EXECUTION_COMPLETE_EVENTS` | Number of trigger execution complete event subscribers | `1` | | `BYTECHEF_COORDINATOR_TRIGGER_SUBSCRIPTIONS_TRIGGER_EXECUTION_ERROR_EVENTS` | Number of trigger execution error event subscribers | `1` | @@ -210,6 +209,12 @@ ByteChef can be configured using environment variables. This page documents all System administrator is used for accessing protected data reachable through /actuator/** endpoints. For example /actuator/env returns all environment properties. +## Scheduler Configuration + +| Environment Variable | Description | Default Value | +|---|---|---| +| `BYTECHEF_SCHEDULER_PROVIDER` | Scheduler provider (AWS, QUARTZ) | `QUARTZ` | + ## Sign Up Configuration | Environment Variable | Description | Default Value | diff --git a/server/apps/server-app/src/main/resources/config/application-bytechef.yml b/server/apps/server-app/src/main/resources/config/application-bytechef.yml index 34b208bb4f0..1d43e6c0d34 100644 --- a/server/apps/server-app/src/main/resources/config/application-bytechef.yml +++ b/server/apps/server-app/src/main/resources/config/application-bytechef.yml @@ -63,9 +63,6 @@ bytechef: polling: # Trigger polling interval in minutes (default: 5) check-period: 5 - scheduler: - # Trigger scheduler provider (aws(ee) | quartz) default: quartz - provider: quartz data-storage: # Data storage provider (aws(ee) | filesystem | jdbc) default: jdbc provider: jdbc @@ -116,6 +113,9 @@ bytechef: public-url: resources: web: file:///opt/bytechef/client/ + scheduler: + # Trigger scheduler provider (aws(ee) | quartz) default: quartz + provider: quartz security: content-security-policy: "default-src 'self'; frame-src 'self' https://*.command.ai data:; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://*.command.ai https://*.commandbar.com https://*.i.posthog.com https://cdn.jsdelivr.net https://storage.googleapis.com https://unpkg.com; style-src 'self' 'unsafe-inline' https://*.commandbar.com https://cdn.jsdelivr.net https://*.command.ai https://unpkg.com; img-src 'self' https://*.command.ai data:; font-src 'self' data:; media-src 'self' https://*.command.ai; connect-src 'self' https://*.command.ai https://*.i.posthog.com https://*.commandbar.com; worker-src blob: 'self';" social-login: diff --git a/server/ee/apps/config-server-app/src/main/resources/config/apps/application.yml b/server/ee/apps/config-server-app/src/main/resources/config/apps/application.yml index f07255485d7..c1c3270babe 100644 --- a/server/ee/apps/config-server-app/src/main/resources/config/apps/application.yml +++ b/server/ee/apps/config-server-app/src/main/resources/config/apps/application.yml @@ -142,11 +142,6 @@ bytechef: cache: # Cache provider (redis) default: redis provider: redis - coordinator: - trigger: - scheduler: - # Trigger scheduler provider (aws(ee) | quartz) default: quartz - provider: quartz data-storage: # Data storage provider (aws(ee) | filesystem | jdbc) default: jdbc provider: jdbc @@ -175,6 +170,9 @@ bytechef: public-url: http://127.0.0.1:5173 resources: web: file:///opt/bytechef/client/ + scheduler: + # Trigger scheduler provider (aws(ee) | quartz) default: quartz + provider: quartz security: content-security-policy: "default-src 'self'; frame-src 'self' data:; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdn.jsdelivr.net https://storage.googleapis.com; style-src 'self' 'unsafe-inline' https://cdn.jsdelivr.net; img-src 'self' data:; font-src 'self' data:; script-src: https://*.command.ai; frame-src: https://*.command.ai; img-src: https://*.command.ai; media-src: https://*.command.ai; connect-src: https://*.command.ai; style-src: https://*.command.ai;" # Tenant support mode (single | multi - ee only) default: single diff --git a/server/ee/libs/platform/platform-scheduler/platform-scheduler-aws/src/main/java/com/bytechef/ee/platform/scheduler/aws/config/AwsConnectionRefreshSchedulerConfiguration.java b/server/ee/libs/platform/platform-scheduler/platform-scheduler-aws/src/main/java/com/bytechef/ee/platform/scheduler/aws/config/AwsConnectionRefreshSchedulerConfiguration.java index 6fe25b91962..b2fa1b98f8c 100644 --- a/server/ee/libs/platform/platform-scheduler/platform-scheduler-aws/src/main/java/com/bytechef/ee/platform/scheduler/aws/config/AwsConnectionRefreshSchedulerConfiguration.java +++ b/server/ee/libs/platform/platform-scheduler/platform-scheduler-aws/src/main/java/com/bytechef/ee/platform/scheduler/aws/config/AwsConnectionRefreshSchedulerConfiguration.java @@ -34,8 +34,7 @@ * @author Nikolina Spehar */ @Configuration -@ConditionalOnProperty( - prefix = "bytechef", name = "coordinator.trigger.scheduler.provider", havingValue = "aws") +@ConditionalOnProperty(prefix = "bytechef", name = "coordinator.trigger.scheduler.provider", havingValue = "aws") @ConditionalOnEEVersion public class AwsConnectionRefreshSchedulerConfiguration { diff --git a/server/ee/libs/platform/platform-scheduler/platform-scheduler-aws/src/main/java/com/bytechef/ee/platform/scheduler/aws/config/AwsTriggerSchedulerConfiguration.java b/server/ee/libs/platform/platform-scheduler/platform-scheduler-aws/src/main/java/com/bytechef/ee/platform/scheduler/aws/config/AwsTriggerSchedulerConfiguration.java index 723c1bc36b9..20619e168bc 100644 --- a/server/ee/libs/platform/platform-scheduler/platform-scheduler-aws/src/main/java/com/bytechef/ee/platform/scheduler/aws/config/AwsTriggerSchedulerConfiguration.java +++ b/server/ee/libs/platform/platform-scheduler/platform-scheduler-aws/src/main/java/com/bytechef/ee/platform/scheduler/aws/config/AwsTriggerSchedulerConfiguration.java @@ -33,7 +33,7 @@ * @author Marko Kriskovic */ @Configuration -@ConditionalOnProperty(prefix = "bytechef", name = "coordinator.trigger.scheduler.provider", havingValue = "aws") +@ConditionalOnProperty(prefix = "bytechef", name = "scheduler.provider", havingValue = "aws") @ConditionalOnEEVersion public class AwsTriggerSchedulerConfiguration { diff --git a/server/ee/libs/platform/platform-scheduler/platform-scheduler-impl/src/main/java/com/bytechef/ee/platform/scheduler/config/MultiTenantQuartzTriggerSchedulerConfiguration.java b/server/ee/libs/platform/platform-scheduler/platform-scheduler-impl/src/main/java/com/bytechef/ee/platform/scheduler/config/MultiTenantQuartzTriggerSchedulerConfiguration.java index 30f502107fd..307d70969ea 100644 --- a/server/ee/libs/platform/platform-scheduler/platform-scheduler-impl/src/main/java/com/bytechef/ee/platform/scheduler/config/MultiTenantQuartzTriggerSchedulerConfiguration.java +++ b/server/ee/libs/platform/platform-scheduler/platform-scheduler-impl/src/main/java/com/bytechef/ee/platform/scheduler/config/MultiTenantQuartzTriggerSchedulerConfiguration.java @@ -25,8 +25,7 @@ * @author Ivica Cardic */ @Configuration -@ConditionalOnProperty( - prefix = "bytechef", name = "coordinator.trigger.scheduler.provider", havingValue = "quartz", matchIfMissing = true) +@ConditionalOnProperty(prefix = "bytechef", name = "scheduler.provider", havingValue = "quartz", matchIfMissing = true) @ConditionalOnEEVersion public class MultiTenantQuartzTriggerSchedulerConfiguration implements SchedulerFactoryBeanCustomizer { diff --git a/server/libs/config/app-config/src/main/java/com/bytechef/config/ApplicationProperties.java b/server/libs/config/app-config/src/main/java/com/bytechef/config/ApplicationProperties.java index 008663bad4e..3ef296734eb 100644 --- a/server/libs/config/app-config/src/main/java/com/bytechef/config/ApplicationProperties.java +++ b/server/libs/config/app-config/src/main/java/com/bytechef/config/ApplicationProperties.java @@ -88,9 +88,6 @@ public enum Edition { /** Help hub configuration */ private HelpHub helpHub = new HelpHub(); - /** Observability and logging configuration */ - private Observability observability = new Observability(); - /** Email configuration */ private Mail mail = new Mail(); @@ -100,6 +97,9 @@ public enum Edition { /** OAuth2 configuration */ private Oauth2 oauth2 = new Oauth2(); + /** Observability and logging configuration */ + private Observability observability = new Observability(); + /** Public URL for the application */ private String publicUrl; @@ -112,6 +112,9 @@ public enum Edition { /** User sign-up configuration */ private SignUp signUp = new SignUp(); + /** Scheduler configuration */ + private Scheduler scheduler = new Scheduler(); + /** Multi-tenancy configuration */ private Tenant tenant = new Tenant(); @@ -188,10 +191,6 @@ public HelpHub getHelpHub() { return helpHub; } - public Observability getObservability() { - return observability; - } - public Mail getMail() { return mail; } @@ -204,6 +203,10 @@ public Oauth2 getOauth2() { return oauth2; } + public Observability getObservability() { + return observability; + } + public String getPublicUrl() { return publicUrl; } @@ -216,6 +219,10 @@ public Security getSecurity() { return security; } + public Scheduler getScheduler() { + return scheduler; + } + public SignUp getSignUp() { return signUp; } @@ -304,10 +311,6 @@ public void setHelpHub(HelpHub helpHub) { this.helpHub = helpHub; } - public void setObservability(Observability observability) { - this.observability = observability; - } - public void setMail(Mail mail) { this.mail = mail; } @@ -320,6 +323,10 @@ public void setOauth2(Oauth2 oauth2) { this.oauth2 = oauth2; } + public void setObservability(Observability observability) { + this.observability = observability; + } + public void setPublicUrl(String publicUrl) { this.publicUrl = publicUrl; } @@ -332,6 +339,10 @@ public void setSecurity(Security security) { this.security = security; } + public void setScheduler(Scheduler scheduler) { + this.scheduler = scheduler; + } + public void setSignUp(SignUp signUp) { this.signUp = signUp; } @@ -2199,9 +2210,6 @@ public static class Trigger { /** Event subscription configuration */ private Subscriptions subscriptions = new Subscriptions(); - /** Scheduler configuration */ - private Scheduler scheduler = new Scheduler(); - public Polling getPolling() { return polling; } @@ -2210,14 +2218,6 @@ public void setPolling(Polling polling) { this.polling = polling; } - public Scheduler getScheduler() { - return scheduler; - } - - public void setScheduler(Scheduler scheduler) { - this.scheduler = scheduler; - } - public Subscriptions getSubscriptions() { return subscriptions; } @@ -2243,33 +2243,6 @@ public void setCheckPeriod(int checkPeriod) { } } - /** - * Scheduler configuration for scheduled triggers. - */ - public static class Scheduler { - - /** - * Available scheduler providers. - */ - public enum Provider { - /** AWS EventBridge Scheduler */ - AWS, - /** Quartz Scheduler */ - QUARTZ - } - - /** Scheduler provider */ - private Provider provider = Provider.QUARTZ; - - public Provider getProvider() { - return provider; - } - - public void setProvider(Provider provider) { - this.provider = provider; - } - } - /** * Event subscription configuration for trigger events. */ @@ -3092,6 +3065,33 @@ public void setEnabled(boolean enabled) { } } + /** + * Scheduler configuration for scheduled triggers. + */ + public static class Scheduler { + + /** + * Available scheduler providers. + */ + public enum Provider { + /** AWS EventBridge Scheduler */ + AWS, + /** Quartz Scheduler */ + QUARTZ + } + + /** Scheduler provider */ + private Provider provider = Provider.QUARTZ; + + public Provider getProvider() { + return provider; + } + + public void setProvider(Provider provider) { + this.provider = provider; + } + } + /** * User sign-up configuration. */ diff --git a/server/libs/platform/platform-scheduler/platform-scheduler-impl/src/main/java/com/bytechef/platform/scheduler/config/QuartzConnectionRefreshSchedulerConfiguration.java b/server/libs/platform/platform-scheduler/platform-scheduler-impl/src/main/java/com/bytechef/platform/scheduler/config/QuartzConnectionRefreshSchedulerConfiguration.java index 4bc4d20662c..37d4148e0d6 100644 --- a/server/libs/platform/platform-scheduler/platform-scheduler-impl/src/main/java/com/bytechef/platform/scheduler/config/QuartzConnectionRefreshSchedulerConfiguration.java +++ b/server/libs/platform/platform-scheduler/platform-scheduler-impl/src/main/java/com/bytechef/platform/scheduler/config/QuartzConnectionRefreshSchedulerConfiguration.java @@ -43,9 +43,7 @@ */ @Configuration @EnableConfigurationProperties(QuartzProperties.class) -@ConditionalOnProperty( - prefix = "bytechef", name = "coordinator.trigger.scheduler.provider", havingValue = "quartz", - matchIfMissing = true) +@ConditionalOnProperty(prefix = "bytechef", name = "scheduler.provider", havingValue = "quartz", matchIfMissing = true) public class QuartzConnectionRefreshSchedulerConfiguration { private static final Logger logger = LoggerFactory.getLogger(QuartzConnectionRefreshSchedulerConfiguration.class); diff --git a/server/libs/platform/platform-scheduler/platform-scheduler-impl/src/main/java/com/bytechef/platform/scheduler/config/QuartzTriggerSchedulerConfiguration.java b/server/libs/platform/platform-scheduler/platform-scheduler-impl/src/main/java/com/bytechef/platform/scheduler/config/QuartzTriggerSchedulerConfiguration.java index 7187624a3fe..77cbf0f2589 100644 --- a/server/libs/platform/platform-scheduler/platform-scheduler-impl/src/main/java/com/bytechef/platform/scheduler/config/QuartzTriggerSchedulerConfiguration.java +++ b/server/libs/platform/platform-scheduler/platform-scheduler-impl/src/main/java/com/bytechef/platform/scheduler/config/QuartzTriggerSchedulerConfiguration.java @@ -45,7 +45,7 @@ @Configuration @EnableConfigurationProperties(QuartzProperties.class) @ConditionalOnProperty( - prefix = "bytechef", name = "coordinator.trigger.scheduler.provider", havingValue = "quartz", matchIfMissing = true) + prefix = "bytechef", name = "scheduler.provider", havingValue = "quartz", matchIfMissing = true) public class QuartzTriggerSchedulerConfiguration { private static final Logger logger = LoggerFactory.getLogger(QuartzTriggerSchedulerConfiguration.class); diff --git a/server/libs/platform/platform-scheduler/platform-scheduler-impl/src/test/resources/application-test.yml b/server/libs/platform/platform-scheduler/platform-scheduler-impl/src/test/resources/application-test.yml index c226b6f320d..071a5b21d95 100644 --- a/server/libs/platform/platform-scheduler/platform-scheduler-impl/src/test/resources/application-test.yml +++ b/server/libs/platform/platform-scheduler/platform-scheduler-impl/src/test/resources/application-test.yml @@ -1,7 +1,5 @@ bytechef: - coordinator: - trigger: - scheduler: - provider: quartz + scheduler: + provider: quartz tenant: mode: SINGLE