# 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 (M AOSP Nexus6)"
        values: "Perf Android32 (M Nexus5)"
        values: "Perf Android32 (O Pixel2)"
        values: "Perf Android32 (R Pixel5)"
        values: "Perf Android64 (M Nexus5X)"
        values: "Perf Android64 (O Pixel2)"
        values: "Perf Android64 (R Pixel5)"
        values: "Perf Linux Bionic"
        values: "Perf Mac 11"
        values: "Perf Mac M1 Arm64 12"
        values: "Perf Win7"
      }
    }
  }
}
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"
  }
}
