// Configuration proto for Kubernetes provider.
//
// Example provider config:
// {
//   pods {}
// }
//
// In probe config:
// probe {
//   targets{
//     rds_targets {
//       resource_path: "k8s://pods"
//       filter {
//         key: "namespace"
//         value: "default"
//       }
//       filter {
//         key: "name"
//         value: "cloudprober.*"
//       }
//     }
//   }
// }

// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.7
// 	protoc        v5.27.5
// source: github.com/cloudprober/cloudprober/internal/rds/file/proto/config.proto

package proto

import (
	proto "github.com/cloudprober/cloudprober/targets/endpoint/proto"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	reflect "reflect"
	sync "sync"
	unsafe "unsafe"
)

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)
)

type ProviderConfig_Format int32

const (
	ProviderConfig_UNSPECIFIED ProviderConfig_Format = 0 // Determine format using file extension/
	ProviderConfig_TEXTPB      ProviderConfig_Format = 1 // Text proto format (.textpb).
	ProviderConfig_JSON        ProviderConfig_Format = 2 // JSON proto format (.json).
	ProviderConfig_YAML        ProviderConfig_Format = 3 // YAML proto format (.yaml).
)

// Enum value maps for ProviderConfig_Format.
var (
	ProviderConfig_Format_name = map[int32]string{
		0: "UNSPECIFIED",
		1: "TEXTPB",
		2: "JSON",
		3: "YAML",
	}
	ProviderConfig_Format_value = map[string]int32{
		"UNSPECIFIED": 0,
		"TEXTPB":      1,
		"JSON":        2,
		"YAML":        3,
	}
)

func (x ProviderConfig_Format) Enum() *ProviderConfig_Format {
	p := new(ProviderConfig_Format)
	*p = x
	return p
}

func (x ProviderConfig_Format) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (ProviderConfig_Format) Descriptor() protoreflect.EnumDescriptor {
	return file_github_com_cloudprober_cloudprober_internal_rds_file_proto_config_proto_enumTypes[0].Descriptor()
}

func (ProviderConfig_Format) Type() protoreflect.EnumType {
	return &file_github_com_cloudprober_cloudprober_internal_rds_file_proto_config_proto_enumTypes[0]
}

func (x ProviderConfig_Format) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Do not use.
func (x *ProviderConfig_Format) UnmarshalJSON(b []byte) error {
	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
	if err != nil {
		return err
	}
	*x = ProviderConfig_Format(num)
	return nil
}

// Deprecated: Use ProviderConfig_Format.Descriptor instead.
func (ProviderConfig_Format) EnumDescriptor() ([]byte, []int) {
	return file_github_com_cloudprober_cloudprober_internal_rds_file_proto_config_proto_rawDescGZIP(), []int{0, 0}
}

// File provider config.
type ProviderConfig struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// File that contains resources in either textproto or json format. File can
	// be local, on GCS, on S3, or any HTTP(S) URL.
	// e.g.:
	//   - /tmp/resources.textpb
	//   - gs://my-bucket/resources.json
	//   - s3://my-bucket/resources.json
	//   - https://my-public-bucket.s3.amazonaws.com/resources.json
	//
	// Example in textproto format:
	//
	//	resource {
	//	  name: "switch-xx-01"
	//	  ip: "10.11.112.3"
	//	  port: 8080
	//	  labels {
	//	    key: "device_type"
	//	    value: "switch"
	//	  }
	//	}
	//
	//	resource {
	//	  name: "switch-yy-01"
	//	  ip: "10.16.110.12"
	//	  port: 8080
	//	}
	FilePath []string               `protobuf:"bytes,1,rep,name=file_path,json=filePath" json:"file_path,omitempty"`
	Format   *ProviderConfig_Format `protobuf:"varint,2,opt,name=format,enum=cloudprober.rds.file.ProviderConfig_Format" json:"format,omitempty"`
	// If specified, file will be re-read at the given interval.
	ReEvalSec *int32 `protobuf:"varint,3,opt,name=re_eval_sec,json=reEvalSec" json:"re_eval_sec,omitempty"`
	// Whenever possible, we reload a file only if it has been modified since the
	// last load. If following option is set, mod time check is disabled.
	// Note that mod-time check doesn't work for GCS.
	DisableModifiedTimeCheck *bool `protobuf:"varint,4,opt,name=disable_modified_time_check,json=disableModifiedTimeCheck" json:"disable_modified_time_check,omitempty"`
	unknownFields            protoimpl.UnknownFields
	sizeCache                protoimpl.SizeCache
}

func (x *ProviderConfig) Reset() {
	*x = ProviderConfig{}
	mi := &file_github_com_cloudprober_cloudprober_internal_rds_file_proto_config_proto_msgTypes[0]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ProviderConfig) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ProviderConfig) ProtoMessage() {}

func (x *ProviderConfig) ProtoReflect() protoreflect.Message {
	mi := &file_github_com_cloudprober_cloudprober_internal_rds_file_proto_config_proto_msgTypes[0]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ProviderConfig.ProtoReflect.Descriptor instead.
func (*ProviderConfig) Descriptor() ([]byte, []int) {
	return file_github_com_cloudprober_cloudprober_internal_rds_file_proto_config_proto_rawDescGZIP(), []int{0}
}

func (x *ProviderConfig) GetFilePath() []string {
	if x != nil {
		return x.FilePath
	}
	return nil
}

func (x *ProviderConfig) GetFormat() ProviderConfig_Format {
	if x != nil && x.Format != nil {
		return *x.Format
	}
	return ProviderConfig_UNSPECIFIED
}

func (x *ProviderConfig) GetReEvalSec() int32 {
	if x != nil && x.ReEvalSec != nil {
		return *x.ReEvalSec
	}
	return 0
}

func (x *ProviderConfig) GetDisableModifiedTimeCheck() bool {
	if x != nil && x.DisableModifiedTimeCheck != nil {
		return *x.DisableModifiedTimeCheck
	}
	return false
}

type FileResources struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// resource format is based on the cloudprober.targets.Endpoint protobuf. You
	// can specify endpoints in the following formats: TextPB, JSON, or YAML.
	//
	// Example in textproto format:
	//
	//	resource {
	//	  name: "web-01"
	//	  url: "https://cloudprober.org"
	//	}
	//
	//	resource {
	//	  name: "web-02"
	//	  ip: "10.1.2.3"
	//	  port: 8080
	//	}
	Resource      []*proto.Endpoint `protobuf:"bytes,1,rep,name=resource" json:"resource,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *FileResources) Reset() {
	*x = FileResources{}
	mi := &file_github_com_cloudprober_cloudprober_internal_rds_file_proto_config_proto_msgTypes[1]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *FileResources) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*FileResources) ProtoMessage() {}

func (x *FileResources) ProtoReflect() protoreflect.Message {
	mi := &file_github_com_cloudprober_cloudprober_internal_rds_file_proto_config_proto_msgTypes[1]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use FileResources.ProtoReflect.Descriptor instead.
func (*FileResources) Descriptor() ([]byte, []int) {
	return file_github_com_cloudprober_cloudprober_internal_rds_file_proto_config_proto_rawDescGZIP(), []int{1}
}

func (x *FileResources) GetResource() []*proto.Endpoint {
	if x != nil {
		return x.Resource
	}
	return nil
}

var File_github_com_cloudprober_cloudprober_internal_rds_file_proto_config_proto protoreflect.FileDescriptor

const file_github_com_cloudprober_cloudprober_internal_rds_file_proto_config_proto_rawDesc = "" +
	"\n" +
	"Ggithub.com/cloudprober/cloudprober/internal/rds/file/proto/config.proto\x12\x14cloudprober.rds.file\x1aHgithub.com/cloudprober/cloudprober/targets/endpoint/proto/endpoint.proto\"\x8c\x02\n" +
	"\x0eProviderConfig\x12\x1b\n" +
	"\tfile_path\x18\x01 \x03(\tR\bfilePath\x12C\n" +
	"\x06format\x18\x02 \x01(\x0e2+.cloudprober.rds.file.ProviderConfig.FormatR\x06format\x12\x1e\n" +
	"\vre_eval_sec\x18\x03 \x01(\x05R\treEvalSec\x12=\n" +
	"\x1bdisable_modified_time_check\x18\x04 \x01(\bR\x18disableModifiedTimeCheck\"9\n" +
	"\x06Format\x12\x0f\n" +
	"\vUNSPECIFIED\x10\x00\x12\n" +
	"\n" +
	"\x06TEXTPB\x10\x01\x12\b\n" +
	"\x04JSON\x10\x02\x12\b\n" +
	"\x04YAML\x10\x03\"J\n" +
	"\rFileResources\x129\n" +
	"\bresource\x18\x01 \x03(\v2\x1d.cloudprober.targets.EndpointR\bresourceB<Z:github.com/cloudprober/cloudprober/internal/rds/file/proto"

var (
	file_github_com_cloudprober_cloudprober_internal_rds_file_proto_config_proto_rawDescOnce sync.Once
	file_github_com_cloudprober_cloudprober_internal_rds_file_proto_config_proto_rawDescData []byte
)

func file_github_com_cloudprober_cloudprober_internal_rds_file_proto_config_proto_rawDescGZIP() []byte {
	file_github_com_cloudprober_cloudprober_internal_rds_file_proto_config_proto_rawDescOnce.Do(func() {
		file_github_com_cloudprober_cloudprober_internal_rds_file_proto_config_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_cloudprober_cloudprober_internal_rds_file_proto_config_proto_rawDesc), len(file_github_com_cloudprober_cloudprober_internal_rds_file_proto_config_proto_rawDesc)))
	})
	return file_github_com_cloudprober_cloudprober_internal_rds_file_proto_config_proto_rawDescData
}

var file_github_com_cloudprober_cloudprober_internal_rds_file_proto_config_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
var file_github_com_cloudprober_cloudprober_internal_rds_file_proto_config_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
var file_github_com_cloudprober_cloudprober_internal_rds_file_proto_config_proto_goTypes = []any{
	(ProviderConfig_Format)(0), // 0: cloudprober.rds.file.ProviderConfig.Format
	(*ProviderConfig)(nil),     // 1: cloudprober.rds.file.ProviderConfig
	(*FileResources)(nil),      // 2: cloudprober.rds.file.FileResources
	(*proto.Endpoint)(nil),     // 3: cloudprober.targets.Endpoint
}
var file_github_com_cloudprober_cloudprober_internal_rds_file_proto_config_proto_depIdxs = []int32{
	0, // 0: cloudprober.rds.file.ProviderConfig.format:type_name -> cloudprober.rds.file.ProviderConfig.Format
	3, // 1: cloudprober.rds.file.FileResources.resource:type_name -> cloudprober.targets.Endpoint
	2, // [2:2] is the sub-list for method output_type
	2, // [2:2] is the sub-list for method input_type
	2, // [2:2] is the sub-list for extension type_name
	2, // [2:2] is the sub-list for extension extendee
	0, // [0:2] is the sub-list for field type_name
}

func init() { file_github_com_cloudprober_cloudprober_internal_rds_file_proto_config_proto_init() }
func file_github_com_cloudprober_cloudprober_internal_rds_file_proto_config_proto_init() {
	if File_github_com_cloudprober_cloudprober_internal_rds_file_proto_config_proto != nil {
		return
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_cloudprober_cloudprober_internal_rds_file_proto_config_proto_rawDesc), len(file_github_com_cloudprober_cloudprober_internal_rds_file_proto_config_proto_rawDesc)),
			NumEnums:      1,
			NumMessages:   2,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_github_com_cloudprober_cloudprober_internal_rds_file_proto_config_proto_goTypes,
		DependencyIndexes: file_github_com_cloudprober_cloudprober_internal_rds_file_proto_config_proto_depIdxs,
		EnumInfos:         file_github_com_cloudprober_cloudprober_internal_rds_file_proto_config_proto_enumTypes,
		MessageInfos:      file_github_com_cloudprober_cloudprober_internal_rds_file_proto_config_proto_msgTypes,
	}.Build()
	File_github_com_cloudprober_cloudprober_internal_rds_file_proto_config_proto = out.File
	file_github_com_cloudprober_cloudprober_internal_rds_file_proto_config_proto_goTypes = nil
	file_github_com_cloudprober_cloudprober_internal_rds_file_proto_config_proto_depIdxs = nil
}
