# This configuration file controls which applications
# can be pushed to which servers.
#
# Each server is configured at [servers.{servername}]
# where {servername} is the GCE name of the server.
# The only supported value is appNames which is a list
# of applications that can be installed on the server.
#
# The names in appName should match up with the directory
# names in gs://skia-push/debs/.
#
[servers]

# For example this section would indicated that grains and logserver can be
# deployed to server skia-testing-b.
#
#  [servers.skia-testing-b]
#  appNames = [
#    "logserver",
#    "grains",
#  ]

  [servers.skia-monitoring]
  appNames = [
    "datahopper",
    "grains",
    "logserver",
    "pull",
    "prober",
  ]

  [servers.skia-push]
  appNames = [
    "logserver",
    "pull",
    "push",
  ]

  [servers.skia-testing-b]
  appNames = [
    "logserver",
    "pull",
  ]

  [servers.skia-webtry-b]
  appNames = [
    "logserver",
    "pull",
  ]
