| // Copyright 2020 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| syntax = "proto3"; |
| |
| package client; |
| |
| import "client/client_id.proto"; |
| |
| option go_package = "go.chromium.org/chromiumos/infra/proto/go/client"; |
| |
| // Client concept represents an end-user infra service that users interact with |
| // directly. e.g: CQ, Release testing. |
| // ClientId proto and companion protos are used for two purposes: |
| // 1) Coordinate configs across different internal sub services to achieve a |
| // certain property that's required by the end-user infra service. |
| // 2) Provide useful analytics of how the sub-services operate to fullfill |
| // requests from the end-user infra services. |
| // |
| // |
| // |
| // / |
| // --------------- 1:N / ----------- |
| // | Client | <---------| Profile | // Use for coordinate |
| // --------------- \ ----------- // behavioral configs |
| // ^ \ // of internal sub serivces |
| // | 1:N |
| // ____|______ |
| // / | \ |
| // --------- // Use for tracking/analytics |
| // |Request| // of how a request is fullfiled |
| // --------- // by internal sub services |
| // |
| // To encapsulate the concepts of Profiles & Requests within each Client, we |
| // design ProfileId & RequestId protos that are shareable between Client and |
| // infra sub services as simple as possible |
| // (mostly contain joinable id keys). |
| // This allows different Client implementation to define arbitrarily |
| // complex Profile & Request types without worrying about leaking those |
| // complexity to sub services. |
| // |
| message Client { |
| string name = 1; |
| client.ClientId id = 2; |
| } |