Skip to content

Allow some features to be toggled on or off at the instance level #398

@kjlippold

Description

@kjlippold

Describe the feature you'd like and what it will do

Add settings that allow some HydroServer features to be enabled or disabled globally for the whole instance. If a feature is toggled off, any links or references to those features through both the GUI and API should be hidden or greyed out.

The following features are ones we should consider:

  1. Photos and other media file uploads.
  2. Orchestration system
  3. SensorThings API
  4. Email notifications

Why is this feature important?

The features I listed above require additional costs and deployment overhead that not all organizations using HydroServer may need or want to manage.

Photos

Storing media requires cloud infrastructure, such as an S3 bucket. To avoid mandatory storage costs, we could allow users to link to external files instead of requiring internal hosting. This enables site photos to be displayed without the need for a dedicated media bucket.

Public-facing instances should have some form of content moderation to prevent misuse, though this is less of a concern for internal-only deployments. Organizations may want to disable site photos and other file uploads entirely if they don't have the capability to moderate content.

Orchestration System

This system relies on three dedicated services: a message broker like Redis, a Celery worker, and a Celery scheduler. Because these services incur costs and are essential for the system to function, all dependent features should be hidden if they are not configured.

Core data operations, such as deleting a workspace, need to remain functional on the main web server thread by default, only offloading to Celery if it's enabled. We don't currently use Celery in this way, but we've discussed it.

We could also offer more granular control of specific orchestration system features so organizations can toggle specific tools, such as enabling data quality monitoring while keeping ETL or data products disabled.

SensorThings API

The SensorThings API does not require extra infrastructure, but it can be notoriously resource-intensive for the web server and database. Since it is difficult to throttle while maintaining specification compliance, we should provide a simple setting to disable the API for organizations that do not use it.

Email

Notifications and account management require a connection to an email server. If an organization relies solely on OIDC for authentication and does not require orchestration alerts, they should be able to bypass email configuration entirely. Right now, if an email server isn't set up, features that require the email server will raise server-side errors; it would be better to just hide those features instead if they can't be used.

Is your feature request related to a problem? Please describe.

No response

Any additional comments?

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions