Add duo_scheduled_triggers_enabled cascading setting

What does this MR do and why?

Step 1 of #634139. MR 1 of 6.

Groups and projects need a way to turn off scheduled flow triggers. This MR adds the setting itself.

Nothing reads it yet. Enforcement and the settings forms are in follow up MRs.

How to set up and validate locally

1. Run the migrations: bundle exec rails db:migrate

2. In the Rails console:

group = Group.first
project = group.projects.first
user = User.find(<your id>)
ns = group.namespace_settings

# Confirm a project inherits the group value and that a project override wins

project.duo_scheduled_triggers_enabled # => true (instance default)

group.namespace_settings.update!(duo_scheduled_triggers_enabled: false)
project.reload.project_setting.duo_scheduled_triggers_enabled  # => true

project.project_setting.update!(duo_scheduled_triggers_enabled: true)
project.reload.project_setting.duo_scheduled_triggers_enabled  # => true (override)
  
# Confirm a parent lock prevents the override:

group.namespace_settings.update!(lock_duo_scheduled_triggers_enabled: true)

project.reload.project_setting.duo_scheduled_triggers_enabled_locked?  # => true
project.reload.project_setting.duo_scheduled_triggers_enabled # => false (ancestor's locked value)

# Confirm audit event
ns.update!(duo_scheduled_triggers_enabled: !ns.duo_scheduled_triggers_enabled)

ns.previous_changes['duo_scheduled_triggers_enabled'] # => [false, true]
Namespaces::NamespaceSettingChangesAuditor.new(user, ns, group).execute

AuditEvents::GroupAuditEvent
  .where(group_id: group.id)
  .find { |e| e.details[:event_name] == 'duo_scheduled_triggers_enabled_updated' }
  &.details
# => {event_name: "duo_scheduled_triggers_enabled_updated",
#     custom_message: "Changed duo_scheduled_triggers_enabled from false to true", ...}

MR Stack

  1. This MR
  2. Enforce the scheduled triggers setting (!265174 - merged)
  3. Add the scheduled automations setting to the Du... (!265569 - merged)
  4. Show when scheduled runs are turned off and blo... (!265545 - merged)
  5. Add scheduled automations setting to Projects (!266298 - merged)
  6. Exposes duo_scheduled_triggers_enabled in the p... (!267069)

References

Screenshots or screen recordings

Before After

MR acceptance checklist

Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.

Edited by Shola Quadri

Merge request reports

Loading
Loading