blob: f03bb5025d12559ba185ebb9b3501489b21d987b [file] [log] [blame]
// Copyright 2015 The LUCI Authors. All rights reserved.
// Use of this source code is governed under the Apache License, Version 2.0
// that can be found in the LICENSE file.
// Schemas for config files in services/luci-config config set.
//
// In this file, "string pattern" is an exact string (can't have a colon) or a
// string that starts with "regex:", followed by a regular expression. In case
// of regex, the pattern must match an entire string, as if it was sorrounded by
// ^ and $.
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.25.0-devel
// protoc v3.12.1
// source: go.chromium.org/luci/common/proto/config/service_config.proto
package config
import (
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
sync "sync"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
// Depending on repository type, config service imports configuration files
// differently.
type ConfigSetLocation_StorageType int32
const (
// Will be used if storage_type is not set.
ConfigSetLocation_UNSET ConfigSetLocation_StorageType = 0
// Gitiles REST API is used to fetch config files.
ConfigSetLocation_GITILES ConfigSetLocation_StorageType = 1
)
// Enum value maps for ConfigSetLocation_StorageType.
var (
ConfigSetLocation_StorageType_name = map[int32]string{
0: "UNSET",
1: "GITILES",
}
ConfigSetLocation_StorageType_value = map[string]int32{
"UNSET": 0,
"GITILES": 1,
}
)
func (x ConfigSetLocation_StorageType) Enum() *ConfigSetLocation_StorageType {
p := new(ConfigSetLocation_StorageType)
*p = x
return p
}
func (x ConfigSetLocation_StorageType) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (ConfigSetLocation_StorageType) Descriptor() protoreflect.EnumDescriptor {
return file_go_chromium_org_luci_common_proto_config_service_config_proto_enumTypes[0].Descriptor()
}
func (ConfigSetLocation_StorageType) Type() protoreflect.EnumType {
return &file_go_chromium_org_luci_common_proto_config_service_config_proto_enumTypes[0]
}
func (x ConfigSetLocation_StorageType) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use ConfigSetLocation_StorageType.Descriptor instead.
func (ConfigSetLocation_StorageType) EnumDescriptor() ([]byte, []int) {
return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP(), []int{0, 0}
}
// Severity of a validation response message. In JSON encoded as a string.
type ValidationResponseMessage_Severity int32
const (
ValidationResponseMessage_UNKNOWN ValidationResponseMessage_Severity = 0
ValidationResponseMessage_DEBUG ValidationResponseMessage_Severity = 10
ValidationResponseMessage_INFO ValidationResponseMessage_Severity = 20
ValidationResponseMessage_WARNING ValidationResponseMessage_Severity = 30
ValidationResponseMessage_ERROR ValidationResponseMessage_Severity = 40
ValidationResponseMessage_CRITICAL ValidationResponseMessage_Severity = 50
)
// Enum value maps for ValidationResponseMessage_Severity.
var (
ValidationResponseMessage_Severity_name = map[int32]string{
0: "UNKNOWN",
10: "DEBUG",
20: "INFO",
30: "WARNING",
40: "ERROR",
50: "CRITICAL",
}
ValidationResponseMessage_Severity_value = map[string]int32{
"UNKNOWN": 0,
"DEBUG": 10,
"INFO": 20,
"WARNING": 30,
"ERROR": 40,
"CRITICAL": 50,
}
)
func (x ValidationResponseMessage_Severity) Enum() *ValidationResponseMessage_Severity {
p := new(ValidationResponseMessage_Severity)
*p = x
return p
}
func (x ValidationResponseMessage_Severity) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (ValidationResponseMessage_Severity) Descriptor() protoreflect.EnumDescriptor {
return file_go_chromium_org_luci_common_proto_config_service_config_proto_enumTypes[1].Descriptor()
}
func (ValidationResponseMessage_Severity) Type() protoreflect.EnumType {
return &file_go_chromium_org_luci_common_proto_config_service_config_proto_enumTypes[1]
}
func (x ValidationResponseMessage_Severity) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use ValidationResponseMessage_Severity.Descriptor instead.
func (ValidationResponseMessage_Severity) EnumDescriptor() ([]byte, []int) {
return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP(), []int{14, 0}
}
// DEPRECATED. DO NOT USE because the Gitiles URL is ambiguous due to lack of
// separation between the Git's ref and the location within the Git repo.
// Used to specify project/service configuration location.
type ConfigSetLocation struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// URL of the repository where project-wide configurations are stored.
Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"`
// Optional. Type of the configuration repository, e.g. GITILES.
StorageType ConfigSetLocation_StorageType `protobuf:"varint,2,opt,name=storage_type,json=storageType,proto3,enum=config.ConfigSetLocation_StorageType" json:"storage_type,omitempty"`
}
func (x *ConfigSetLocation) Reset() {
*x = ConfigSetLocation{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ConfigSetLocation) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ConfigSetLocation) ProtoMessage() {}
func (x *ConfigSetLocation) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ConfigSetLocation.ProtoReflect.Descriptor instead.
func (*ConfigSetLocation) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP(), []int{0}
}
func (x *ConfigSetLocation) GetUrl() string {
if x != nil {
return x.Url
}
return ""
}
func (x *ConfigSetLocation) GetStorageType() ConfigSetLocation_StorageType {
if x != nil {
return x.StorageType
}
return ConfigSetLocation_UNSET
}
// Use to specify configuration stored in Git repository importable via Gitiles
// API.
type GitilesLocation struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// URL of the Git repository.
// Must not end with "/".
// Must not end with ".git".
// Must not have "/a/" prefix of a path component.
//
// Example:
// OK:
// https://chromium.googlesource.com/infra/infra
// Not OK:
// https://chromium.googlesource.com/a/infra/infra
// https://chromium.googlesource.com/infra/infra/
// https://chromium.googlesource.com/infra/infra.git
Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
// Ref of the Git repository.
// Must be a fully qualifed ref starting with "refs/".
//
// Example:
// OK:
// refs/heads/branch
// refs/heads/infra/config
// refs/branch-heads/beta
// Not OK:
// master
// HEAD
// origin/main
// tags/123
Ref string `protobuf:"bytes,2,opt,name=ref,proto3" json:"ref,omitempty"`
// Path to the directory inside Git repository where configurations are stored.
// Optional. If not specified, defaults to top-level folder of the git repo.
// Must not start or end with "/".
//
// Example:
// OK:
// infra/config/generated
// (empty string)
// NOT OK:
// /
// /config
// infra/config/
Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"`
}
func (x *GitilesLocation) Reset() {
*x = GitilesLocation{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *GitilesLocation) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GitilesLocation) ProtoMessage() {}
func (x *GitilesLocation) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[1]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use GitilesLocation.ProtoReflect.Descriptor instead.
func (*GitilesLocation) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP(), []int{1}
}
func (x *GitilesLocation) GetRepo() string {
if x != nil {
return x.Repo
}
return ""
}
func (x *GitilesLocation) GetRef() string {
if x != nil {
return x.Ref
}
return ""
}
func (x *GitilesLocation) GetPath() string {
if x != nil {
return x.Path
}
return ""
}
// Used to define project specific identities for LUCI to act on behalf when
// interacting with external systems. This allows projects to use exclusive
// and isolated identities to not be accidentally affected by other projects.
type IdentityConfig struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// ServiceAccountEmail is the full service account email to use when
// LUCI acts on behalf of the project.
//
// Note: Due to token caching, it takes ~15 minutes for a config change
// to become effective. Keep this in mind when migrating projects to a
// new identity.
ServiceAccountEmail string `protobuf:"bytes,1,opt,name=service_account_email,json=serviceAccountEmail,proto3" json:"service_account_email,omitempty"`
}
func (x *IdentityConfig) Reset() {
*x = IdentityConfig{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *IdentityConfig) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*IdentityConfig) ProtoMessage() {}
func (x *IdentityConfig) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[2]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use IdentityConfig.ProtoReflect.Descriptor instead.
func (*IdentityConfig) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP(), []int{2}
}
func (x *IdentityConfig) GetServiceAccountEmail() string {
if x != nil {
return x.ServiceAccountEmail
}
return ""
}
// A tenant of a service. Defined in projects.cfg.
type Project struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Globally unique id of the project.
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
// Where to import "projects/<id>" config set from.
//
// Types that are assignable to Location:
// *Project_ConfigLocation
// *Project_GitilesLocation
Location isProject_Location `protobuf_oneof:"location"`
// IdentityConfig determines what identities are used when LUCI acts on
// behalf of the project towards external services.
IdentityConfig *IdentityConfig `protobuf:"bytes,3,opt,name=identity_config,json=identityConfig,proto3" json:"identity_config,omitempty"`
}
func (x *Project) Reset() {
*x = Project{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Project) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Project) ProtoMessage() {}
func (x *Project) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[3]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Project.ProtoReflect.Descriptor instead.
func (*Project) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP(), []int{3}
}
func (x *Project) GetId() string {
if x != nil {
return x.Id
}
return ""
}
func (m *Project) GetLocation() isProject_Location {
if m != nil {
return m.Location
}
return nil
}
func (x *Project) GetConfigLocation() *ConfigSetLocation {
if x, ok := x.GetLocation().(*Project_ConfigLocation); ok {
return x.ConfigLocation
}
return nil
}
func (x *Project) GetGitilesLocation() *GitilesLocation {
if x, ok := x.GetLocation().(*Project_GitilesLocation); ok {
return x.GitilesLocation
}
return nil
}
func (x *Project) GetIdentityConfig() *IdentityConfig {
if x != nil {
return x.IdentityConfig
}
return nil
}
type isProject_Location interface {
isProject_Location()
}
type Project_ConfigLocation struct {
// DEPRECATED. Use `gitiles_location` instead.
// Where to import "projects/<id>" config set from.
ConfigLocation *ConfigSetLocation `protobuf:"bytes,2,opt,name=config_location,json=configLocation,proto3,oneof"`
}
type Project_GitilesLocation struct {
GitilesLocation *GitilesLocation `protobuf:"bytes,4,opt,name=gitiles_location,json=gitilesLocation,proto3,oneof"`
}
func (*Project_ConfigLocation) isProject_Location() {}
func (*Project_GitilesLocation) isProject_Location() {}
// Schema of projects.cfg file. Represents luci tenants registry.
type ProjectsCfg struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// All projects served by this instance of Luci.
Projects []*Project `protobuf:"bytes,1,rep,name=projects,proto3" json:"projects,omitempty"`
}
func (x *ProjectsCfg) Reset() {
*x = ProjectsCfg{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ProjectsCfg) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ProjectsCfg) ProtoMessage() {}
func (x *ProjectsCfg) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[4]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ProjectsCfg.ProtoReflect.Descriptor instead.
func (*ProjectsCfg) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP(), []int{4}
}
func (x *ProjectsCfg) GetProjects() []*Project {
if x != nil {
return x.Projects
}
return nil
}
// Describes one luci service.
type Service struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Globally unique id of the service. Required.
// Used in "services/<service_id>" config set name.
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
// Email addresses of responsible and point-of-contacts for the service.
Owners []string `protobuf:"bytes,2,rep,name=owners,proto3" json:"owners,omitempty"`
// An HTTPS endpoint that returns JSON-encoded ServiceDynamicMetadata in body.
MetadataUrl string `protobuf:"bytes,4,opt,name=metadata_url,json=metadataUrl,proto3" json:"metadata_url,omitempty"`
// A list of identities that have access to this service's configs.
// of:
// * "group:<group>", where group is defined on auth server.
// * "<email>"
// * "<kind>:<value>" (for non-email identities)
//
// If not specified, only admins and trusted services have access.
Access []string `protobuf:"bytes,5,rep,name=access,proto3" json:"access,omitempty"`
// If set, use JWT auth in requests to services. This is usually used for
// Cloud Endpoints v2 support.
JwtAuth *Service_JWTAuth `protobuf:"bytes,6,opt,name=jwt_auth,json=jwtAuth,proto3" json:"jwt_auth,omitempty"`
}
func (x *Service) Reset() {
*x = Service{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Service) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Service) ProtoMessage() {}
func (x *Service) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[5]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Service.ProtoReflect.Descriptor instead.
func (*Service) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP(), []int{5}
}
func (x *Service) GetId() string {
if x != nil {
return x.Id
}
return ""
}
func (x *Service) GetOwners() []string {
if x != nil {
return x.Owners
}
return nil
}
func (x *Service) GetMetadataUrl() string {
if x != nil {
return x.MetadataUrl
}
return ""
}
func (x *Service) GetAccess() []string {
if x != nil {
return x.Access
}
return nil
}
func (x *Service) GetJwtAuth() *Service_JWTAuth {
if x != nil {
return x.JwtAuth
}
return nil
}
// Machine-generated service metadata, exposed by a service endpoint.
// Typically implemented by config component, embedded in an app:
// see appengine/components/components/config/endpoint.py
//
// If you add a field here, also add it to ServiceDynamicMetadata in endpoint.py
type ServiceDynamicMetadata struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Format version. Supported versions: 1.0.
Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`
// What configs this service can validate and how to validate them.
Validation *Validator `protobuf:"bytes,2,opt,name=validation,proto3" json:"validation,omitempty"`
}
func (x *ServiceDynamicMetadata) Reset() {
*x = ServiceDynamicMetadata{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ServiceDynamicMetadata) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ServiceDynamicMetadata) ProtoMessage() {}
func (x *ServiceDynamicMetadata) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[6]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ServiceDynamicMetadata.ProtoReflect.Descriptor instead.
func (*ServiceDynamicMetadata) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP(), []int{6}
}
func (x *ServiceDynamicMetadata) GetVersion() string {
if x != nil {
return x.Version
}
return ""
}
func (x *ServiceDynamicMetadata) GetValidation() *Validator {
if x != nil {
return x.Validation
}
return nil
}
// Schema of services.cfg
type ServicesCfg struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// A list of all luci services. Should be sorted by id.
Services []*Service `protobuf:"bytes,1,rep,name=services,proto3" json:"services,omitempty"`
}
func (x *ServicesCfg) Reset() {
*x = ServicesCfg{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ServicesCfg) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ServicesCfg) ProtoMessage() {}
func (x *ServicesCfg) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[7]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ServicesCfg.ProtoReflect.Descriptor instead.
func (*ServicesCfg) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP(), []int{7}
}
func (x *ServicesCfg) GetServices() []*Service {
if x != nil {
return x.Services
}
return nil
}
// Schema of acl.cfg file.
// Next tag: 8.
type AclCfg struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Name of the group that has access to all projects/* config sets.
// Only trusted services should be in this group.
ProjectAccessGroup string `protobuf:"bytes,2,opt,name=project_access_group,json=projectAccessGroup,proto3" json:"project_access_group,omitempty"`
// Name of the group that has access to all services/* config sets.
// Only trusted services should be in this group.
ServiceAccessGroup string `protobuf:"bytes,7,opt,name=service_access_group,json=serviceAccessGroup,proto3" json:"service_access_group,omitempty"`
// Name of the group that has admin access to the app.
AdminGroup string `protobuf:"bytes,3,opt,name=admin_group,json=adminGroup,proto3" json:"admin_group,omitempty"`
// Name of the group that may call validation API.
ValidationGroup string `protobuf:"bytes,5,opt,name=validation_group,json=validationGroup,proto3" json:"validation_group,omitempty"`
// Name of the group that may call reimport API.
ReimportGroup string `protobuf:"bytes,6,opt,name=reimport_group,json=reimportGroup,proto3" json:"reimport_group,omitempty"`
}
func (x *AclCfg) Reset() {
*x = AclCfg{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *AclCfg) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*AclCfg) ProtoMessage() {}
func (x *AclCfg) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[8]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use AclCfg.ProtoReflect.Descriptor instead.
func (*AclCfg) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP(), []int{8}
}
func (x *AclCfg) GetProjectAccessGroup() string {
if x != nil {
return x.ProjectAccessGroup
}
return ""
}
func (x *AclCfg) GetServiceAccessGroup() string {
if x != nil {
return x.ServiceAccessGroup
}
return ""
}
func (x *AclCfg) GetAdminGroup() string {
if x != nil {
return x.AdminGroup
}
return ""
}
func (x *AclCfg) GetValidationGroup() string {
if x != nil {
return x.ValidationGroup
}
return ""
}
func (x *AclCfg) GetReimportGroup() string {
if x != nil {
return x.ReimportGroup
}
return ""
}
// Schema for import.cfg. It specified how to import configuration files from
// external sources.
type ImportCfg struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Configuration of import from Gitiles repositories.
Gitiles *ImportCfg_Gitiles `protobuf:"bytes,1,opt,name=gitiles,proto3" json:"gitiles,omitempty"`
}
func (x *ImportCfg) Reset() {
*x = ImportCfg{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ImportCfg) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ImportCfg) ProtoMessage() {}
func (x *ImportCfg) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[9]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ImportCfg.ProtoReflect.Descriptor instead.
func (*ImportCfg) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP(), []int{9}
}
func (x *ImportCfg) GetGitiles() *ImportCfg_Gitiles {
if x != nil {
return x.Gitiles
}
return nil
}
// Schema of schemas.cfg
type SchemasCfg struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// List of known schemas. They are available at /schemas/<name> as a short
// mutable link.
Schemas []*SchemasCfg_Schema `protobuf:"bytes,1,rep,name=schemas,proto3" json:"schemas,omitempty"`
}
func (x *SchemasCfg) Reset() {
*x = SchemasCfg{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SchemasCfg) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SchemasCfg) ProtoMessage() {}
func (x *SchemasCfg) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[10]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use SchemasCfg.ProtoReflect.Descriptor instead.
func (*SchemasCfg) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP(), []int{10}
}
func (x *SchemasCfg) GetSchemas() []*SchemasCfg_Schema {
if x != nil {
return x.Schemas
}
return nil
}
// Defines a pattern of a config identity. Both config_set and path must
// match.
type ConfigPattern struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// A string pattern for config_set.
ConfigSet string `protobuf:"bytes,1,opt,name=config_set,json=configSet,proto3" json:"config_set,omitempty"`
// A string pattern for config file path.
Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"`
}
func (x *ConfigPattern) Reset() {
*x = ConfigPattern{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ConfigPattern) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ConfigPattern) ProtoMessage() {}
func (x *ConfigPattern) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[11]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ConfigPattern.ProtoReflect.Descriptor instead.
func (*ConfigPattern) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP(), []int{11}
}
func (x *ConfigPattern) GetConfigSet() string {
if x != nil {
return x.ConfigSet
}
return ""
}
func (x *ConfigPattern) GetPath() string {
if x != nil {
return x.Path
}
return ""
}
// Describes what configuration can be validated and how to validate them.
type Validator struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// A list of configuration patterns that this validator can validate.
Patterns []*ConfigPattern `protobuf:"bytes,1,rep,name=patterns,proto3" json:"patterns,omitempty"`
// URL of a validation endpoint. The config service will send an HTTP POST
// request to the endpoint, where body is JSON-encoded
// ValidationRequestMessage. The endpoint is expected to respond with
// HTTP status 200 and JSON-encoded ValidationResponseMessage.
Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"`
}
func (x *Validator) Reset() {
*x = Validator{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Validator) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Validator) ProtoMessage() {}
func (x *Validator) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[12]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Validator.ProtoReflect.Descriptor instead.
func (*Validator) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP(), []int{12}
}
func (x *Validator) GetPatterns() []*ConfigPattern {
if x != nil {
return x.Patterns
}
return nil
}
func (x *Validator) GetUrl() string {
if x != nil {
return x.Url
}
return ""
}
// This message is used only in JSON form. It is sent as request body to an
// external validation endpoint in order to validate a config.
type ValidationRequestMessage struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Config set of the config file to validate.
ConfigSet string `protobuf:"bytes,1,opt,name=config_set,json=configSet,proto3" json:"config_set,omitempty"`
// Path of the config file to validate.
Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"`
// Contents of the file.
Content []byte `protobuf:"bytes,3,opt,name=content,proto3" json:"content,omitempty"`
}
func (x *ValidationRequestMessage) Reset() {
*x = ValidationRequestMessage{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[13]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ValidationRequestMessage) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ValidationRequestMessage) ProtoMessage() {}
func (x *ValidationRequestMessage) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[13]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ValidationRequestMessage.ProtoReflect.Descriptor instead.
func (*ValidationRequestMessage) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP(), []int{13}
}
func (x *ValidationRequestMessage) GetConfigSet() string {
if x != nil {
return x.ConfigSet
}
return ""
}
func (x *ValidationRequestMessage) GetPath() string {
if x != nil {
return x.Path
}
return ""
}
func (x *ValidationRequestMessage) GetContent() []byte {
if x != nil {
return x.Content
}
return nil
}
// This message is used only in JSON form. It is expected from an external
// validation endpoint that validates a config.
type ValidationResponseMessage struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Errors, warnings and other information found during validation.
// If at least one error is found, the config is considered invalid.
Messages []*ValidationResponseMessage_Message `protobuf:"bytes,1,rep,name=messages,proto3" json:"messages,omitempty"`
}
func (x *ValidationResponseMessage) Reset() {
*x = ValidationResponseMessage{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[14]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ValidationResponseMessage) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ValidationResponseMessage) ProtoMessage() {}
func (x *ValidationResponseMessage) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[14]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ValidationResponseMessage.ProtoReflect.Descriptor instead.
func (*ValidationResponseMessage) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP(), []int{14}
}
func (x *ValidationResponseMessage) GetMessages() []*ValidationResponseMessage_Message {
if x != nil {
return x.Messages
}
return nil
}
type Service_JWTAuth struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Value for the 'aud' field in the JSON Web Token claim.
Audience string `protobuf:"bytes,1,opt,name=audience,proto3" json:"audience,omitempty"`
}
func (x *Service_JWTAuth) Reset() {
*x = Service_JWTAuth{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Service_JWTAuth) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Service_JWTAuth) ProtoMessage() {}
func (x *Service_JWTAuth) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[15]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Service_JWTAuth.ProtoReflect.Descriptor instead.
func (*Service_JWTAuth) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP(), []int{5, 0}
}
func (x *Service_JWTAuth) GetAudience() string {
if x != nil {
return x.Audience
}
return ""
}
type ImportCfg_Gitiles struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Request timeout in seconds when requesting commit log.
FetchLogDeadline int32 `protobuf:"varint,1,opt,name=fetch_log_deadline,json=fetchLogDeadline,proto3" json:"fetch_log_deadline,omitempty"`
// Request timeout in seconds when requesting directory archive.
FetchArchiveDeadline int32 `protobuf:"varint,2,opt,name=fetch_archive_deadline,json=fetchArchiveDeadline,proto3" json:"fetch_archive_deadline,omitempty"`
// DEPRECATED, ignored. TODO(nodir): remove.
// Default ref for project configs.
ProjectConfigDefaultRef string `protobuf:"bytes,3,opt,name=project_config_default_ref,json=projectConfigDefaultRef,proto3" json:"project_config_default_ref,omitempty"`
// DEPRECATED, ignored. TODO(nodir): remove.
// Default directory for project configs.
ProjectConfigDefaultPath string `protobuf:"bytes,4,opt,name=project_config_default_path,json=projectConfigDefaultPath,proto3" json:"project_config_default_path,omitempty"`
// Default directory for ref configs.
RefConfigDefaultPath string `protobuf:"bytes,5,opt,name=ref_config_default_path,json=refConfigDefaultPath,proto3" json:"ref_config_default_path,omitempty"`
}
func (x *ImportCfg_Gitiles) Reset() {
*x = ImportCfg_Gitiles{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ImportCfg_Gitiles) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ImportCfg_Gitiles) ProtoMessage() {}
func (x *ImportCfg_Gitiles) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[16]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ImportCfg_Gitiles.ProtoReflect.Descriptor instead.
func (*ImportCfg_Gitiles) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP(), []int{9, 0}
}
func (x *ImportCfg_Gitiles) GetFetchLogDeadline() int32 {
if x != nil {
return x.FetchLogDeadline
}
return 0
}
func (x *ImportCfg_Gitiles) GetFetchArchiveDeadline() int32 {
if x != nil {
return x.FetchArchiveDeadline
}
return 0
}
func (x *ImportCfg_Gitiles) GetProjectConfigDefaultRef() string {
if x != nil {
return x.ProjectConfigDefaultRef
}
return ""
}
func (x *ImportCfg_Gitiles) GetProjectConfigDefaultPath() string {
if x != nil {
return x.ProjectConfigDefaultPath
}
return ""
}
func (x *ImportCfg_Gitiles) GetRefConfigDefaultPath() string {
if x != nil {
return x.RefConfigDefaultPath
}
return ""
}
type SchemasCfg_Schema struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Name of schema.
// For service configs, "<config_set>:<path>"
// For project configs, "projects:<path>"
// For ref configs, "projects/refs:<path>"
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// URL to the schema definition, e.g. to a .proto file in a repository.
Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"`
}
func (x *SchemasCfg_Schema) Reset() {
*x = SchemasCfg_Schema{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[17]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SchemasCfg_Schema) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SchemasCfg_Schema) ProtoMessage() {}
func (x *SchemasCfg_Schema) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[17]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use SchemasCfg_Schema.ProtoReflect.Descriptor instead.
func (*SchemasCfg_Schema) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP(), []int{10, 0}
}
func (x *SchemasCfg_Schema) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *SchemasCfg_Schema) GetUrl() string {
if x != nil {
return x.Url
}
return ""
}
// A message that explains why a config is valid or not.
type ValidationResponseMessage_Message struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Path of the config file that has an error.
Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
// If an error, a config is considered invalid. Defaults to INFO.
Severity ValidationResponseMessage_Severity `protobuf:"varint,2,opt,name=severity,proto3,enum=config.ValidationResponseMessage_Severity" json:"severity,omitempty"`
// Textual representation of the message.
Text string `protobuf:"bytes,3,opt,name=text,proto3" json:"text,omitempty"`
}
func (x *ValidationResponseMessage_Message) Reset() {
*x = ValidationResponseMessage_Message{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[18]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ValidationResponseMessage_Message) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ValidationResponseMessage_Message) ProtoMessage() {}
func (x *ValidationResponseMessage_Message) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[18]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ValidationResponseMessage_Message.ProtoReflect.Descriptor instead.
func (*ValidationResponseMessage_Message) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP(), []int{14, 0}
}
func (x *ValidationResponseMessage_Message) GetPath() string {
if x != nil {
return x.Path
}
return ""
}
func (x *ValidationResponseMessage_Message) GetSeverity() ValidationResponseMessage_Severity {
if x != nil {
return x.Severity
}
return ValidationResponseMessage_UNKNOWN
}
func (x *ValidationResponseMessage_Message) GetText() string {
if x != nil {
return x.Text
}
return ""
}
var File_go_chromium_org_luci_common_proto_config_service_config_proto protoreflect.FileDescriptor
var file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDesc = []byte{
0x0a, 0x3d, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72,
0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69,
0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x96, 0x01, 0x0a, 0x11, 0x43, 0x6f, 0x6e, 0x66,
0x69, 0x67, 0x53, 0x65, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a,
0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12,
0x48, 0x0a, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18,
0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43,
0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x65, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x73, 0x74,
0x6f, 0x72, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0x25, 0x0a, 0x0b, 0x53, 0x74, 0x6f,
0x72, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x09, 0x0a, 0x05, 0x55, 0x4e, 0x53, 0x45,
0x54, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x47, 0x49, 0x54, 0x49, 0x4c, 0x45, 0x53, 0x10, 0x01,
0x22, 0x4b, 0x0a, 0x0f, 0x47, 0x69, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x4c, 0x6f, 0x63, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x65, 0x66, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x72, 0x65, 0x66, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74,
0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0x44, 0x0a,
0x0e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12,
0x32, 0x0a, 0x15, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75,
0x6e, 0x74, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13,
0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x6d,
0x61, 0x69, 0x6c, 0x22, 0xf2, 0x01, 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12,
0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12,
0x44, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69,
0x67, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x65, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4c, 0x6f, 0x63,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x44, 0x0a, 0x10, 0x67, 0x69, 0x74, 0x69, 0x6c, 0x65, 0x73,
0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x17, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x47, 0x69, 0x74, 0x69, 0x6c, 0x65, 0x73,
0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0f, 0x67, 0x69, 0x74, 0x69,
0x6c, 0x65, 0x73, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x0f, 0x69,
0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x49, 0x64,
0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x69, 0x64,
0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x0a, 0x0a, 0x08,
0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3a, 0x0a, 0x0b, 0x50, 0x72, 0x6f, 0x6a,
0x65, 0x63, 0x74, 0x73, 0x43, 0x66, 0x67, 0x12, 0x2b, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65,
0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x63, 0x6f, 0x6e, 0x66,
0x69, 0x67, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x6a,
0x65, 0x63, 0x74, 0x73, 0x22, 0xde, 0x01, 0x0a, 0x07, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64,
0x12, 0x16, 0x0a, 0x06, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09,
0x52, 0x06, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x65, 0x74, 0x61,
0x64, 0x61, 0x74, 0x61, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x55, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x61,
0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x61, 0x63, 0x63,
0x65, 0x73, 0x73, 0x12, 0x32, 0x0a, 0x08, 0x6a, 0x77, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x18,
0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x53,
0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4a, 0x57, 0x54, 0x41, 0x75, 0x74, 0x68, 0x52, 0x07,
0x6a, 0x77, 0x74, 0x41, 0x75, 0x74, 0x68, 0x1a, 0x25, 0x0a, 0x07, 0x4a, 0x57, 0x54, 0x41, 0x75,
0x74, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x4a, 0x04,
0x08, 0x03, 0x10, 0x04, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6c, 0x6f, 0x63,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x65, 0x0a, 0x16, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12,
0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x0a, 0x76, 0x61, 0x6c,
0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e,
0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72,
0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3a, 0x0a, 0x0b,
0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x43, 0x66, 0x67, 0x12, 0x2b, 0x0a, 0x08, 0x73,
0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e,
0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x08,
0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x22, 0xff, 0x01, 0x0a, 0x06, 0x41, 0x63, 0x6c,
0x43, 0x66, 0x67, 0x12, 0x30, 0x0a, 0x14, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x61,
0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28,
0x09, 0x52, 0x12, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73,
0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x30, 0x0a, 0x14, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x07, 0x20,
0x01, 0x28, 0x09, 0x52, 0x12, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x65,
0x73, 0x73, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x64, 0x6d, 0x69, 0x6e,
0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x64,
0x6d, 0x69, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x29, 0x0a, 0x10, 0x76, 0x61, 0x6c, 0x69,
0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x05, 0x20, 0x01,
0x28, 0x09, 0x52, 0x0f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72,
0x6f, 0x75, 0x70, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f,
0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x69,
0x6d, 0x70, 0x6f, 0x72, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05,
0x52, 0x18, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x62, 0x79, 0x5f,
0x68, 0x61, 0x73, 0x68, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 0xe3, 0x02, 0x0a, 0x09, 0x49,
0x6d, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x66, 0x67, 0x12, 0x33, 0x0a, 0x07, 0x67, 0x69, 0x74, 0x69,
0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x6e, 0x66,
0x69, 0x67, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x66, 0x67, 0x2e, 0x47, 0x69, 0x74,
0x69, 0x6c, 0x65, 0x73, 0x52, 0x07, 0x67, 0x69, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x1a, 0xa0, 0x02,
0x0a, 0x07, 0x47, 0x69, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x66, 0x65, 0x74,
0x63, 0x68, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x64, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x18,
0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x66, 0x65, 0x74, 0x63, 0x68, 0x4c, 0x6f, 0x67, 0x44,
0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x66, 0x65, 0x74, 0x63, 0x68,
0x5f, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e,
0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x66, 0x65, 0x74, 0x63, 0x68, 0x41, 0x72,
0x63, 0x68, 0x69, 0x76, 0x65, 0x44, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x3b, 0x0a,
0x1a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f,
0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28,
0x09, 0x52, 0x17, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x66, 0x12, 0x3d, 0x0a, 0x1b, 0x70, 0x72,
0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x64, 0x65, 0x66,
0x61, 0x75, 0x6c, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
0x18, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x65,
0x66, 0x61, 0x75, 0x6c, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x35, 0x0a, 0x17, 0x72, 0x65, 0x66,
0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f,
0x70, 0x61, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x72, 0x65, 0x66, 0x43,
0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x50, 0x61, 0x74, 0x68,
0x22, 0x71, 0x0a, 0x0a, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x43, 0x66, 0x67, 0x12, 0x33,
0x0a, 0x07, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x19, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73,
0x43, 0x66, 0x67, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x07, 0x73, 0x63, 0x68, 0x65,
0x6d, 0x61, 0x73, 0x1a, 0x2e, 0x0a, 0x06, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x12, 0x0a,
0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
0x75, 0x72, 0x6c, 0x22, 0x42, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x61, 0x74,
0x74, 0x65, 0x72, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x73,
0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
0x53, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28,
0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0x50, 0x0a, 0x09, 0x56, 0x61, 0x6c, 0x69, 0x64,
0x61, 0x74, 0x6f, 0x72, 0x12, 0x31, 0x0a, 0x08, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73,
0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e,
0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x52, 0x08, 0x70,
0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x67, 0x0a, 0x18, 0x56, 0x61, 0x6c,
0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65,
0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f,
0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69,
0x67, 0x53, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01,
0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74,
0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65,
0x6e, 0x74, 0x22, 0xb1, 0x02, 0x0a, 0x19, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
0x12, 0x45, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56, 0x61, 0x6c, 0x69,
0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65,
0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x08, 0x6d,
0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x1a, 0x79, 0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61,
0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x46, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69,
0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69,
0x67, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x53, 0x65, 0x76, 0x65,
0x72, 0x69, 0x74, 0x79, 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x12,
0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65,
0x78, 0x74, 0x22, 0x52, 0x0a, 0x08, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x0b,
0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x44,
0x45, 0x42, 0x55, 0x47, 0x10, 0x0a, 0x12, 0x08, 0x0a, 0x04, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x14,
0x12, 0x0b, 0x0a, 0x07, 0x57, 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x1e, 0x12, 0x09, 0x0a,
0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x28, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x52, 0x49, 0x54,
0x49, 0x43, 0x41, 0x4c, 0x10, 0x32, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescOnce sync.Once
file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescData = file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDesc
)
func file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP() []byte {
file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescOnce.Do(func() {
file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescData)
})
return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescData
}
var file_go_chromium_org_luci_common_proto_config_service_config_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
var file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes = make([]protoimpl.MessageInfo, 19)
var file_go_chromium_org_luci_common_proto_config_service_config_proto_goTypes = []interface{}{
(ConfigSetLocation_StorageType)(0), // 0: config.ConfigSetLocation.StorageType
(ValidationResponseMessage_Severity)(0), // 1: config.ValidationResponseMessage.Severity
(*ConfigSetLocation)(nil), // 2: config.ConfigSetLocation
(*GitilesLocation)(nil), // 3: config.GitilesLocation
(*IdentityConfig)(nil), // 4: config.IdentityConfig
(*Project)(nil), // 5: config.Project
(*ProjectsCfg)(nil), // 6: config.ProjectsCfg
(*Service)(nil), // 7: config.Service
(*ServiceDynamicMetadata)(nil), // 8: config.ServiceDynamicMetadata
(*ServicesCfg)(nil), // 9: config.ServicesCfg
(*AclCfg)(nil), // 10: config.AclCfg
(*ImportCfg)(nil), // 11: config.ImportCfg
(*SchemasCfg)(nil), // 12: config.SchemasCfg
(*ConfigPattern)(nil), // 13: config.ConfigPattern
(*Validator)(nil), // 14: config.Validator
(*ValidationRequestMessage)(nil), // 15: config.ValidationRequestMessage
(*ValidationResponseMessage)(nil), // 16: config.ValidationResponseMessage
(*Service_JWTAuth)(nil), // 17: config.Service.JWTAuth
(*ImportCfg_Gitiles)(nil), // 18: config.ImportCfg.Gitiles
(*SchemasCfg_Schema)(nil), // 19: config.SchemasCfg.Schema
(*ValidationResponseMessage_Message)(nil), // 20: config.ValidationResponseMessage.Message
}
var file_go_chromium_org_luci_common_proto_config_service_config_proto_depIdxs = []int32{
0, // 0: config.ConfigSetLocation.storage_type:type_name -> config.ConfigSetLocation.StorageType
2, // 1: config.Project.config_location:type_name -> config.ConfigSetLocation
3, // 2: config.Project.gitiles_location:type_name -> config.GitilesLocation
4, // 3: config.Project.identity_config:type_name -> config.IdentityConfig
5, // 4: config.ProjectsCfg.projects:type_name -> config.Project
17, // 5: config.Service.jwt_auth:type_name -> config.Service.JWTAuth
14, // 6: config.ServiceDynamicMetadata.validation:type_name -> config.Validator
7, // 7: config.ServicesCfg.services:type_name -> config.Service
18, // 8: config.ImportCfg.gitiles:type_name -> config.ImportCfg.Gitiles
19, // 9: config.SchemasCfg.schemas:type_name -> config.SchemasCfg.Schema
13, // 10: config.Validator.patterns:type_name -> config.ConfigPattern
20, // 11: config.ValidationResponseMessage.messages:type_name -> config.ValidationResponseMessage.Message
1, // 12: config.ValidationResponseMessage.Message.severity:type_name -> config.ValidationResponseMessage.Severity
13, // [13:13] is the sub-list for method output_type
13, // [13:13] is the sub-list for method input_type
13, // [13:13] is the sub-list for extension type_name
13, // [13:13] is the sub-list for extension extendee
0, // [0:13] is the sub-list for field type_name
}
func init() { file_go_chromium_org_luci_common_proto_config_service_config_proto_init() }
func file_go_chromium_org_luci_common_proto_config_service_config_proto_init() {
if File_go_chromium_org_luci_common_proto_config_service_config_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ConfigSetLocation); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GitilesLocation); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*IdentityConfig); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Project); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ProjectsCfg); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Service); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ServiceDynamicMetadata); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ServicesCfg); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*AclCfg); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ImportCfg); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SchemasCfg); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ConfigPattern); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Validator); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ValidationRequestMessage); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ValidationResponseMessage); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Service_JWTAuth); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ImportCfg_Gitiles); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SchemasCfg_Schema); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ValidationResponseMessage_Message); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[3].OneofWrappers = []interface{}{
(*Project_ConfigLocation)(nil),
(*Project_GitilesLocation)(nil),
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDesc,
NumEnums: 2,
NumMessages: 19,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_go_chromium_org_luci_common_proto_config_service_config_proto_goTypes,
DependencyIndexes: file_go_chromium_org_luci_common_proto_config_service_config_proto_depIdxs,
EnumInfos: file_go_chromium_org_luci_common_proto_config_service_config_proto_enumTypes,
MessageInfos: file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes,
}.Build()
File_go_chromium_org_luci_common_proto_config_service_config_proto = out.File
file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDesc = nil
file_go_chromium_org_luci_common_proto_config_service_config_proto_goTypes = nil
file_go_chromium_org_luci_common_proto_config_service_config_proto_depIdxs = nil
}