diff --git a/backend/windmill-api/src/lib.rs b/backend/windmill-api/src/lib.rs index 342ecd70a1c36..e994ba9ba21ef 100644 --- a/backend/windmill-api/src/lib.rs +++ b/backend/windmill-api/src/lib.rs @@ -39,7 +39,7 @@ use tower_http::{ trace::TraceLayer, }; use windmill_common::db::UserDB; -use windmill_common::worker::ALL_TAGS; +use windmill_common::worker::{ALL_TAGS, CLOUD_HOSTED}; use windmill_common::{BASE_URL, INSTANCE_NAME}; use crate::scim_ee::has_scim_token; @@ -246,7 +246,9 @@ pub async fn run_server( } }; - websocket_triggers::start_websockets(db.clone(), rsmq).await; + if !*CLOUD_HOSTED { + websocket_triggers::start_websockets(db.clone(), rsmq).await; + } // build our application with a route let app = Router::new() diff --git a/backend/windmill-api/src/websocket_triggers.rs b/backend/windmill-api/src/websocket_triggers.rs index 3258f87261cdd..6e4b8b3c7a330 100644 --- a/backend/windmill-api/src/websocket_triggers.rs +++ b/backend/windmill-api/src/websocket_triggers.rs @@ -21,7 +21,7 @@ use windmill_common::{ db::UserDB, error::{self, JsonResult}, utils::{not_found_if_none, paginate, require_admin, Pagination, StripPath}, - worker::to_raw_value, + worker::{to_raw_value, CLOUD_HOSTED}, INSTANCE_NAME, }; use windmill_queue::PushArgsOwned; @@ -156,6 +156,11 @@ async fn create_websocket_trigger( Path(w_id): Path, Json(ct): Json, ) -> error::Result<(StatusCode, String)> { + if *CLOUD_HOSTED { + return Err(error::Error::BadRequest( + "Websocket triggers are not supported on multi-tenant cloud, use dedicated cloud or self-host".to_string(), + )); + } require_admin(authed.is_admin, &authed.username)?; let mut tx = user_db.begin(&authed).await?; diff --git a/frontend/src/lib/components/triggers/WebsocketTriggersPanel.svelte b/frontend/src/lib/components/triggers/WebsocketTriggersPanel.svelte index 3369e87899dcb..f209b4fbb85cd 100644 --- a/frontend/src/lib/components/triggers/WebsocketTriggersPanel.svelte +++ b/frontend/src/lib/components/triggers/WebsocketTriggersPanel.svelte @@ -10,6 +10,7 @@ import type { TriggerContext } from '../triggers' import { getContext } from 'svelte' import WebsocketTriggerEditor from './WebsocketTriggerEditor.svelte' + import { isCloudHosted } from '$lib/cloud' export let isFlow: boolean export let path: string @@ -49,7 +50,11 @@
{#if !newItem} - {#if $userStore?.is_admin || $userStore?.is_super_admin} + {#if isCloudHosted()} + + Websocket triggers are disabled in the multi-tenant cloud. + + {:else if $userStore?.is_admin || $userStore?.is_super_admin} + + {#if isCloudHosted()} + + Websocket triggers are disabled in the multi-tenant cloud. + +
+ {/if}