main = [
  "exp_check_pipeline",
  "daily_report_pipeline"
]

[config]

  [config.storage]
  driver = "mysql"
  datasource = "root:@(172.16.4.4:32582)/schrodinger"
  max-idle-conns = 256

  [config.baseConfig]
  baseDomain = "schrodinger.pingcap.net"

  [config.slack]
  channel = "#schrodinger_alert"
  username = "schrodinger_bot"
  token = "xoxb-338269940566-EqbYEgr8kg007mVEqWdY4gwT"

[[middleware]]
name = "exp_check"
driver = "schedule"

  [middleware.config]
  interval = 5

[[middleware]]
name = "daily_report"
driver = "schedule"

  [middleware.config]
  interval = 10

[[middleware]]
name = "log"

[[middleware]]
name = "notify"
driver = "combine"
config = [
  "log",
  "slack"
]

[[middleware]]
name = "slack"

  [middleware.config]
  __ref = "slack"
  title = "schrodinger"

[[middleware]]
name = "foreach"

[[middleware]]
name = "serialize"

[[middleware]]
name = "pass"

[[middleware]]
name = "get_undestroyed_abnormal_unalerted_experiments"

  [middleware.config]
  __ref = "storage"

[[middleware]]
name = "update_notify_time"

  [middleware.config]
  __ref = "storage"

[[middleware]]
name = "generate_exp_report"

  [middleware.config]
  __ref = "baseConfig"

[[middleware]]
name = "notify_pipeline"
driver = "pipeline"
config = [
  "update_notify_time",
  "generate_exp_report"
]

[[middleware]]
name = "match_too_early_exp"

  [middleware.config]
  time = 72

[[middleware]]
name = "destroy_exp"

  [middleware.config]
  __ref = [
    "baseConfig"
  ]

[[middleware]]
name = "generate_destroy_alert"

  [middleware.config]
  __ref = [
    "baseConfig"
  ]

[[middleware]]
name = "destroy_pipeline"
driver = "pipeline"
config = [
  "match_too_early_exp",
  "destroy_exp",
  "generate_destroy_alert"
]

[[middleware]]
name = "handle_experiments"
driver = "combine"
config = [
  "notify_pipeline",
  "destroy_pipeline"
]

[[middleware]]
name = "exp_check_pipeline"
driver = "pipeline"
config = [
  "exp_check",
  "get_undestroyed_abnormal_unalerted_experiments",
  "foreach",
  "handle_experiments",
  "notify"
]

[[middleware]]
name = "generate_daily_report"
driver = "daily_report"

  [middleware.config]
  __ref = [
    "storage",
    "baseConfig"
  ]

[[middleware]]
name = "daily_report_pipeline"
driver = "pipeline"
config = [
  "daily_report",
  "generate_daily_report",
  "notify"
]
