# Auto-generated by lucicfg.
# Do not modify manually.
#
# For the schema of this file, see RealmsCfg message:
#   https://luci-config.appspot.com/schemas/projects:realms.cfg

realms {
  name: "@root"
  bindings {
    role: "role/analysis.editor"
    principals: "group:googlers"
  }
  bindings {
    role: "role/analysis.queryUser"
    principals: "group:authenticated-users"
  }
  bindings {
    role: "role/analysis.reader"
    principals: "group:all"
  }
  bindings {
    role: "role/buildbucket.reader"
    principals: "group:all"
  }
  bindings {
    role: "role/configs.reader"
    principals: "group:all"
  }
  bindings {
    role: "role/configs.validator"
    principals: "user:webrtc-try-builder@chops-service-accounts.iam.gserviceaccount.com"
  }
  bindings {
    role: "role/logdog.reader"
    principals: "group:all"
  }
  bindings {
    role: "role/logdog.writer"
    principals: "group:luci-logdog-chromium-writers"
  }
  bindings {
    role: "role/scheduler.owner"
    principals: "group:project-webrtc-admins"
  }
  bindings {
    role: "role/scheduler.reader"
    principals: "group:all"
  }
  bindings {
    role: "role/swarming.poolOwner"
    principals: "group:project-webrtc-admins"
  }
  bindings {
    role: "role/swarming.poolUser"
    principals: "group:project-webrtc-admins"
  }
  bindings {
    role: "role/swarming.poolViewer"
    principals: "group:all"
  }
  bindings {
    role: "role/swarming.taskServiceAccount"
    principals: "user:chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
  }
  bindings {
    role: "role/swarming.taskTriggerer"
    principals: "group:project-webrtc-admins"
  }
}
realms {
  name: "ci"
  bindings {
    role: "role/buildbucket.builderServiceAccount"
    principals: "user:webrtc-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
  }
  bindings {
    role: "role/buildbucket.triggerer"
    principals: "group:project-webrtc-ci-schedulers"
  }
  bindings {
    role: "role/resultdb.invocationCreator"
    principals: "group:project-webrtc-ci-task-accounts"
  }
}
realms {
  name: "cron"
  bindings {
    role: "role/buildbucket.builderServiceAccount"
    principals: "user:chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com"
    principals: "user:webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com"
  }
}
realms {
  name: "perf"
  bindings {
    role: "role/buildbucket.builderServiceAccount"
    principals: "user:webrtc-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
  }
  bindings {
    role: "role/buildbucket.triggerer"
    principals: "group:service-account-chromeperf"
    principals: "user:webrtc-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
  }
  bindings {
    role: "role/swarming.taskTriggerer"
    principals: "group:project-webrtc-led-users"
  }
  bindings {
    role: "role/scheduler.triggerer"
    principals: "user:webrtc-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
    conditions {
      restrict {
        attribute: "scheduler.job.name"
        values: "Perf Android32 (R Pixel5)"
        values: "Perf Android64 (R Pixel5)"
        values: "Perf Fuchsia"
        values: "Perf Linux Bionic"
        values: "Perf Mac 11"
        values: "Perf Mac M1 Arm64 12"
        values: "Perf Win 10"
      }
    }
  }
}
realms {
  name: "pools/ci"
}
realms {
  name: "pools/ci-tests"
  bindings {
    role: "role/swarming.poolUser"
    principals: "group:project-webrtc-ci-task-accounts"
  }
  bindings {
    role: "role/swarming.taskServiceAccount"
    principals: "group:project-webrtc-ci-task-accounts"
  }
}
realms {
  name: "pools/cron"
  bindings {
    role: "role/swarming.poolUser"
    principals: "project:libyuv"
  }
}
realms {
  name: "pools/perf"
  bindings {
    role: "role/swarming.poolUser"
    principals: "group:project-webrtc-led-users"
  }
}
realms {
  name: "pools/try"
  bindings {
    role: "role/swarming.poolUser"
    principals: "group:project-webrtc-led-users"
  }
}
realms {
  name: "pools/try-tests"
  bindings {
    role: "role/swarming.poolUser"
    principals: "group:project-webrtc-try-task-accounts"
  }
  bindings {
    role: "role/swarming.taskServiceAccount"
    principals: "group:project-webrtc-try-task-accounts"
  }
}
realms {
  name: "try"
  bindings {
    role: "role/buildbucket.builderServiceAccount"
    principals: "user:webrtc-try-builder@chops-service-accounts.iam.gserviceaccount.com"
  }
  bindings {
    role: "role/buildbucket.triggerer"
    principals: "group:project-webrtc-tryjob-access"
    principals: "group:service-account-cq"
  }
  bindings {
    role: "role/resultdb.invocationCreator"
    principals: "group:project-webrtc-try-task-accounts"
  }
  bindings {
    role: "role/swarming.taskTriggerer"
    principals: "group:project-webrtc-led-users"
  }
}
