diff --git a/cli/cmd/env/configure.go b/cli/cmd/env/configure.go index 632de7bb9170..60949e97cfaf 100644 --- a/cli/cmd/env/configure.go +++ b/cli/cmd/env/configure.go @@ -3,7 +3,9 @@ package env import ( "context" "fmt" + "os" "slices" + "strings" "github.com/AlecAivazis/survey/v2" "github.com/rilldata/rill/cli/pkg/cmdutil" @@ -11,7 +13,9 @@ import ( adminv1 "github.com/rilldata/rill/proto/gen/rill/admin/v1" "github.com/rilldata/rill/runtime/compilers/rillv1" "github.com/rilldata/rill/runtime/compilers/rillv1beta" + "github.com/rilldata/rill/runtime/drivers" "github.com/rilldata/rill/runtime/pkg/activity" + "github.com/rilldata/rill/runtime/pkg/fileutil" "github.com/spf13/cobra" ) @@ -187,11 +191,8 @@ func VariablesFlow(ctx context.Context, ch *cmdutil.Helper, projectPath string) } fmt.Printf("\nConfiguring connector %q:\n", c.Name) - if c.Spec.ServiceAccountDocs != "" { - fmt.Printf("For instructions on how to create a service account, see: %s\n", c.Spec.ServiceAccountDocs) - } - if c.Spec.Help != "" { - fmt.Println(c.Spec.Help) + if c.Spec.DocsURL != "" { + fmt.Printf("For instructions on how to configure, see: %s\n", c.Spec.DocsURL) } for i := range c.Spec.ConfigProperties { @@ -210,12 +211,9 @@ func VariablesFlow(ctx context.Context, ch *cmdutil.Helper, projectPath string) question.Prompt = &survey.Input{Message: msg, Default: prop.Default} } - if prop.TransformFunc != nil { - question.Transform = prop.TransformFunc - } - - if prop.ValidateFunc != nil { - question.Validate = prop.ValidateFunc + if prop.Type == drivers.FilePropertyType { + question.Transform = fileTransformFunc + question.Validate = fileValidateFunc } answer := "" @@ -237,3 +235,34 @@ func VariablesFlow(ctx context.Context, ch *cmdutil.Helper, projectPath string) return variables, nil } + +func fileValidateFunc(any interface{}) error { + val := any.(string) + if val == "" { + // user can chhose to leave empty for public sources + return nil + } + + path, err := fileutil.ExpandHome(strings.TrimSpace(val)) + if err != nil { + return err + } + + _, err = os.Stat(path) + return err +} + +func fileTransformFunc(any interface{}) interface{} { + val := any.(string) + if val == "" { + return "" + } + + path, err := fileutil.ExpandHome(strings.TrimSpace(val)) + if err != nil { + return err + } + // ignoring error since PathError is already validated + content, _ := os.ReadFile(path) + return string(content) +} diff --git a/proto/gen/rill/runtime/v1/api.pb.go b/proto/gen/rill/runtime/v1/api.pb.go index f90964c5afc6..a8cc7f8189a8 100644 --- a/proto/gen/rill/runtime/v1/api.pb.go +++ b/proto/gen/rill/runtime/v1/api.pb.go @@ -181,6 +181,65 @@ func (ResourceEvent) EnumDescriptor() ([]byte, []int) { return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{2} } +// Type of the property +type ConnectorDriver_Property_Type int32 + +const ( + ConnectorDriver_Property_TYPE_UNSPECIFIED ConnectorDriver_Property_Type = 0 + ConnectorDriver_Property_TYPE_NUMBER ConnectorDriver_Property_Type = 1 + ConnectorDriver_Property_TYPE_BOOLEAN ConnectorDriver_Property_Type = 2 + ConnectorDriver_Property_TYPE_STRING ConnectorDriver_Property_Type = 3 + ConnectorDriver_Property_TYPE_FILE ConnectorDriver_Property_Type = 4 + ConnectorDriver_Property_TYPE_INFORMATIONAL ConnectorDriver_Property_Type = 5 +) + +// Enum value maps for ConnectorDriver_Property_Type. +var ( + ConnectorDriver_Property_Type_name = map[int32]string{ + 0: "TYPE_UNSPECIFIED", + 1: "TYPE_NUMBER", + 2: "TYPE_BOOLEAN", + 3: "TYPE_STRING", + 4: "TYPE_FILE", + 5: "TYPE_INFORMATIONAL", + } + ConnectorDriver_Property_Type_value = map[string]int32{ + "TYPE_UNSPECIFIED": 0, + "TYPE_NUMBER": 1, + "TYPE_BOOLEAN": 2, + "TYPE_STRING": 3, + "TYPE_FILE": 4, + "TYPE_INFORMATIONAL": 5, + } +) + +func (x ConnectorDriver_Property_Type) Enum() *ConnectorDriver_Property_Type { + p := new(ConnectorDriver_Property_Type) + *p = x + return p +} + +func (x ConnectorDriver_Property_Type) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ConnectorDriver_Property_Type) Descriptor() protoreflect.EnumDescriptor { + return file_rill_runtime_v1_api_proto_enumTypes[3].Descriptor() +} + +func (ConnectorDriver_Property_Type) Type() protoreflect.EnumType { + return &file_rill_runtime_v1_api_proto_enumTypes[3] +} + +func (x ConnectorDriver_Property_Type) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ConnectorDriver_Property_Type.Descriptor instead. +func (ConnectorDriver_Property_Type) EnumDescriptor() ([]byte, []int) { + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{52, 0, 0} +} + // Code represents different categories of reconciliation errors type ReconcileError_Code int32 @@ -234,11 +293,11 @@ func (x ReconcileError_Code) String() string { } func (ReconcileError_Code) Descriptor() protoreflect.EnumDescriptor { - return file_rill_runtime_v1_api_proto_enumTypes[3].Descriptor() + return file_rill_runtime_v1_api_proto_enumTypes[4].Descriptor() } func (ReconcileError_Code) Type() protoreflect.EnumType { - return &file_rill_runtime_v1_api_proto_enumTypes[3] + return &file_rill_runtime_v1_api_proto_enumTypes[4] } func (x ReconcileError_Code) Number() protoreflect.EnumNumber { @@ -247,63 +306,7 @@ func (x ReconcileError_Code) Number() protoreflect.EnumNumber { // Deprecated: Use ReconcileError_Code.Descriptor instead. func (ReconcileError_Code) EnumDescriptor() ([]byte, []int) { - return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{63, 0} -} - -// Type represents the field type -type ConnectorSpec_Property_Type int32 - -const ( - ConnectorSpec_Property_TYPE_UNSPECIFIED ConnectorSpec_Property_Type = 0 - ConnectorSpec_Property_TYPE_STRING ConnectorSpec_Property_Type = 1 - ConnectorSpec_Property_TYPE_NUMBER ConnectorSpec_Property_Type = 2 - ConnectorSpec_Property_TYPE_BOOLEAN ConnectorSpec_Property_Type = 3 - ConnectorSpec_Property_TYPE_INFORMATIONAL ConnectorSpec_Property_Type = 4 -) - -// Enum value maps for ConnectorSpec_Property_Type. -var ( - ConnectorSpec_Property_Type_name = map[int32]string{ - 0: "TYPE_UNSPECIFIED", - 1: "TYPE_STRING", - 2: "TYPE_NUMBER", - 3: "TYPE_BOOLEAN", - 4: "TYPE_INFORMATIONAL", - } - ConnectorSpec_Property_Type_value = map[string]int32{ - "TYPE_UNSPECIFIED": 0, - "TYPE_STRING": 1, - "TYPE_NUMBER": 2, - "TYPE_BOOLEAN": 3, - "TYPE_INFORMATIONAL": 4, - } -) - -func (x ConnectorSpec_Property_Type) Enum() *ConnectorSpec_Property_Type { - p := new(ConnectorSpec_Property_Type) - *p = x - return p -} - -func (x ConnectorSpec_Property_Type) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (ConnectorSpec_Property_Type) Descriptor() protoreflect.EnumDescriptor { - return file_rill_runtime_v1_api_proto_enumTypes[4].Descriptor() -} - -func (ConnectorSpec_Property_Type) Type() protoreflect.EnumType { - return &file_rill_runtime_v1_api_proto_enumTypes[4] -} - -func (x ConnectorSpec_Property_Type) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use ConnectorSpec_Property_Type.Descriptor instead. -func (ConnectorSpec_Property_Type) EnumDescriptor() ([]byte, []int) { - return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{72, 0, 0} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{71, 0} } // Request message for RuntimeService.Ping @@ -3531,34 +3534,36 @@ func (*CreateTriggerResponse) Descriptor() ([]byte, []int) { return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{51} } -// CatalogEntry contains information about an object in the catalog -type CatalogEntry struct { +// ConnectorDriver represents a connector driver available in the runtime. +type ConnectorDriver struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + // Name is the name of the connector Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Types that are assignable to Object: - // - // *CatalogEntry_Table - // *CatalogEntry_Source - // *CatalogEntry_Model - // *CatalogEntry_MetricsView - Object isCatalogEntry_Object `protobuf_oneof:"object"` - Path string `protobuf:"bytes,6,opt,name=path,proto3" json:"path,omitempty"` - // Marks whether this entry is embedded or not. If yes then this will not have a corresponding artifact. - Embedded bool `protobuf:"varint,7,opt,name=embedded,proto3" json:"embedded,omitempty"` - // Immediate parent entries in the DAG - Parents []string `protobuf:"bytes,8,rep,name=parents,proto3" json:"parents,omitempty"` - // Immediate child entries in the DAG - Children []string `protobuf:"bytes,9,rep,name=children,proto3" json:"children,omitempty"` - CreatedOn *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` - UpdatedOn *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=updated_on,json=updatedOn,proto3" json:"updated_on,omitempty"` - RefreshedOn *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=refreshed_on,json=refreshedOn,proto3" json:"refreshed_on,omitempty"` -} - -func (x *CatalogEntry) Reset() { - *x = CatalogEntry{} + // Properties for configuring the connector + ConfigProperties []*ConnectorDriver_Property `protobuf:"bytes,2,rep,name=config_properties,json=configProperties,proto3" json:"config_properties,omitempty"` + // Properties that can be provided to the connector when using it as a source + SourceProperties []*ConnectorDriver_Property `protobuf:"bytes,3,rep,name=source_properties,json=sourceProperties,proto3" json:"source_properties,omitempty"` + // Pretty display name for use in UIs + DisplayName string `protobuf:"bytes,4,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + // Human readable description of the connector + Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"` + // Capabilities supported by the connector + ImplementsRegistry bool `protobuf:"varint,10,opt,name=implements_registry,json=implementsRegistry,proto3" json:"implements_registry,omitempty"` + ImplementsCatalog bool `protobuf:"varint,11,opt,name=implements_catalog,json=implementsCatalog,proto3" json:"implements_catalog,omitempty"` + ImplementsRepo bool `protobuf:"varint,12,opt,name=implements_repo,json=implementsRepo,proto3" json:"implements_repo,omitempty"` + ImplementsAdmin bool `protobuf:"varint,13,opt,name=implements_admin,json=implementsAdmin,proto3" json:"implements_admin,omitempty"` + ImplementsAi bool `protobuf:"varint,14,opt,name=implements_ai,json=implementsAi,proto3" json:"implements_ai,omitempty"` + ImplementsSqlStore bool `protobuf:"varint,15,opt,name=implements_sql_store,json=implementsSqlStore,proto3" json:"implements_sql_store,omitempty"` + ImplementsOlap bool `protobuf:"varint,16,opt,name=implements_olap,json=implementsOlap,proto3" json:"implements_olap,omitempty"` + ImplementsObjectStore bool `protobuf:"varint,17,opt,name=implements_object_store,json=implementsObjectStore,proto3" json:"implements_object_store,omitempty"` + ImplementsFileStore bool `protobuf:"varint,18,opt,name=implements_file_store,json=implementsFileStore,proto3" json:"implements_file_store,omitempty"` +} + +func (x *ConnectorDriver) Reset() { + *x = ConnectorDriver{} if protoimpl.UnsafeEnabled { mi := &file_rill_runtime_v1_api_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3566,13 +3571,13 @@ func (x *CatalogEntry) Reset() { } } -func (x *CatalogEntry) String() string { +func (x *ConnectorDriver) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CatalogEntry) ProtoMessage() {} +func (*ConnectorDriver) ProtoMessage() {} -func (x *CatalogEntry) ProtoReflect() protoreflect.Message { +func (x *ConnectorDriver) ProtoReflect() protoreflect.Message { mi := &file_rill_runtime_v1_api_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3584,142 +3589,135 @@ func (x *CatalogEntry) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CatalogEntry.ProtoReflect.Descriptor instead. -func (*CatalogEntry) Descriptor() ([]byte, []int) { +// Deprecated: Use ConnectorDriver.ProtoReflect.Descriptor instead. +func (*ConnectorDriver) Descriptor() ([]byte, []int) { return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{52} } -func (x *CatalogEntry) GetName() string { +func (x *ConnectorDriver) GetName() string { if x != nil { return x.Name } return "" } -func (m *CatalogEntry) GetObject() isCatalogEntry_Object { - if m != nil { - return m.Object +func (x *ConnectorDriver) GetConfigProperties() []*ConnectorDriver_Property { + if x != nil { + return x.ConfigProperties } return nil } -func (x *CatalogEntry) GetTable() *Table { - if x, ok := x.GetObject().(*CatalogEntry_Table); ok { - return x.Table +func (x *ConnectorDriver) GetSourceProperties() []*ConnectorDriver_Property { + if x != nil { + return x.SourceProperties } return nil } -func (x *CatalogEntry) GetSource() *Source { - if x, ok := x.GetObject().(*CatalogEntry_Source); ok { - return x.Source +func (x *ConnectorDriver) GetDisplayName() string { + if x != nil { + return x.DisplayName } - return nil + return "" } -func (x *CatalogEntry) GetModel() *Model { - if x, ok := x.GetObject().(*CatalogEntry_Model); ok { - return x.Model +func (x *ConnectorDriver) GetDescription() string { + if x != nil { + return x.Description } - return nil + return "" } -func (x *CatalogEntry) GetMetricsView() *MetricsView { - if x, ok := x.GetObject().(*CatalogEntry_MetricsView); ok { - return x.MetricsView +func (x *ConnectorDriver) GetImplementsRegistry() bool { + if x != nil { + return x.ImplementsRegistry } - return nil + return false } -func (x *CatalogEntry) GetPath() string { +func (x *ConnectorDriver) GetImplementsCatalog() bool { if x != nil { - return x.Path + return x.ImplementsCatalog } - return "" + return false } -func (x *CatalogEntry) GetEmbedded() bool { +func (x *ConnectorDriver) GetImplementsRepo() bool { if x != nil { - return x.Embedded + return x.ImplementsRepo } return false } -func (x *CatalogEntry) GetParents() []string { +func (x *ConnectorDriver) GetImplementsAdmin() bool { if x != nil { - return x.Parents + return x.ImplementsAdmin } - return nil + return false } -func (x *CatalogEntry) GetChildren() []string { +func (x *ConnectorDriver) GetImplementsAi() bool { if x != nil { - return x.Children + return x.ImplementsAi } - return nil + return false } -func (x *CatalogEntry) GetCreatedOn() *timestamppb.Timestamp { +func (x *ConnectorDriver) GetImplementsSqlStore() bool { if x != nil { - return x.CreatedOn + return x.ImplementsSqlStore } - return nil + return false } -func (x *CatalogEntry) GetUpdatedOn() *timestamppb.Timestamp { +func (x *ConnectorDriver) GetImplementsOlap() bool { if x != nil { - return x.UpdatedOn + return x.ImplementsOlap } - return nil + return false } -func (x *CatalogEntry) GetRefreshedOn() *timestamppb.Timestamp { +func (x *ConnectorDriver) GetImplementsObjectStore() bool { if x != nil { - return x.RefreshedOn + return x.ImplementsObjectStore } - return nil -} - -type isCatalogEntry_Object interface { - isCatalogEntry_Object() -} - -type CatalogEntry_Table struct { - Table *Table `protobuf:"bytes,2,opt,name=table,proto3,oneof"` -} - -type CatalogEntry_Source struct { - Source *Source `protobuf:"bytes,3,opt,name=source,proto3,oneof"` -} - -type CatalogEntry_Model struct { - Model *Model `protobuf:"bytes,4,opt,name=model,proto3,oneof"` + return false } -type CatalogEntry_MetricsView struct { - MetricsView *MetricsView `protobuf:"bytes,5,opt,name=metrics_view,json=metricsView,proto3,oneof"` +func (x *ConnectorDriver) GetImplementsFileStore() bool { + if x != nil { + return x.ImplementsFileStore + } + return false } -func (*CatalogEntry_Table) isCatalogEntry_Object() {} - -func (*CatalogEntry_Source) isCatalogEntry_Object() {} - -func (*CatalogEntry_Model) isCatalogEntry_Object() {} - -func (*CatalogEntry_MetricsView) isCatalogEntry_Object() {} - -// Request message for RuntimeService.ListCatalogEntries -type ListCatalogEntriesRequest struct { +// AnalyzedConnector contains information about a connector that is referenced in the project files. +type AnalyzedConnector struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - InstanceId string `protobuf:"bytes,1,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"` - Type ObjectType `protobuf:"varint,2,opt,name=type,proto3,enum=rill.runtime.v1.ObjectType" json:"type,omitempty"` -} - -func (x *ListCatalogEntriesRequest) Reset() { - *x = ListCatalogEntriesRequest{} + // Connector name + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Connector driver metadata + Driver *ConnectorDriver `protobuf:"bytes,2,opt,name=driver,proto3" json:"driver,omitempty"` + // Combined config properties for the connector + Config map[string]string `protobuf:"bytes,3,rep,name=config,proto3" json:"config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // Config properties preset by the runtime or when the instance was created + PresetConfig map[string]string `protobuf:"bytes,4,rep,name=preset_config,json=presetConfig,proto3" json:"preset_config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // Config properties set in project YAML files + ProjectConfig map[string]string `protobuf:"bytes,5,rep,name=project_config,json=projectConfig,proto3" json:"project_config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // Config properties set as dynamic variables + EnvConfig map[string]string `protobuf:"bytes,6,rep,name=env_config,json=envConfig,proto3" json:"env_config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // True if the connector can be accessed without credentials + HasAnonymousAccess bool `protobuf:"varint,7,opt,name=has_anonymous_access,json=hasAnonymousAccess,proto3" json:"has_anonymous_access,omitempty"` + // List of resources that appear to use the connector + UsedBy []*ResourceName `protobuf:"bytes,8,rep,name=used_by,json=usedBy,proto3" json:"used_by,omitempty"` +} + +func (x *AnalyzedConnector) Reset() { + *x = AnalyzedConnector{} if protoimpl.UnsafeEnabled { mi := &file_rill_runtime_v1_api_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3727,13 +3725,13 @@ func (x *ListCatalogEntriesRequest) Reset() { } } -func (x *ListCatalogEntriesRequest) String() string { +func (x *AnalyzedConnector) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListCatalogEntriesRequest) ProtoMessage() {} +func (*AnalyzedConnector) ProtoMessage() {} -func (x *ListCatalogEntriesRequest) ProtoReflect() protoreflect.Message { +func (x *AnalyzedConnector) ProtoReflect() protoreflect.Message { mi := &file_rill_runtime_v1_api_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3745,36 +3743,76 @@ func (x *ListCatalogEntriesRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListCatalogEntriesRequest.ProtoReflect.Descriptor instead. -func (*ListCatalogEntriesRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use AnalyzedConnector.ProtoReflect.Descriptor instead. +func (*AnalyzedConnector) Descriptor() ([]byte, []int) { return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{53} } -func (x *ListCatalogEntriesRequest) GetInstanceId() string { +func (x *AnalyzedConnector) GetName() string { if x != nil { - return x.InstanceId + return x.Name } return "" } -func (x *ListCatalogEntriesRequest) GetType() ObjectType { +func (x *AnalyzedConnector) GetDriver() *ConnectorDriver { if x != nil { - return x.Type + return x.Driver } - return ObjectType_OBJECT_TYPE_UNSPECIFIED + return nil } -// Response message for RuntimeService.ListCatalogEntries -type ListCatalogEntriesResponse struct { +func (x *AnalyzedConnector) GetConfig() map[string]string { + if x != nil { + return x.Config + } + return nil +} + +func (x *AnalyzedConnector) GetPresetConfig() map[string]string { + if x != nil { + return x.PresetConfig + } + return nil +} + +func (x *AnalyzedConnector) GetProjectConfig() map[string]string { + if x != nil { + return x.ProjectConfig + } + return nil +} + +func (x *AnalyzedConnector) GetEnvConfig() map[string]string { + if x != nil { + return x.EnvConfig + } + return nil +} + +func (x *AnalyzedConnector) GetHasAnonymousAccess() bool { + if x != nil { + return x.HasAnonymousAccess + } + return false +} + +func (x *AnalyzedConnector) GetUsedBy() []*ResourceName { + if x != nil { + return x.UsedBy + } + return nil +} + +// Request message for RuntimeService.ListConnectorDrivers +type ListConnectorDriversRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - Entries []*CatalogEntry `protobuf:"bytes,1,rep,name=entries,proto3" json:"entries,omitempty"` } -func (x *ListCatalogEntriesResponse) Reset() { - *x = ListCatalogEntriesResponse{} +func (x *ListConnectorDriversRequest) Reset() { + *x = ListConnectorDriversRequest{} if protoimpl.UnsafeEnabled { mi := &file_rill_runtime_v1_api_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3782,13 +3820,13 @@ func (x *ListCatalogEntriesResponse) Reset() { } } -func (x *ListCatalogEntriesResponse) String() string { +func (x *ListConnectorDriversRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListCatalogEntriesResponse) ProtoMessage() {} +func (*ListConnectorDriversRequest) ProtoMessage() {} -func (x *ListCatalogEntriesResponse) ProtoReflect() protoreflect.Message { +func (x *ListConnectorDriversRequest) ProtoReflect() protoreflect.Message { mi := &file_rill_runtime_v1_api_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3800,30 +3838,22 @@ func (x *ListCatalogEntriesResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListCatalogEntriesResponse.ProtoReflect.Descriptor instead. -func (*ListCatalogEntriesResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ListConnectorDriversRequest.ProtoReflect.Descriptor instead. +func (*ListConnectorDriversRequest) Descriptor() ([]byte, []int) { return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{54} } -func (x *ListCatalogEntriesResponse) GetEntries() []*CatalogEntry { - if x != nil { - return x.Entries - } - return nil -} - -// Request message for RuntimeService.GetCatalogEntry -type GetCatalogEntryRequest struct { +// Response message for RuntimeService.ListConnectorDrivers +type ListConnectorDriversResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - InstanceId string `protobuf:"bytes,1,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Connectors []*ConnectorDriver `protobuf:"bytes,1,rep,name=connectors,proto3" json:"connectors,omitempty"` } -func (x *GetCatalogEntryRequest) Reset() { - *x = GetCatalogEntryRequest{} +func (x *ListConnectorDriversResponse) Reset() { + *x = ListConnectorDriversResponse{} if protoimpl.UnsafeEnabled { mi := &file_rill_runtime_v1_api_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3831,13 +3861,13 @@ func (x *GetCatalogEntryRequest) Reset() { } } -func (x *GetCatalogEntryRequest) String() string { +func (x *ListConnectorDriversResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetCatalogEntryRequest) ProtoMessage() {} +func (*ListConnectorDriversResponse) ProtoMessage() {} -func (x *GetCatalogEntryRequest) ProtoReflect() protoreflect.Message { +func (x *ListConnectorDriversResponse) ProtoReflect() protoreflect.Message { mi := &file_rill_runtime_v1_api_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3849,9 +3879,532 @@ func (x *GetCatalogEntryRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } +// Deprecated: Use ListConnectorDriversResponse.ProtoReflect.Descriptor instead. +func (*ListConnectorDriversResponse) Descriptor() ([]byte, []int) { + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{55} +} + +func (x *ListConnectorDriversResponse) GetConnectors() []*ConnectorDriver { + if x != nil { + return x.Connectors + } + return nil +} + +// Request message for RuntimeService.AnalyzeConnectors +type AnalyzeConnectorsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + InstanceId string `protobuf:"bytes,1,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"` +} + +func (x *AnalyzeConnectorsRequest) Reset() { + *x = AnalyzeConnectorsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_runtime_v1_api_proto_msgTypes[56] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AnalyzeConnectorsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AnalyzeConnectorsRequest) ProtoMessage() {} + +func (x *AnalyzeConnectorsRequest) ProtoReflect() protoreflect.Message { + mi := &file_rill_runtime_v1_api_proto_msgTypes[56] + 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 AnalyzeConnectorsRequest.ProtoReflect.Descriptor instead. +func (*AnalyzeConnectorsRequest) Descriptor() ([]byte, []int) { + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{56} +} + +func (x *AnalyzeConnectorsRequest) GetInstanceId() string { + if x != nil { + return x.InstanceId + } + return "" +} + +// Response message for RuntimeService.AnalyzeConnectors +type AnalyzeConnectorsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Connectors []*AnalyzedConnector `protobuf:"bytes,1,rep,name=connectors,proto3" json:"connectors,omitempty"` +} + +func (x *AnalyzeConnectorsResponse) Reset() { + *x = AnalyzeConnectorsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_runtime_v1_api_proto_msgTypes[57] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AnalyzeConnectorsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AnalyzeConnectorsResponse) ProtoMessage() {} + +func (x *AnalyzeConnectorsResponse) ProtoReflect() protoreflect.Message { + mi := &file_rill_runtime_v1_api_proto_msgTypes[57] + 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 AnalyzeConnectorsResponse.ProtoReflect.Descriptor instead. +func (*AnalyzeConnectorsResponse) Descriptor() ([]byte, []int) { + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{57} +} + +func (x *AnalyzeConnectorsResponse) GetConnectors() []*AnalyzedConnector { + if x != nil { + return x.Connectors + } + return nil +} + +// Request message for RuntimeService.ListNotifierConnectors +type ListNotifierConnectorsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + InstanceId string `protobuf:"bytes,1,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"` +} + +func (x *ListNotifierConnectorsRequest) Reset() { + *x = ListNotifierConnectorsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_runtime_v1_api_proto_msgTypes[58] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListNotifierConnectorsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListNotifierConnectorsRequest) ProtoMessage() {} + +func (x *ListNotifierConnectorsRequest) ProtoReflect() protoreflect.Message { + mi := &file_rill_runtime_v1_api_proto_msgTypes[58] + 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 ListNotifierConnectorsRequest.ProtoReflect.Descriptor instead. +func (*ListNotifierConnectorsRequest) Descriptor() ([]byte, []int) { + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{58} +} + +func (x *ListNotifierConnectorsRequest) GetInstanceId() string { + if x != nil { + return x.InstanceId + } + return "" +} + +// Response message for RuntimeService.ListNotifierConnectors +type ListNotifierConnectorsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Note: In this list, the Connector.config property will always be empty. + Connectors []*Connector `protobuf:"bytes,1,rep,name=connectors,proto3" json:"connectors,omitempty"` +} + +func (x *ListNotifierConnectorsResponse) Reset() { + *x = ListNotifierConnectorsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_runtime_v1_api_proto_msgTypes[59] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListNotifierConnectorsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListNotifierConnectorsResponse) ProtoMessage() {} + +func (x *ListNotifierConnectorsResponse) ProtoReflect() protoreflect.Message { + mi := &file_rill_runtime_v1_api_proto_msgTypes[59] + 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 ListNotifierConnectorsResponse.ProtoReflect.Descriptor instead. +func (*ListNotifierConnectorsResponse) Descriptor() ([]byte, []int) { + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{59} +} + +func (x *ListNotifierConnectorsResponse) GetConnectors() []*Connector { + if x != nil { + return x.Connectors + } + return nil +} + +// CatalogEntry contains information about an object in the catalog +type CatalogEntry struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Types that are assignable to Object: + // + // *CatalogEntry_Table + // *CatalogEntry_Source + // *CatalogEntry_Model + // *CatalogEntry_MetricsView + Object isCatalogEntry_Object `protobuf_oneof:"object"` + Path string `protobuf:"bytes,6,opt,name=path,proto3" json:"path,omitempty"` + // Marks whether this entry is embedded or not. If yes then this will not have a corresponding artifact. + Embedded bool `protobuf:"varint,7,opt,name=embedded,proto3" json:"embedded,omitempty"` + // Immediate parent entries in the DAG + Parents []string `protobuf:"bytes,8,rep,name=parents,proto3" json:"parents,omitempty"` + // Immediate child entries in the DAG + Children []string `protobuf:"bytes,9,rep,name=children,proto3" json:"children,omitempty"` + CreatedOn *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` + UpdatedOn *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=updated_on,json=updatedOn,proto3" json:"updated_on,omitempty"` + RefreshedOn *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=refreshed_on,json=refreshedOn,proto3" json:"refreshed_on,omitempty"` +} + +func (x *CatalogEntry) Reset() { + *x = CatalogEntry{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_runtime_v1_api_proto_msgTypes[60] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CatalogEntry) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CatalogEntry) ProtoMessage() {} + +func (x *CatalogEntry) ProtoReflect() protoreflect.Message { + mi := &file_rill_runtime_v1_api_proto_msgTypes[60] + 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 CatalogEntry.ProtoReflect.Descriptor instead. +func (*CatalogEntry) Descriptor() ([]byte, []int) { + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{60} +} + +func (x *CatalogEntry) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (m *CatalogEntry) GetObject() isCatalogEntry_Object { + if m != nil { + return m.Object + } + return nil +} + +func (x *CatalogEntry) GetTable() *Table { + if x, ok := x.GetObject().(*CatalogEntry_Table); ok { + return x.Table + } + return nil +} + +func (x *CatalogEntry) GetSource() *Source { + if x, ok := x.GetObject().(*CatalogEntry_Source); ok { + return x.Source + } + return nil +} + +func (x *CatalogEntry) GetModel() *Model { + if x, ok := x.GetObject().(*CatalogEntry_Model); ok { + return x.Model + } + return nil +} + +func (x *CatalogEntry) GetMetricsView() *MetricsView { + if x, ok := x.GetObject().(*CatalogEntry_MetricsView); ok { + return x.MetricsView + } + return nil +} + +func (x *CatalogEntry) GetPath() string { + if x != nil { + return x.Path + } + return "" +} + +func (x *CatalogEntry) GetEmbedded() bool { + if x != nil { + return x.Embedded + } + return false +} + +func (x *CatalogEntry) GetParents() []string { + if x != nil { + return x.Parents + } + return nil +} + +func (x *CatalogEntry) GetChildren() []string { + if x != nil { + return x.Children + } + return nil +} + +func (x *CatalogEntry) GetCreatedOn() *timestamppb.Timestamp { + if x != nil { + return x.CreatedOn + } + return nil +} + +func (x *CatalogEntry) GetUpdatedOn() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedOn + } + return nil +} + +func (x *CatalogEntry) GetRefreshedOn() *timestamppb.Timestamp { + if x != nil { + return x.RefreshedOn + } + return nil +} + +type isCatalogEntry_Object interface { + isCatalogEntry_Object() +} + +type CatalogEntry_Table struct { + Table *Table `protobuf:"bytes,2,opt,name=table,proto3,oneof"` +} + +type CatalogEntry_Source struct { + Source *Source `protobuf:"bytes,3,opt,name=source,proto3,oneof"` +} + +type CatalogEntry_Model struct { + Model *Model `protobuf:"bytes,4,opt,name=model,proto3,oneof"` +} + +type CatalogEntry_MetricsView struct { + MetricsView *MetricsView `protobuf:"bytes,5,opt,name=metrics_view,json=metricsView,proto3,oneof"` +} + +func (*CatalogEntry_Table) isCatalogEntry_Object() {} + +func (*CatalogEntry_Source) isCatalogEntry_Object() {} + +func (*CatalogEntry_Model) isCatalogEntry_Object() {} + +func (*CatalogEntry_MetricsView) isCatalogEntry_Object() {} + +// Request message for RuntimeService.ListCatalogEntries +type ListCatalogEntriesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + InstanceId string `protobuf:"bytes,1,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"` + Type ObjectType `protobuf:"varint,2,opt,name=type,proto3,enum=rill.runtime.v1.ObjectType" json:"type,omitempty"` +} + +func (x *ListCatalogEntriesRequest) Reset() { + *x = ListCatalogEntriesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_runtime_v1_api_proto_msgTypes[61] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListCatalogEntriesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListCatalogEntriesRequest) ProtoMessage() {} + +func (x *ListCatalogEntriesRequest) ProtoReflect() protoreflect.Message { + mi := &file_rill_runtime_v1_api_proto_msgTypes[61] + 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 ListCatalogEntriesRequest.ProtoReflect.Descriptor instead. +func (*ListCatalogEntriesRequest) Descriptor() ([]byte, []int) { + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{61} +} + +func (x *ListCatalogEntriesRequest) GetInstanceId() string { + if x != nil { + return x.InstanceId + } + return "" +} + +func (x *ListCatalogEntriesRequest) GetType() ObjectType { + if x != nil { + return x.Type + } + return ObjectType_OBJECT_TYPE_UNSPECIFIED +} + +// Response message for RuntimeService.ListCatalogEntries +type ListCatalogEntriesResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Entries []*CatalogEntry `protobuf:"bytes,1,rep,name=entries,proto3" json:"entries,omitempty"` +} + +func (x *ListCatalogEntriesResponse) Reset() { + *x = ListCatalogEntriesResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_runtime_v1_api_proto_msgTypes[62] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListCatalogEntriesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListCatalogEntriesResponse) ProtoMessage() {} + +func (x *ListCatalogEntriesResponse) ProtoReflect() protoreflect.Message { + mi := &file_rill_runtime_v1_api_proto_msgTypes[62] + 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 ListCatalogEntriesResponse.ProtoReflect.Descriptor instead. +func (*ListCatalogEntriesResponse) Descriptor() ([]byte, []int) { + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{62} +} + +func (x *ListCatalogEntriesResponse) GetEntries() []*CatalogEntry { + if x != nil { + return x.Entries + } + return nil +} + +// Request message for RuntimeService.GetCatalogEntry +type GetCatalogEntryRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + InstanceId string `protobuf:"bytes,1,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *GetCatalogEntryRequest) Reset() { + *x = GetCatalogEntryRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_runtime_v1_api_proto_msgTypes[63] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetCatalogEntryRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetCatalogEntryRequest) ProtoMessage() {} + +func (x *GetCatalogEntryRequest) ProtoReflect() protoreflect.Message { + mi := &file_rill_runtime_v1_api_proto_msgTypes[63] + 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 GetCatalogEntryRequest.ProtoReflect.Descriptor instead. func (*GetCatalogEntryRequest) Descriptor() ([]byte, []int) { - return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{55} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{63} } func (x *GetCatalogEntryRequest) GetInstanceId() string { @@ -3880,7 +4433,7 @@ type GetCatalogEntryResponse struct { func (x *GetCatalogEntryResponse) Reset() { *x = GetCatalogEntryResponse{} if protoimpl.UnsafeEnabled { - mi := &file_rill_runtime_v1_api_proto_msgTypes[56] + mi := &file_rill_runtime_v1_api_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3893,7 +4446,7 @@ func (x *GetCatalogEntryResponse) String() string { func (*GetCatalogEntryResponse) ProtoMessage() {} func (x *GetCatalogEntryResponse) ProtoReflect() protoreflect.Message { - mi := &file_rill_runtime_v1_api_proto_msgTypes[56] + mi := &file_rill_runtime_v1_api_proto_msgTypes[64] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3906,7 +4459,7 @@ func (x *GetCatalogEntryResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetCatalogEntryResponse.ProtoReflect.Descriptor instead. func (*GetCatalogEntryResponse) Descriptor() ([]byte, []int) { - return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{56} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{64} } func (x *GetCatalogEntryResponse) GetEntry() *CatalogEntry { @@ -3929,7 +4482,7 @@ type TriggerRefreshRequest struct { func (x *TriggerRefreshRequest) Reset() { *x = TriggerRefreshRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rill_runtime_v1_api_proto_msgTypes[57] + mi := &file_rill_runtime_v1_api_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3942,7 +4495,7 @@ func (x *TriggerRefreshRequest) String() string { func (*TriggerRefreshRequest) ProtoMessage() {} func (x *TriggerRefreshRequest) ProtoReflect() protoreflect.Message { - mi := &file_rill_runtime_v1_api_proto_msgTypes[57] + mi := &file_rill_runtime_v1_api_proto_msgTypes[65] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3955,7 +4508,7 @@ func (x *TriggerRefreshRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use TriggerRefreshRequest.ProtoReflect.Descriptor instead. func (*TriggerRefreshRequest) Descriptor() ([]byte, []int) { - return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{57} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{65} } func (x *TriggerRefreshRequest) GetInstanceId() string { @@ -3982,7 +4535,7 @@ type TriggerRefreshResponse struct { func (x *TriggerRefreshResponse) Reset() { *x = TriggerRefreshResponse{} if protoimpl.UnsafeEnabled { - mi := &file_rill_runtime_v1_api_proto_msgTypes[58] + mi := &file_rill_runtime_v1_api_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3995,7 +4548,7 @@ func (x *TriggerRefreshResponse) String() string { func (*TriggerRefreshResponse) ProtoMessage() {} func (x *TriggerRefreshResponse) ProtoReflect() protoreflect.Message { - mi := &file_rill_runtime_v1_api_proto_msgTypes[58] + mi := &file_rill_runtime_v1_api_proto_msgTypes[66] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4008,7 +4561,7 @@ func (x *TriggerRefreshResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use TriggerRefreshResponse.ProtoReflect.Descriptor instead. func (*TriggerRefreshResponse) Descriptor() ([]byte, []int) { - return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{58} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{66} } // Request message for RuntimeService.TriggerSync @@ -4023,7 +4576,7 @@ type TriggerSyncRequest struct { func (x *TriggerSyncRequest) Reset() { *x = TriggerSyncRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rill_runtime_v1_api_proto_msgTypes[59] + mi := &file_rill_runtime_v1_api_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4036,7 +4589,7 @@ func (x *TriggerSyncRequest) String() string { func (*TriggerSyncRequest) ProtoMessage() {} func (x *TriggerSyncRequest) ProtoReflect() protoreflect.Message { - mi := &file_rill_runtime_v1_api_proto_msgTypes[59] + mi := &file_rill_runtime_v1_api_proto_msgTypes[67] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4049,7 +4602,7 @@ func (x *TriggerSyncRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use TriggerSyncRequest.ProtoReflect.Descriptor instead. func (*TriggerSyncRequest) Descriptor() ([]byte, []int) { - return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{59} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{67} } func (x *TriggerSyncRequest) GetInstanceId() string { @@ -4074,7 +4627,7 @@ type TriggerSyncResponse struct { func (x *TriggerSyncResponse) Reset() { *x = TriggerSyncResponse{} if protoimpl.UnsafeEnabled { - mi := &file_rill_runtime_v1_api_proto_msgTypes[60] + mi := &file_rill_runtime_v1_api_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4087,7 +4640,7 @@ func (x *TriggerSyncResponse) String() string { func (*TriggerSyncResponse) ProtoMessage() {} func (x *TriggerSyncResponse) ProtoReflect() protoreflect.Message { - mi := &file_rill_runtime_v1_api_proto_msgTypes[60] + mi := &file_rill_runtime_v1_api_proto_msgTypes[68] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4100,7 +4653,7 @@ func (x *TriggerSyncResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use TriggerSyncResponse.ProtoReflect.Descriptor instead. func (*TriggerSyncResponse) Descriptor() ([]byte, []int) { - return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{60} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{68} } func (x *TriggerSyncResponse) GetObjectsCount() uint32 { @@ -4156,7 +4709,7 @@ type ReconcileRequest struct { func (x *ReconcileRequest) Reset() { *x = ReconcileRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rill_runtime_v1_api_proto_msgTypes[61] + mi := &file_rill_runtime_v1_api_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4169,7 +4722,7 @@ func (x *ReconcileRequest) String() string { func (*ReconcileRequest) ProtoMessage() {} func (x *ReconcileRequest) ProtoReflect() protoreflect.Message { - mi := &file_rill_runtime_v1_api_proto_msgTypes[61] + mi := &file_rill_runtime_v1_api_proto_msgTypes[69] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4182,7 +4735,7 @@ func (x *ReconcileRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ReconcileRequest.ProtoReflect.Descriptor instead. func (*ReconcileRequest) Descriptor() ([]byte, []int) { - return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{61} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{69} } func (x *ReconcileRequest) GetInstanceId() string { @@ -4238,7 +4791,7 @@ type ReconcileResponse struct { func (x *ReconcileResponse) Reset() { *x = ReconcileResponse{} if protoimpl.UnsafeEnabled { - mi := &file_rill_runtime_v1_api_proto_msgTypes[62] + mi := &file_rill_runtime_v1_api_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4251,7 +4804,7 @@ func (x *ReconcileResponse) String() string { func (*ReconcileResponse) ProtoMessage() {} func (x *ReconcileResponse) ProtoReflect() protoreflect.Message { - mi := &file_rill_runtime_v1_api_proto_msgTypes[62] + mi := &file_rill_runtime_v1_api_proto_msgTypes[70] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4264,7 +4817,7 @@ func (x *ReconcileResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ReconcileResponse.ProtoReflect.Descriptor instead. func (*ReconcileResponse) Descriptor() ([]byte, []int) { - return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{62} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{70} } func (x *ReconcileResponse) GetErrors() []*ReconcileError { @@ -4309,7 +4862,7 @@ type ReconcileError struct { func (x *ReconcileError) Reset() { *x = ReconcileError{} if protoimpl.UnsafeEnabled { - mi := &file_rill_runtime_v1_api_proto_msgTypes[63] + mi := &file_rill_runtime_v1_api_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4322,7 +4875,7 @@ func (x *ReconcileError) String() string { func (*ReconcileError) ProtoMessage() {} func (x *ReconcileError) ProtoReflect() protoreflect.Message { - mi := &file_rill_runtime_v1_api_proto_msgTypes[63] + mi := &file_rill_runtime_v1_api_proto_msgTypes[71] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4335,7 +4888,7 @@ func (x *ReconcileError) ProtoReflect() protoreflect.Message { // Deprecated: Use ReconcileError.ProtoReflect.Descriptor instead. func (*ReconcileError) Descriptor() ([]byte, []int) { - return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{63} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{71} } func (x *ReconcileError) GetCode() ReconcileError_Code { @@ -4407,7 +4960,7 @@ type PutFileAndReconcileRequest struct { func (x *PutFileAndReconcileRequest) Reset() { *x = PutFileAndReconcileRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rill_runtime_v1_api_proto_msgTypes[64] + mi := &file_rill_runtime_v1_api_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4420,7 +4973,7 @@ func (x *PutFileAndReconcileRequest) String() string { func (*PutFileAndReconcileRequest) ProtoMessage() {} func (x *PutFileAndReconcileRequest) ProtoReflect() protoreflect.Message { - mi := &file_rill_runtime_v1_api_proto_msgTypes[64] + mi := &file_rill_runtime_v1_api_proto_msgTypes[72] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4433,7 +4986,7 @@ func (x *PutFileAndReconcileRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PutFileAndReconcileRequest.ProtoReflect.Descriptor instead. func (*PutFileAndReconcileRequest) Descriptor() ([]byte, []int) { - return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{64} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{72} } func (x *PutFileAndReconcileRequest) GetInstanceId() string { @@ -4502,7 +5055,7 @@ type PutFileAndReconcileResponse struct { func (x *PutFileAndReconcileResponse) Reset() { *x = PutFileAndReconcileResponse{} if protoimpl.UnsafeEnabled { - mi := &file_rill_runtime_v1_api_proto_msgTypes[65] + mi := &file_rill_runtime_v1_api_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4515,7 +5068,7 @@ func (x *PutFileAndReconcileResponse) String() string { func (*PutFileAndReconcileResponse) ProtoMessage() {} func (x *PutFileAndReconcileResponse) ProtoReflect() protoreflect.Message { - mi := &file_rill_runtime_v1_api_proto_msgTypes[65] + mi := &file_rill_runtime_v1_api_proto_msgTypes[73] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4528,7 +5081,7 @@ func (x *PutFileAndReconcileResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use PutFileAndReconcileResponse.ProtoReflect.Descriptor instead. func (*PutFileAndReconcileResponse) Descriptor() ([]byte, []int) { - return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{65} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{73} } func (x *PutFileAndReconcileResponse) GetErrors() []*ReconcileError { @@ -4565,7 +5118,7 @@ type DeleteFileAndReconcileRequest struct { func (x *DeleteFileAndReconcileRequest) Reset() { *x = DeleteFileAndReconcileRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rill_runtime_v1_api_proto_msgTypes[66] + mi := &file_rill_runtime_v1_api_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4578,7 +5131,7 @@ func (x *DeleteFileAndReconcileRequest) String() string { func (*DeleteFileAndReconcileRequest) ProtoMessage() {} func (x *DeleteFileAndReconcileRequest) ProtoReflect() protoreflect.Message { - mi := &file_rill_runtime_v1_api_proto_msgTypes[66] + mi := &file_rill_runtime_v1_api_proto_msgTypes[74] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4591,7 +5144,7 @@ func (x *DeleteFileAndReconcileRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteFileAndReconcileRequest.ProtoReflect.Descriptor instead. func (*DeleteFileAndReconcileRequest) Descriptor() ([]byte, []int) { - return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{66} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{74} } func (x *DeleteFileAndReconcileRequest) GetInstanceId() string { @@ -4639,7 +5192,7 @@ type DeleteFileAndReconcileResponse struct { func (x *DeleteFileAndReconcileResponse) Reset() { *x = DeleteFileAndReconcileResponse{} if protoimpl.UnsafeEnabled { - mi := &file_rill_runtime_v1_api_proto_msgTypes[67] + mi := &file_rill_runtime_v1_api_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4652,7 +5205,7 @@ func (x *DeleteFileAndReconcileResponse) String() string { func (*DeleteFileAndReconcileResponse) ProtoMessage() {} func (x *DeleteFileAndReconcileResponse) ProtoReflect() protoreflect.Message { - mi := &file_rill_runtime_v1_api_proto_msgTypes[67] + mi := &file_rill_runtime_v1_api_proto_msgTypes[75] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4665,7 +5218,7 @@ func (x *DeleteFileAndReconcileResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteFileAndReconcileResponse.ProtoReflect.Descriptor instead. func (*DeleteFileAndReconcileResponse) Descriptor() ([]byte, []int) { - return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{67} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{75} } func (x *DeleteFileAndReconcileResponse) GetErrors() []*ReconcileError { @@ -4704,7 +5257,7 @@ type RenameFileAndReconcileRequest struct { func (x *RenameFileAndReconcileRequest) Reset() { *x = RenameFileAndReconcileRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rill_runtime_v1_api_proto_msgTypes[68] + mi := &file_rill_runtime_v1_api_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4717,7 +5270,7 @@ func (x *RenameFileAndReconcileRequest) String() string { func (*RenameFileAndReconcileRequest) ProtoMessage() {} func (x *RenameFileAndReconcileRequest) ProtoReflect() protoreflect.Message { - mi := &file_rill_runtime_v1_api_proto_msgTypes[68] + mi := &file_rill_runtime_v1_api_proto_msgTypes[76] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4730,7 +5283,7 @@ func (x *RenameFileAndReconcileRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RenameFileAndReconcileRequest.ProtoReflect.Descriptor instead. func (*RenameFileAndReconcileRequest) Descriptor() ([]byte, []int) { - return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{68} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{76} } func (x *RenameFileAndReconcileRequest) GetInstanceId() string { @@ -4785,7 +5338,7 @@ type RenameFileAndReconcileResponse struct { func (x *RenameFileAndReconcileResponse) Reset() { *x = RenameFileAndReconcileResponse{} if protoimpl.UnsafeEnabled { - mi := &file_rill_runtime_v1_api_proto_msgTypes[69] + mi := &file_rill_runtime_v1_api_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4798,7 +5351,7 @@ func (x *RenameFileAndReconcileResponse) String() string { func (*RenameFileAndReconcileResponse) ProtoMessage() {} func (x *RenameFileAndReconcileResponse) ProtoReflect() protoreflect.Message { - mi := &file_rill_runtime_v1_api_proto_msgTypes[69] + mi := &file_rill_runtime_v1_api_proto_msgTypes[77] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4811,7 +5364,7 @@ func (x *RenameFileAndReconcileResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RenameFileAndReconcileResponse.ProtoReflect.Descriptor instead. func (*RenameFileAndReconcileResponse) Descriptor() ([]byte, []int) { - return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{69} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{77} } func (x *RenameFileAndReconcileResponse) GetErrors() []*ReconcileError { @@ -4848,7 +5401,7 @@ type RefreshAndReconcileRequest struct { func (x *RefreshAndReconcileRequest) Reset() { *x = RefreshAndReconcileRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rill_runtime_v1_api_proto_msgTypes[70] + mi := &file_rill_runtime_v1_api_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4861,7 +5414,7 @@ func (x *RefreshAndReconcileRequest) String() string { func (*RefreshAndReconcileRequest) ProtoMessage() {} func (x *RefreshAndReconcileRequest) ProtoReflect() protoreflect.Message { - mi := &file_rill_runtime_v1_api_proto_msgTypes[70] + mi := &file_rill_runtime_v1_api_proto_msgTypes[78] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4874,7 +5427,7 @@ func (x *RefreshAndReconcileRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RefreshAndReconcileRequest.ProtoReflect.Descriptor instead. func (*RefreshAndReconcileRequest) Descriptor() ([]byte, []int) { - return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{70} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{78} } func (x *RefreshAndReconcileRequest) GetInstanceId() string { @@ -4922,7 +5475,7 @@ type RefreshAndReconcileResponse struct { func (x *RefreshAndReconcileResponse) Reset() { *x = RefreshAndReconcileResponse{} if protoimpl.UnsafeEnabled { - mi := &file_rill_runtime_v1_api_proto_msgTypes[71] + mi := &file_rill_runtime_v1_api_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4935,7 +5488,7 @@ func (x *RefreshAndReconcileResponse) String() string { func (*RefreshAndReconcileResponse) ProtoMessage() {} func (x *RefreshAndReconcileResponse) ProtoReflect() protoreflect.Message { - mi := &file_rill_runtime_v1_api_proto_msgTypes[71] + mi := &file_rill_runtime_v1_api_proto_msgTypes[79] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4948,7 +5501,7 @@ func (x *RefreshAndReconcileResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RefreshAndReconcileResponse.ProtoReflect.Descriptor instead. func (*RefreshAndReconcileResponse) Descriptor() ([]byte, []int) { - return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{71} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{79} } func (x *RefreshAndReconcileResponse) GetErrors() []*ReconcileError { @@ -4965,170 +5518,6 @@ func (x *RefreshAndReconcileResponse) GetAffectedPaths() []string { return nil } -// ConnectorSpec represents a connector available in the runtime. -// It should not be confused with a source. -type ConnectorSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Name is the name of the connector (e.g. "CREATE SOURCE foo WITH connector = 'name'") - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Pretty display name for use in UIs - DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - // Human readable description of the connector - Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - // Properties accepted by the connector - Properties []*ConnectorSpec_Property `protobuf:"bytes,4,rep,name=properties,proto3" json:"properties,omitempty"` -} - -func (x *ConnectorSpec) Reset() { - *x = ConnectorSpec{} - if protoimpl.UnsafeEnabled { - mi := &file_rill_runtime_v1_api_proto_msgTypes[72] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ConnectorSpec) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ConnectorSpec) ProtoMessage() {} - -func (x *ConnectorSpec) ProtoReflect() protoreflect.Message { - mi := &file_rill_runtime_v1_api_proto_msgTypes[72] - 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 ConnectorSpec.ProtoReflect.Descriptor instead. -func (*ConnectorSpec) Descriptor() ([]byte, []int) { - return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{72} -} - -func (x *ConnectorSpec) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *ConnectorSpec) GetDisplayName() string { - if x != nil { - return x.DisplayName - } - return "" -} - -func (x *ConnectorSpec) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -func (x *ConnectorSpec) GetProperties() []*ConnectorSpec_Property { - if x != nil { - return x.Properties - } - return nil -} - -// Request message for RuntimeService.ListConnectors -type ListConnectorsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *ListConnectorsRequest) Reset() { - *x = ListConnectorsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_rill_runtime_v1_api_proto_msgTypes[73] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListConnectorsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListConnectorsRequest) ProtoMessage() {} - -func (x *ListConnectorsRequest) ProtoReflect() protoreflect.Message { - mi := &file_rill_runtime_v1_api_proto_msgTypes[73] - 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 ListConnectorsRequest.ProtoReflect.Descriptor instead. -func (*ListConnectorsRequest) Descriptor() ([]byte, []int) { - return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{73} -} - -// Response message for RuntimeService.ListConnectors -type ListConnectorsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Connectors []*ConnectorSpec `protobuf:"bytes,1,rep,name=connectors,proto3" json:"connectors,omitempty"` -} - -func (x *ListConnectorsResponse) Reset() { - *x = ListConnectorsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_rill_runtime_v1_api_proto_msgTypes[74] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListConnectorsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListConnectorsResponse) ProtoMessage() {} - -func (x *ListConnectorsResponse) ProtoReflect() protoreflect.Message { - mi := &file_rill_runtime_v1_api_proto_msgTypes[74] - 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 ListConnectorsResponse.ProtoReflect.Descriptor instead. -func (*ListConnectorsResponse) Descriptor() ([]byte, []int) { - return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{74} -} - -func (x *ListConnectorsResponse) GetConnectors() []*ConnectorSpec { - if x != nil { - return x.Connectors - } - return nil -} - // Request message for RuntimeService.IssueDevJWT type IssueDevJWTRequest struct { state protoimpl.MessageState @@ -5144,7 +5533,7 @@ type IssueDevJWTRequest struct { func (x *IssueDevJWTRequest) Reset() { *x = IssueDevJWTRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rill_runtime_v1_api_proto_msgTypes[75] + mi := &file_rill_runtime_v1_api_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5157,7 +5546,7 @@ func (x *IssueDevJWTRequest) String() string { func (*IssueDevJWTRequest) ProtoMessage() {} func (x *IssueDevJWTRequest) ProtoReflect() protoreflect.Message { - mi := &file_rill_runtime_v1_api_proto_msgTypes[75] + mi := &file_rill_runtime_v1_api_proto_msgTypes[80] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5170,7 +5559,7 @@ func (x *IssueDevJWTRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use IssueDevJWTRequest.ProtoReflect.Descriptor instead. func (*IssueDevJWTRequest) Descriptor() ([]byte, []int) { - return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{75} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{80} } func (x *IssueDevJWTRequest) GetName() string { @@ -5213,7 +5602,7 @@ type IssueDevJWTResponse struct { func (x *IssueDevJWTResponse) Reset() { *x = IssueDevJWTResponse{} if protoimpl.UnsafeEnabled { - mi := &file_rill_runtime_v1_api_proto_msgTypes[76] + mi := &file_rill_runtime_v1_api_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5226,7 +5615,7 @@ func (x *IssueDevJWTResponse) String() string { func (*IssueDevJWTResponse) ProtoMessage() {} func (x *IssueDevJWTResponse) ProtoReflect() protoreflect.Message { - mi := &file_rill_runtime_v1_api_proto_msgTypes[76] + mi := &file_rill_runtime_v1_api_proto_msgTypes[81] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5239,7 +5628,7 @@ func (x *IssueDevJWTResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use IssueDevJWTResponse.ProtoReflect.Descriptor instead. func (*IssueDevJWTResponse) Descriptor() ([]byte, []int) { - return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{76} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{81} } func (x *IssueDevJWTResponse) GetJwt() string { @@ -5249,33 +5638,51 @@ func (x *IssueDevJWTResponse) GetJwt() string { return "" } -// CharLocation is a line and column in a code artifact -type ReconcileError_CharLocation struct { +// Property represents the spec of one of the driver's config properties +type ConnectorDriver_Property struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Line uint32 `protobuf:"varint,1,opt,name=line,proto3" json:"line,omitempty"` - Column uint32 `protobuf:"varint,2,opt,name=column,proto3" json:"column,omitempty"` + // The property key + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + // The type expected for this property + Type ConnectorDriver_Property_Type `protobuf:"varint,2,opt,name=type,proto3,enum=rill.runtime.v1.ConnectorDriver_Property_Type" json:"type,omitempty"` + // Required is true if the field must be set + Required bool `protobuf:"varint,3,opt,name=required,proto3" json:"required,omitempty"` + // Pretty name for the property + DisplayName string `protobuf:"bytes,4,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + // Human readable description of the field + Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"` + // Link to documentation for this property + DocsUrl string `protobuf:"bytes,6,opt,name=docs_url,json=docsUrl,proto3" json:"docs_url,omitempty"` + // Additional textual explanation for use in UIs + Hint string `protobuf:"bytes,7,opt,name=hint,proto3" json:"hint,omitempty"` + // Default value for the property + Default string `protobuf:"bytes,8,opt,name=default,proto3" json:"default,omitempty"` + // Placeholder value for use in UIs + Placeholder string `protobuf:"bytes,9,opt,name=placeholder,proto3" json:"placeholder,omitempty"` + // If true, the property is a secret and should not be displayed in UIs + Secret bool `protobuf:"varint,10,opt,name=secret,proto3" json:"secret,omitempty"` } -func (x *ReconcileError_CharLocation) Reset() { - *x = ReconcileError_CharLocation{} +func (x *ConnectorDriver_Property) Reset() { + *x = ConnectorDriver_Property{} if protoimpl.UnsafeEnabled { - mi := &file_rill_runtime_v1_api_proto_msgTypes[85] + mi := &file_rill_runtime_v1_api_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ReconcileError_CharLocation) String() string { +func (x *ConnectorDriver_Property) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ReconcileError_CharLocation) ProtoMessage() {} +func (*ConnectorDriver_Property) ProtoMessage() {} -func (x *ReconcileError_CharLocation) ProtoReflect() protoreflect.Message { - mi := &file_rill_runtime_v1_api_proto_msgTypes[85] +func (x *ConnectorDriver_Property) ProtoReflect() protoreflect.Message { + mi := &file_rill_runtime_v1_api_proto_msgTypes[90] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5286,135 +5693,135 @@ func (x *ReconcileError_CharLocation) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ReconcileError_CharLocation.ProtoReflect.Descriptor instead. -func (*ReconcileError_CharLocation) Descriptor() ([]byte, []int) { - return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{63, 0} +// Deprecated: Use ConnectorDriver_Property.ProtoReflect.Descriptor instead. +func (*ConnectorDriver_Property) Descriptor() ([]byte, []int) { + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{52, 0} } -func (x *ReconcileError_CharLocation) GetLine() uint32 { +func (x *ConnectorDriver_Property) GetKey() string { if x != nil { - return x.Line + return x.Key } - return 0 + return "" } -func (x *ReconcileError_CharLocation) GetColumn() uint32 { +func (x *ConnectorDriver_Property) GetType() ConnectorDriver_Property_Type { if x != nil { - return x.Column + return x.Type } - return 0 -} - -// Property represents one of the connector's config properties -type ConnectorSpec_Property struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The property key - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` - // Pretty name for the property - DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - // Human readable description of the field - Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - // Placeholder value for use in UIs - Placeholder string `protobuf:"bytes,4,opt,name=placeholder,proto3" json:"placeholder,omitempty"` - // The type expected for this property - Type ConnectorSpec_Property_Type `protobuf:"varint,5,opt,name=type,proto3,enum=rill.runtime.v1.ConnectorSpec_Property_Type" json:"type,omitempty"` - // Nullable is true if the field is optional - Nullable bool `protobuf:"varint,6,opt,name=nullable,proto3" json:"nullable,omitempty"` - // Additional textual explanation for use in UIs - Hint string `protobuf:"bytes,7,opt,name=hint,proto3" json:"hint,omitempty"` - // Link to documentation for this property - Href string `protobuf:"bytes,8,opt,name=href,proto3" json:"href,omitempty"` + return ConnectorDriver_Property_TYPE_UNSPECIFIED } -func (x *ConnectorSpec_Property) Reset() { - *x = ConnectorSpec_Property{} - if protoimpl.UnsafeEnabled { - mi := &file_rill_runtime_v1_api_proto_msgTypes[86] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *ConnectorDriver_Property) GetRequired() bool { + if x != nil { + return x.Required } + return false } -func (x *ConnectorSpec_Property) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ConnectorSpec_Property) ProtoMessage() {} - -func (x *ConnectorSpec_Property) ProtoReflect() protoreflect.Message { - mi := &file_rill_runtime_v1_api_proto_msgTypes[86] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *ConnectorDriver_Property) GetDisplayName() string { + if x != nil { + return x.DisplayName } - return mi.MessageOf(x) + return "" } -// Deprecated: Use ConnectorSpec_Property.ProtoReflect.Descriptor instead. -func (*ConnectorSpec_Property) Descriptor() ([]byte, []int) { - return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{72, 0} +func (x *ConnectorDriver_Property) GetDescription() string { + if x != nil { + return x.Description + } + return "" } -func (x *ConnectorSpec_Property) GetKey() string { +func (x *ConnectorDriver_Property) GetDocsUrl() string { if x != nil { - return x.Key + return x.DocsUrl } return "" } -func (x *ConnectorSpec_Property) GetDisplayName() string { +func (x *ConnectorDriver_Property) GetHint() string { if x != nil { - return x.DisplayName + return x.Hint } return "" } -func (x *ConnectorSpec_Property) GetDescription() string { +func (x *ConnectorDriver_Property) GetDefault() string { if x != nil { - return x.Description + return x.Default } return "" } -func (x *ConnectorSpec_Property) GetPlaceholder() string { +func (x *ConnectorDriver_Property) GetPlaceholder() string { if x != nil { return x.Placeholder } return "" } -func (x *ConnectorSpec_Property) GetType() ConnectorSpec_Property_Type { +func (x *ConnectorDriver_Property) GetSecret() bool { if x != nil { - return x.Type + return x.Secret } - return ConnectorSpec_Property_TYPE_UNSPECIFIED + return false } -func (x *ConnectorSpec_Property) GetNullable() bool { - if x != nil { - return x.Nullable +// CharLocation is a line and column in a code artifact +type ReconcileError_CharLocation struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Line uint32 `protobuf:"varint,1,opt,name=line,proto3" json:"line,omitempty"` + Column uint32 `protobuf:"varint,2,opt,name=column,proto3" json:"column,omitempty"` +} + +func (x *ReconcileError_CharLocation) Reset() { + *x = ReconcileError_CharLocation{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_runtime_v1_api_proto_msgTypes[95] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return false } -func (x *ConnectorSpec_Property) GetHint() string { +func (x *ReconcileError_CharLocation) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReconcileError_CharLocation) ProtoMessage() {} + +func (x *ReconcileError_CharLocation) ProtoReflect() protoreflect.Message { + mi := &file_rill_runtime_v1_api_proto_msgTypes[95] + 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 ReconcileError_CharLocation.ProtoReflect.Descriptor instead. +func (*ReconcileError_CharLocation) Descriptor() ([]byte, []int) { + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{71, 0} +} + +func (x *ReconcileError_CharLocation) GetLine() uint32 { if x != nil { - return x.Hint + return x.Line } - return "" + return 0 } -func (x *ConnectorSpec_Property) GetHref() string { +func (x *ReconcileError_CharLocation) GetColumn() uint32 { if x != nil { - return x.Href + return x.Column } - return "" + return 0 } var File_rill_runtime_v1_api_proto protoreflect.FileDescriptor @@ -5943,201 +6350,368 @@ var file_rill_runtime_v1_api_proto_rawDesc = []byte{ 0x48, 0x00, 0x52, 0x12, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x42, 0x09, 0x0a, 0x07, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x22, 0x17, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x69, 0x67, 0x67, - 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9d, 0x04, 0x0a, 0x0c, 0x43, - 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x2e, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, - 0x31, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x17, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x00, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x12, 0x2e, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x16, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x48, 0x00, 0x52, 0x05, 0x6d, 0x6f, 0x64, - 0x65, 0x6c, 0x12, 0x41, 0x0a, 0x0c, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x76, 0x69, - 0x65, 0x77, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x48, 0x00, 0x52, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x73, 0x56, 0x69, 0x65, 0x77, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6d, 0x62, - 0x65, 0x64, 0x64, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x65, 0x6d, 0x62, - 0x65, 0x64, 0x64, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x73, - 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x73, 0x12, - 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x18, 0x09, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x4f, - 0x6e, 0x12, 0x3d, 0x0a, 0x0c, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x6f, - 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x65, 0x64, 0x4f, 0x6e, - 0x42, 0x08, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x91, 0x01, 0x0a, 0x19, 0x4c, - 0x69, 0x73, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, + 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xfa, 0x08, 0x0a, 0x0f, 0x43, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x56, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x70, 0x72, 0x6f, + 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x2e, + 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x56, 0x0a, 0x11, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, + 0x52, 0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, + 0x65, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, + 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x13, 0x69, 0x6d, 0x70, 0x6c, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, + 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0x2d, 0x0a, 0x12, 0x69, 0x6d, 0x70, 0x6c, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, + 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6d, 0x70, 0x6c, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0e, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x70, 0x6f, + 0x12, 0x29, 0x0a, 0x10, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x69, 0x6d, 0x70, 0x6c, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x69, + 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x61, 0x69, 0x18, 0x0e, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0c, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x41, 0x69, + 0x12, 0x30, 0x0a, 0x14, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x73, + 0x71, 0x6c, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, + 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x53, 0x71, 0x6c, 0x53, 0x74, 0x6f, + 0x72, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, + 0x5f, 0x6f, 0x6c, 0x61, 0x70, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x6d, 0x70, + 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x4f, 0x6c, 0x61, 0x70, 0x12, 0x36, 0x0a, 0x17, 0x69, + 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x69, 0x6d, + 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, + 0x6f, 0x72, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x73, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x18, 0x12, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x13, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x46, 0x69, + 0x6c, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x1a, 0xbd, 0x03, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x70, + 0x65, 0x72, 0x74, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x42, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x2e, + 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, + 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, + 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, + 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, + 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x64, + 0x6f, 0x63, 0x73, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, + 0x6f, 0x63, 0x73, 0x55, 0x72, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x69, 0x6e, 0x74, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x69, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x68, 0x6f, 0x6c, + 0x64, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x6c, 0x61, 0x63, 0x65, + 0x68, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x22, 0x77, + 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x10, 0x01, 0x12, 0x10, 0x0a, + 0x0c, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x4f, 0x4f, 0x4c, 0x45, 0x41, 0x4e, 0x10, 0x02, 0x12, + 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x03, + 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x49, 0x4c, 0x45, 0x10, 0x04, 0x12, + 0x16, 0x0a, 0x12, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, + 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x10, 0x05, 0x22, 0x9a, 0x06, 0x0a, 0x11, 0x41, 0x6e, 0x61, 0x6c, + 0x79, 0x7a, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x38, 0x0a, 0x06, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x44, 0x72, 0x69, + 0x76, 0x65, 0x72, 0x52, 0x06, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x12, 0x46, 0x0a, 0x06, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, + 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x59, 0x0a, 0x0d, 0x70, 0x72, 0x65, 0x73, 0x65, 0x74, 0x5f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, + 0x6c, 0x79, 0x7a, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x50, + 0x72, 0x65, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x0c, 0x70, 0x72, 0x65, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5c, + 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, + 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, + 0x64, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x50, 0x0a, 0x0a, + 0x65, 0x6e, 0x76, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x31, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x45, 0x6e, 0x76, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x09, 0x65, 0x6e, 0x76, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x30, + 0x0a, 0x14, 0x68, 0x61, 0x73, 0x5f, 0x61, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x6f, 0x75, 0x73, 0x5f, + 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x68, 0x61, + 0x73, 0x41, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x6f, 0x75, 0x73, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x12, 0x36, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x08, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, + 0x52, 0x06, 0x75, 0x73, 0x65, 0x64, 0x42, 0x79, 0x1a, 0x39, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x1a, 0x3f, 0x0a, 0x11, 0x50, 0x72, 0x65, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x40, 0x0a, 0x12, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3c, 0x0a, 0x0e, 0x45, 0x6e, 0x76, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0x1d, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x22, 0x60, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x73, 0x22, 0x3b, 0x0a, 0x18, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, + 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x49, 0x64, 0x22, 0x5f, 0x0a, 0x19, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x43, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x42, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x64, 0x43, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x73, 0x22, 0x40, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x49, 0x64, 0x22, 0x5c, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x73, 0x22, 0x9d, 0x04, 0x0a, 0x0c, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x48, + 0x00, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x31, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x48, 0x00, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x2e, 0x0a, 0x05, 0x6d, + 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, + 0x65, 0x6c, 0x48, 0x00, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x41, 0x0a, 0x0c, 0x6d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x48, + 0x00, 0x52, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x12, 0x12, + 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, + 0x74, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x12, 0x18, + 0x0a, 0x07, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x07, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x69, 0x6c, + 0x64, 0x72, 0x65, 0x6e, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x69, 0x6c, + 0x64, 0x72, 0x65, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x12, + 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, + 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x12, 0x3d, 0x0a, 0x0c, 0x72, 0x65, + 0x66, 0x72, 0x65, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x72, 0x65, + 0x66, 0x72, 0x65, 0x73, 0x68, 0x65, 0x64, 0x4f, 0x6e, 0x42, 0x08, 0x0a, 0x06, 0x6f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x22, 0x91, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x74, 0x61, + 0x6c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x39, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xfa, 0x42, 0x15, 0x72, 0x13, 0x32, 0x11, 0x5e, + 0x5b, 0x5f, 0x5c, 0x2d, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x24, + 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, + 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x55, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x43, + 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, + 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x22, 0x67, + 0x0a, 0x16, 0x47, 0x65, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xfa, 0x42, 0x15, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x5f, 0x5c, 0x2d, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x24, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x08, - 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x55, - 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x45, 0x6e, 0x74, - 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x07, - 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x65, 0x6e, - 0x74, 0x72, 0x69, 0x65, 0x73, 0x22, 0x67, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x43, 0x61, 0x74, 0x61, - 0x6c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x4e, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x43, 0x61, + 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x33, 0x0a, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x22, 0x66, 0x0a, 0x15, 0x54, 0x72, 0x69, 0x67, 0x67, + 0x65, 0x72, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x39, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xfa, 0x42, 0x15, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, + 0x5f, 0x5c, 0x2d, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x24, 0x52, + 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, + 0x18, 0x0a, 0x16, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, + 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4f, 0x0a, 0x12, 0x54, 0x72, 0x69, + 0x67, 0x67, 0x65, 0x72, 0x53, 0x79, 0x6e, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xfa, 0x42, 0x15, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x5f, 0x5c, 0x2d, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x24, 0x52, 0x0a, - 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x4e, - 0x0a, 0x17, 0x47, 0x65, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x05, 0x65, 0x6e, 0x74, - 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x74, 0x61, 0x6c, - 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x22, 0x66, - 0x0a, 0x15, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, + 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x22, 0xd2, 0x01, 0x0a, 0x13, 0x54, + 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x53, 0x79, 0x6e, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x5f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x6f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x5f, 0x61, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x41, 0x64, 0x64, + 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x15, 0x6f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x15, 0x6f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, 0x6f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, + 0xbf, 0x01, 0x0a, 0x10, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xfa, 0x42, 0x15, 0x72, 0x13, + 0x32, 0x11, 0x5e, 0x5b, 0x5f, 0x5c, 0x2d, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, + 0x5d, 0x2b, 0x24, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, + 0x23, 0x0a, 0x0d, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, + 0x61, 0x74, 0x68, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x64, 0x5f, 0x70, + 0x61, 0x74, 0x68, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x6f, 0x72, 0x63, + 0x65, 0x64, 0x50, 0x61, 0x74, 0x68, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x72, 0x79, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x64, 0x72, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x72, + 0x69, 0x63, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x74, 0x72, 0x69, 0x63, + 0x74, 0x22, 0x73, 0x0a, 0x11, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, + 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, + 0x6c, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, + 0x25, 0x0a, 0x0e, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x74, 0x68, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, + 0x64, 0x50, 0x61, 0x74, 0x68, 0x73, 0x22, 0xaf, 0x04, 0x0a, 0x0e, 0x52, 0x65, 0x63, 0x6f, 0x6e, + 0x63, 0x69, 0x6c, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x42, 0x0a, 0x04, 0x63, 0x6f, 0x64, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, + 0x69, 0x6c, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, + 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, + 0x50, 0x61, 0x74, 0x68, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, + 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, + 0x70, 0x65, 0x72, 0x74, 0x79, 0x50, 0x61, 0x74, 0x68, 0x12, 0x53, 0x0a, 0x0e, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x45, 0x72, 0x72, + 0x6f, 0x72, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4f, + 0x0a, 0x0c, 0x65, 0x6e, 0x64, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, + 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x0b, 0x65, 0x6e, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, + 0x3a, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x72, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x12, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x6c, + 0x69, 0x6e, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x22, 0x9a, 0x01, 0x0a, 0x04, + 0x43, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x43, 0x4f, + 0x44, 0x45, 0x5f, 0x53, 0x59, 0x4e, 0x54, 0x41, 0x58, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x43, + 0x4f, 0x44, 0x45, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x02, + 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x44, 0x45, 0x50, 0x45, 0x4e, 0x44, 0x45, + 0x4e, 0x43, 0x59, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x4f, 0x4c, + 0x41, 0x50, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x4f, 0x55, + 0x52, 0x43, 0x45, 0x10, 0x05, 0x12, 0x21, 0x0a, 0x1d, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x4f, + 0x55, 0x52, 0x43, 0x45, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, + 0x44, 0x45, 0x4e, 0x49, 0x45, 0x44, 0x10, 0x06, 0x22, 0xe2, 0x01, 0x0a, 0x1a, 0x50, 0x75, 0x74, + 0x46, 0x69, 0x6c, 0x65, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xfa, 0x42, 0x15, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x5f, 0x5c, 0x2d, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x24, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x18, 0x0a, 0x16, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, - 0x72, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x4f, 0x0a, 0x12, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x53, 0x79, 0x6e, 0x63, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xfa, 0x42, 0x15, - 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x5f, 0x5c, 0x2d, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, - 0x2d, 0x39, 0x5d, 0x2b, 0x24, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, - 0x64, 0x22, 0xd2, 0x01, 0x0a, 0x13, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x53, 0x79, 0x6e, - 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x0c, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2e, - 0x0a, 0x13, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x5f, 0x61, 0x64, 0x64, 0x65, 0x64, 0x5f, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x6f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x41, 0x64, 0x64, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x32, - 0x0a, 0x15, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, 0x6f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x15, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x5f, 0x72, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x13, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, - 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xbf, 0x01, 0x0a, 0x10, 0x52, 0x65, 0x63, 0x6f, 0x6e, - 0x63, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x0b, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x18, 0xfa, 0x42, 0x15, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x5f, 0x5c, 0x2d, 0x61, 0x2d, - 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x24, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x64, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x61, 0x74, 0x68, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x66, - 0x6f, 0x72, 0x63, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x0b, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x64, 0x50, 0x61, 0x74, 0x68, 0x73, 0x12, 0x10, - 0x0a, 0x03, 0x64, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x64, 0x72, 0x79, - 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x06, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x22, 0x73, 0x0a, 0x11, 0x52, 0x65, 0x63, 0x6f, - 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, - 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x06, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, - 0x65, 0x64, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, - 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x61, 0x74, 0x68, 0x73, 0x22, 0xaf, 0x04, - 0x0a, 0x0e, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, - 0x12, 0x42, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, - 0x43, 0x6f, 0x64, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, - 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1b, - 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x23, 0x0a, 0x0d, 0x70, - 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x50, 0x61, 0x74, 0x68, - 0x12, 0x53, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6e, - 0x63, 0x69, 0x6c, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x4c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4f, 0x0a, 0x0c, 0x65, 0x6e, 0x64, 0x5f, 0x6c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, - 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x43, 0x68, 0x61, - 0x72, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x65, 0x6e, 0x64, 0x4c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x3a, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x72, 0x4c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, - 0x6c, 0x75, 0x6d, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x63, 0x6f, 0x6c, 0x75, - 0x6d, 0x6e, 0x22, 0x9a, 0x01, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x43, - 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x59, 0x4e, 0x54, 0x41, 0x58, - 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, - 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x4f, 0x44, 0x45, 0x5f, - 0x44, 0x45, 0x50, 0x45, 0x4e, 0x44, 0x45, 0x4e, 0x43, 0x59, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, - 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x4f, 0x4c, 0x41, 0x50, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x43, - 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0x05, 0x12, 0x21, 0x0a, 0x1d, - 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x50, 0x45, 0x52, 0x4d, - 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x4e, 0x49, 0x45, 0x44, 0x10, 0x06, 0x22, - 0xe2, 0x01, 0x0a, 0x1a, 0x50, 0x75, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x41, 0x6e, 0x64, 0x52, 0x65, + 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6c, 0x6f, 0x62, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x62, 0x6c, 0x6f, 0x62, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, + 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, + 0x6e, 0x6c, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x03, 0x64, 0x72, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x22, 0x7d, 0x0a, + 0x1b, 0x50, 0x75, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6e, + 0x63, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x06, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, + 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, + 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x06, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, + 0x64, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x61, + 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x61, 0x74, 0x68, 0x73, 0x22, 0x98, 0x01, 0x0a, + 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xfa, 0x42, 0x15, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x5f, 0x5c, 0x2d, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x24, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, - 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, - 0x04, 0x62, 0x6c, 0x6f, 0x62, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x62, 0x6c, 0x6f, - 0x62, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x06, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x72, - 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x64, 0x72, 0x79, 0x12, 0x16, 0x0a, 0x06, - 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x74, - 0x72, 0x69, 0x63, 0x74, 0x22, 0x7d, 0x0a, 0x1b, 0x50, 0x75, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x41, - 0x6e, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, - 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x61, - 0x74, 0x68, 0x73, 0x22, 0x98, 0x01, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, - 0x6c, 0x65, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xfa, 0x42, 0x15, 0x72, - 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x5f, 0x5c, 0x2d, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, - 0x39, 0x5d, 0x2b, 0x24, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, - 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x70, 0x61, 0x74, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x03, 0x64, 0x72, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x22, 0x80, - 0x01, 0x0a, 0x1e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x41, 0x6e, 0x64, - 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x37, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x45, 0x72, 0x72, - 0x6f, 0x72, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x66, - 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x0d, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x61, 0x74, 0x68, - 0x73, 0x22, 0xba, 0x01, 0x0a, 0x1d, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, - 0x41, 0x6e, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xfa, 0x42, 0x15, 0x72, 0x13, 0x32, - 0x11, 0x5e, 0x5b, 0x5f, 0x5c, 0x2d, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, - 0x2b, 0x24, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1b, - 0x0a, 0x09, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x66, 0x72, 0x6f, 0x6d, 0x50, 0x61, 0x74, 0x68, 0x12, 0x17, 0x0a, 0x07, 0x74, - 0x6f, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x6f, - 0x50, 0x61, 0x74, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x03, 0x64, 0x72, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x22, 0x80, - 0x01, 0x0a, 0x1e, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x41, 0x6e, 0x64, + 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x10, 0x0a, + 0x03, 0x64, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x64, 0x72, 0x79, 0x12, + 0x16, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x06, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x22, 0x80, 0x01, 0x0a, 0x1e, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, + 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x06, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, + 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x06, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, + 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x66, 0x66, + 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x61, 0x74, 0x68, 0x73, 0x22, 0xba, 0x01, 0x0a, 0x1d, 0x52, + 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x63, 0x6f, + 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x0b, + 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x18, 0xfa, 0x42, 0x15, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x5f, 0x5c, 0x2d, 0x61, + 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x24, 0x52, 0x0a, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x72, 0x6f, 0x6d, 0x5f, + 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x72, 0x6f, 0x6d, + 0x50, 0x61, 0x74, 0x68, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x6f, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x6f, 0x50, 0x61, 0x74, 0x68, 0x12, 0x10, 0x0a, + 0x03, 0x64, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x64, 0x72, 0x79, 0x12, + 0x16, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x06, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x22, 0x80, 0x01, 0x0a, 0x1e, 0x52, 0x65, 0x6e, 0x61, + 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, + 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x06, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, + 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x06, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, + 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x66, 0x66, + 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x61, 0x74, 0x68, 0x73, 0x22, 0x95, 0x01, 0x0a, 0x1a, 0x52, + 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, + 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x0b, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, + 0xfa, 0x42, 0x15, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x5f, 0x5c, 0x2d, 0x61, 0x2d, 0x7a, 0x41, + 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x24, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x72, 0x79, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x64, 0x72, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, + 0x72, 0x69, 0x63, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x74, 0x72, 0x69, + 0x63, 0x74, 0x22, 0x7d, 0x0a, 0x1b, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, @@ -6145,307 +6719,278 @@ var file_rill_runtime_v1_api_proto_rawDesc = []byte{ 0x6f, 0x72, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x61, 0x74, 0x68, - 0x73, 0x22, 0x95, 0x01, 0x0a, 0x1a, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x41, 0x6e, 0x64, - 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x39, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xfa, 0x42, 0x15, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, - 0x5f, 0x5c, 0x2d, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x24, 0x52, - 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, - 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, - 0x10, 0x0a, 0x03, 0x64, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x64, 0x72, - 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x06, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x22, 0x7d, 0x0a, 0x1b, 0x52, 0x65, 0x66, - 0x72, 0x65, 0x73, 0x68, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6e, - 0x63, 0x69, 0x6c, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x61, - 0x74, 0x68, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x66, 0x66, 0x65, 0x63, - 0x74, 0x65, 0x64, 0x50, 0x61, 0x74, 0x68, 0x73, 0x22, 0xb1, 0x04, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x53, 0x70, 0x65, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, - 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x47, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, - 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, - 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, - 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x1a, 0xfd, 0x02, 0x0a, - 0x08, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x64, - 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, - 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x68, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x68, 0x6f, 0x6c, 0x64, - 0x65, 0x72, 0x12, 0x4a, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x53, 0x70, 0x65, 0x63, - 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x42, 0x08, - 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, - 0x0a, 0x08, 0x6e, 0x75, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x08, 0x6e, 0x75, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x69, - 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x69, 0x6e, 0x74, 0x12, 0x12, - 0x0a, 0x04, 0x68, 0x72, 0x65, 0x66, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x72, - 0x65, 0x66, 0x22, 0x68, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, - 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, - 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x4f, 0x4f, 0x4c, 0x45, - 0x41, 0x4e, 0x10, 0x03, 0x12, 0x16, 0x0a, 0x12, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x46, - 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x10, 0x04, 0x22, 0x17, 0x0a, 0x15, - 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x58, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x3e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x53, - 0x70, 0x65, 0x63, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x22, - 0x7e, 0x0a, 0x12, 0x49, 0x73, 0x73, 0x75, 0x65, 0x44, 0x65, 0x76, 0x4a, 0x57, 0x54, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, - 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x22, - 0x27, 0x0a, 0x13, 0x49, 0x73, 0x73, 0x75, 0x65, 0x44, 0x65, 0x76, 0x4a, 0x57, 0x54, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6a, 0x77, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6a, 0x77, 0x74, 0x2a, 0x54, 0x0a, 0x09, 0x46, 0x69, 0x6c, 0x65, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x16, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x45, 0x56, - 0x45, 0x4e, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x14, 0x0a, 0x10, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, - 0x57, 0x52, 0x49, 0x54, 0x45, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x46, 0x49, 0x4c, 0x45, 0x5f, - 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x02, 0x2a, 0x8c, - 0x01, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x19, 0x0a, 0x15, 0x4c, - 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, - 0x56, 0x45, 0x4c, 0x5f, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x4c, - 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x08, 0x12, - 0x12, 0x0a, 0x0e, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x57, 0x41, 0x52, - 0x4e, 0x10, 0x0c, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, - 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x10, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x47, 0x5f, - 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x46, 0x41, 0x54, 0x41, 0x4c, 0x10, 0x14, 0x2a, 0x64, 0x0a, - 0x0d, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1e, - 0x0a, 0x1a, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, - 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, - 0x0a, 0x14, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, - 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x52, 0x45, 0x53, 0x4f, - 0x55, 0x52, 0x43, 0x45, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, - 0x45, 0x10, 0x02, 0x32, 0xd7, 0x25, 0x0a, 0x0e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x55, 0x0a, 0x04, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x1c, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, - 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x10, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x0a, 0x12, 0x08, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x75, 0x0a, - 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x25, + 0x73, 0x22, 0x7e, 0x0a, 0x12, 0x49, 0x73, 0x73, 0x75, 0x65, 0x44, 0x65, 0x76, 0x4a, 0x57, 0x54, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x05, 0x65, 0x6d, + 0x61, 0x69, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x22, 0x27, 0x0a, 0x13, 0x49, 0x73, 0x73, 0x75, 0x65, 0x44, 0x65, 0x76, 0x4a, 0x57, 0x54, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6a, 0x77, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6a, 0x77, 0x74, 0x2a, 0x54, 0x0a, 0x09, 0x46, 0x69, + 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x16, 0x46, 0x49, 0x4c, 0x45, 0x5f, + 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x45, 0x56, 0x45, 0x4e, + 0x54, 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x46, 0x49, 0x4c, + 0x45, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x02, + 0x2a, 0x8c, 0x01, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x19, 0x0a, + 0x15, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x47, 0x5f, + 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x04, 0x12, 0x12, 0x0a, + 0x0e, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, + 0x08, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x57, + 0x41, 0x52, 0x4e, 0x10, 0x0c, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, + 0x45, 0x4c, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x10, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, + 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x46, 0x41, 0x54, 0x41, 0x4c, 0x10, 0x14, 0x2a, + 0x64, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x12, 0x1e, 0x0a, 0x1a, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x45, 0x56, 0x45, + 0x4e, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x18, 0x0a, 0x14, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x45, 0x56, 0x45, + 0x4e, 0x54, 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x52, 0x45, + 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x44, 0x45, 0x4c, + 0x45, 0x54, 0x45, 0x10, 0x02, 0x32, 0xc5, 0x28, 0x0a, 0x0e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x55, 0x0a, 0x04, 0x50, 0x69, 0x6e, 0x67, + 0x12, 0x1c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x15, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x0f, 0x12, 0x0d, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x73, 0x12, 0x7d, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x12, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, - 0x69, 0x64, 0x7d, 0x12, 0x7b, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x3a, 0x01, - 0x2a, 0x22, 0x0d, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, - 0x12, 0x83, 0x01, 0x0a, 0x0c, 0x45, 0x64, 0x69, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x12, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, - 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x49, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x3a, 0x01, 0x2a, 0x32, 0x1b, 0x2f, 0x76, 0x31, 0x2f, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x89, 0x01, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x20, 0x3a, 0x01, 0x2a, 0x22, 0x1b, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, + 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x10, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x0a, 0x12, 0x08, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x69, 0x6e, 0x67, 0x12, + 0x75, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, + 0x12, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x15, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0f, 0x12, 0x0d, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x7d, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, + 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x7b, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, + 0x3a, 0x01, 0x2a, 0x22, 0x0d, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x73, 0x12, 0x83, 0x01, 0x0a, 0x0c, 0x45, 0x64, 0x69, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x12, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x64, 0x69, 0x74, + 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x3a, 0x01, 0x2a, 0x32, 0x1b, 0x2f, 0x76, 0x31, + 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x89, 0x01, 0x0a, 0x0e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x26, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x20, 0x3a, 0x01, 0x2a, 0x22, 0x1b, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x7d, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x69, 0x6c, 0x65, + 0x73, 0x12, 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, + 0x12, 0x21, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, + 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x66, 0x69, + 0x6c, 0x65, 0x73, 0x12, 0x88, 0x01, 0x0a, 0x0a, 0x57, 0x61, 0x74, 0x63, 0x68, 0x46, 0x69, 0x6c, + 0x65, 0x73, 0x12, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, + 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x46, 0x69, + 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x29, 0x12, 0x27, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2f, 0x77, 0x61, 0x74, 0x63, 0x68, 0x30, 0x01, 0x12, 0x83, + 0x01, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x1f, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, + 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, - 0x64, 0x7d, 0x12, 0x7d, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, - 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x12, 0x21, + 0x64, 0x7d, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2f, 0x2d, 0x2f, 0x7b, 0x70, 0x61, 0x74, 0x68, + 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x86, 0x01, 0x0a, 0x07, 0x50, 0x75, 0x74, 0x46, 0x69, 0x6c, 0x65, + 0x12, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x50, 0x75, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x38, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x3a, 0x01, 0x2a, 0x22, 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x66, 0x69, 0x6c, 0x65, - 0x73, 0x12, 0x88, 0x01, 0x0a, 0x0a, 0x57, 0x61, 0x74, 0x63, 0x68, 0x46, 0x69, 0x6c, 0x65, 0x73, - 0x12, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x46, 0x69, 0x6c, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x29, 0x12, 0x27, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, - 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x66, - 0x69, 0x6c, 0x65, 0x73, 0x2f, 0x77, 0x61, 0x74, 0x63, 0x68, 0x30, 0x01, 0x12, 0x83, 0x01, 0x0a, - 0x07, 0x47, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x69, - 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, - 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, - 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2f, 0x2d, 0x2f, 0x7b, 0x70, 0x61, 0x74, 0x68, 0x3d, 0x2a, - 0x2a, 0x7d, 0x12, 0x86, 0x01, 0x0a, 0x07, 0x50, 0x75, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x1f, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x50, 0x75, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x50, 0x75, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x38, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x3a, 0x01, 0x2a, 0x22, 0x2d, 0x2f, 0x76, - 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2f, - 0x2d, 0x2f, 0x7b, 0x70, 0x61, 0x74, 0x68, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x8c, 0x01, 0x0a, 0x0a, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x22, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x2a, 0x2d, 0x2f, 0x76, 0x31, - 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2f, 0x2d, - 0x2f, 0x7b, 0x70, 0x61, 0x74, 0x68, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x8a, 0x01, 0x0a, 0x0a, 0x52, - 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6e, 0x61, - 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x33, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x3a, 0x01, 0x2a, 0x22, 0x28, 0x2f, + 0x73, 0x2f, 0x2d, 0x2f, 0x7b, 0x70, 0x61, 0x74, 0x68, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x8c, 0x01, + 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x22, 0x2e, 0x72, + 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x2a, 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, - 0x2f, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x71, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x45, - 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x12, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, - 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, - 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, + 0x2f, 0x2d, 0x2f, 0x7b, 0x70, 0x61, 0x74, 0x68, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x8a, 0x01, 0x0a, + 0x0a, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x22, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, + 0x6e, 0x61, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x33, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x3a, 0x01, 0x2a, 0x22, + 0x28, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, + 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x66, 0x69, 0x6c, + 0x65, 0x73, 0x2f, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x71, 0x0a, 0x0c, 0x4c, 0x69, 0x73, + 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x12, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0e, 0x12, 0x0c, + 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x12, 0x9b, 0x01, 0x0a, + 0x0d, 0x55, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x25, + 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x55, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x45, 0x78, + 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3b, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x35, 0x3a, 0x01, 0x2a, 0x22, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2f, 0x75, 0x6e, 0x70, 0x61, + 0x63, 0x6b, 0x2d, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x93, 0x01, 0x0a, 0x0b, 0x55, + 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x23, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x70, + 0x61, 0x63, 0x6b, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x55, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x39, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x3a, 0x01, 0x2a, + 0x22, 0x2e, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, + 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x66, 0x69, + 0x6c, 0x65, 0x73, 0x2f, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x2d, 0x65, 0x6d, 0x70, 0x74, 0x79, + 0x12, 0xc0, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x2f, 0x2e, 0x72, + 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, + 0x65, 0x77, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, + 0x69, 0x65, 0x77, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x42, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x3a, 0x01, 0x2a, 0x22, 0x37, 0x2f, 0x76, 0x31, 0x2f, + 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2f, 0x67, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x2d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2d, 0x76, + 0x69, 0x65, 0x77, 0x12, 0xa1, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x12, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, + 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x38, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x3a, 0x01, 0x2a, 0x22, 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x2f, 0x72, + 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x12, 0xa1, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x72, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0e, 0x12, 0x0c, 0x2f, 0x76, - 0x31, 0x2f, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x12, 0x9b, 0x01, 0x0a, 0x0d, 0x55, - 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x25, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, - 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x72, 0x74, 0x53, 0x70, 0x65, + 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x72, 0x74, 0x53, 0x70, 0x65, 0x63, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x3a, 0x01, 0x2a, 0x22, + 0x2a, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, + 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x2f, 0x63, 0x68, 0x61, 0x72, 0x74, 0x12, 0x76, 0x0a, 0x07, 0x47, + 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, + 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x22, 0x12, 0x20, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, + 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6c, + 0x6f, 0x67, 0x73, 0x12, 0x84, 0x01, 0x0a, 0x09, 0x57, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x6f, 0x67, + 0x73, 0x12, 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x6f, 0x67, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, + 0x12, 0x26, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, + 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6c, 0x6f, + 0x67, 0x73, 0x2f, 0x77, 0x61, 0x74, 0x63, 0x68, 0x30, 0x01, 0x12, 0x8d, 0x01, 0x0a, 0x0d, 0x4c, + 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x25, 0x2e, 0x72, + 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x45, 0x78, 0x61, 0x6d, - 0x70, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3b, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x35, 0x3a, 0x01, 0x2a, 0x22, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2f, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, - 0x2d, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x93, 0x01, 0x0a, 0x0b, 0x55, 0x6e, 0x70, - 0x61, 0x63, 0x6b, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x70, 0x61, 0x63, - 0x6b, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, + 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2d, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x27, 0x12, 0x25, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x9a, 0x01, 0x0a, 0x0e, 0x57, + 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x55, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x39, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x3a, 0x01, 0x2a, 0x22, 0x2e, - 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x66, 0x69, 0x6c, 0x65, - 0x73, 0x2f, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x2d, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x12, 0xc0, - 0x01, 0x0a, 0x17, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x2f, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, - 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, - 0x77, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x42, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x3a, 0x01, 0x2a, 0x22, 0x37, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2f, 0x67, 0x65, 0x6e, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x2d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2d, 0x76, 0x69, 0x65, - 0x77, 0x12, 0xa1, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x12, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x6c, - 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x38, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x32, 0x3a, 0x01, 0x2a, 0x22, 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, + 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x2f, 0x72, 0x65, 0x73, - 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x12, 0xa1, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x43, 0x68, 0x61, 0x72, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x29, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x72, 0x74, 0x53, 0x70, 0x65, 0x63, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x43, 0x68, 0x61, 0x72, 0x74, 0x53, 0x70, 0x65, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x3a, 0x01, 0x2a, 0x22, 0x2a, 0x2f, - 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x2f, 0x63, 0x68, 0x61, 0x72, 0x74, 0x12, 0x76, 0x0a, 0x07, 0x47, 0x65, 0x74, - 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x12, - 0x20, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, - 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6c, 0x6f, 0x67, - 0x73, 0x12, 0x84, 0x01, 0x0a, 0x09, 0x57, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x6f, 0x67, 0x73, 0x12, - 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x12, 0x26, - 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6c, 0x6f, 0x67, 0x73, - 0x2f, 0x77, 0x61, 0x74, 0x63, 0x68, 0x30, 0x01, 0x12, 0x8d, 0x01, 0x0a, 0x0d, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x25, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x27, 0x12, 0x25, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, - 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x9a, 0x01, 0x0a, 0x0e, 0x57, 0x61, 0x74, - 0x63, 0x68, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x26, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x61, - 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, - 0x7d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x2d, 0x2f, 0x77, 0x61, - 0x74, 0x63, 0x68, 0x30, 0x01, 0x12, 0x86, 0x01, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x8e, - 0x01, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, - 0x12, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, - 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x3a, 0x01, 0x2a, 0x22, 0x23, 0x2f, 0x76, 0x31, 0x2f, + 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x2d, 0x2f, + 0x77, 0x61, 0x74, 0x63, 0x68, 0x30, 0x01, 0x12, 0x86, 0x01, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x72, + 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, + 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x12, 0x8e, 0x01, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x69, 0x67, 0x67, + 0x65, 0x72, 0x12, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x69, 0x67, 0x67, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x3a, 0x01, 0x2a, 0x22, 0x23, 0x2f, 0x76, + 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, + 0x72, 0x12, 0x90, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x73, 0x12, 0x2c, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, + 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x2f, + 0x6d, 0x65, 0x74, 0x61, 0x12, 0xa2, 0x01, 0x0a, 0x11, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, + 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x29, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, + 0x6c, 0x79, 0x7a, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x43, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x36, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x12, 0x2e, 0x2f, 0x76, 0x31, 0x2f, 0x69, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x73, 0x2f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x12, 0xb3, 0x01, 0x0a, 0x16, 0x4c, 0x69, + 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x73, 0x12, 0x2e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x38, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x12, 0x30, 0x2f, + 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x9a, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x74, @@ -6522,15 +7067,7 @@ var file_rill_runtime_v1_api_proto_rawDesc = []byte{ 0x72, 0x65, 0x73, 0x68, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x3a, 0x01, 0x2a, 0x22, 0x19, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, - 0x2d, 0x61, 0x6e, 0x64, 0x2d, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x12, 0x7e, - 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, - 0x12, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x6d, + 0x2d, 0x61, 0x6e, 0x64, 0x2d, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x12, 0x6d, 0x0a, 0x0b, 0x49, 0x73, 0x73, 0x75, 0x65, 0x44, 0x65, 0x76, 0x4a, 0x57, 0x54, 0x12, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x44, 0x65, 0x76, 0x4a, 0x57, 0x54, 0x52, 0x65, 0x71, 0x75, 0x65, @@ -6566,13 +7103,13 @@ func file_rill_runtime_v1_api_proto_rawDescGZIP() []byte { } var file_rill_runtime_v1_api_proto_enumTypes = make([]protoimpl.EnumInfo, 5) -var file_rill_runtime_v1_api_proto_msgTypes = make([]protoimpl.MessageInfo, 87) +var file_rill_runtime_v1_api_proto_msgTypes = make([]protoimpl.MessageInfo, 96) var file_rill_runtime_v1_api_proto_goTypes = []interface{}{ (FileEvent)(0), // 0: rill.runtime.v1.FileEvent (LogLevel)(0), // 1: rill.runtime.v1.LogLevel (ResourceEvent)(0), // 2: rill.runtime.v1.ResourceEvent - (ReconcileError_Code)(0), // 3: rill.runtime.v1.ReconcileError.Code - (ConnectorSpec_Property_Type)(0), // 4: rill.runtime.v1.ConnectorSpec.Property.Type + (ConnectorDriver_Property_Type)(0), // 3: rill.runtime.v1.ConnectorDriver.Property.Type + (ReconcileError_Code)(0), // 4: rill.runtime.v1.ReconcileError.Code (*PingRequest)(nil), // 5: rill.runtime.v1.PingRequest (*PingResponse)(nil), // 6: rill.runtime.v1.PingResponse (*Instance)(nil), // 7: rill.runtime.v1.Instance @@ -6625,186 +7162,208 @@ var file_rill_runtime_v1_api_proto_goTypes = []interface{}{ (*GetResourceResponse)(nil), // 54: rill.runtime.v1.GetResourceResponse (*CreateTriggerRequest)(nil), // 55: rill.runtime.v1.CreateTriggerRequest (*CreateTriggerResponse)(nil), // 56: rill.runtime.v1.CreateTriggerResponse - (*CatalogEntry)(nil), // 57: rill.runtime.v1.CatalogEntry - (*ListCatalogEntriesRequest)(nil), // 58: rill.runtime.v1.ListCatalogEntriesRequest - (*ListCatalogEntriesResponse)(nil), // 59: rill.runtime.v1.ListCatalogEntriesResponse - (*GetCatalogEntryRequest)(nil), // 60: rill.runtime.v1.GetCatalogEntryRequest - (*GetCatalogEntryResponse)(nil), // 61: rill.runtime.v1.GetCatalogEntryResponse - (*TriggerRefreshRequest)(nil), // 62: rill.runtime.v1.TriggerRefreshRequest - (*TriggerRefreshResponse)(nil), // 63: rill.runtime.v1.TriggerRefreshResponse - (*TriggerSyncRequest)(nil), // 64: rill.runtime.v1.TriggerSyncRequest - (*TriggerSyncResponse)(nil), // 65: rill.runtime.v1.TriggerSyncResponse - (*ReconcileRequest)(nil), // 66: rill.runtime.v1.ReconcileRequest - (*ReconcileResponse)(nil), // 67: rill.runtime.v1.ReconcileResponse - (*ReconcileError)(nil), // 68: rill.runtime.v1.ReconcileError - (*PutFileAndReconcileRequest)(nil), // 69: rill.runtime.v1.PutFileAndReconcileRequest - (*PutFileAndReconcileResponse)(nil), // 70: rill.runtime.v1.PutFileAndReconcileResponse - (*DeleteFileAndReconcileRequest)(nil), // 71: rill.runtime.v1.DeleteFileAndReconcileRequest - (*DeleteFileAndReconcileResponse)(nil), // 72: rill.runtime.v1.DeleteFileAndReconcileResponse - (*RenameFileAndReconcileRequest)(nil), // 73: rill.runtime.v1.RenameFileAndReconcileRequest - (*RenameFileAndReconcileResponse)(nil), // 74: rill.runtime.v1.RenameFileAndReconcileResponse - (*RefreshAndReconcileRequest)(nil), // 75: rill.runtime.v1.RefreshAndReconcileRequest - (*RefreshAndReconcileResponse)(nil), // 76: rill.runtime.v1.RefreshAndReconcileResponse - (*ConnectorSpec)(nil), // 77: rill.runtime.v1.ConnectorSpec - (*ListConnectorsRequest)(nil), // 78: rill.runtime.v1.ListConnectorsRequest - (*ListConnectorsResponse)(nil), // 79: rill.runtime.v1.ListConnectorsResponse - (*IssueDevJWTRequest)(nil), // 80: rill.runtime.v1.IssueDevJWTRequest - (*IssueDevJWTResponse)(nil), // 81: rill.runtime.v1.IssueDevJWTResponse - nil, // 82: rill.runtime.v1.Instance.VariablesEntry - nil, // 83: rill.runtime.v1.Instance.ProjectVariablesEntry - nil, // 84: rill.runtime.v1.Instance.AnnotationsEntry - nil, // 85: rill.runtime.v1.Connector.ConfigEntry - nil, // 86: rill.runtime.v1.CreateInstanceRequest.VariablesEntry - nil, // 87: rill.runtime.v1.CreateInstanceRequest.AnnotationsEntry - nil, // 88: rill.runtime.v1.EditInstanceRequest.VariablesEntry - nil, // 89: rill.runtime.v1.EditInstanceRequest.AnnotationsEntry - (*ReconcileError_CharLocation)(nil), // 90: rill.runtime.v1.ReconcileError.CharLocation - (*ConnectorSpec_Property)(nil), // 91: rill.runtime.v1.ConnectorSpec.Property - (*timestamppb.Timestamp)(nil), // 92: google.protobuf.Timestamp - (*structpb.Struct)(nil), // 93: google.protobuf.Struct - (*Resource)(nil), // 94: rill.runtime.v1.Resource - (*ResourceName)(nil), // 95: rill.runtime.v1.ResourceName - (*PullTriggerSpec)(nil), // 96: rill.runtime.v1.PullTriggerSpec - (*RefreshTriggerSpec)(nil), // 97: rill.runtime.v1.RefreshTriggerSpec - (*Table)(nil), // 98: rill.runtime.v1.Table - (*Source)(nil), // 99: rill.runtime.v1.Source - (*Model)(nil), // 100: rill.runtime.v1.Model - (*MetricsView)(nil), // 101: rill.runtime.v1.MetricsView - (ObjectType)(0), // 102: rill.runtime.v1.ObjectType + (*ConnectorDriver)(nil), // 57: rill.runtime.v1.ConnectorDriver + (*AnalyzedConnector)(nil), // 58: rill.runtime.v1.AnalyzedConnector + (*ListConnectorDriversRequest)(nil), // 59: rill.runtime.v1.ListConnectorDriversRequest + (*ListConnectorDriversResponse)(nil), // 60: rill.runtime.v1.ListConnectorDriversResponse + (*AnalyzeConnectorsRequest)(nil), // 61: rill.runtime.v1.AnalyzeConnectorsRequest + (*AnalyzeConnectorsResponse)(nil), // 62: rill.runtime.v1.AnalyzeConnectorsResponse + (*ListNotifierConnectorsRequest)(nil), // 63: rill.runtime.v1.ListNotifierConnectorsRequest + (*ListNotifierConnectorsResponse)(nil), // 64: rill.runtime.v1.ListNotifierConnectorsResponse + (*CatalogEntry)(nil), // 65: rill.runtime.v1.CatalogEntry + (*ListCatalogEntriesRequest)(nil), // 66: rill.runtime.v1.ListCatalogEntriesRequest + (*ListCatalogEntriesResponse)(nil), // 67: rill.runtime.v1.ListCatalogEntriesResponse + (*GetCatalogEntryRequest)(nil), // 68: rill.runtime.v1.GetCatalogEntryRequest + (*GetCatalogEntryResponse)(nil), // 69: rill.runtime.v1.GetCatalogEntryResponse + (*TriggerRefreshRequest)(nil), // 70: rill.runtime.v1.TriggerRefreshRequest + (*TriggerRefreshResponse)(nil), // 71: rill.runtime.v1.TriggerRefreshResponse + (*TriggerSyncRequest)(nil), // 72: rill.runtime.v1.TriggerSyncRequest + (*TriggerSyncResponse)(nil), // 73: rill.runtime.v1.TriggerSyncResponse + (*ReconcileRequest)(nil), // 74: rill.runtime.v1.ReconcileRequest + (*ReconcileResponse)(nil), // 75: rill.runtime.v1.ReconcileResponse + (*ReconcileError)(nil), // 76: rill.runtime.v1.ReconcileError + (*PutFileAndReconcileRequest)(nil), // 77: rill.runtime.v1.PutFileAndReconcileRequest + (*PutFileAndReconcileResponse)(nil), // 78: rill.runtime.v1.PutFileAndReconcileResponse + (*DeleteFileAndReconcileRequest)(nil), // 79: rill.runtime.v1.DeleteFileAndReconcileRequest + (*DeleteFileAndReconcileResponse)(nil), // 80: rill.runtime.v1.DeleteFileAndReconcileResponse + (*RenameFileAndReconcileRequest)(nil), // 81: rill.runtime.v1.RenameFileAndReconcileRequest + (*RenameFileAndReconcileResponse)(nil), // 82: rill.runtime.v1.RenameFileAndReconcileResponse + (*RefreshAndReconcileRequest)(nil), // 83: rill.runtime.v1.RefreshAndReconcileRequest + (*RefreshAndReconcileResponse)(nil), // 84: rill.runtime.v1.RefreshAndReconcileResponse + (*IssueDevJWTRequest)(nil), // 85: rill.runtime.v1.IssueDevJWTRequest + (*IssueDevJWTResponse)(nil), // 86: rill.runtime.v1.IssueDevJWTResponse + nil, // 87: rill.runtime.v1.Instance.VariablesEntry + nil, // 88: rill.runtime.v1.Instance.ProjectVariablesEntry + nil, // 89: rill.runtime.v1.Instance.AnnotationsEntry + nil, // 90: rill.runtime.v1.Connector.ConfigEntry + nil, // 91: rill.runtime.v1.CreateInstanceRequest.VariablesEntry + nil, // 92: rill.runtime.v1.CreateInstanceRequest.AnnotationsEntry + nil, // 93: rill.runtime.v1.EditInstanceRequest.VariablesEntry + nil, // 94: rill.runtime.v1.EditInstanceRequest.AnnotationsEntry + (*ConnectorDriver_Property)(nil), // 95: rill.runtime.v1.ConnectorDriver.Property + nil, // 96: rill.runtime.v1.AnalyzedConnector.ConfigEntry + nil, // 97: rill.runtime.v1.AnalyzedConnector.PresetConfigEntry + nil, // 98: rill.runtime.v1.AnalyzedConnector.ProjectConfigEntry + nil, // 99: rill.runtime.v1.AnalyzedConnector.EnvConfigEntry + (*ReconcileError_CharLocation)(nil), // 100: rill.runtime.v1.ReconcileError.CharLocation + (*timestamppb.Timestamp)(nil), // 101: google.protobuf.Timestamp + (*structpb.Struct)(nil), // 102: google.protobuf.Struct + (*Resource)(nil), // 103: rill.runtime.v1.Resource + (*ResourceName)(nil), // 104: rill.runtime.v1.ResourceName + (*PullTriggerSpec)(nil), // 105: rill.runtime.v1.PullTriggerSpec + (*RefreshTriggerSpec)(nil), // 106: rill.runtime.v1.RefreshTriggerSpec + (*Table)(nil), // 107: rill.runtime.v1.Table + (*Source)(nil), // 108: rill.runtime.v1.Source + (*Model)(nil), // 109: rill.runtime.v1.Model + (*MetricsView)(nil), // 110: rill.runtime.v1.MetricsView + (ObjectType)(0), // 111: rill.runtime.v1.ObjectType } var file_rill_runtime_v1_api_proto_depIdxs = []int32{ - 92, // 0: rill.runtime.v1.PingResponse.time:type_name -> google.protobuf.Timestamp - 92, // 1: rill.runtime.v1.Instance.created_on:type_name -> google.protobuf.Timestamp - 92, // 2: rill.runtime.v1.Instance.updated_on:type_name -> google.protobuf.Timestamp + 101, // 0: rill.runtime.v1.PingResponse.time:type_name -> google.protobuf.Timestamp + 101, // 1: rill.runtime.v1.Instance.created_on:type_name -> google.protobuf.Timestamp + 101, // 2: rill.runtime.v1.Instance.updated_on:type_name -> google.protobuf.Timestamp 8, // 3: rill.runtime.v1.Instance.connectors:type_name -> rill.runtime.v1.Connector 8, // 4: rill.runtime.v1.Instance.project_connectors:type_name -> rill.runtime.v1.Connector - 82, // 5: rill.runtime.v1.Instance.variables:type_name -> rill.runtime.v1.Instance.VariablesEntry - 83, // 6: rill.runtime.v1.Instance.project_variables:type_name -> rill.runtime.v1.Instance.ProjectVariablesEntry - 84, // 7: rill.runtime.v1.Instance.annotations:type_name -> rill.runtime.v1.Instance.AnnotationsEntry - 85, // 8: rill.runtime.v1.Connector.config:type_name -> rill.runtime.v1.Connector.ConfigEntry + 87, // 5: rill.runtime.v1.Instance.variables:type_name -> rill.runtime.v1.Instance.VariablesEntry + 88, // 6: rill.runtime.v1.Instance.project_variables:type_name -> rill.runtime.v1.Instance.ProjectVariablesEntry + 89, // 7: rill.runtime.v1.Instance.annotations:type_name -> rill.runtime.v1.Instance.AnnotationsEntry + 90, // 8: rill.runtime.v1.Connector.config:type_name -> rill.runtime.v1.Connector.ConfigEntry 7, // 9: rill.runtime.v1.ListInstancesResponse.instances:type_name -> rill.runtime.v1.Instance 7, // 10: rill.runtime.v1.GetInstanceResponse.instance:type_name -> rill.runtime.v1.Instance 8, // 11: rill.runtime.v1.CreateInstanceRequest.connectors:type_name -> rill.runtime.v1.Connector - 86, // 12: rill.runtime.v1.CreateInstanceRequest.variables:type_name -> rill.runtime.v1.CreateInstanceRequest.VariablesEntry - 87, // 13: rill.runtime.v1.CreateInstanceRequest.annotations:type_name -> rill.runtime.v1.CreateInstanceRequest.AnnotationsEntry + 91, // 12: rill.runtime.v1.CreateInstanceRequest.variables:type_name -> rill.runtime.v1.CreateInstanceRequest.VariablesEntry + 92, // 13: rill.runtime.v1.CreateInstanceRequest.annotations:type_name -> rill.runtime.v1.CreateInstanceRequest.AnnotationsEntry 7, // 14: rill.runtime.v1.CreateInstanceResponse.instance:type_name -> rill.runtime.v1.Instance 8, // 15: rill.runtime.v1.EditInstanceRequest.connectors:type_name -> rill.runtime.v1.Connector - 88, // 16: rill.runtime.v1.EditInstanceRequest.variables:type_name -> rill.runtime.v1.EditInstanceRequest.VariablesEntry - 89, // 17: rill.runtime.v1.EditInstanceRequest.annotations:type_name -> rill.runtime.v1.EditInstanceRequest.AnnotationsEntry + 93, // 16: rill.runtime.v1.EditInstanceRequest.variables:type_name -> rill.runtime.v1.EditInstanceRequest.VariablesEntry + 94, // 17: rill.runtime.v1.EditInstanceRequest.annotations:type_name -> rill.runtime.v1.EditInstanceRequest.AnnotationsEntry 7, // 18: rill.runtime.v1.EditInstanceResponse.instance:type_name -> rill.runtime.v1.Instance 0, // 19: rill.runtime.v1.WatchFilesResponse.event:type_name -> rill.runtime.v1.FileEvent - 92, // 20: rill.runtime.v1.GetFileResponse.updated_on:type_name -> google.protobuf.Timestamp + 101, // 20: rill.runtime.v1.GetFileResponse.updated_on:type_name -> google.protobuf.Timestamp 31, // 21: rill.runtime.v1.ListExamplesResponse.examples:type_name -> rill.runtime.v1.Example - 93, // 22: rill.runtime.v1.GenerateResolverResponse.resolver_properties:type_name -> google.protobuf.Struct - 93, // 23: rill.runtime.v1.GenerateChartSpecRequest.resolver_properties:type_name -> google.protobuf.Struct + 102, // 22: rill.runtime.v1.GenerateResolverResponse.resolver_properties:type_name -> google.protobuf.Struct + 102, // 23: rill.runtime.v1.GenerateChartSpecRequest.resolver_properties:type_name -> google.protobuf.Struct 1, // 24: rill.runtime.v1.Log.level:type_name -> rill.runtime.v1.LogLevel - 92, // 25: rill.runtime.v1.Log.time:type_name -> google.protobuf.Timestamp + 101, // 25: rill.runtime.v1.Log.time:type_name -> google.protobuf.Timestamp 1, // 26: rill.runtime.v1.GetLogsRequest.level:type_name -> rill.runtime.v1.LogLevel 44, // 27: rill.runtime.v1.GetLogsResponse.logs:type_name -> rill.runtime.v1.Log 1, // 28: rill.runtime.v1.WatchLogsRequest.level:type_name -> rill.runtime.v1.LogLevel 44, // 29: rill.runtime.v1.WatchLogsResponse.log:type_name -> rill.runtime.v1.Log - 94, // 30: rill.runtime.v1.ListResourcesResponse.resources:type_name -> rill.runtime.v1.Resource + 103, // 30: rill.runtime.v1.ListResourcesResponse.resources:type_name -> rill.runtime.v1.Resource 2, // 31: rill.runtime.v1.WatchResourcesResponse.event:type_name -> rill.runtime.v1.ResourceEvent - 95, // 32: rill.runtime.v1.WatchResourcesResponse.name:type_name -> rill.runtime.v1.ResourceName - 94, // 33: rill.runtime.v1.WatchResourcesResponse.resource:type_name -> rill.runtime.v1.Resource - 95, // 34: rill.runtime.v1.GetResourceRequest.name:type_name -> rill.runtime.v1.ResourceName - 94, // 35: rill.runtime.v1.GetResourceResponse.resource:type_name -> rill.runtime.v1.Resource - 96, // 36: rill.runtime.v1.CreateTriggerRequest.pull_trigger_spec:type_name -> rill.runtime.v1.PullTriggerSpec - 97, // 37: rill.runtime.v1.CreateTriggerRequest.refresh_trigger_spec:type_name -> rill.runtime.v1.RefreshTriggerSpec - 98, // 38: rill.runtime.v1.CatalogEntry.table:type_name -> rill.runtime.v1.Table - 99, // 39: rill.runtime.v1.CatalogEntry.source:type_name -> rill.runtime.v1.Source - 100, // 40: rill.runtime.v1.CatalogEntry.model:type_name -> rill.runtime.v1.Model - 101, // 41: rill.runtime.v1.CatalogEntry.metrics_view:type_name -> rill.runtime.v1.MetricsView - 92, // 42: rill.runtime.v1.CatalogEntry.created_on:type_name -> google.protobuf.Timestamp - 92, // 43: rill.runtime.v1.CatalogEntry.updated_on:type_name -> google.protobuf.Timestamp - 92, // 44: rill.runtime.v1.CatalogEntry.refreshed_on:type_name -> google.protobuf.Timestamp - 102, // 45: rill.runtime.v1.ListCatalogEntriesRequest.type:type_name -> rill.runtime.v1.ObjectType - 57, // 46: rill.runtime.v1.ListCatalogEntriesResponse.entries:type_name -> rill.runtime.v1.CatalogEntry - 57, // 47: rill.runtime.v1.GetCatalogEntryResponse.entry:type_name -> rill.runtime.v1.CatalogEntry - 68, // 48: rill.runtime.v1.ReconcileResponse.errors:type_name -> rill.runtime.v1.ReconcileError - 3, // 49: rill.runtime.v1.ReconcileError.code:type_name -> rill.runtime.v1.ReconcileError.Code - 90, // 50: rill.runtime.v1.ReconcileError.start_location:type_name -> rill.runtime.v1.ReconcileError.CharLocation - 90, // 51: rill.runtime.v1.ReconcileError.end_location:type_name -> rill.runtime.v1.ReconcileError.CharLocation - 68, // 52: rill.runtime.v1.PutFileAndReconcileResponse.errors:type_name -> rill.runtime.v1.ReconcileError - 68, // 53: rill.runtime.v1.DeleteFileAndReconcileResponse.errors:type_name -> rill.runtime.v1.ReconcileError - 68, // 54: rill.runtime.v1.RenameFileAndReconcileResponse.errors:type_name -> rill.runtime.v1.ReconcileError - 68, // 55: rill.runtime.v1.RefreshAndReconcileResponse.errors:type_name -> rill.runtime.v1.ReconcileError - 91, // 56: rill.runtime.v1.ConnectorSpec.properties:type_name -> rill.runtime.v1.ConnectorSpec.Property - 77, // 57: rill.runtime.v1.ListConnectorsResponse.connectors:type_name -> rill.runtime.v1.ConnectorSpec - 4, // 58: rill.runtime.v1.ConnectorSpec.Property.type:type_name -> rill.runtime.v1.ConnectorSpec.Property.Type - 5, // 59: rill.runtime.v1.RuntimeService.Ping:input_type -> rill.runtime.v1.PingRequest - 9, // 60: rill.runtime.v1.RuntimeService.ListInstances:input_type -> rill.runtime.v1.ListInstancesRequest - 11, // 61: rill.runtime.v1.RuntimeService.GetInstance:input_type -> rill.runtime.v1.GetInstanceRequest - 13, // 62: rill.runtime.v1.RuntimeService.CreateInstance:input_type -> rill.runtime.v1.CreateInstanceRequest - 17, // 63: rill.runtime.v1.RuntimeService.EditInstance:input_type -> rill.runtime.v1.EditInstanceRequest - 15, // 64: rill.runtime.v1.RuntimeService.DeleteInstance:input_type -> rill.runtime.v1.DeleteInstanceRequest - 19, // 65: rill.runtime.v1.RuntimeService.ListFiles:input_type -> rill.runtime.v1.ListFilesRequest - 21, // 66: rill.runtime.v1.RuntimeService.WatchFiles:input_type -> rill.runtime.v1.WatchFilesRequest - 23, // 67: rill.runtime.v1.RuntimeService.GetFile:input_type -> rill.runtime.v1.GetFileRequest - 25, // 68: rill.runtime.v1.RuntimeService.PutFile:input_type -> rill.runtime.v1.PutFileRequest - 27, // 69: rill.runtime.v1.RuntimeService.DeleteFile:input_type -> rill.runtime.v1.DeleteFileRequest - 29, // 70: rill.runtime.v1.RuntimeService.RenameFile:input_type -> rill.runtime.v1.RenameFileRequest - 32, // 71: rill.runtime.v1.RuntimeService.ListExamples:input_type -> rill.runtime.v1.ListExamplesRequest - 34, // 72: rill.runtime.v1.RuntimeService.UnpackExample:input_type -> rill.runtime.v1.UnpackExampleRequest - 36, // 73: rill.runtime.v1.RuntimeService.UnpackEmpty:input_type -> rill.runtime.v1.UnpackEmptyRequest - 38, // 74: rill.runtime.v1.RuntimeService.GenerateMetricsViewFile:input_type -> rill.runtime.v1.GenerateMetricsViewFileRequest - 40, // 75: rill.runtime.v1.RuntimeService.GenerateResolver:input_type -> rill.runtime.v1.GenerateResolverRequest - 42, // 76: rill.runtime.v1.RuntimeService.GenerateChartSpec:input_type -> rill.runtime.v1.GenerateChartSpecRequest - 45, // 77: rill.runtime.v1.RuntimeService.GetLogs:input_type -> rill.runtime.v1.GetLogsRequest - 47, // 78: rill.runtime.v1.RuntimeService.WatchLogs:input_type -> rill.runtime.v1.WatchLogsRequest - 49, // 79: rill.runtime.v1.RuntimeService.ListResources:input_type -> rill.runtime.v1.ListResourcesRequest - 51, // 80: rill.runtime.v1.RuntimeService.WatchResources:input_type -> rill.runtime.v1.WatchResourcesRequest - 53, // 81: rill.runtime.v1.RuntimeService.GetResource:input_type -> rill.runtime.v1.GetResourceRequest - 55, // 82: rill.runtime.v1.RuntimeService.CreateTrigger:input_type -> rill.runtime.v1.CreateTriggerRequest - 58, // 83: rill.runtime.v1.RuntimeService.ListCatalogEntries:input_type -> rill.runtime.v1.ListCatalogEntriesRequest - 60, // 84: rill.runtime.v1.RuntimeService.GetCatalogEntry:input_type -> rill.runtime.v1.GetCatalogEntryRequest - 62, // 85: rill.runtime.v1.RuntimeService.TriggerRefresh:input_type -> rill.runtime.v1.TriggerRefreshRequest - 66, // 86: rill.runtime.v1.RuntimeService.Reconcile:input_type -> rill.runtime.v1.ReconcileRequest - 69, // 87: rill.runtime.v1.RuntimeService.PutFileAndReconcile:input_type -> rill.runtime.v1.PutFileAndReconcileRequest - 71, // 88: rill.runtime.v1.RuntimeService.DeleteFileAndReconcile:input_type -> rill.runtime.v1.DeleteFileAndReconcileRequest - 73, // 89: rill.runtime.v1.RuntimeService.RenameFileAndReconcile:input_type -> rill.runtime.v1.RenameFileAndReconcileRequest - 75, // 90: rill.runtime.v1.RuntimeService.RefreshAndReconcile:input_type -> rill.runtime.v1.RefreshAndReconcileRequest - 78, // 91: rill.runtime.v1.RuntimeService.ListConnectors:input_type -> rill.runtime.v1.ListConnectorsRequest - 80, // 92: rill.runtime.v1.RuntimeService.IssueDevJWT:input_type -> rill.runtime.v1.IssueDevJWTRequest - 6, // 93: rill.runtime.v1.RuntimeService.Ping:output_type -> rill.runtime.v1.PingResponse - 10, // 94: rill.runtime.v1.RuntimeService.ListInstances:output_type -> rill.runtime.v1.ListInstancesResponse - 12, // 95: rill.runtime.v1.RuntimeService.GetInstance:output_type -> rill.runtime.v1.GetInstanceResponse - 14, // 96: rill.runtime.v1.RuntimeService.CreateInstance:output_type -> rill.runtime.v1.CreateInstanceResponse - 18, // 97: rill.runtime.v1.RuntimeService.EditInstance:output_type -> rill.runtime.v1.EditInstanceResponse - 16, // 98: rill.runtime.v1.RuntimeService.DeleteInstance:output_type -> rill.runtime.v1.DeleteInstanceResponse - 20, // 99: rill.runtime.v1.RuntimeService.ListFiles:output_type -> rill.runtime.v1.ListFilesResponse - 22, // 100: rill.runtime.v1.RuntimeService.WatchFiles:output_type -> rill.runtime.v1.WatchFilesResponse - 24, // 101: rill.runtime.v1.RuntimeService.GetFile:output_type -> rill.runtime.v1.GetFileResponse - 26, // 102: rill.runtime.v1.RuntimeService.PutFile:output_type -> rill.runtime.v1.PutFileResponse - 28, // 103: rill.runtime.v1.RuntimeService.DeleteFile:output_type -> rill.runtime.v1.DeleteFileResponse - 30, // 104: rill.runtime.v1.RuntimeService.RenameFile:output_type -> rill.runtime.v1.RenameFileResponse - 33, // 105: rill.runtime.v1.RuntimeService.ListExamples:output_type -> rill.runtime.v1.ListExamplesResponse - 35, // 106: rill.runtime.v1.RuntimeService.UnpackExample:output_type -> rill.runtime.v1.UnpackExampleResponse - 37, // 107: rill.runtime.v1.RuntimeService.UnpackEmpty:output_type -> rill.runtime.v1.UnpackEmptyResponse - 39, // 108: rill.runtime.v1.RuntimeService.GenerateMetricsViewFile:output_type -> rill.runtime.v1.GenerateMetricsViewFileResponse - 41, // 109: rill.runtime.v1.RuntimeService.GenerateResolver:output_type -> rill.runtime.v1.GenerateResolverResponse - 43, // 110: rill.runtime.v1.RuntimeService.GenerateChartSpec:output_type -> rill.runtime.v1.GenerateChartSpecResponse - 46, // 111: rill.runtime.v1.RuntimeService.GetLogs:output_type -> rill.runtime.v1.GetLogsResponse - 48, // 112: rill.runtime.v1.RuntimeService.WatchLogs:output_type -> rill.runtime.v1.WatchLogsResponse - 50, // 113: rill.runtime.v1.RuntimeService.ListResources:output_type -> rill.runtime.v1.ListResourcesResponse - 52, // 114: rill.runtime.v1.RuntimeService.WatchResources:output_type -> rill.runtime.v1.WatchResourcesResponse - 54, // 115: rill.runtime.v1.RuntimeService.GetResource:output_type -> rill.runtime.v1.GetResourceResponse - 56, // 116: rill.runtime.v1.RuntimeService.CreateTrigger:output_type -> rill.runtime.v1.CreateTriggerResponse - 59, // 117: rill.runtime.v1.RuntimeService.ListCatalogEntries:output_type -> rill.runtime.v1.ListCatalogEntriesResponse - 61, // 118: rill.runtime.v1.RuntimeService.GetCatalogEntry:output_type -> rill.runtime.v1.GetCatalogEntryResponse - 63, // 119: rill.runtime.v1.RuntimeService.TriggerRefresh:output_type -> rill.runtime.v1.TriggerRefreshResponse - 67, // 120: rill.runtime.v1.RuntimeService.Reconcile:output_type -> rill.runtime.v1.ReconcileResponse - 70, // 121: rill.runtime.v1.RuntimeService.PutFileAndReconcile:output_type -> rill.runtime.v1.PutFileAndReconcileResponse - 72, // 122: rill.runtime.v1.RuntimeService.DeleteFileAndReconcile:output_type -> rill.runtime.v1.DeleteFileAndReconcileResponse - 74, // 123: rill.runtime.v1.RuntimeService.RenameFileAndReconcile:output_type -> rill.runtime.v1.RenameFileAndReconcileResponse - 76, // 124: rill.runtime.v1.RuntimeService.RefreshAndReconcile:output_type -> rill.runtime.v1.RefreshAndReconcileResponse - 79, // 125: rill.runtime.v1.RuntimeService.ListConnectors:output_type -> rill.runtime.v1.ListConnectorsResponse - 81, // 126: rill.runtime.v1.RuntimeService.IssueDevJWT:output_type -> rill.runtime.v1.IssueDevJWTResponse - 93, // [93:127] is the sub-list for method output_type - 59, // [59:93] is the sub-list for method input_type - 59, // [59:59] is the sub-list for extension type_name - 59, // [59:59] is the sub-list for extension extendee - 0, // [0:59] is the sub-list for field type_name + 104, // 32: rill.runtime.v1.WatchResourcesResponse.name:type_name -> rill.runtime.v1.ResourceName + 103, // 33: rill.runtime.v1.WatchResourcesResponse.resource:type_name -> rill.runtime.v1.Resource + 104, // 34: rill.runtime.v1.GetResourceRequest.name:type_name -> rill.runtime.v1.ResourceName + 103, // 35: rill.runtime.v1.GetResourceResponse.resource:type_name -> rill.runtime.v1.Resource + 105, // 36: rill.runtime.v1.CreateTriggerRequest.pull_trigger_spec:type_name -> rill.runtime.v1.PullTriggerSpec + 106, // 37: rill.runtime.v1.CreateTriggerRequest.refresh_trigger_spec:type_name -> rill.runtime.v1.RefreshTriggerSpec + 95, // 38: rill.runtime.v1.ConnectorDriver.config_properties:type_name -> rill.runtime.v1.ConnectorDriver.Property + 95, // 39: rill.runtime.v1.ConnectorDriver.source_properties:type_name -> rill.runtime.v1.ConnectorDriver.Property + 57, // 40: rill.runtime.v1.AnalyzedConnector.driver:type_name -> rill.runtime.v1.ConnectorDriver + 96, // 41: rill.runtime.v1.AnalyzedConnector.config:type_name -> rill.runtime.v1.AnalyzedConnector.ConfigEntry + 97, // 42: rill.runtime.v1.AnalyzedConnector.preset_config:type_name -> rill.runtime.v1.AnalyzedConnector.PresetConfigEntry + 98, // 43: rill.runtime.v1.AnalyzedConnector.project_config:type_name -> rill.runtime.v1.AnalyzedConnector.ProjectConfigEntry + 99, // 44: rill.runtime.v1.AnalyzedConnector.env_config:type_name -> rill.runtime.v1.AnalyzedConnector.EnvConfigEntry + 104, // 45: rill.runtime.v1.AnalyzedConnector.used_by:type_name -> rill.runtime.v1.ResourceName + 57, // 46: rill.runtime.v1.ListConnectorDriversResponse.connectors:type_name -> rill.runtime.v1.ConnectorDriver + 58, // 47: rill.runtime.v1.AnalyzeConnectorsResponse.connectors:type_name -> rill.runtime.v1.AnalyzedConnector + 8, // 48: rill.runtime.v1.ListNotifierConnectorsResponse.connectors:type_name -> rill.runtime.v1.Connector + 107, // 49: rill.runtime.v1.CatalogEntry.table:type_name -> rill.runtime.v1.Table + 108, // 50: rill.runtime.v1.CatalogEntry.source:type_name -> rill.runtime.v1.Source + 109, // 51: rill.runtime.v1.CatalogEntry.model:type_name -> rill.runtime.v1.Model + 110, // 52: rill.runtime.v1.CatalogEntry.metrics_view:type_name -> rill.runtime.v1.MetricsView + 101, // 53: rill.runtime.v1.CatalogEntry.created_on:type_name -> google.protobuf.Timestamp + 101, // 54: rill.runtime.v1.CatalogEntry.updated_on:type_name -> google.protobuf.Timestamp + 101, // 55: rill.runtime.v1.CatalogEntry.refreshed_on:type_name -> google.protobuf.Timestamp + 111, // 56: rill.runtime.v1.ListCatalogEntriesRequest.type:type_name -> rill.runtime.v1.ObjectType + 65, // 57: rill.runtime.v1.ListCatalogEntriesResponse.entries:type_name -> rill.runtime.v1.CatalogEntry + 65, // 58: rill.runtime.v1.GetCatalogEntryResponse.entry:type_name -> rill.runtime.v1.CatalogEntry + 76, // 59: rill.runtime.v1.ReconcileResponse.errors:type_name -> rill.runtime.v1.ReconcileError + 4, // 60: rill.runtime.v1.ReconcileError.code:type_name -> rill.runtime.v1.ReconcileError.Code + 100, // 61: rill.runtime.v1.ReconcileError.start_location:type_name -> rill.runtime.v1.ReconcileError.CharLocation + 100, // 62: rill.runtime.v1.ReconcileError.end_location:type_name -> rill.runtime.v1.ReconcileError.CharLocation + 76, // 63: rill.runtime.v1.PutFileAndReconcileResponse.errors:type_name -> rill.runtime.v1.ReconcileError + 76, // 64: rill.runtime.v1.DeleteFileAndReconcileResponse.errors:type_name -> rill.runtime.v1.ReconcileError + 76, // 65: rill.runtime.v1.RenameFileAndReconcileResponse.errors:type_name -> rill.runtime.v1.ReconcileError + 76, // 66: rill.runtime.v1.RefreshAndReconcileResponse.errors:type_name -> rill.runtime.v1.ReconcileError + 3, // 67: rill.runtime.v1.ConnectorDriver.Property.type:type_name -> rill.runtime.v1.ConnectorDriver.Property.Type + 5, // 68: rill.runtime.v1.RuntimeService.Ping:input_type -> rill.runtime.v1.PingRequest + 9, // 69: rill.runtime.v1.RuntimeService.ListInstances:input_type -> rill.runtime.v1.ListInstancesRequest + 11, // 70: rill.runtime.v1.RuntimeService.GetInstance:input_type -> rill.runtime.v1.GetInstanceRequest + 13, // 71: rill.runtime.v1.RuntimeService.CreateInstance:input_type -> rill.runtime.v1.CreateInstanceRequest + 17, // 72: rill.runtime.v1.RuntimeService.EditInstance:input_type -> rill.runtime.v1.EditInstanceRequest + 15, // 73: rill.runtime.v1.RuntimeService.DeleteInstance:input_type -> rill.runtime.v1.DeleteInstanceRequest + 19, // 74: rill.runtime.v1.RuntimeService.ListFiles:input_type -> rill.runtime.v1.ListFilesRequest + 21, // 75: rill.runtime.v1.RuntimeService.WatchFiles:input_type -> rill.runtime.v1.WatchFilesRequest + 23, // 76: rill.runtime.v1.RuntimeService.GetFile:input_type -> rill.runtime.v1.GetFileRequest + 25, // 77: rill.runtime.v1.RuntimeService.PutFile:input_type -> rill.runtime.v1.PutFileRequest + 27, // 78: rill.runtime.v1.RuntimeService.DeleteFile:input_type -> rill.runtime.v1.DeleteFileRequest + 29, // 79: rill.runtime.v1.RuntimeService.RenameFile:input_type -> rill.runtime.v1.RenameFileRequest + 32, // 80: rill.runtime.v1.RuntimeService.ListExamples:input_type -> rill.runtime.v1.ListExamplesRequest + 34, // 81: rill.runtime.v1.RuntimeService.UnpackExample:input_type -> rill.runtime.v1.UnpackExampleRequest + 36, // 82: rill.runtime.v1.RuntimeService.UnpackEmpty:input_type -> rill.runtime.v1.UnpackEmptyRequest + 38, // 83: rill.runtime.v1.RuntimeService.GenerateMetricsViewFile:input_type -> rill.runtime.v1.GenerateMetricsViewFileRequest + 40, // 84: rill.runtime.v1.RuntimeService.GenerateResolver:input_type -> rill.runtime.v1.GenerateResolverRequest + 42, // 85: rill.runtime.v1.RuntimeService.GenerateChartSpec:input_type -> rill.runtime.v1.GenerateChartSpecRequest + 45, // 86: rill.runtime.v1.RuntimeService.GetLogs:input_type -> rill.runtime.v1.GetLogsRequest + 47, // 87: rill.runtime.v1.RuntimeService.WatchLogs:input_type -> rill.runtime.v1.WatchLogsRequest + 49, // 88: rill.runtime.v1.RuntimeService.ListResources:input_type -> rill.runtime.v1.ListResourcesRequest + 51, // 89: rill.runtime.v1.RuntimeService.WatchResources:input_type -> rill.runtime.v1.WatchResourcesRequest + 53, // 90: rill.runtime.v1.RuntimeService.GetResource:input_type -> rill.runtime.v1.GetResourceRequest + 55, // 91: rill.runtime.v1.RuntimeService.CreateTrigger:input_type -> rill.runtime.v1.CreateTriggerRequest + 59, // 92: rill.runtime.v1.RuntimeService.ListConnectorDrivers:input_type -> rill.runtime.v1.ListConnectorDriversRequest + 61, // 93: rill.runtime.v1.RuntimeService.AnalyzeConnectors:input_type -> rill.runtime.v1.AnalyzeConnectorsRequest + 63, // 94: rill.runtime.v1.RuntimeService.ListNotifierConnectors:input_type -> rill.runtime.v1.ListNotifierConnectorsRequest + 66, // 95: rill.runtime.v1.RuntimeService.ListCatalogEntries:input_type -> rill.runtime.v1.ListCatalogEntriesRequest + 68, // 96: rill.runtime.v1.RuntimeService.GetCatalogEntry:input_type -> rill.runtime.v1.GetCatalogEntryRequest + 70, // 97: rill.runtime.v1.RuntimeService.TriggerRefresh:input_type -> rill.runtime.v1.TriggerRefreshRequest + 74, // 98: rill.runtime.v1.RuntimeService.Reconcile:input_type -> rill.runtime.v1.ReconcileRequest + 77, // 99: rill.runtime.v1.RuntimeService.PutFileAndReconcile:input_type -> rill.runtime.v1.PutFileAndReconcileRequest + 79, // 100: rill.runtime.v1.RuntimeService.DeleteFileAndReconcile:input_type -> rill.runtime.v1.DeleteFileAndReconcileRequest + 81, // 101: rill.runtime.v1.RuntimeService.RenameFileAndReconcile:input_type -> rill.runtime.v1.RenameFileAndReconcileRequest + 83, // 102: rill.runtime.v1.RuntimeService.RefreshAndReconcile:input_type -> rill.runtime.v1.RefreshAndReconcileRequest + 85, // 103: rill.runtime.v1.RuntimeService.IssueDevJWT:input_type -> rill.runtime.v1.IssueDevJWTRequest + 6, // 104: rill.runtime.v1.RuntimeService.Ping:output_type -> rill.runtime.v1.PingResponse + 10, // 105: rill.runtime.v1.RuntimeService.ListInstances:output_type -> rill.runtime.v1.ListInstancesResponse + 12, // 106: rill.runtime.v1.RuntimeService.GetInstance:output_type -> rill.runtime.v1.GetInstanceResponse + 14, // 107: rill.runtime.v1.RuntimeService.CreateInstance:output_type -> rill.runtime.v1.CreateInstanceResponse + 18, // 108: rill.runtime.v1.RuntimeService.EditInstance:output_type -> rill.runtime.v1.EditInstanceResponse + 16, // 109: rill.runtime.v1.RuntimeService.DeleteInstance:output_type -> rill.runtime.v1.DeleteInstanceResponse + 20, // 110: rill.runtime.v1.RuntimeService.ListFiles:output_type -> rill.runtime.v1.ListFilesResponse + 22, // 111: rill.runtime.v1.RuntimeService.WatchFiles:output_type -> rill.runtime.v1.WatchFilesResponse + 24, // 112: rill.runtime.v1.RuntimeService.GetFile:output_type -> rill.runtime.v1.GetFileResponse + 26, // 113: rill.runtime.v1.RuntimeService.PutFile:output_type -> rill.runtime.v1.PutFileResponse + 28, // 114: rill.runtime.v1.RuntimeService.DeleteFile:output_type -> rill.runtime.v1.DeleteFileResponse + 30, // 115: rill.runtime.v1.RuntimeService.RenameFile:output_type -> rill.runtime.v1.RenameFileResponse + 33, // 116: rill.runtime.v1.RuntimeService.ListExamples:output_type -> rill.runtime.v1.ListExamplesResponse + 35, // 117: rill.runtime.v1.RuntimeService.UnpackExample:output_type -> rill.runtime.v1.UnpackExampleResponse + 37, // 118: rill.runtime.v1.RuntimeService.UnpackEmpty:output_type -> rill.runtime.v1.UnpackEmptyResponse + 39, // 119: rill.runtime.v1.RuntimeService.GenerateMetricsViewFile:output_type -> rill.runtime.v1.GenerateMetricsViewFileResponse + 41, // 120: rill.runtime.v1.RuntimeService.GenerateResolver:output_type -> rill.runtime.v1.GenerateResolverResponse + 43, // 121: rill.runtime.v1.RuntimeService.GenerateChartSpec:output_type -> rill.runtime.v1.GenerateChartSpecResponse + 46, // 122: rill.runtime.v1.RuntimeService.GetLogs:output_type -> rill.runtime.v1.GetLogsResponse + 48, // 123: rill.runtime.v1.RuntimeService.WatchLogs:output_type -> rill.runtime.v1.WatchLogsResponse + 50, // 124: rill.runtime.v1.RuntimeService.ListResources:output_type -> rill.runtime.v1.ListResourcesResponse + 52, // 125: rill.runtime.v1.RuntimeService.WatchResources:output_type -> rill.runtime.v1.WatchResourcesResponse + 54, // 126: rill.runtime.v1.RuntimeService.GetResource:output_type -> rill.runtime.v1.GetResourceResponse + 56, // 127: rill.runtime.v1.RuntimeService.CreateTrigger:output_type -> rill.runtime.v1.CreateTriggerResponse + 60, // 128: rill.runtime.v1.RuntimeService.ListConnectorDrivers:output_type -> rill.runtime.v1.ListConnectorDriversResponse + 62, // 129: rill.runtime.v1.RuntimeService.AnalyzeConnectors:output_type -> rill.runtime.v1.AnalyzeConnectorsResponse + 64, // 130: rill.runtime.v1.RuntimeService.ListNotifierConnectors:output_type -> rill.runtime.v1.ListNotifierConnectorsResponse + 67, // 131: rill.runtime.v1.RuntimeService.ListCatalogEntries:output_type -> rill.runtime.v1.ListCatalogEntriesResponse + 69, // 132: rill.runtime.v1.RuntimeService.GetCatalogEntry:output_type -> rill.runtime.v1.GetCatalogEntryResponse + 71, // 133: rill.runtime.v1.RuntimeService.TriggerRefresh:output_type -> rill.runtime.v1.TriggerRefreshResponse + 75, // 134: rill.runtime.v1.RuntimeService.Reconcile:output_type -> rill.runtime.v1.ReconcileResponse + 78, // 135: rill.runtime.v1.RuntimeService.PutFileAndReconcile:output_type -> rill.runtime.v1.PutFileAndReconcileResponse + 80, // 136: rill.runtime.v1.RuntimeService.DeleteFileAndReconcile:output_type -> rill.runtime.v1.DeleteFileAndReconcileResponse + 82, // 137: rill.runtime.v1.RuntimeService.RenameFileAndReconcile:output_type -> rill.runtime.v1.RenameFileAndReconcileResponse + 84, // 138: rill.runtime.v1.RuntimeService.RefreshAndReconcile:output_type -> rill.runtime.v1.RefreshAndReconcileResponse + 86, // 139: rill.runtime.v1.RuntimeService.IssueDevJWT:output_type -> rill.runtime.v1.IssueDevJWTResponse + 104, // [104:140] is the sub-list for method output_type + 68, // [68:104] is the sub-list for method input_type + 68, // [68:68] is the sub-list for extension type_name + 68, // [68:68] is the sub-list for extension extendee + 0, // [0:68] is the sub-list for field type_name } func init() { file_rill_runtime_v1_api_proto_init() } @@ -7440,7 +7999,7 @@ func file_rill_runtime_v1_api_proto_init() { } } file_rill_runtime_v1_api_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CatalogEntry); i { + switch v := v.(*ConnectorDriver); i { case 0: return &v.state case 1: @@ -7452,7 +8011,7 @@ func file_rill_runtime_v1_api_proto_init() { } } file_rill_runtime_v1_api_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListCatalogEntriesRequest); i { + switch v := v.(*AnalyzedConnector); i { case 0: return &v.state case 1: @@ -7464,7 +8023,7 @@ func file_rill_runtime_v1_api_proto_init() { } } file_rill_runtime_v1_api_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListCatalogEntriesResponse); i { + switch v := v.(*ListConnectorDriversRequest); i { case 0: return &v.state case 1: @@ -7476,7 +8035,7 @@ func file_rill_runtime_v1_api_proto_init() { } } file_rill_runtime_v1_api_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetCatalogEntryRequest); i { + switch v := v.(*ListConnectorDriversResponse); i { case 0: return &v.state case 1: @@ -7488,7 +8047,7 @@ func file_rill_runtime_v1_api_proto_init() { } } file_rill_runtime_v1_api_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetCatalogEntryResponse); i { + switch v := v.(*AnalyzeConnectorsRequest); i { case 0: return &v.state case 1: @@ -7500,7 +8059,7 @@ func file_rill_runtime_v1_api_proto_init() { } } file_rill_runtime_v1_api_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TriggerRefreshRequest); i { + switch v := v.(*AnalyzeConnectorsResponse); i { case 0: return &v.state case 1: @@ -7512,7 +8071,7 @@ func file_rill_runtime_v1_api_proto_init() { } } file_rill_runtime_v1_api_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TriggerRefreshResponse); i { + switch v := v.(*ListNotifierConnectorsRequest); i { case 0: return &v.state case 1: @@ -7524,7 +8083,7 @@ func file_rill_runtime_v1_api_proto_init() { } } file_rill_runtime_v1_api_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TriggerSyncRequest); i { + switch v := v.(*ListNotifierConnectorsResponse); i { case 0: return &v.state case 1: @@ -7536,7 +8095,7 @@ func file_rill_runtime_v1_api_proto_init() { } } file_rill_runtime_v1_api_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TriggerSyncResponse); i { + switch v := v.(*CatalogEntry); i { case 0: return &v.state case 1: @@ -7548,7 +8107,7 @@ func file_rill_runtime_v1_api_proto_init() { } } file_rill_runtime_v1_api_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReconcileRequest); i { + switch v := v.(*ListCatalogEntriesRequest); i { case 0: return &v.state case 1: @@ -7560,7 +8119,7 @@ func file_rill_runtime_v1_api_proto_init() { } } file_rill_runtime_v1_api_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReconcileResponse); i { + switch v := v.(*ListCatalogEntriesResponse); i { case 0: return &v.state case 1: @@ -7572,7 +8131,7 @@ func file_rill_runtime_v1_api_proto_init() { } } file_rill_runtime_v1_api_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReconcileError); i { + switch v := v.(*GetCatalogEntryRequest); i { case 0: return &v.state case 1: @@ -7584,7 +8143,7 @@ func file_rill_runtime_v1_api_proto_init() { } } file_rill_runtime_v1_api_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PutFileAndReconcileRequest); i { + switch v := v.(*GetCatalogEntryResponse); i { case 0: return &v.state case 1: @@ -7596,7 +8155,7 @@ func file_rill_runtime_v1_api_proto_init() { } } file_rill_runtime_v1_api_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PutFileAndReconcileResponse); i { + switch v := v.(*TriggerRefreshRequest); i { case 0: return &v.state case 1: @@ -7608,7 +8167,7 @@ func file_rill_runtime_v1_api_proto_init() { } } file_rill_runtime_v1_api_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteFileAndReconcileRequest); i { + switch v := v.(*TriggerRefreshResponse); i { case 0: return &v.state case 1: @@ -7620,7 +8179,7 @@ func file_rill_runtime_v1_api_proto_init() { } } file_rill_runtime_v1_api_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteFileAndReconcileResponse); i { + switch v := v.(*TriggerSyncRequest); i { case 0: return &v.state case 1: @@ -7632,7 +8191,7 @@ func file_rill_runtime_v1_api_proto_init() { } } file_rill_runtime_v1_api_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RenameFileAndReconcileRequest); i { + switch v := v.(*TriggerSyncResponse); i { case 0: return &v.state case 1: @@ -7644,7 +8203,7 @@ func file_rill_runtime_v1_api_proto_init() { } } file_rill_runtime_v1_api_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RenameFileAndReconcileResponse); i { + switch v := v.(*ReconcileRequest); i { case 0: return &v.state case 1: @@ -7656,7 +8215,7 @@ func file_rill_runtime_v1_api_proto_init() { } } file_rill_runtime_v1_api_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RefreshAndReconcileRequest); i { + switch v := v.(*ReconcileResponse); i { case 0: return &v.state case 1: @@ -7668,7 +8227,7 @@ func file_rill_runtime_v1_api_proto_init() { } } file_rill_runtime_v1_api_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RefreshAndReconcileResponse); i { + switch v := v.(*ReconcileError); i { case 0: return &v.state case 1: @@ -7680,7 +8239,7 @@ func file_rill_runtime_v1_api_proto_init() { } } file_rill_runtime_v1_api_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ConnectorSpec); i { + switch v := v.(*PutFileAndReconcileRequest); i { case 0: return &v.state case 1: @@ -7692,7 +8251,7 @@ func file_rill_runtime_v1_api_proto_init() { } } file_rill_runtime_v1_api_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListConnectorsRequest); i { + switch v := v.(*PutFileAndReconcileResponse); i { case 0: return &v.state case 1: @@ -7704,7 +8263,7 @@ func file_rill_runtime_v1_api_proto_init() { } } file_rill_runtime_v1_api_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListConnectorsResponse); i { + switch v := v.(*DeleteFileAndReconcileRequest); i { case 0: return &v.state case 1: @@ -7716,7 +8275,7 @@ func file_rill_runtime_v1_api_proto_init() { } } file_rill_runtime_v1_api_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IssueDevJWTRequest); i { + switch v := v.(*DeleteFileAndReconcileResponse); i { case 0: return &v.state case 1: @@ -7728,6 +8287,66 @@ func file_rill_runtime_v1_api_proto_init() { } } file_rill_runtime_v1_api_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RenameFileAndReconcileRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rill_runtime_v1_api_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RenameFileAndReconcileResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rill_runtime_v1_api_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RefreshAndReconcileRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rill_runtime_v1_api_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RefreshAndReconcileResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rill_runtime_v1_api_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IssueDevJWTRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rill_runtime_v1_api_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*IssueDevJWTResponse); i { case 0: return &v.state @@ -7739,8 +8358,8 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReconcileError_CharLocation); i { + file_rill_runtime_v1_api_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConnectorDriver_Property); i { case 0: return &v.state case 1: @@ -7751,8 +8370,8 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ConnectorSpec_Property); i { + file_rill_runtime_v1_api_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ReconcileError_CharLocation); i { case 0: return &v.state case 1: @@ -7770,7 +8389,7 @@ func file_rill_runtime_v1_api_proto_init() { (*CreateTriggerRequest_PullTriggerSpec)(nil), (*CreateTriggerRequest_RefreshTriggerSpec)(nil), } - file_rill_runtime_v1_api_proto_msgTypes[52].OneofWrappers = []interface{}{ + file_rill_runtime_v1_api_proto_msgTypes[60].OneofWrappers = []interface{}{ (*CatalogEntry_Table)(nil), (*CatalogEntry_Source)(nil), (*CatalogEntry_Model)(nil), @@ -7782,7 +8401,7 @@ func file_rill_runtime_v1_api_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_rill_runtime_v1_api_proto_rawDesc, NumEnums: 5, - NumMessages: 87, + NumMessages: 96, NumExtensions: 0, NumServices: 1, }, diff --git a/proto/gen/rill/runtime/v1/api.pb.gw.go b/proto/gen/rill/runtime/v1/api.pb.gw.go index d6a8d13510cb..1fdf694ecc1f 100644 --- a/proto/gen/rill/runtime/v1/api.pb.gw.go +++ b/proto/gen/rill/runtime/v1/api.pb.gw.go @@ -1360,6 +1360,128 @@ func local_request_RuntimeService_CreateTrigger_0(ctx context.Context, marshaler } +func request_RuntimeService_ListConnectorDrivers_0(ctx context.Context, marshaler runtime.Marshaler, client RuntimeServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ListConnectorDriversRequest + var metadata runtime.ServerMetadata + + msg, err := client.ListConnectorDrivers(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_RuntimeService_ListConnectorDrivers_0(ctx context.Context, marshaler runtime.Marshaler, server RuntimeServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ListConnectorDriversRequest + var metadata runtime.ServerMetadata + + msg, err := server.ListConnectorDrivers(ctx, &protoReq) + return msg, metadata, err + +} + +func request_RuntimeService_AnalyzeConnectors_0(ctx context.Context, marshaler runtime.Marshaler, client RuntimeServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq AnalyzeConnectorsRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["instance_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "instance_id") + } + + protoReq.InstanceId, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "instance_id", err) + } + + msg, err := client.AnalyzeConnectors(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_RuntimeService_AnalyzeConnectors_0(ctx context.Context, marshaler runtime.Marshaler, server RuntimeServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq AnalyzeConnectorsRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["instance_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "instance_id") + } + + protoReq.InstanceId, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "instance_id", err) + } + + msg, err := server.AnalyzeConnectors(ctx, &protoReq) + return msg, metadata, err + +} + +func request_RuntimeService_ListNotifierConnectors_0(ctx context.Context, marshaler runtime.Marshaler, client RuntimeServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ListNotifierConnectorsRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["instance_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "instance_id") + } + + protoReq.InstanceId, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "instance_id", err) + } + + msg, err := client.ListNotifierConnectors(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_RuntimeService_ListNotifierConnectors_0(ctx context.Context, marshaler runtime.Marshaler, server RuntimeServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ListNotifierConnectorsRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["instance_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "instance_id") + } + + protoReq.InstanceId, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "instance_id", err) + } + + msg, err := server.ListNotifierConnectors(ctx, &protoReq) + return msg, metadata, err + +} + var ( filter_RuntimeService_ListCatalogEntries_0 = &utilities.DoubleArray{Encoding: map[string]int{"instance_id": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} ) @@ -1738,24 +1860,6 @@ func local_request_RuntimeService_RefreshAndReconcile_0(ctx context.Context, mar } -func request_RuntimeService_ListConnectors_0(ctx context.Context, marshaler runtime.Marshaler, client RuntimeServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq ListConnectorsRequest - var metadata runtime.ServerMetadata - - msg, err := client.ListConnectors(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_RuntimeService_ListConnectors_0(ctx context.Context, marshaler runtime.Marshaler, server RuntimeServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq ListConnectorsRequest - var metadata runtime.ServerMetadata - - msg, err := server.ListConnectors(ctx, &protoReq) - return msg, metadata, err - -} - var ( filter_RuntimeService_IssueDevJWT_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} ) @@ -2344,6 +2448,81 @@ func RegisterRuntimeServiceHandlerServer(ctx context.Context, mux *runtime.Serve }) + mux.Handle("GET", pattern_RuntimeService_ListConnectorDrivers_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/ListConnectorDrivers", runtime.WithHTTPPathPattern("/v1/connectors/meta")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_RuntimeService_ListConnectorDrivers_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_RuntimeService_ListConnectorDrivers_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_RuntimeService_AnalyzeConnectors_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/AnalyzeConnectors", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/connectors/analyze")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_RuntimeService_AnalyzeConnectors_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_RuntimeService_AnalyzeConnectors_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_RuntimeService_ListNotifierConnectors_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/ListNotifierConnectors", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/connectors/notifiers")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_RuntimeService_ListNotifierConnectors_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_RuntimeService_ListNotifierConnectors_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("GET", pattern_RuntimeService_ListCatalogEntries_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -2544,31 +2723,6 @@ func RegisterRuntimeServiceHandlerServer(ctx context.Context, mux *runtime.Serve }) - mux.Handle("GET", pattern_RuntimeService_ListConnectors_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/ListConnectors", runtime.WithHTTPPathPattern("/v1/connectors/meta")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_RuntimeService_ListConnectors_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_RuntimeService_ListConnectors_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - mux.Handle("GET", pattern_RuntimeService_IssueDevJWT_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -3163,6 +3317,72 @@ func RegisterRuntimeServiceHandlerClient(ctx context.Context, mux *runtime.Serve }) + mux.Handle("GET", pattern_RuntimeService_ListConnectorDrivers_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/ListConnectorDrivers", runtime.WithHTTPPathPattern("/v1/connectors/meta")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_RuntimeService_ListConnectorDrivers_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_RuntimeService_ListConnectorDrivers_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_RuntimeService_AnalyzeConnectors_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/AnalyzeConnectors", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/connectors/analyze")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_RuntimeService_AnalyzeConnectors_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_RuntimeService_AnalyzeConnectors_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_RuntimeService_ListNotifierConnectors_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/ListNotifierConnectors", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/connectors/notifiers")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_RuntimeService_ListNotifierConnectors_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_RuntimeService_ListNotifierConnectors_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("GET", pattern_RuntimeService_ListCatalogEntries_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -3339,28 +3559,6 @@ func RegisterRuntimeServiceHandlerClient(ctx context.Context, mux *runtime.Serve }) - mux.Handle("GET", pattern_RuntimeService_ListConnectors_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/ListConnectors", runtime.WithHTTPPathPattern("/v1/connectors/meta")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_RuntimeService_ListConnectors_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_RuntimeService_ListConnectors_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - mux.Handle("GET", pattern_RuntimeService_IssueDevJWT_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -3435,6 +3633,12 @@ var ( pattern_RuntimeService_CreateTrigger_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"v1", "instances", "instance_id", "trigger"}, "")) + pattern_RuntimeService_ListConnectorDrivers_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "connectors", "meta"}, "")) + + pattern_RuntimeService_AnalyzeConnectors_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4}, []string{"v1", "instances", "instance_id", "connectors", "analyze"}, "")) + + pattern_RuntimeService_ListNotifierConnectors_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4}, []string{"v1", "instances", "instance_id", "connectors", "notifiers"}, "")) + pattern_RuntimeService_ListCatalogEntries_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"v1", "instances", "instance_id", "catalog"}, "")) pattern_RuntimeService_GetCatalogEntry_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"v1", "instances", "instance_id", "catalog", "name"}, "")) @@ -3451,8 +3655,6 @@ var ( pattern_RuntimeService_RefreshAndReconcile_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "refresh-and-reconcile"}, "")) - pattern_RuntimeService_ListConnectors_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "connectors", "meta"}, "")) - pattern_RuntimeService_IssueDevJWT_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "dev-jwt"}, "")) ) @@ -3505,6 +3707,12 @@ var ( forward_RuntimeService_CreateTrigger_0 = runtime.ForwardResponseMessage + forward_RuntimeService_ListConnectorDrivers_0 = runtime.ForwardResponseMessage + + forward_RuntimeService_AnalyzeConnectors_0 = runtime.ForwardResponseMessage + + forward_RuntimeService_ListNotifierConnectors_0 = runtime.ForwardResponseMessage + forward_RuntimeService_ListCatalogEntries_0 = runtime.ForwardResponseMessage forward_RuntimeService_GetCatalogEntry_0 = runtime.ForwardResponseMessage @@ -3521,7 +3729,5 @@ var ( forward_RuntimeService_RefreshAndReconcile_0 = runtime.ForwardResponseMessage - forward_RuntimeService_ListConnectors_0 = runtime.ForwardResponseMessage - forward_RuntimeService_IssueDevJWT_0 = runtime.ForwardResponseMessage ) diff --git a/proto/gen/rill/runtime/v1/api.pb.validate.go b/proto/gen/rill/runtime/v1/api.pb.validate.go index c2c67f1e44e6..4768a6b2bc48 100644 --- a/proto/gen/rill/runtime/v1/api.pb.validate.go +++ b/proto/gen/rill/runtime/v1/api.pb.validate.go @@ -6603,22 +6603,22 @@ var _ interface { ErrorName() string } = CreateTriggerResponseValidationError{} -// Validate checks the field values on CatalogEntry with the rules defined in -// the proto definition for this message. If any rules are violated, the first -// error encountered is returned, or nil if there are no violations. -func (m *CatalogEntry) Validate() error { +// Validate checks the field values on ConnectorDriver with the rules defined +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. +func (m *ConnectorDriver) Validate() error { return m.validate(false) } -// ValidateAll checks the field values on CatalogEntry with the rules defined -// in the proto definition for this message. If any rules are violated, the -// result is a list of violation errors wrapped in CatalogEntryMultiError, or -// nil if none found. -func (m *CatalogEntry) ValidateAll() error { +// ValidateAll checks the field values on ConnectorDriver with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ConnectorDriverMultiError, or nil if none found. +func (m *ConnectorDriver) ValidateAll() error { return m.validate(true) } -func (m *CatalogEntry) validate(all bool) error { +func (m *ConnectorDriver) validate(all bool) error { if m == nil { return nil } @@ -6627,279 +6627,110 @@ func (m *CatalogEntry) validate(all bool) error { // no validation rules for Name - // no validation rules for Path - - // no validation rules for Embedded - - if all { - switch v := interface{}(m.GetCreatedOn()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CatalogEntryValidationError{ - field: "CreatedOn", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CatalogEntryValidationError{ - field: "CreatedOn", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetCreatedOn()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return CatalogEntryValidationError{ - field: "CreatedOn", - reason: "embedded message failed validation", - cause: err, - } - } - } - - if all { - switch v := interface{}(m.GetUpdatedOn()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CatalogEntryValidationError{ - field: "UpdatedOn", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CatalogEntryValidationError{ - field: "UpdatedOn", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetUpdatedOn()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return CatalogEntryValidationError{ - field: "UpdatedOn", - reason: "embedded message failed validation", - cause: err, - } - } - } - - if all { - switch v := interface{}(m.GetRefreshedOn()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CatalogEntryValidationError{ - field: "RefreshedOn", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CatalogEntryValidationError{ - field: "RefreshedOn", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetRefreshedOn()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return CatalogEntryValidationError{ - field: "RefreshedOn", - reason: "embedded message failed validation", - cause: err, - } - } - } - - switch v := m.Object.(type) { - case *CatalogEntry_Table: - if v == nil { - err := CatalogEntryValidationError{ - field: "Object", - reason: "oneof value cannot be a typed-nil", - } - if !all { - return err - } - errors = append(errors, err) - } + for idx, item := range m.GetConfigProperties() { + _, _ = idx, item if all { - switch v := interface{}(m.GetTable()).(type) { + switch v := interface{}(item).(type) { case interface{ ValidateAll() error }: if err := v.ValidateAll(); err != nil { - errors = append(errors, CatalogEntryValidationError{ - field: "Table", + errors = append(errors, ConnectorDriverValidationError{ + field: fmt.Sprintf("ConfigProperties[%v]", idx), reason: "embedded message failed validation", cause: err, }) } case interface{ Validate() error }: if err := v.Validate(); err != nil { - errors = append(errors, CatalogEntryValidationError{ - field: "Table", + errors = append(errors, ConnectorDriverValidationError{ + field: fmt.Sprintf("ConfigProperties[%v]", idx), reason: "embedded message failed validation", cause: err, }) } } - } else if v, ok := interface{}(m.GetTable()).(interface{ Validate() error }); ok { + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - return CatalogEntryValidationError{ - field: "Table", + return ConnectorDriverValidationError{ + field: fmt.Sprintf("ConfigProperties[%v]", idx), reason: "embedded message failed validation", cause: err, } } } - case *CatalogEntry_Source: - if v == nil { - err := CatalogEntryValidationError{ - field: "Object", - reason: "oneof value cannot be a typed-nil", - } - if !all { - return err - } - errors = append(errors, err) - } + } + + for idx, item := range m.GetSourceProperties() { + _, _ = idx, item if all { - switch v := interface{}(m.GetSource()).(type) { + switch v := interface{}(item).(type) { case interface{ ValidateAll() error }: if err := v.ValidateAll(); err != nil { - errors = append(errors, CatalogEntryValidationError{ - field: "Source", + errors = append(errors, ConnectorDriverValidationError{ + field: fmt.Sprintf("SourceProperties[%v]", idx), reason: "embedded message failed validation", cause: err, }) } case interface{ Validate() error }: if err := v.Validate(); err != nil { - errors = append(errors, CatalogEntryValidationError{ - field: "Source", + errors = append(errors, ConnectorDriverValidationError{ + field: fmt.Sprintf("SourceProperties[%v]", idx), reason: "embedded message failed validation", cause: err, }) } } - } else if v, ok := interface{}(m.GetSource()).(interface{ Validate() error }); ok { + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - return CatalogEntryValidationError{ - field: "Source", + return ConnectorDriverValidationError{ + field: fmt.Sprintf("SourceProperties[%v]", idx), reason: "embedded message failed validation", cause: err, } } } - case *CatalogEntry_Model: - if v == nil { - err := CatalogEntryValidationError{ - field: "Object", - reason: "oneof value cannot be a typed-nil", - } - if !all { - return err - } - errors = append(errors, err) - } + } - if all { - switch v := interface{}(m.GetModel()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CatalogEntryValidationError{ - field: "Model", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CatalogEntryValidationError{ - field: "Model", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetModel()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return CatalogEntryValidationError{ - field: "Model", - reason: "embedded message failed validation", - cause: err, - } - } - } + // no validation rules for DisplayName - case *CatalogEntry_MetricsView: - if v == nil { - err := CatalogEntryValidationError{ - field: "Object", - reason: "oneof value cannot be a typed-nil", - } - if !all { - return err - } - errors = append(errors, err) - } + // no validation rules for Description - if all { - switch v := interface{}(m.GetMetricsView()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CatalogEntryValidationError{ - field: "MetricsView", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CatalogEntryValidationError{ - field: "MetricsView", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetMetricsView()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return CatalogEntryValidationError{ - field: "MetricsView", - reason: "embedded message failed validation", - cause: err, - } - } - } + // no validation rules for ImplementsRegistry - default: - _ = v // ensures v is used - } + // no validation rules for ImplementsCatalog + + // no validation rules for ImplementsRepo + + // no validation rules for ImplementsAdmin + + // no validation rules for ImplementsAi + + // no validation rules for ImplementsSqlStore + + // no validation rules for ImplementsOlap + + // no validation rules for ImplementsObjectStore + + // no validation rules for ImplementsFileStore if len(errors) > 0 { - return CatalogEntryMultiError(errors) + return ConnectorDriverMultiError(errors) } return nil } -// CatalogEntryMultiError is an error wrapping multiple validation errors -// returned by CatalogEntry.ValidateAll() if the designated constraints aren't met. -type CatalogEntryMultiError []error +// ConnectorDriverMultiError is an error wrapping multiple validation errors +// returned by ConnectorDriver.ValidateAll() if the designated constraints +// aren't met. +type ConnectorDriverMultiError []error // Error returns a concatenation of all the error messages it wraps. -func (m CatalogEntryMultiError) Error() string { +func (m ConnectorDriverMultiError) Error() string { var msgs []string for _, err := range m { msgs = append(msgs, err.Error()) @@ -6908,11 +6739,11 @@ func (m CatalogEntryMultiError) Error() string { } // AllErrors returns a list of validation violation errors. -func (m CatalogEntryMultiError) AllErrors() []error { return m } +func (m ConnectorDriverMultiError) AllErrors() []error { return m } -// CatalogEntryValidationError is the validation error returned by -// CatalogEntry.Validate if the designated constraints aren't met. -type CatalogEntryValidationError struct { +// ConnectorDriverValidationError is the validation error returned by +// ConnectorDriver.Validate if the designated constraints aren't met. +type ConnectorDriverValidationError struct { field string reason string cause error @@ -6920,22 +6751,22 @@ type CatalogEntryValidationError struct { } // Field function returns field value. -func (e CatalogEntryValidationError) Field() string { return e.field } +func (e ConnectorDriverValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e CatalogEntryValidationError) Reason() string { return e.reason } +func (e ConnectorDriverValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e CatalogEntryValidationError) Cause() error { return e.cause } +func (e ConnectorDriverValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e CatalogEntryValidationError) Key() bool { return e.key } +func (e ConnectorDriverValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e CatalogEntryValidationError) ErrorName() string { return "CatalogEntryValidationError" } +func (e ConnectorDriverValidationError) ErrorName() string { return "ConnectorDriverValidationError" } // Error satisfies the builtin error interface -func (e CatalogEntryValidationError) Error() string { +func (e ConnectorDriverValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -6947,14 +6778,14 @@ func (e CatalogEntryValidationError) Error() string { } return fmt.Sprintf( - "invalid %sCatalogEntry.%s: %s%s", + "invalid %sConnectorDriver.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = CatalogEntryValidationError{} +var _ error = ConnectorDriverValidationError{} var _ interface { Field() string @@ -6962,66 +6793,119 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = CatalogEntryValidationError{} +} = ConnectorDriverValidationError{} -// Validate checks the field values on ListCatalogEntriesRequest with the rules -// defined in the proto definition for this message. If any rules are -// violated, the first error encountered is returned, or nil if there are no violations. -func (m *ListCatalogEntriesRequest) Validate() error { +// Validate checks the field values on AnalyzedConnector with the rules defined +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. +func (m *AnalyzedConnector) Validate() error { return m.validate(false) } -// ValidateAll checks the field values on ListCatalogEntriesRequest with the -// rules defined in the proto definition for this message. If any rules are +// ValidateAll checks the field values on AnalyzedConnector with the rules +// defined in the proto definition for this message. If any rules are // violated, the result is a list of violation errors wrapped in -// ListCatalogEntriesRequestMultiError, or nil if none found. -func (m *ListCatalogEntriesRequest) ValidateAll() error { +// AnalyzedConnectorMultiError, or nil if none found. +func (m *AnalyzedConnector) ValidateAll() error { return m.validate(true) } -func (m *ListCatalogEntriesRequest) validate(all bool) error { +func (m *AnalyzedConnector) validate(all bool) error { if m == nil { return nil } var errors []error - if !_ListCatalogEntriesRequest_InstanceId_Pattern.MatchString(m.GetInstanceId()) { - err := ListCatalogEntriesRequestValidationError{ - field: "InstanceId", - reason: "value does not match regex pattern \"^[_\\\\-a-zA-Z0-9]+$\"", + // no validation rules for Name + + if all { + switch v := interface{}(m.GetDriver()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, AnalyzedConnectorValidationError{ + field: "Driver", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, AnalyzedConnectorValidationError{ + field: "Driver", + reason: "embedded message failed validation", + cause: err, + }) + } } - if !all { - return err + } else if v, ok := interface{}(m.GetDriver()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return AnalyzedConnectorValidationError{ + field: "Driver", + reason: "embedded message failed validation", + cause: err, + } } - errors = append(errors, err) } - if _, ok := ObjectType_name[int32(m.GetType())]; !ok { - err := ListCatalogEntriesRequestValidationError{ - field: "Type", - reason: "value must be one of the defined enum values", - } - if !all { - return err + // no validation rules for Config + + // no validation rules for PresetConfig + + // no validation rules for ProjectConfig + + // no validation rules for EnvConfig + + // no validation rules for HasAnonymousAccess + + for idx, item := range m.GetUsedBy() { + _, _ = idx, item + + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, AnalyzedConnectorValidationError{ + field: fmt.Sprintf("UsedBy[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, AnalyzedConnectorValidationError{ + field: fmt.Sprintf("UsedBy[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return AnalyzedConnectorValidationError{ + field: fmt.Sprintf("UsedBy[%v]", idx), + reason: "embedded message failed validation", + cause: err, + } + } } - errors = append(errors, err) + } if len(errors) > 0 { - return ListCatalogEntriesRequestMultiError(errors) + return AnalyzedConnectorMultiError(errors) } return nil } -// ListCatalogEntriesRequestMultiError is an error wrapping multiple validation -// errors returned by ListCatalogEntriesRequest.ValidateAll() if the -// designated constraints aren't met. -type ListCatalogEntriesRequestMultiError []error +// AnalyzedConnectorMultiError is an error wrapping multiple validation errors +// returned by AnalyzedConnector.ValidateAll() if the designated constraints +// aren't met. +type AnalyzedConnectorMultiError []error // Error returns a concatenation of all the error messages it wraps. -func (m ListCatalogEntriesRequestMultiError) Error() string { +func (m AnalyzedConnectorMultiError) Error() string { var msgs []string for _, err := range m { msgs = append(msgs, err.Error()) @@ -7030,11 +6914,11 @@ func (m ListCatalogEntriesRequestMultiError) Error() string { } // AllErrors returns a list of validation violation errors. -func (m ListCatalogEntriesRequestMultiError) AllErrors() []error { return m } +func (m AnalyzedConnectorMultiError) AllErrors() []error { return m } -// ListCatalogEntriesRequestValidationError is the validation error returned by -// ListCatalogEntriesRequest.Validate if the designated constraints aren't met. -type ListCatalogEntriesRequestValidationError struct { +// AnalyzedConnectorValidationError is the validation error returned by +// AnalyzedConnector.Validate if the designated constraints aren't met. +type AnalyzedConnectorValidationError struct { field string reason string cause error @@ -7042,24 +6926,24 @@ type ListCatalogEntriesRequestValidationError struct { } // Field function returns field value. -func (e ListCatalogEntriesRequestValidationError) Field() string { return e.field } +func (e AnalyzedConnectorValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e ListCatalogEntriesRequestValidationError) Reason() string { return e.reason } +func (e AnalyzedConnectorValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e ListCatalogEntriesRequestValidationError) Cause() error { return e.cause } +func (e AnalyzedConnectorValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e ListCatalogEntriesRequestValidationError) Key() bool { return e.key } +func (e AnalyzedConnectorValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e ListCatalogEntriesRequestValidationError) ErrorName() string { - return "ListCatalogEntriesRequestValidationError" +func (e AnalyzedConnectorValidationError) ErrorName() string { + return "AnalyzedConnectorValidationError" } // Error satisfies the builtin error interface -func (e ListCatalogEntriesRequestValidationError) Error() string { +func (e AnalyzedConnectorValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -7071,14 +6955,14 @@ func (e ListCatalogEntriesRequestValidationError) Error() string { } return fmt.Sprintf( - "invalid %sListCatalogEntriesRequest.%s: %s%s", + "invalid %sAnalyzedConnector.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = ListCatalogEntriesRequestValidationError{} +var _ error = AnalyzedConnectorValidationError{} var _ interface { Field() string @@ -7086,49 +6970,150 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = ListCatalogEntriesRequestValidationError{} +} = AnalyzedConnectorValidationError{} -var _ListCatalogEntriesRequest_InstanceId_Pattern = regexp.MustCompile("^[_\\-a-zA-Z0-9]+$") +// Validate checks the field values on ListConnectorDriversRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *ListConnectorDriversRequest) Validate() error { + return m.validate(false) +} -// Validate checks the field values on ListCatalogEntriesResponse with the +// ValidateAll checks the field values on ListConnectorDriversRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListConnectorDriversRequestMultiError, or nil if none found. +func (m *ListConnectorDriversRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListConnectorDriversRequest) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if len(errors) > 0 { + return ListConnectorDriversRequestMultiError(errors) + } + + return nil +} + +// ListConnectorDriversRequestMultiError is an error wrapping multiple +// validation errors returned by ListConnectorDriversRequest.ValidateAll() if +// the designated constraints aren't met. +type ListConnectorDriversRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListConnectorDriversRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListConnectorDriversRequestMultiError) AllErrors() []error { return m } + +// ListConnectorDriversRequestValidationError is the validation error returned +// by ListConnectorDriversRequest.Validate if the designated constraints +// aren't met. +type ListConnectorDriversRequestValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e ListConnectorDriversRequestValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e ListConnectorDriversRequestValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e ListConnectorDriversRequestValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e ListConnectorDriversRequestValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e ListConnectorDriversRequestValidationError) ErrorName() string { + return "ListConnectorDriversRequestValidationError" +} + +// Error satisfies the builtin error interface +func (e ListConnectorDriversRequestValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sListConnectorDriversRequest.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = ListConnectorDriversRequestValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = ListConnectorDriversRequestValidationError{} + +// Validate checks the field values on ListConnectorDriversResponse with the // rules defined in the proto definition for this message. If any rules are // violated, the first error encountered is returned, or nil if there are no violations. -func (m *ListCatalogEntriesResponse) Validate() error { +func (m *ListConnectorDriversResponse) Validate() error { return m.validate(false) } -// ValidateAll checks the field values on ListCatalogEntriesResponse with the +// ValidateAll checks the field values on ListConnectorDriversResponse with the // rules defined in the proto definition for this message. If any rules are // violated, the result is a list of violation errors wrapped in -// ListCatalogEntriesResponseMultiError, or nil if none found. -func (m *ListCatalogEntriesResponse) ValidateAll() error { +// ListConnectorDriversResponseMultiError, or nil if none found. +func (m *ListConnectorDriversResponse) ValidateAll() error { return m.validate(true) } -func (m *ListCatalogEntriesResponse) validate(all bool) error { +func (m *ListConnectorDriversResponse) validate(all bool) error { if m == nil { return nil } var errors []error - for idx, item := range m.GetEntries() { + for idx, item := range m.GetConnectors() { _, _ = idx, item if all { switch v := interface{}(item).(type) { case interface{ ValidateAll() error }: if err := v.ValidateAll(); err != nil { - errors = append(errors, ListCatalogEntriesResponseValidationError{ - field: fmt.Sprintf("Entries[%v]", idx), + errors = append(errors, ListConnectorDriversResponseValidationError{ + field: fmt.Sprintf("Connectors[%v]", idx), reason: "embedded message failed validation", cause: err, }) } case interface{ Validate() error }: if err := v.Validate(); err != nil { - errors = append(errors, ListCatalogEntriesResponseValidationError{ - field: fmt.Sprintf("Entries[%v]", idx), + errors = append(errors, ListConnectorDriversResponseValidationError{ + field: fmt.Sprintf("Connectors[%v]", idx), reason: "embedded message failed validation", cause: err, }) @@ -7136,8 +7121,8 @@ func (m *ListCatalogEntriesResponse) validate(all bool) error { } } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - return ListCatalogEntriesResponseValidationError{ - field: fmt.Sprintf("Entries[%v]", idx), + return ListConnectorDriversResponseValidationError{ + field: fmt.Sprintf("Connectors[%v]", idx), reason: "embedded message failed validation", cause: err, } @@ -7147,19 +7132,19 @@ func (m *ListCatalogEntriesResponse) validate(all bool) error { } if len(errors) > 0 { - return ListCatalogEntriesResponseMultiError(errors) + return ListConnectorDriversResponseMultiError(errors) } return nil } -// ListCatalogEntriesResponseMultiError is an error wrapping multiple -// validation errors returned by ListCatalogEntriesResponse.ValidateAll() if +// ListConnectorDriversResponseMultiError is an error wrapping multiple +// validation errors returned by ListConnectorDriversResponse.ValidateAll() if // the designated constraints aren't met. -type ListCatalogEntriesResponseMultiError []error +type ListConnectorDriversResponseMultiError []error // Error returns a concatenation of all the error messages it wraps. -func (m ListCatalogEntriesResponseMultiError) Error() string { +func (m ListConnectorDriversResponseMultiError) Error() string { var msgs []string for _, err := range m { msgs = append(msgs, err.Error()) @@ -7168,11 +7153,12 @@ func (m ListCatalogEntriesResponseMultiError) Error() string { } // AllErrors returns a list of validation violation errors. -func (m ListCatalogEntriesResponseMultiError) AllErrors() []error { return m } +func (m ListConnectorDriversResponseMultiError) AllErrors() []error { return m } -// ListCatalogEntriesResponseValidationError is the validation error returned -// by ListCatalogEntriesResponse.Validate if the designated constraints aren't met. -type ListCatalogEntriesResponseValidationError struct { +// ListConnectorDriversResponseValidationError is the validation error returned +// by ListConnectorDriversResponse.Validate if the designated constraints +// aren't met. +type ListConnectorDriversResponseValidationError struct { field string reason string cause error @@ -7180,24 +7166,24 @@ type ListCatalogEntriesResponseValidationError struct { } // Field function returns field value. -func (e ListCatalogEntriesResponseValidationError) Field() string { return e.field } +func (e ListConnectorDriversResponseValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e ListCatalogEntriesResponseValidationError) Reason() string { return e.reason } +func (e ListConnectorDriversResponseValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e ListCatalogEntriesResponseValidationError) Cause() error { return e.cause } +func (e ListConnectorDriversResponseValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e ListCatalogEntriesResponseValidationError) Key() bool { return e.key } +func (e ListConnectorDriversResponseValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e ListCatalogEntriesResponseValidationError) ErrorName() string { - return "ListCatalogEntriesResponseValidationError" +func (e ListConnectorDriversResponseValidationError) ErrorName() string { + return "ListConnectorDriversResponseValidationError" } // Error satisfies the builtin error interface -func (e ListCatalogEntriesResponseValidationError) Error() string { +func (e ListConnectorDriversResponseValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -7209,14 +7195,14 @@ func (e ListCatalogEntriesResponseValidationError) Error() string { } return fmt.Sprintf( - "invalid %sListCatalogEntriesResponse.%s: %s%s", + "invalid %sListConnectorDriversResponse.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = ListCatalogEntriesResponseValidationError{} +var _ error = ListConnectorDriversResponseValidationError{} var _ interface { Field() string @@ -7224,57 +7210,46 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = ListCatalogEntriesResponseValidationError{} +} = ListConnectorDriversResponseValidationError{} -// Validate checks the field values on GetCatalogEntryRequest with the rules +// Validate checks the field values on AnalyzeConnectorsRequest with the rules // defined in the proto definition for this message. If any rules are // violated, the first error encountered is returned, or nil if there are no violations. -func (m *GetCatalogEntryRequest) Validate() error { +func (m *AnalyzeConnectorsRequest) Validate() error { return m.validate(false) } -// ValidateAll checks the field values on GetCatalogEntryRequest with the rules -// defined in the proto definition for this message. If any rules are +// ValidateAll checks the field values on AnalyzeConnectorsRequest with the +// rules defined in the proto definition for this message. If any rules are // violated, the result is a list of violation errors wrapped in -// GetCatalogEntryRequestMultiError, or nil if none found. -func (m *GetCatalogEntryRequest) ValidateAll() error { +// AnalyzeConnectorsRequestMultiError, or nil if none found. +func (m *AnalyzeConnectorsRequest) ValidateAll() error { return m.validate(true) } -func (m *GetCatalogEntryRequest) validate(all bool) error { +func (m *AnalyzeConnectorsRequest) validate(all bool) error { if m == nil { return nil } var errors []error - if !_GetCatalogEntryRequest_InstanceId_Pattern.MatchString(m.GetInstanceId()) { - err := GetCatalogEntryRequestValidationError{ - field: "InstanceId", - reason: "value does not match regex pattern \"^[_\\\\-a-zA-Z0-9]+$\"", - } - if !all { - return err - } - errors = append(errors, err) - } - - // no validation rules for Name + // no validation rules for InstanceId if len(errors) > 0 { - return GetCatalogEntryRequestMultiError(errors) + return AnalyzeConnectorsRequestMultiError(errors) } return nil } -// GetCatalogEntryRequestMultiError is an error wrapping multiple validation -// errors returned by GetCatalogEntryRequest.ValidateAll() if the designated +// AnalyzeConnectorsRequestMultiError is an error wrapping multiple validation +// errors returned by AnalyzeConnectorsRequest.ValidateAll() if the designated // constraints aren't met. -type GetCatalogEntryRequestMultiError []error +type AnalyzeConnectorsRequestMultiError []error // Error returns a concatenation of all the error messages it wraps. -func (m GetCatalogEntryRequestMultiError) Error() string { +func (m AnalyzeConnectorsRequestMultiError) Error() string { var msgs []string for _, err := range m { msgs = append(msgs, err.Error()) @@ -7283,11 +7258,11 @@ func (m GetCatalogEntryRequestMultiError) Error() string { } // AllErrors returns a list of validation violation errors. -func (m GetCatalogEntryRequestMultiError) AllErrors() []error { return m } +func (m AnalyzeConnectorsRequestMultiError) AllErrors() []error { return m } -// GetCatalogEntryRequestValidationError is the validation error returned by -// GetCatalogEntryRequest.Validate if the designated constraints aren't met. -type GetCatalogEntryRequestValidationError struct { +// AnalyzeConnectorsRequestValidationError is the validation error returned by +// AnalyzeConnectorsRequest.Validate if the designated constraints aren't met. +type AnalyzeConnectorsRequestValidationError struct { field string reason string cause error @@ -7295,24 +7270,24 @@ type GetCatalogEntryRequestValidationError struct { } // Field function returns field value. -func (e GetCatalogEntryRequestValidationError) Field() string { return e.field } +func (e AnalyzeConnectorsRequestValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e GetCatalogEntryRequestValidationError) Reason() string { return e.reason } +func (e AnalyzeConnectorsRequestValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e GetCatalogEntryRequestValidationError) Cause() error { return e.cause } +func (e AnalyzeConnectorsRequestValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e GetCatalogEntryRequestValidationError) Key() bool { return e.key } +func (e AnalyzeConnectorsRequestValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e GetCatalogEntryRequestValidationError) ErrorName() string { - return "GetCatalogEntryRequestValidationError" +func (e AnalyzeConnectorsRequestValidationError) ErrorName() string { + return "AnalyzeConnectorsRequestValidationError" } // Error satisfies the builtin error interface -func (e GetCatalogEntryRequestValidationError) Error() string { +func (e AnalyzeConnectorsRequestValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -7324,14 +7299,14 @@ func (e GetCatalogEntryRequestValidationError) Error() string { } return fmt.Sprintf( - "invalid %sGetCatalogEntryRequest.%s: %s%s", + "invalid %sAnalyzeConnectorsRequest.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = GetCatalogEntryRequestValidationError{} +var _ error = AnalyzeConnectorsRequestValidationError{} var _ interface { Field() string @@ -7339,75 +7314,683 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = GetCatalogEntryRequestValidationError{} - -var _GetCatalogEntryRequest_InstanceId_Pattern = regexp.MustCompile("^[_\\-a-zA-Z0-9]+$") +} = AnalyzeConnectorsRequestValidationError{} -// Validate checks the field values on GetCatalogEntryResponse with the rules +// Validate checks the field values on AnalyzeConnectorsResponse with the rules // defined in the proto definition for this message. If any rules are // violated, the first error encountered is returned, or nil if there are no violations. -func (m *GetCatalogEntryResponse) Validate() error { +func (m *AnalyzeConnectorsResponse) Validate() error { return m.validate(false) } -// ValidateAll checks the field values on GetCatalogEntryResponse with the +// ValidateAll checks the field values on AnalyzeConnectorsResponse with the // rules defined in the proto definition for this message. If any rules are // violated, the result is a list of violation errors wrapped in -// GetCatalogEntryResponseMultiError, or nil if none found. -func (m *GetCatalogEntryResponse) ValidateAll() error { +// AnalyzeConnectorsResponseMultiError, or nil if none found. +func (m *AnalyzeConnectorsResponse) ValidateAll() error { return m.validate(true) } -func (m *GetCatalogEntryResponse) validate(all bool) error { +func (m *AnalyzeConnectorsResponse) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + for idx, item := range m.GetConnectors() { + _, _ = idx, item + + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, AnalyzeConnectorsResponseValidationError{ + field: fmt.Sprintf("Connectors[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, AnalyzeConnectorsResponseValidationError{ + field: fmt.Sprintf("Connectors[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return AnalyzeConnectorsResponseValidationError{ + field: fmt.Sprintf("Connectors[%v]", idx), + reason: "embedded message failed validation", + cause: err, + } + } + } + + } + + if len(errors) > 0 { + return AnalyzeConnectorsResponseMultiError(errors) + } + + return nil +} + +// AnalyzeConnectorsResponseMultiError is an error wrapping multiple validation +// errors returned by AnalyzeConnectorsResponse.ValidateAll() if the +// designated constraints aren't met. +type AnalyzeConnectorsResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m AnalyzeConnectorsResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m AnalyzeConnectorsResponseMultiError) AllErrors() []error { return m } + +// AnalyzeConnectorsResponseValidationError is the validation error returned by +// AnalyzeConnectorsResponse.Validate if the designated constraints aren't met. +type AnalyzeConnectorsResponseValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e AnalyzeConnectorsResponseValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e AnalyzeConnectorsResponseValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e AnalyzeConnectorsResponseValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e AnalyzeConnectorsResponseValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e AnalyzeConnectorsResponseValidationError) ErrorName() string { + return "AnalyzeConnectorsResponseValidationError" +} + +// Error satisfies the builtin error interface +func (e AnalyzeConnectorsResponseValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sAnalyzeConnectorsResponse.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = AnalyzeConnectorsResponseValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = AnalyzeConnectorsResponseValidationError{} + +// Validate checks the field values on ListNotifierConnectorsRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *ListNotifierConnectorsRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListNotifierConnectorsRequest with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// ListNotifierConnectorsRequestMultiError, or nil if none found. +func (m *ListNotifierConnectorsRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListNotifierConnectorsRequest) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for InstanceId + + if len(errors) > 0 { + return ListNotifierConnectorsRequestMultiError(errors) + } + + return nil +} + +// ListNotifierConnectorsRequestMultiError is an error wrapping multiple +// validation errors returned by ListNotifierConnectorsRequest.ValidateAll() +// if the designated constraints aren't met. +type ListNotifierConnectorsRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListNotifierConnectorsRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListNotifierConnectorsRequestMultiError) AllErrors() []error { return m } + +// ListNotifierConnectorsRequestValidationError is the validation error +// returned by ListNotifierConnectorsRequest.Validate if the designated +// constraints aren't met. +type ListNotifierConnectorsRequestValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e ListNotifierConnectorsRequestValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e ListNotifierConnectorsRequestValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e ListNotifierConnectorsRequestValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e ListNotifierConnectorsRequestValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e ListNotifierConnectorsRequestValidationError) ErrorName() string { + return "ListNotifierConnectorsRequestValidationError" +} + +// Error satisfies the builtin error interface +func (e ListNotifierConnectorsRequestValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sListNotifierConnectorsRequest.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = ListNotifierConnectorsRequestValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = ListNotifierConnectorsRequestValidationError{} + +// Validate checks the field values on ListNotifierConnectorsResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *ListNotifierConnectorsResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListNotifierConnectorsResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// ListNotifierConnectorsResponseMultiError, or nil if none found. +func (m *ListNotifierConnectorsResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListNotifierConnectorsResponse) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + for idx, item := range m.GetConnectors() { + _, _ = idx, item + + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListNotifierConnectorsResponseValidationError{ + field: fmt.Sprintf("Connectors[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListNotifierConnectorsResponseValidationError{ + field: fmt.Sprintf("Connectors[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return ListNotifierConnectorsResponseValidationError{ + field: fmt.Sprintf("Connectors[%v]", idx), + reason: "embedded message failed validation", + cause: err, + } + } + } + + } + + if len(errors) > 0 { + return ListNotifierConnectorsResponseMultiError(errors) + } + + return nil +} + +// ListNotifierConnectorsResponseMultiError is an error wrapping multiple +// validation errors returned by ListNotifierConnectorsResponse.ValidateAll() +// if the designated constraints aren't met. +type ListNotifierConnectorsResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListNotifierConnectorsResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListNotifierConnectorsResponseMultiError) AllErrors() []error { return m } + +// ListNotifierConnectorsResponseValidationError is the validation error +// returned by ListNotifierConnectorsResponse.Validate if the designated +// constraints aren't met. +type ListNotifierConnectorsResponseValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e ListNotifierConnectorsResponseValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e ListNotifierConnectorsResponseValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e ListNotifierConnectorsResponseValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e ListNotifierConnectorsResponseValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e ListNotifierConnectorsResponseValidationError) ErrorName() string { + return "ListNotifierConnectorsResponseValidationError" +} + +// Error satisfies the builtin error interface +func (e ListNotifierConnectorsResponseValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sListNotifierConnectorsResponse.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = ListNotifierConnectorsResponseValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = ListNotifierConnectorsResponseValidationError{} + +// Validate checks the field values on CatalogEntry with the rules defined in +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. +func (m *CatalogEntry) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CatalogEntry with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in CatalogEntryMultiError, or +// nil if none found. +func (m *CatalogEntry) ValidateAll() error { + return m.validate(true) +} + +func (m *CatalogEntry) validate(all bool) error { if m == nil { return nil } var errors []error - if all { - switch v := interface{}(m.GetEntry()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, GetCatalogEntryResponseValidationError{ - field: "Entry", - reason: "embedded message failed validation", - cause: err, - }) + // no validation rules for Name + + // no validation rules for Path + + // no validation rules for Embedded + + if all { + switch v := interface{}(m.GetCreatedOn()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CatalogEntryValidationError{ + field: "CreatedOn", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CatalogEntryValidationError{ + field: "CreatedOn", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetCreatedOn()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return CatalogEntryValidationError{ + field: "CreatedOn", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if all { + switch v := interface{}(m.GetUpdatedOn()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CatalogEntryValidationError{ + field: "UpdatedOn", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CatalogEntryValidationError{ + field: "UpdatedOn", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetUpdatedOn()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return CatalogEntryValidationError{ + field: "UpdatedOn", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if all { + switch v := interface{}(m.GetRefreshedOn()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CatalogEntryValidationError{ + field: "RefreshedOn", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CatalogEntryValidationError{ + field: "RefreshedOn", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetRefreshedOn()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return CatalogEntryValidationError{ + field: "RefreshedOn", + reason: "embedded message failed validation", + cause: err, + } + } + } + + switch v := m.Object.(type) { + case *CatalogEntry_Table: + if v == nil { + err := CatalogEntryValidationError{ + field: "Object", + reason: "oneof value cannot be a typed-nil", + } + if !all { + return err + } + errors = append(errors, err) + } + + if all { + switch v := interface{}(m.GetTable()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CatalogEntryValidationError{ + field: "Table", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CatalogEntryValidationError{ + field: "Table", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetTable()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return CatalogEntryValidationError{ + field: "Table", + reason: "embedded message failed validation", + cause: err, + } + } + } + + case *CatalogEntry_Source: + if v == nil { + err := CatalogEntryValidationError{ + field: "Object", + reason: "oneof value cannot be a typed-nil", + } + if !all { + return err + } + errors = append(errors, err) + } + + if all { + switch v := interface{}(m.GetSource()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CatalogEntryValidationError{ + field: "Source", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CatalogEntryValidationError{ + field: "Source", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetSource()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return CatalogEntryValidationError{ + field: "Source", + reason: "embedded message failed validation", + cause: err, + } + } + } + + case *CatalogEntry_Model: + if v == nil { + err := CatalogEntryValidationError{ + field: "Object", + reason: "oneof value cannot be a typed-nil", + } + if !all { + return err + } + errors = append(errors, err) + } + + if all { + switch v := interface{}(m.GetModel()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CatalogEntryValidationError{ + field: "Model", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CatalogEntryValidationError{ + field: "Model", + reason: "embedded message failed validation", + cause: err, + }) + } } - case interface{ Validate() error }: + } else if v, ok := interface{}(m.GetModel()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - errors = append(errors, GetCatalogEntryResponseValidationError{ - field: "Entry", + return CatalogEntryValidationError{ + field: "Model", reason: "embedded message failed validation", cause: err, - }) + } } } - } else if v, ok := interface{}(m.GetEntry()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return GetCatalogEntryResponseValidationError{ - field: "Entry", - reason: "embedded message failed validation", - cause: err, + + case *CatalogEntry_MetricsView: + if v == nil { + err := CatalogEntryValidationError{ + field: "Object", + reason: "oneof value cannot be a typed-nil", + } + if !all { + return err + } + errors = append(errors, err) + } + + if all { + switch v := interface{}(m.GetMetricsView()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CatalogEntryValidationError{ + field: "MetricsView", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CatalogEntryValidationError{ + field: "MetricsView", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetMetricsView()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return CatalogEntryValidationError{ + field: "MetricsView", + reason: "embedded message failed validation", + cause: err, + } } } + + default: + _ = v // ensures v is used } if len(errors) > 0 { - return GetCatalogEntryResponseMultiError(errors) + return CatalogEntryMultiError(errors) } return nil } -// GetCatalogEntryResponseMultiError is an error wrapping multiple validation -// errors returned by GetCatalogEntryResponse.ValidateAll() if the designated -// constraints aren't met. -type GetCatalogEntryResponseMultiError []error +// CatalogEntryMultiError is an error wrapping multiple validation errors +// returned by CatalogEntry.ValidateAll() if the designated constraints aren't met. +type CatalogEntryMultiError []error // Error returns a concatenation of all the error messages it wraps. -func (m GetCatalogEntryResponseMultiError) Error() string { +func (m CatalogEntryMultiError) Error() string { var msgs []string for _, err := range m { msgs = append(msgs, err.Error()) @@ -7416,11 +7999,11 @@ func (m GetCatalogEntryResponseMultiError) Error() string { } // AllErrors returns a list of validation violation errors. -func (m GetCatalogEntryResponseMultiError) AllErrors() []error { return m } +func (m CatalogEntryMultiError) AllErrors() []error { return m } -// GetCatalogEntryResponseValidationError is the validation error returned by -// GetCatalogEntryResponse.Validate if the designated constraints aren't met. -type GetCatalogEntryResponseValidationError struct { +// CatalogEntryValidationError is the validation error returned by +// CatalogEntry.Validate if the designated constraints aren't met. +type CatalogEntryValidationError struct { field string reason string cause error @@ -7428,24 +8011,22 @@ type GetCatalogEntryResponseValidationError struct { } // Field function returns field value. -func (e GetCatalogEntryResponseValidationError) Field() string { return e.field } +func (e CatalogEntryValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e GetCatalogEntryResponseValidationError) Reason() string { return e.reason } +func (e CatalogEntryValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e GetCatalogEntryResponseValidationError) Cause() error { return e.cause } +func (e CatalogEntryValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e GetCatalogEntryResponseValidationError) Key() bool { return e.key } +func (e CatalogEntryValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e GetCatalogEntryResponseValidationError) ErrorName() string { - return "GetCatalogEntryResponseValidationError" -} +func (e CatalogEntryValidationError) ErrorName() string { return "CatalogEntryValidationError" } // Error satisfies the builtin error interface -func (e GetCatalogEntryResponseValidationError) Error() string { +func (e CatalogEntryValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -7457,14 +8038,14 @@ func (e GetCatalogEntryResponseValidationError) Error() string { } return fmt.Sprintf( - "invalid %sGetCatalogEntryResponse.%s: %s%s", + "invalid %sCatalogEntry.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = GetCatalogEntryResponseValidationError{} +var _ error = CatalogEntryValidationError{} var _ interface { Field() string @@ -7472,32 +8053,32 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = GetCatalogEntryResponseValidationError{} +} = CatalogEntryValidationError{} -// Validate checks the field values on TriggerRefreshRequest with the rules +// Validate checks the field values on ListCatalogEntriesRequest with the rules // defined in the proto definition for this message. If any rules are // violated, the first error encountered is returned, or nil if there are no violations. -func (m *TriggerRefreshRequest) Validate() error { +func (m *ListCatalogEntriesRequest) Validate() error { return m.validate(false) } -// ValidateAll checks the field values on TriggerRefreshRequest with the rules -// defined in the proto definition for this message. If any rules are +// ValidateAll checks the field values on ListCatalogEntriesRequest with the +// rules defined in the proto definition for this message. If any rules are // violated, the result is a list of violation errors wrapped in -// TriggerRefreshRequestMultiError, or nil if none found. -func (m *TriggerRefreshRequest) ValidateAll() error { +// ListCatalogEntriesRequestMultiError, or nil if none found. +func (m *ListCatalogEntriesRequest) ValidateAll() error { return m.validate(true) } -func (m *TriggerRefreshRequest) validate(all bool) error { +func (m *ListCatalogEntriesRequest) validate(all bool) error { if m == nil { return nil } var errors []error - if !_TriggerRefreshRequest_InstanceId_Pattern.MatchString(m.GetInstanceId()) { - err := TriggerRefreshRequestValidationError{ + if !_ListCatalogEntriesRequest_InstanceId_Pattern.MatchString(m.GetInstanceId()) { + err := ListCatalogEntriesRequestValidationError{ field: "InstanceId", reason: "value does not match regex pattern \"^[_\\\\-a-zA-Z0-9]+$\"", } @@ -7507,22 +8088,31 @@ func (m *TriggerRefreshRequest) validate(all bool) error { errors = append(errors, err) } - // no validation rules for Name + if _, ok := ObjectType_name[int32(m.GetType())]; !ok { + err := ListCatalogEntriesRequestValidationError{ + field: "Type", + reason: "value must be one of the defined enum values", + } + if !all { + return err + } + errors = append(errors, err) + } if len(errors) > 0 { - return TriggerRefreshRequestMultiError(errors) + return ListCatalogEntriesRequestMultiError(errors) } return nil } -// TriggerRefreshRequestMultiError is an error wrapping multiple validation -// errors returned by TriggerRefreshRequest.ValidateAll() if the designated -// constraints aren't met. -type TriggerRefreshRequestMultiError []error +// ListCatalogEntriesRequestMultiError is an error wrapping multiple validation +// errors returned by ListCatalogEntriesRequest.ValidateAll() if the +// designated constraints aren't met. +type ListCatalogEntriesRequestMultiError []error // Error returns a concatenation of all the error messages it wraps. -func (m TriggerRefreshRequestMultiError) Error() string { +func (m ListCatalogEntriesRequestMultiError) Error() string { var msgs []string for _, err := range m { msgs = append(msgs, err.Error()) @@ -7531,11 +8121,11 @@ func (m TriggerRefreshRequestMultiError) Error() string { } // AllErrors returns a list of validation violation errors. -func (m TriggerRefreshRequestMultiError) AllErrors() []error { return m } +func (m ListCatalogEntriesRequestMultiError) AllErrors() []error { return m } -// TriggerRefreshRequestValidationError is the validation error returned by -// TriggerRefreshRequest.Validate if the designated constraints aren't met. -type TriggerRefreshRequestValidationError struct { +// ListCatalogEntriesRequestValidationError is the validation error returned by +// ListCatalogEntriesRequest.Validate if the designated constraints aren't met. +type ListCatalogEntriesRequestValidationError struct { field string reason string cause error @@ -7543,24 +8133,24 @@ type TriggerRefreshRequestValidationError struct { } // Field function returns field value. -func (e TriggerRefreshRequestValidationError) Field() string { return e.field } +func (e ListCatalogEntriesRequestValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e TriggerRefreshRequestValidationError) Reason() string { return e.reason } +func (e ListCatalogEntriesRequestValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e TriggerRefreshRequestValidationError) Cause() error { return e.cause } +func (e ListCatalogEntriesRequestValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e TriggerRefreshRequestValidationError) Key() bool { return e.key } +func (e ListCatalogEntriesRequestValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e TriggerRefreshRequestValidationError) ErrorName() string { - return "TriggerRefreshRequestValidationError" +func (e ListCatalogEntriesRequestValidationError) ErrorName() string { + return "ListCatalogEntriesRequestValidationError" } // Error satisfies the builtin error interface -func (e TriggerRefreshRequestValidationError) Error() string { +func (e ListCatalogEntriesRequestValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -7572,14 +8162,14 @@ func (e TriggerRefreshRequestValidationError) Error() string { } return fmt.Sprintf( - "invalid %sTriggerRefreshRequest.%s: %s%s", + "invalid %sListCatalogEntriesRequest.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = TriggerRefreshRequestValidationError{} +var _ error = ListCatalogEntriesRequestValidationError{} var _ interface { Field() string @@ -7587,46 +8177,80 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = TriggerRefreshRequestValidationError{} +} = ListCatalogEntriesRequestValidationError{} -var _TriggerRefreshRequest_InstanceId_Pattern = regexp.MustCompile("^[_\\-a-zA-Z0-9]+$") +var _ListCatalogEntriesRequest_InstanceId_Pattern = regexp.MustCompile("^[_\\-a-zA-Z0-9]+$") -// Validate checks the field values on TriggerRefreshResponse with the rules -// defined in the proto definition for this message. If any rules are +// Validate checks the field values on ListCatalogEntriesResponse with the +// rules defined in the proto definition for this message. If any rules are // violated, the first error encountered is returned, or nil if there are no violations. -func (m *TriggerRefreshResponse) Validate() error { +func (m *ListCatalogEntriesResponse) Validate() error { return m.validate(false) } -// ValidateAll checks the field values on TriggerRefreshResponse with the rules -// defined in the proto definition for this message. If any rules are +// ValidateAll checks the field values on ListCatalogEntriesResponse with the +// rules defined in the proto definition for this message. If any rules are // violated, the result is a list of violation errors wrapped in -// TriggerRefreshResponseMultiError, or nil if none found. -func (m *TriggerRefreshResponse) ValidateAll() error { +// ListCatalogEntriesResponseMultiError, or nil if none found. +func (m *ListCatalogEntriesResponse) ValidateAll() error { return m.validate(true) } -func (m *TriggerRefreshResponse) validate(all bool) error { +func (m *ListCatalogEntriesResponse) validate(all bool) error { if m == nil { return nil } var errors []error + for idx, item := range m.GetEntries() { + _, _ = idx, item + + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListCatalogEntriesResponseValidationError{ + field: fmt.Sprintf("Entries[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListCatalogEntriesResponseValidationError{ + field: fmt.Sprintf("Entries[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return ListCatalogEntriesResponseValidationError{ + field: fmt.Sprintf("Entries[%v]", idx), + reason: "embedded message failed validation", + cause: err, + } + } + } + + } + if len(errors) > 0 { - return TriggerRefreshResponseMultiError(errors) + return ListCatalogEntriesResponseMultiError(errors) } return nil } -// TriggerRefreshResponseMultiError is an error wrapping multiple validation -// errors returned by TriggerRefreshResponse.ValidateAll() if the designated -// constraints aren't met. -type TriggerRefreshResponseMultiError []error +// ListCatalogEntriesResponseMultiError is an error wrapping multiple +// validation errors returned by ListCatalogEntriesResponse.ValidateAll() if +// the designated constraints aren't met. +type ListCatalogEntriesResponseMultiError []error // Error returns a concatenation of all the error messages it wraps. -func (m TriggerRefreshResponseMultiError) Error() string { +func (m ListCatalogEntriesResponseMultiError) Error() string { var msgs []string for _, err := range m { msgs = append(msgs, err.Error()) @@ -7635,11 +8259,11 @@ func (m TriggerRefreshResponseMultiError) Error() string { } // AllErrors returns a list of validation violation errors. -func (m TriggerRefreshResponseMultiError) AllErrors() []error { return m } +func (m ListCatalogEntriesResponseMultiError) AllErrors() []error { return m } -// TriggerRefreshResponseValidationError is the validation error returned by -// TriggerRefreshResponse.Validate if the designated constraints aren't met. -type TriggerRefreshResponseValidationError struct { +// ListCatalogEntriesResponseValidationError is the validation error returned +// by ListCatalogEntriesResponse.Validate if the designated constraints aren't met. +type ListCatalogEntriesResponseValidationError struct { field string reason string cause error @@ -7647,24 +8271,24 @@ type TriggerRefreshResponseValidationError struct { } // Field function returns field value. -func (e TriggerRefreshResponseValidationError) Field() string { return e.field } +func (e ListCatalogEntriesResponseValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e TriggerRefreshResponseValidationError) Reason() string { return e.reason } +func (e ListCatalogEntriesResponseValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e TriggerRefreshResponseValidationError) Cause() error { return e.cause } +func (e ListCatalogEntriesResponseValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e TriggerRefreshResponseValidationError) Key() bool { return e.key } +func (e ListCatalogEntriesResponseValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e TriggerRefreshResponseValidationError) ErrorName() string { - return "TriggerRefreshResponseValidationError" +func (e ListCatalogEntriesResponseValidationError) ErrorName() string { + return "ListCatalogEntriesResponseValidationError" } // Error satisfies the builtin error interface -func (e TriggerRefreshResponseValidationError) Error() string { +func (e ListCatalogEntriesResponseValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -7676,14 +8300,14 @@ func (e TriggerRefreshResponseValidationError) Error() string { } return fmt.Sprintf( - "invalid %sTriggerRefreshResponse.%s: %s%s", + "invalid %sListCatalogEntriesResponse.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = TriggerRefreshResponseValidationError{} +var _ error = ListCatalogEntriesResponseValidationError{} var _ interface { Field() string @@ -7691,32 +8315,32 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = TriggerRefreshResponseValidationError{} +} = ListCatalogEntriesResponseValidationError{} -// Validate checks the field values on TriggerSyncRequest with the rules +// Validate checks the field values on GetCatalogEntryRequest with the rules // defined in the proto definition for this message. If any rules are // violated, the first error encountered is returned, or nil if there are no violations. -func (m *TriggerSyncRequest) Validate() error { +func (m *GetCatalogEntryRequest) Validate() error { return m.validate(false) } -// ValidateAll checks the field values on TriggerSyncRequest with the rules +// ValidateAll checks the field values on GetCatalogEntryRequest with the rules // defined in the proto definition for this message. If any rules are // violated, the result is a list of violation errors wrapped in -// TriggerSyncRequestMultiError, or nil if none found. -func (m *TriggerSyncRequest) ValidateAll() error { +// GetCatalogEntryRequestMultiError, or nil if none found. +func (m *GetCatalogEntryRequest) ValidateAll() error { return m.validate(true) } -func (m *TriggerSyncRequest) validate(all bool) error { +func (m *GetCatalogEntryRequest) validate(all bool) error { if m == nil { return nil } var errors []error - if !_TriggerSyncRequest_InstanceId_Pattern.MatchString(m.GetInstanceId()) { - err := TriggerSyncRequestValidationError{ + if !_GetCatalogEntryRequest_InstanceId_Pattern.MatchString(m.GetInstanceId()) { + err := GetCatalogEntryRequestValidationError{ field: "InstanceId", reason: "value does not match regex pattern \"^[_\\\\-a-zA-Z0-9]+$\"", } @@ -7726,20 +8350,22 @@ func (m *TriggerSyncRequest) validate(all bool) error { errors = append(errors, err) } + // no validation rules for Name + if len(errors) > 0 { - return TriggerSyncRequestMultiError(errors) + return GetCatalogEntryRequestMultiError(errors) } return nil } -// TriggerSyncRequestMultiError is an error wrapping multiple validation errors -// returned by TriggerSyncRequest.ValidateAll() if the designated constraints -// aren't met. -type TriggerSyncRequestMultiError []error +// GetCatalogEntryRequestMultiError is an error wrapping multiple validation +// errors returned by GetCatalogEntryRequest.ValidateAll() if the designated +// constraints aren't met. +type GetCatalogEntryRequestMultiError []error // Error returns a concatenation of all the error messages it wraps. -func (m TriggerSyncRequestMultiError) Error() string { +func (m GetCatalogEntryRequestMultiError) Error() string { var msgs []string for _, err := range m { msgs = append(msgs, err.Error()) @@ -7748,11 +8374,11 @@ func (m TriggerSyncRequestMultiError) Error() string { } // AllErrors returns a list of validation violation errors. -func (m TriggerSyncRequestMultiError) AllErrors() []error { return m } +func (m GetCatalogEntryRequestMultiError) AllErrors() []error { return m } -// TriggerSyncRequestValidationError is the validation error returned by -// TriggerSyncRequest.Validate if the designated constraints aren't met. -type TriggerSyncRequestValidationError struct { +// GetCatalogEntryRequestValidationError is the validation error returned by +// GetCatalogEntryRequest.Validate if the designated constraints aren't met. +type GetCatalogEntryRequestValidationError struct { field string reason string cause error @@ -7760,24 +8386,24 @@ type TriggerSyncRequestValidationError struct { } // Field function returns field value. -func (e TriggerSyncRequestValidationError) Field() string { return e.field } +func (e GetCatalogEntryRequestValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e TriggerSyncRequestValidationError) Reason() string { return e.reason } +func (e GetCatalogEntryRequestValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e TriggerSyncRequestValidationError) Cause() error { return e.cause } +func (e GetCatalogEntryRequestValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e TriggerSyncRequestValidationError) Key() bool { return e.key } +func (e GetCatalogEntryRequestValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e TriggerSyncRequestValidationError) ErrorName() string { - return "TriggerSyncRequestValidationError" +func (e GetCatalogEntryRequestValidationError) ErrorName() string { + return "GetCatalogEntryRequestValidationError" } // Error satisfies the builtin error interface -func (e TriggerSyncRequestValidationError) Error() string { +func (e GetCatalogEntryRequestValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -7789,14 +8415,14 @@ func (e TriggerSyncRequestValidationError) Error() string { } return fmt.Sprintf( - "invalid %sTriggerSyncRequest.%s: %s%s", + "invalid %sGetCatalogEntryRequest.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = TriggerSyncRequestValidationError{} +var _ error = GetCatalogEntryRequestValidationError{} var _ interface { Field() string @@ -7804,54 +8430,75 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = TriggerSyncRequestValidationError{} +} = GetCatalogEntryRequestValidationError{} -var _TriggerSyncRequest_InstanceId_Pattern = regexp.MustCompile("^[_\\-a-zA-Z0-9]+$") +var _GetCatalogEntryRequest_InstanceId_Pattern = regexp.MustCompile("^[_\\-a-zA-Z0-9]+$") -// Validate checks the field values on TriggerSyncResponse with the rules +// Validate checks the field values on GetCatalogEntryResponse with the rules // defined in the proto definition for this message. If any rules are // violated, the first error encountered is returned, or nil if there are no violations. -func (m *TriggerSyncResponse) Validate() error { +func (m *GetCatalogEntryResponse) Validate() error { return m.validate(false) } -// ValidateAll checks the field values on TriggerSyncResponse with the rules -// defined in the proto definition for this message. If any rules are +// ValidateAll checks the field values on GetCatalogEntryResponse with the +// rules defined in the proto definition for this message. If any rules are // violated, the result is a list of violation errors wrapped in -// TriggerSyncResponseMultiError, or nil if none found. -func (m *TriggerSyncResponse) ValidateAll() error { +// GetCatalogEntryResponseMultiError, or nil if none found. +func (m *GetCatalogEntryResponse) ValidateAll() error { return m.validate(true) } -func (m *TriggerSyncResponse) validate(all bool) error { +func (m *GetCatalogEntryResponse) validate(all bool) error { if m == nil { return nil } var errors []error - // no validation rules for ObjectsCount - - // no validation rules for ObjectsAddedCount - - // no validation rules for ObjectsUpdatedCount - - // no validation rules for ObjectsRemovedCount + if all { + switch v := interface{}(m.GetEntry()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetCatalogEntryResponseValidationError{ + field: "Entry", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetCatalogEntryResponseValidationError{ + field: "Entry", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetEntry()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return GetCatalogEntryResponseValidationError{ + field: "Entry", + reason: "embedded message failed validation", + cause: err, + } + } + } if len(errors) > 0 { - return TriggerSyncResponseMultiError(errors) + return GetCatalogEntryResponseMultiError(errors) } return nil } -// TriggerSyncResponseMultiError is an error wrapping multiple validation -// errors returned by TriggerSyncResponse.ValidateAll() if the designated +// GetCatalogEntryResponseMultiError is an error wrapping multiple validation +// errors returned by GetCatalogEntryResponse.ValidateAll() if the designated // constraints aren't met. -type TriggerSyncResponseMultiError []error +type GetCatalogEntryResponseMultiError []error // Error returns a concatenation of all the error messages it wraps. -func (m TriggerSyncResponseMultiError) Error() string { +func (m GetCatalogEntryResponseMultiError) Error() string { var msgs []string for _, err := range m { msgs = append(msgs, err.Error()) @@ -7860,11 +8507,11 @@ func (m TriggerSyncResponseMultiError) Error() string { } // AllErrors returns a list of validation violation errors. -func (m TriggerSyncResponseMultiError) AllErrors() []error { return m } +func (m GetCatalogEntryResponseMultiError) AllErrors() []error { return m } -// TriggerSyncResponseValidationError is the validation error returned by -// TriggerSyncResponse.Validate if the designated constraints aren't met. -type TriggerSyncResponseValidationError struct { +// GetCatalogEntryResponseValidationError is the validation error returned by +// GetCatalogEntryResponse.Validate if the designated constraints aren't met. +type GetCatalogEntryResponseValidationError struct { field string reason string cause error @@ -7872,24 +8519,24 @@ type TriggerSyncResponseValidationError struct { } // Field function returns field value. -func (e TriggerSyncResponseValidationError) Field() string { return e.field } +func (e GetCatalogEntryResponseValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e TriggerSyncResponseValidationError) Reason() string { return e.reason } +func (e GetCatalogEntryResponseValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e TriggerSyncResponseValidationError) Cause() error { return e.cause } +func (e GetCatalogEntryResponseValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e TriggerSyncResponseValidationError) Key() bool { return e.key } +func (e GetCatalogEntryResponseValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e TriggerSyncResponseValidationError) ErrorName() string { - return "TriggerSyncResponseValidationError" +func (e GetCatalogEntryResponseValidationError) ErrorName() string { + return "GetCatalogEntryResponseValidationError" } // Error satisfies the builtin error interface -func (e TriggerSyncResponseValidationError) Error() string { +func (e GetCatalogEntryResponseValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -7901,14 +8548,14 @@ func (e TriggerSyncResponseValidationError) Error() string { } return fmt.Sprintf( - "invalid %sTriggerSyncResponse.%s: %s%s", + "invalid %sGetCatalogEntryResponse.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = TriggerSyncResponseValidationError{} +var _ error = GetCatalogEntryResponseValidationError{} var _ interface { Field() string @@ -7916,32 +8563,32 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = TriggerSyncResponseValidationError{} +} = GetCatalogEntryResponseValidationError{} -// Validate checks the field values on ReconcileRequest with the rules defined -// in the proto definition for this message. If any rules are violated, the -// first error encountered is returned, or nil if there are no violations. -func (m *ReconcileRequest) Validate() error { +// Validate checks the field values on TriggerRefreshRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *TriggerRefreshRequest) Validate() error { return m.validate(false) } -// ValidateAll checks the field values on ReconcileRequest with the rules +// ValidateAll checks the field values on TriggerRefreshRequest with the rules // defined in the proto definition for this message. If any rules are // violated, the result is a list of violation errors wrapped in -// ReconcileRequestMultiError, or nil if none found. -func (m *ReconcileRequest) ValidateAll() error { +// TriggerRefreshRequestMultiError, or nil if none found. +func (m *TriggerRefreshRequest) ValidateAll() error { return m.validate(true) } -func (m *ReconcileRequest) validate(all bool) error { +func (m *TriggerRefreshRequest) validate(all bool) error { if m == nil { return nil } var errors []error - if !_ReconcileRequest_InstanceId_Pattern.MatchString(m.GetInstanceId()) { - err := ReconcileRequestValidationError{ + if !_TriggerRefreshRequest_InstanceId_Pattern.MatchString(m.GetInstanceId()) { + err := TriggerRefreshRequestValidationError{ field: "InstanceId", reason: "value does not match regex pattern \"^[_\\\\-a-zA-Z0-9]+$\"", } @@ -7951,24 +8598,22 @@ func (m *ReconcileRequest) validate(all bool) error { errors = append(errors, err) } - // no validation rules for Dry - - // no validation rules for Strict + // no validation rules for Name if len(errors) > 0 { - return ReconcileRequestMultiError(errors) + return TriggerRefreshRequestMultiError(errors) } return nil } -// ReconcileRequestMultiError is an error wrapping multiple validation errors -// returned by ReconcileRequest.ValidateAll() if the designated constraints -// aren't met. -type ReconcileRequestMultiError []error +// TriggerRefreshRequestMultiError is an error wrapping multiple validation +// errors returned by TriggerRefreshRequest.ValidateAll() if the designated +// constraints aren't met. +type TriggerRefreshRequestMultiError []error // Error returns a concatenation of all the error messages it wraps. -func (m ReconcileRequestMultiError) Error() string { +func (m TriggerRefreshRequestMultiError) Error() string { var msgs []string for _, err := range m { msgs = append(msgs, err.Error()) @@ -7977,11 +8622,11 @@ func (m ReconcileRequestMultiError) Error() string { } // AllErrors returns a list of validation violation errors. -func (m ReconcileRequestMultiError) AllErrors() []error { return m } +func (m TriggerRefreshRequestMultiError) AllErrors() []error { return m } -// ReconcileRequestValidationError is the validation error returned by -// ReconcileRequest.Validate if the designated constraints aren't met. -type ReconcileRequestValidationError struct { +// TriggerRefreshRequestValidationError is the validation error returned by +// TriggerRefreshRequest.Validate if the designated constraints aren't met. +type TriggerRefreshRequestValidationError struct { field string reason string cause error @@ -7989,22 +8634,24 @@ type ReconcileRequestValidationError struct { } // Field function returns field value. -func (e ReconcileRequestValidationError) Field() string { return e.field } +func (e TriggerRefreshRequestValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e ReconcileRequestValidationError) Reason() string { return e.reason } +func (e TriggerRefreshRequestValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e ReconcileRequestValidationError) Cause() error { return e.cause } +func (e TriggerRefreshRequestValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e ReconcileRequestValidationError) Key() bool { return e.key } +func (e TriggerRefreshRequestValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e ReconcileRequestValidationError) ErrorName() string { return "ReconcileRequestValidationError" } +func (e TriggerRefreshRequestValidationError) ErrorName() string { + return "TriggerRefreshRequestValidationError" +} // Error satisfies the builtin error interface -func (e ReconcileRequestValidationError) Error() string { +func (e TriggerRefreshRequestValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -8016,14 +8663,14 @@ func (e ReconcileRequestValidationError) Error() string { } return fmt.Sprintf( - "invalid %sReconcileRequest.%s: %s%s", + "invalid %sTriggerRefreshRequest.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = ReconcileRequestValidationError{} +var _ error = TriggerRefreshRequestValidationError{} var _ interface { Field() string @@ -8031,80 +8678,46 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = ReconcileRequestValidationError{} +} = TriggerRefreshRequestValidationError{} -var _ReconcileRequest_InstanceId_Pattern = regexp.MustCompile("^[_\\-a-zA-Z0-9]+$") +var _TriggerRefreshRequest_InstanceId_Pattern = regexp.MustCompile("^[_\\-a-zA-Z0-9]+$") -// Validate checks the field values on ReconcileResponse with the rules defined -// in the proto definition for this message. If any rules are violated, the -// first error encountered is returned, or nil if there are no violations. -func (m *ReconcileResponse) Validate() error { +// Validate checks the field values on TriggerRefreshResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *TriggerRefreshResponse) Validate() error { return m.validate(false) } -// ValidateAll checks the field values on ReconcileResponse with the rules +// ValidateAll checks the field values on TriggerRefreshResponse with the rules // defined in the proto definition for this message. If any rules are // violated, the result is a list of violation errors wrapped in -// ReconcileResponseMultiError, or nil if none found. -func (m *ReconcileResponse) ValidateAll() error { +// TriggerRefreshResponseMultiError, or nil if none found. +func (m *TriggerRefreshResponse) ValidateAll() error { return m.validate(true) } -func (m *ReconcileResponse) validate(all bool) error { +func (m *TriggerRefreshResponse) validate(all bool) error { if m == nil { return nil } var errors []error - for idx, item := range m.GetErrors() { - _, _ = idx, item - - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ReconcileResponseValidationError{ - field: fmt.Sprintf("Errors[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ReconcileResponseValidationError{ - field: fmt.Sprintf("Errors[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return ReconcileResponseValidationError{ - field: fmt.Sprintf("Errors[%v]", idx), - reason: "embedded message failed validation", - cause: err, - } - } - } - - } - if len(errors) > 0 { - return ReconcileResponseMultiError(errors) + return TriggerRefreshResponseMultiError(errors) } return nil } -// ReconcileResponseMultiError is an error wrapping multiple validation errors -// returned by ReconcileResponse.ValidateAll() if the designated constraints -// aren't met. -type ReconcileResponseMultiError []error +// TriggerRefreshResponseMultiError is an error wrapping multiple validation +// errors returned by TriggerRefreshResponse.ValidateAll() if the designated +// constraints aren't met. +type TriggerRefreshResponseMultiError []error // Error returns a concatenation of all the error messages it wraps. -func (m ReconcileResponseMultiError) Error() string { +func (m TriggerRefreshResponseMultiError) Error() string { var msgs []string for _, err := range m { msgs = append(msgs, err.Error()) @@ -8113,11 +8726,11 @@ func (m ReconcileResponseMultiError) Error() string { } // AllErrors returns a list of validation violation errors. -func (m ReconcileResponseMultiError) AllErrors() []error { return m } +func (m TriggerRefreshResponseMultiError) AllErrors() []error { return m } -// ReconcileResponseValidationError is the validation error returned by -// ReconcileResponse.Validate if the designated constraints aren't met. -type ReconcileResponseValidationError struct { +// TriggerRefreshResponseValidationError is the validation error returned by +// TriggerRefreshResponse.Validate if the designated constraints aren't met. +type TriggerRefreshResponseValidationError struct { field string reason string cause error @@ -8125,24 +8738,24 @@ type ReconcileResponseValidationError struct { } // Field function returns field value. -func (e ReconcileResponseValidationError) Field() string { return e.field } +func (e TriggerRefreshResponseValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e ReconcileResponseValidationError) Reason() string { return e.reason } +func (e TriggerRefreshResponseValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e ReconcileResponseValidationError) Cause() error { return e.cause } +func (e TriggerRefreshResponseValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e ReconcileResponseValidationError) Key() bool { return e.key } +func (e TriggerRefreshResponseValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e ReconcileResponseValidationError) ErrorName() string { - return "ReconcileResponseValidationError" +func (e TriggerRefreshResponseValidationError) ErrorName() string { + return "TriggerRefreshResponseValidationError" } // Error satisfies the builtin error interface -func (e ReconcileResponseValidationError) Error() string { +func (e TriggerRefreshResponseValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -8154,14 +8767,14 @@ func (e ReconcileResponseValidationError) Error() string { } return fmt.Sprintf( - "invalid %sReconcileResponse.%s: %s%s", + "invalid %sTriggerRefreshResponse.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = ReconcileResponseValidationError{} +var _ error = TriggerRefreshResponseValidationError{} var _ interface { Field() string @@ -8169,34 +8782,34 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = ReconcileResponseValidationError{} +} = TriggerRefreshResponseValidationError{} -// Validate checks the field values on ReconcileError with the rules defined in -// the proto definition for this message. If any rules are violated, the first -// error encountered is returned, or nil if there are no violations. -func (m *ReconcileError) Validate() error { +// Validate checks the field values on TriggerSyncRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *TriggerSyncRequest) Validate() error { return m.validate(false) } -// ValidateAll checks the field values on ReconcileError with the rules defined -// in the proto definition for this message. If any rules are violated, the -// result is a list of violation errors wrapped in ReconcileErrorMultiError, -// or nil if none found. -func (m *ReconcileError) ValidateAll() error { +// ValidateAll checks the field values on TriggerSyncRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// TriggerSyncRequestMultiError, or nil if none found. +func (m *TriggerSyncRequest) ValidateAll() error { return m.validate(true) } -func (m *ReconcileError) validate(all bool) error { +func (m *TriggerSyncRequest) validate(all bool) error { if m == nil { return nil } var errors []error - if _, ok := ReconcileError_Code_name[int32(m.GetCode())]; !ok { - err := ReconcileErrorValidationError{ - field: "Code", - reason: "value must be one of the defined enum values", + if !_TriggerSyncRequest_InstanceId_Pattern.MatchString(m.GetInstanceId()) { + err := TriggerSyncRequestValidationError{ + field: "InstanceId", + reason: "value does not match regex pattern \"^[_\\\\-a-zA-Z0-9]+$\"", } if !all { return err @@ -8204,82 +8817,20 @@ func (m *ReconcileError) validate(all bool) error { errors = append(errors, err) } - // no validation rules for Message - - // no validation rules for FilePath - - if all { - switch v := interface{}(m.GetStartLocation()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ReconcileErrorValidationError{ - field: "StartLocation", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ReconcileErrorValidationError{ - field: "StartLocation", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetStartLocation()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return ReconcileErrorValidationError{ - field: "StartLocation", - reason: "embedded message failed validation", - cause: err, - } - } - } - - if all { - switch v := interface{}(m.GetEndLocation()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ReconcileErrorValidationError{ - field: "EndLocation", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ReconcileErrorValidationError{ - field: "EndLocation", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetEndLocation()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return ReconcileErrorValidationError{ - field: "EndLocation", - reason: "embedded message failed validation", - cause: err, - } - } - } - if len(errors) > 0 { - return ReconcileErrorMultiError(errors) + return TriggerSyncRequestMultiError(errors) } return nil } -// ReconcileErrorMultiError is an error wrapping multiple validation errors -// returned by ReconcileError.ValidateAll() if the designated constraints +// TriggerSyncRequestMultiError is an error wrapping multiple validation errors +// returned by TriggerSyncRequest.ValidateAll() if the designated constraints // aren't met. -type ReconcileErrorMultiError []error +type TriggerSyncRequestMultiError []error // Error returns a concatenation of all the error messages it wraps. -func (m ReconcileErrorMultiError) Error() string { +func (m TriggerSyncRequestMultiError) Error() string { var msgs []string for _, err := range m { msgs = append(msgs, err.Error()) @@ -8288,11 +8839,11 @@ func (m ReconcileErrorMultiError) Error() string { } // AllErrors returns a list of validation violation errors. -func (m ReconcileErrorMultiError) AllErrors() []error { return m } +func (m TriggerSyncRequestMultiError) AllErrors() []error { return m } -// ReconcileErrorValidationError is the validation error returned by -// ReconcileError.Validate if the designated constraints aren't met. -type ReconcileErrorValidationError struct { +// TriggerSyncRequestValidationError is the validation error returned by +// TriggerSyncRequest.Validate if the designated constraints aren't met. +type TriggerSyncRequestValidationError struct { field string reason string cause error @@ -8300,22 +8851,24 @@ type ReconcileErrorValidationError struct { } // Field function returns field value. -func (e ReconcileErrorValidationError) Field() string { return e.field } +func (e TriggerSyncRequestValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e ReconcileErrorValidationError) Reason() string { return e.reason } +func (e TriggerSyncRequestValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e ReconcileErrorValidationError) Cause() error { return e.cause } +func (e TriggerSyncRequestValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e ReconcileErrorValidationError) Key() bool { return e.key } +func (e TriggerSyncRequestValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e ReconcileErrorValidationError) ErrorName() string { return "ReconcileErrorValidationError" } +func (e TriggerSyncRequestValidationError) ErrorName() string { + return "TriggerSyncRequestValidationError" +} // Error satisfies the builtin error interface -func (e ReconcileErrorValidationError) Error() string { +func (e TriggerSyncRequestValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -8327,14 +8880,14 @@ func (e ReconcileErrorValidationError) Error() string { } return fmt.Sprintf( - "invalid %sReconcileError.%s: %s%s", + "invalid %sTriggerSyncRequest.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = ReconcileErrorValidationError{} +var _ error = TriggerSyncRequestValidationError{} var _ interface { Field() string @@ -8342,67 +8895,54 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = ReconcileErrorValidationError{} +} = TriggerSyncRequestValidationError{} -// Validate checks the field values on PutFileAndReconcileRequest with the -// rules defined in the proto definition for this message. If any rules are +var _TriggerSyncRequest_InstanceId_Pattern = regexp.MustCompile("^[_\\-a-zA-Z0-9]+$") + +// Validate checks the field values on TriggerSyncResponse with the rules +// defined in the proto definition for this message. If any rules are // violated, the first error encountered is returned, or nil if there are no violations. -func (m *PutFileAndReconcileRequest) Validate() error { +func (m *TriggerSyncResponse) Validate() error { return m.validate(false) } -// ValidateAll checks the field values on PutFileAndReconcileRequest with the -// rules defined in the proto definition for this message. If any rules are +// ValidateAll checks the field values on TriggerSyncResponse with the rules +// defined in the proto definition for this message. If any rules are // violated, the result is a list of violation errors wrapped in -// PutFileAndReconcileRequestMultiError, or nil if none found. -func (m *PutFileAndReconcileRequest) ValidateAll() error { +// TriggerSyncResponseMultiError, or nil if none found. +func (m *TriggerSyncResponse) ValidateAll() error { return m.validate(true) } -func (m *PutFileAndReconcileRequest) validate(all bool) error { +func (m *TriggerSyncResponse) validate(all bool) error { if m == nil { return nil } var errors []error - if !_PutFileAndReconcileRequest_InstanceId_Pattern.MatchString(m.GetInstanceId()) { - err := PutFileAndReconcileRequestValidationError{ - field: "InstanceId", - reason: "value does not match regex pattern \"^[_\\\\-a-zA-Z0-9]+$\"", - } - if !all { - return err - } - errors = append(errors, err) - } - - // no validation rules for Path - - // no validation rules for Blob - - // no validation rules for Create + // no validation rules for ObjectsCount - // no validation rules for CreateOnly + // no validation rules for ObjectsAddedCount - // no validation rules for Dry + // no validation rules for ObjectsUpdatedCount - // no validation rules for Strict + // no validation rules for ObjectsRemovedCount if len(errors) > 0 { - return PutFileAndReconcileRequestMultiError(errors) + return TriggerSyncResponseMultiError(errors) } return nil } -// PutFileAndReconcileRequestMultiError is an error wrapping multiple -// validation errors returned by PutFileAndReconcileRequest.ValidateAll() if -// the designated constraints aren't met. -type PutFileAndReconcileRequestMultiError []error +// TriggerSyncResponseMultiError is an error wrapping multiple validation +// errors returned by TriggerSyncResponse.ValidateAll() if the designated +// constraints aren't met. +type TriggerSyncResponseMultiError []error // Error returns a concatenation of all the error messages it wraps. -func (m PutFileAndReconcileRequestMultiError) Error() string { +func (m TriggerSyncResponseMultiError) Error() string { var msgs []string for _, err := range m { msgs = append(msgs, err.Error()) @@ -8411,11 +8951,11 @@ func (m PutFileAndReconcileRequestMultiError) Error() string { } // AllErrors returns a list of validation violation errors. -func (m PutFileAndReconcileRequestMultiError) AllErrors() []error { return m } +func (m TriggerSyncResponseMultiError) AllErrors() []error { return m } -// PutFileAndReconcileRequestValidationError is the validation error returned -// by PutFileAndReconcileRequest.Validate if the designated constraints aren't met. -type PutFileAndReconcileRequestValidationError struct { +// TriggerSyncResponseValidationError is the validation error returned by +// TriggerSyncResponse.Validate if the designated constraints aren't met. +type TriggerSyncResponseValidationError struct { field string reason string cause error @@ -8423,24 +8963,24 @@ type PutFileAndReconcileRequestValidationError struct { } // Field function returns field value. -func (e PutFileAndReconcileRequestValidationError) Field() string { return e.field } +func (e TriggerSyncResponseValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e PutFileAndReconcileRequestValidationError) Reason() string { return e.reason } +func (e TriggerSyncResponseValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e PutFileAndReconcileRequestValidationError) Cause() error { return e.cause } +func (e TriggerSyncResponseValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e PutFileAndReconcileRequestValidationError) Key() bool { return e.key } +func (e TriggerSyncResponseValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e PutFileAndReconcileRequestValidationError) ErrorName() string { - return "PutFileAndReconcileRequestValidationError" +func (e TriggerSyncResponseValidationError) ErrorName() string { + return "TriggerSyncResponseValidationError" } // Error satisfies the builtin error interface -func (e PutFileAndReconcileRequestValidationError) Error() string { +func (e TriggerSyncResponseValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -8452,14 +8992,14 @@ func (e PutFileAndReconcileRequestValidationError) Error() string { } return fmt.Sprintf( - "invalid %sPutFileAndReconcileRequest.%s: %s%s", + "invalid %sTriggerSyncResponse.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = PutFileAndReconcileRequestValidationError{} +var _ error = TriggerSyncResponseValidationError{} var _ interface { Field() string @@ -8467,80 +9007,59 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = PutFileAndReconcileRequestValidationError{} - -var _PutFileAndReconcileRequest_InstanceId_Pattern = regexp.MustCompile("^[_\\-a-zA-Z0-9]+$") +} = TriggerSyncResponseValidationError{} -// Validate checks the field values on PutFileAndReconcileResponse with the -// rules defined in the proto definition for this message. If any rules are -// violated, the first error encountered is returned, or nil if there are no violations. -func (m *PutFileAndReconcileResponse) Validate() error { +// Validate checks the field values on ReconcileRequest with the rules defined +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. +func (m *ReconcileRequest) Validate() error { return m.validate(false) } -// ValidateAll checks the field values on PutFileAndReconcileResponse with the -// rules defined in the proto definition for this message. If any rules are +// ValidateAll checks the field values on ReconcileRequest with the rules +// defined in the proto definition for this message. If any rules are // violated, the result is a list of violation errors wrapped in -// PutFileAndReconcileResponseMultiError, or nil if none found. -func (m *PutFileAndReconcileResponse) ValidateAll() error { +// ReconcileRequestMultiError, or nil if none found. +func (m *ReconcileRequest) ValidateAll() error { return m.validate(true) } -func (m *PutFileAndReconcileResponse) validate(all bool) error { +func (m *ReconcileRequest) validate(all bool) error { if m == nil { return nil } var errors []error - for idx, item := range m.GetErrors() { - _, _ = idx, item - - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, PutFileAndReconcileResponseValidationError{ - field: fmt.Sprintf("Errors[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, PutFileAndReconcileResponseValidationError{ - field: fmt.Sprintf("Errors[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return PutFileAndReconcileResponseValidationError{ - field: fmt.Sprintf("Errors[%v]", idx), - reason: "embedded message failed validation", - cause: err, - } - } + if !_ReconcileRequest_InstanceId_Pattern.MatchString(m.GetInstanceId()) { + err := ReconcileRequestValidationError{ + field: "InstanceId", + reason: "value does not match regex pattern \"^[_\\\\-a-zA-Z0-9]+$\"", } - + if !all { + return err + } + errors = append(errors, err) } + // no validation rules for Dry + + // no validation rules for Strict + if len(errors) > 0 { - return PutFileAndReconcileResponseMultiError(errors) + return ReconcileRequestMultiError(errors) } return nil } -// PutFileAndReconcileResponseMultiError is an error wrapping multiple -// validation errors returned by PutFileAndReconcileResponse.ValidateAll() if -// the designated constraints aren't met. -type PutFileAndReconcileResponseMultiError []error +// ReconcileRequestMultiError is an error wrapping multiple validation errors +// returned by ReconcileRequest.ValidateAll() if the designated constraints +// aren't met. +type ReconcileRequestMultiError []error // Error returns a concatenation of all the error messages it wraps. -func (m PutFileAndReconcileResponseMultiError) Error() string { +func (m ReconcileRequestMultiError) Error() string { var msgs []string for _, err := range m { msgs = append(msgs, err.Error()) @@ -8549,12 +9068,11 @@ func (m PutFileAndReconcileResponseMultiError) Error() string { } // AllErrors returns a list of validation violation errors. -func (m PutFileAndReconcileResponseMultiError) AllErrors() []error { return m } +func (m ReconcileRequestMultiError) AllErrors() []error { return m } -// PutFileAndReconcileResponseValidationError is the validation error returned -// by PutFileAndReconcileResponse.Validate if the designated constraints -// aren't met. -type PutFileAndReconcileResponseValidationError struct { +// ReconcileRequestValidationError is the validation error returned by +// ReconcileRequest.Validate if the designated constraints aren't met. +type ReconcileRequestValidationError struct { field string reason string cause error @@ -8562,24 +9080,22 @@ type PutFileAndReconcileResponseValidationError struct { } // Field function returns field value. -func (e PutFileAndReconcileResponseValidationError) Field() string { return e.field } +func (e ReconcileRequestValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e PutFileAndReconcileResponseValidationError) Reason() string { return e.reason } +func (e ReconcileRequestValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e PutFileAndReconcileResponseValidationError) Cause() error { return e.cause } +func (e ReconcileRequestValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e PutFileAndReconcileResponseValidationError) Key() bool { return e.key } +func (e ReconcileRequestValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e PutFileAndReconcileResponseValidationError) ErrorName() string { - return "PutFileAndReconcileResponseValidationError" -} +func (e ReconcileRequestValidationError) ErrorName() string { return "ReconcileRequestValidationError" } // Error satisfies the builtin error interface -func (e PutFileAndReconcileResponseValidationError) Error() string { +func (e ReconcileRequestValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -8591,14 +9107,14 @@ func (e PutFileAndReconcileResponseValidationError) Error() string { } return fmt.Sprintf( - "invalid %sPutFileAndReconcileResponse.%s: %s%s", + "invalid %sReconcileRequest.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = PutFileAndReconcileResponseValidationError{} +var _ error = ReconcileRequestValidationError{} var _ interface { Field() string @@ -8606,61 +9122,80 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = PutFileAndReconcileResponseValidationError{} +} = ReconcileRequestValidationError{} -// Validate checks the field values on DeleteFileAndReconcileRequest with the -// rules defined in the proto definition for this message. If any rules are -// violated, the first error encountered is returned, or nil if there are no violations. -func (m *DeleteFileAndReconcileRequest) Validate() error { +var _ReconcileRequest_InstanceId_Pattern = regexp.MustCompile("^[_\\-a-zA-Z0-9]+$") + +// Validate checks the field values on ReconcileResponse with the rules defined +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. +func (m *ReconcileResponse) Validate() error { return m.validate(false) } -// ValidateAll checks the field values on DeleteFileAndReconcileRequest with -// the rules defined in the proto definition for this message. If any rules -// are violated, the result is a list of violation errors wrapped in -// DeleteFileAndReconcileRequestMultiError, or nil if none found. -func (m *DeleteFileAndReconcileRequest) ValidateAll() error { +// ValidateAll checks the field values on ReconcileResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ReconcileResponseMultiError, or nil if none found. +func (m *ReconcileResponse) ValidateAll() error { return m.validate(true) } -func (m *DeleteFileAndReconcileRequest) validate(all bool) error { +func (m *ReconcileResponse) validate(all bool) error { if m == nil { return nil } var errors []error - if !_DeleteFileAndReconcileRequest_InstanceId_Pattern.MatchString(m.GetInstanceId()) { - err := DeleteFileAndReconcileRequestValidationError{ - field: "InstanceId", - reason: "value does not match regex pattern \"^[_\\\\-a-zA-Z0-9]+$\"", - } - if !all { - return err - } - errors = append(errors, err) - } - - // no validation rules for Path + for idx, item := range m.GetErrors() { + _, _ = idx, item - // no validation rules for Dry + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ReconcileResponseValidationError{ + field: fmt.Sprintf("Errors[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ReconcileResponseValidationError{ + field: fmt.Sprintf("Errors[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return ReconcileResponseValidationError{ + field: fmt.Sprintf("Errors[%v]", idx), + reason: "embedded message failed validation", + cause: err, + } + } + } - // no validation rules for Strict + } if len(errors) > 0 { - return DeleteFileAndReconcileRequestMultiError(errors) + return ReconcileResponseMultiError(errors) } return nil } -// DeleteFileAndReconcileRequestMultiError is an error wrapping multiple -// validation errors returned by DeleteFileAndReconcileRequest.ValidateAll() -// if the designated constraints aren't met. -type DeleteFileAndReconcileRequestMultiError []error +// ReconcileResponseMultiError is an error wrapping multiple validation errors +// returned by ReconcileResponse.ValidateAll() if the designated constraints +// aren't met. +type ReconcileResponseMultiError []error // Error returns a concatenation of all the error messages it wraps. -func (m DeleteFileAndReconcileRequestMultiError) Error() string { +func (m ReconcileResponseMultiError) Error() string { var msgs []string for _, err := range m { msgs = append(msgs, err.Error()) @@ -8669,12 +9204,11 @@ func (m DeleteFileAndReconcileRequestMultiError) Error() string { } // AllErrors returns a list of validation violation errors. -func (m DeleteFileAndReconcileRequestMultiError) AllErrors() []error { return m } +func (m ReconcileResponseMultiError) AllErrors() []error { return m } -// DeleteFileAndReconcileRequestValidationError is the validation error -// returned by DeleteFileAndReconcileRequest.Validate if the designated -// constraints aren't met. -type DeleteFileAndReconcileRequestValidationError struct { +// ReconcileResponseValidationError is the validation error returned by +// ReconcileResponse.Validate if the designated constraints aren't met. +type ReconcileResponseValidationError struct { field string reason string cause error @@ -8682,24 +9216,24 @@ type DeleteFileAndReconcileRequestValidationError struct { } // Field function returns field value. -func (e DeleteFileAndReconcileRequestValidationError) Field() string { return e.field } +func (e ReconcileResponseValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e DeleteFileAndReconcileRequestValidationError) Reason() string { return e.reason } +func (e ReconcileResponseValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e DeleteFileAndReconcileRequestValidationError) Cause() error { return e.cause } +func (e ReconcileResponseValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e DeleteFileAndReconcileRequestValidationError) Key() bool { return e.key } +func (e ReconcileResponseValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e DeleteFileAndReconcileRequestValidationError) ErrorName() string { - return "DeleteFileAndReconcileRequestValidationError" +func (e ReconcileResponseValidationError) ErrorName() string { + return "ReconcileResponseValidationError" } // Error satisfies the builtin error interface -func (e DeleteFileAndReconcileRequestValidationError) Error() string { +func (e ReconcileResponseValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -8711,14 +9245,14 @@ func (e DeleteFileAndReconcileRequestValidationError) Error() string { } return fmt.Sprintf( - "invalid %sDeleteFileAndReconcileRequest.%s: %s%s", + "invalid %sReconcileResponse.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = DeleteFileAndReconcileRequestValidationError{} +var _ error = ReconcileResponseValidationError{} var _ interface { Field() string @@ -8726,80 +9260,117 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = DeleteFileAndReconcileRequestValidationError{} - -var _DeleteFileAndReconcileRequest_InstanceId_Pattern = regexp.MustCompile("^[_\\-a-zA-Z0-9]+$") +} = ReconcileResponseValidationError{} -// Validate checks the field values on DeleteFileAndReconcileResponse with the -// rules defined in the proto definition for this message. If any rules are -// violated, the first error encountered is returned, or nil if there are no violations. -func (m *DeleteFileAndReconcileResponse) Validate() error { +// Validate checks the field values on ReconcileError with the rules defined in +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. +func (m *ReconcileError) Validate() error { return m.validate(false) } -// ValidateAll checks the field values on DeleteFileAndReconcileResponse with -// the rules defined in the proto definition for this message. If any rules -// are violated, the result is a list of violation errors wrapped in -// DeleteFileAndReconcileResponseMultiError, or nil if none found. -func (m *DeleteFileAndReconcileResponse) ValidateAll() error { +// ValidateAll checks the field values on ReconcileError with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in ReconcileErrorMultiError, +// or nil if none found. +func (m *ReconcileError) ValidateAll() error { return m.validate(true) } -func (m *DeleteFileAndReconcileResponse) validate(all bool) error { +func (m *ReconcileError) validate(all bool) error { if m == nil { return nil } var errors []error - for idx, item := range m.GetErrors() { - _, _ = idx, item + if _, ok := ReconcileError_Code_name[int32(m.GetCode())]; !ok { + err := ReconcileErrorValidationError{ + field: "Code", + reason: "value must be one of the defined enum values", + } + if !all { + return err + } + errors = append(errors, err) + } - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, DeleteFileAndReconcileResponseValidationError{ - field: fmt.Sprintf("Errors[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, DeleteFileAndReconcileResponseValidationError{ - field: fmt.Sprintf("Errors[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } + // no validation rules for Message + + // no validation rules for FilePath + + if all { + switch v := interface{}(m.GetStartLocation()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ReconcileErrorValidationError{ + field: "StartLocation", + reason: "embedded message failed validation", + cause: err, + }) } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + case interface{ Validate() error }: if err := v.Validate(); err != nil { - return DeleteFileAndReconcileResponseValidationError{ - field: fmt.Sprintf("Errors[%v]", idx), + errors = append(errors, ReconcileErrorValidationError{ + field: "StartLocation", reason: "embedded message failed validation", cause: err, - } + }) + } + } + } else if v, ok := interface{}(m.GetStartLocation()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return ReconcileErrorValidationError{ + field: "StartLocation", + reason: "embedded message failed validation", + cause: err, } } + } + if all { + switch v := interface{}(m.GetEndLocation()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ReconcileErrorValidationError{ + field: "EndLocation", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ReconcileErrorValidationError{ + field: "EndLocation", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetEndLocation()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return ReconcileErrorValidationError{ + field: "EndLocation", + reason: "embedded message failed validation", + cause: err, + } + } } if len(errors) > 0 { - return DeleteFileAndReconcileResponseMultiError(errors) + return ReconcileErrorMultiError(errors) } return nil } -// DeleteFileAndReconcileResponseMultiError is an error wrapping multiple -// validation errors returned by DeleteFileAndReconcileResponse.ValidateAll() -// if the designated constraints aren't met. -type DeleteFileAndReconcileResponseMultiError []error +// ReconcileErrorMultiError is an error wrapping multiple validation errors +// returned by ReconcileError.ValidateAll() if the designated constraints +// aren't met. +type ReconcileErrorMultiError []error // Error returns a concatenation of all the error messages it wraps. -func (m DeleteFileAndReconcileResponseMultiError) Error() string { +func (m ReconcileErrorMultiError) Error() string { var msgs []string for _, err := range m { msgs = append(msgs, err.Error()) @@ -8808,12 +9379,11 @@ func (m DeleteFileAndReconcileResponseMultiError) Error() string { } // AllErrors returns a list of validation violation errors. -func (m DeleteFileAndReconcileResponseMultiError) AllErrors() []error { return m } +func (m ReconcileErrorMultiError) AllErrors() []error { return m } -// DeleteFileAndReconcileResponseValidationError is the validation error -// returned by DeleteFileAndReconcileResponse.Validate if the designated -// constraints aren't met. -type DeleteFileAndReconcileResponseValidationError struct { +// ReconcileErrorValidationError is the validation error returned by +// ReconcileError.Validate if the designated constraints aren't met. +type ReconcileErrorValidationError struct { field string reason string cause error @@ -8821,24 +9391,22 @@ type DeleteFileAndReconcileResponseValidationError struct { } // Field function returns field value. -func (e DeleteFileAndReconcileResponseValidationError) Field() string { return e.field } +func (e ReconcileErrorValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e DeleteFileAndReconcileResponseValidationError) Reason() string { return e.reason } +func (e ReconcileErrorValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e DeleteFileAndReconcileResponseValidationError) Cause() error { return e.cause } +func (e ReconcileErrorValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e DeleteFileAndReconcileResponseValidationError) Key() bool { return e.key } +func (e ReconcileErrorValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e DeleteFileAndReconcileResponseValidationError) ErrorName() string { - return "DeleteFileAndReconcileResponseValidationError" -} +func (e ReconcileErrorValidationError) ErrorName() string { return "ReconcileErrorValidationError" } // Error satisfies the builtin error interface -func (e DeleteFileAndReconcileResponseValidationError) Error() string { +func (e ReconcileErrorValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -8850,14 +9418,14 @@ func (e DeleteFileAndReconcileResponseValidationError) Error() string { } return fmt.Sprintf( - "invalid %sDeleteFileAndReconcileResponse.%s: %s%s", + "invalid %sReconcileError.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = DeleteFileAndReconcileResponseValidationError{} +var _ error = ReconcileErrorValidationError{} var _ interface { Field() string @@ -8865,32 +9433,32 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = DeleteFileAndReconcileResponseValidationError{} +} = ReconcileErrorValidationError{} -// Validate checks the field values on RenameFileAndReconcileRequest with the +// Validate checks the field values on PutFileAndReconcileRequest with the // rules defined in the proto definition for this message. If any rules are // violated, the first error encountered is returned, or nil if there are no violations. -func (m *RenameFileAndReconcileRequest) Validate() error { +func (m *PutFileAndReconcileRequest) Validate() error { return m.validate(false) } -// ValidateAll checks the field values on RenameFileAndReconcileRequest with -// the rules defined in the proto definition for this message. If any rules -// are violated, the result is a list of violation errors wrapped in -// RenameFileAndReconcileRequestMultiError, or nil if none found. -func (m *RenameFileAndReconcileRequest) ValidateAll() error { +// ValidateAll checks the field values on PutFileAndReconcileRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// PutFileAndReconcileRequestMultiError, or nil if none found. +func (m *PutFileAndReconcileRequest) ValidateAll() error { return m.validate(true) } -func (m *RenameFileAndReconcileRequest) validate(all bool) error { +func (m *PutFileAndReconcileRequest) validate(all bool) error { if m == nil { return nil } var errors []error - if !_RenameFileAndReconcileRequest_InstanceId_Pattern.MatchString(m.GetInstanceId()) { - err := RenameFileAndReconcileRequestValidationError{ + if !_PutFileAndReconcileRequest_InstanceId_Pattern.MatchString(m.GetInstanceId()) { + err := PutFileAndReconcileRequestValidationError{ field: "InstanceId", reason: "value does not match regex pattern \"^[_\\\\-a-zA-Z0-9]+$\"", } @@ -8900,28 +9468,32 @@ func (m *RenameFileAndReconcileRequest) validate(all bool) error { errors = append(errors, err) } - // no validation rules for FromPath + // no validation rules for Path - // no validation rules for ToPath + // no validation rules for Blob + + // no validation rules for Create + + // no validation rules for CreateOnly // no validation rules for Dry // no validation rules for Strict if len(errors) > 0 { - return RenameFileAndReconcileRequestMultiError(errors) + return PutFileAndReconcileRequestMultiError(errors) } return nil } -// RenameFileAndReconcileRequestMultiError is an error wrapping multiple -// validation errors returned by RenameFileAndReconcileRequest.ValidateAll() -// if the designated constraints aren't met. -type RenameFileAndReconcileRequestMultiError []error +// PutFileAndReconcileRequestMultiError is an error wrapping multiple +// validation errors returned by PutFileAndReconcileRequest.ValidateAll() if +// the designated constraints aren't met. +type PutFileAndReconcileRequestMultiError []error // Error returns a concatenation of all the error messages it wraps. -func (m RenameFileAndReconcileRequestMultiError) Error() string { +func (m PutFileAndReconcileRequestMultiError) Error() string { var msgs []string for _, err := range m { msgs = append(msgs, err.Error()) @@ -8930,12 +9502,11 @@ func (m RenameFileAndReconcileRequestMultiError) Error() string { } // AllErrors returns a list of validation violation errors. -func (m RenameFileAndReconcileRequestMultiError) AllErrors() []error { return m } +func (m PutFileAndReconcileRequestMultiError) AllErrors() []error { return m } -// RenameFileAndReconcileRequestValidationError is the validation error -// returned by RenameFileAndReconcileRequest.Validate if the designated -// constraints aren't met. -type RenameFileAndReconcileRequestValidationError struct { +// PutFileAndReconcileRequestValidationError is the validation error returned +// by PutFileAndReconcileRequest.Validate if the designated constraints aren't met. +type PutFileAndReconcileRequestValidationError struct { field string reason string cause error @@ -8943,24 +9514,24 @@ type RenameFileAndReconcileRequestValidationError struct { } // Field function returns field value. -func (e RenameFileAndReconcileRequestValidationError) Field() string { return e.field } +func (e PutFileAndReconcileRequestValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e RenameFileAndReconcileRequestValidationError) Reason() string { return e.reason } +func (e PutFileAndReconcileRequestValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e RenameFileAndReconcileRequestValidationError) Cause() error { return e.cause } +func (e PutFileAndReconcileRequestValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e RenameFileAndReconcileRequestValidationError) Key() bool { return e.key } +func (e PutFileAndReconcileRequestValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e RenameFileAndReconcileRequestValidationError) ErrorName() string { - return "RenameFileAndReconcileRequestValidationError" +func (e PutFileAndReconcileRequestValidationError) ErrorName() string { + return "PutFileAndReconcileRequestValidationError" } // Error satisfies the builtin error interface -func (e RenameFileAndReconcileRequestValidationError) Error() string { +func (e PutFileAndReconcileRequestValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -8972,14 +9543,14 @@ func (e RenameFileAndReconcileRequestValidationError) Error() string { } return fmt.Sprintf( - "invalid %sRenameFileAndReconcileRequest.%s: %s%s", + "invalid %sPutFileAndReconcileRequest.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = RenameFileAndReconcileRequestValidationError{} +var _ error = PutFileAndReconcileRequestValidationError{} var _ interface { Field() string @@ -8987,26 +9558,26 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = RenameFileAndReconcileRequestValidationError{} +} = PutFileAndReconcileRequestValidationError{} -var _RenameFileAndReconcileRequest_InstanceId_Pattern = regexp.MustCompile("^[_\\-a-zA-Z0-9]+$") +var _PutFileAndReconcileRequest_InstanceId_Pattern = regexp.MustCompile("^[_\\-a-zA-Z0-9]+$") -// Validate checks the field values on RenameFileAndReconcileResponse with the +// Validate checks the field values on PutFileAndReconcileResponse with the // rules defined in the proto definition for this message. If any rules are // violated, the first error encountered is returned, or nil if there are no violations. -func (m *RenameFileAndReconcileResponse) Validate() error { +func (m *PutFileAndReconcileResponse) Validate() error { return m.validate(false) } -// ValidateAll checks the field values on RenameFileAndReconcileResponse with -// the rules defined in the proto definition for this message. If any rules -// are violated, the result is a list of violation errors wrapped in -// RenameFileAndReconcileResponseMultiError, or nil if none found. -func (m *RenameFileAndReconcileResponse) ValidateAll() error { +// ValidateAll checks the field values on PutFileAndReconcileResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// PutFileAndReconcileResponseMultiError, or nil if none found. +func (m *PutFileAndReconcileResponse) ValidateAll() error { return m.validate(true) } -func (m *RenameFileAndReconcileResponse) validate(all bool) error { +func (m *PutFileAndReconcileResponse) validate(all bool) error { if m == nil { return nil } @@ -9020,7 +9591,7 @@ func (m *RenameFileAndReconcileResponse) validate(all bool) error { switch v := interface{}(item).(type) { case interface{ ValidateAll() error }: if err := v.ValidateAll(); err != nil { - errors = append(errors, RenameFileAndReconcileResponseValidationError{ + errors = append(errors, PutFileAndReconcileResponseValidationError{ field: fmt.Sprintf("Errors[%v]", idx), reason: "embedded message failed validation", cause: err, @@ -9028,7 +9599,7 @@ func (m *RenameFileAndReconcileResponse) validate(all bool) error { } case interface{ Validate() error }: if err := v.Validate(); err != nil { - errors = append(errors, RenameFileAndReconcileResponseValidationError{ + errors = append(errors, PutFileAndReconcileResponseValidationError{ field: fmt.Sprintf("Errors[%v]", idx), reason: "embedded message failed validation", cause: err, @@ -9037,7 +9608,7 @@ func (m *RenameFileAndReconcileResponse) validate(all bool) error { } } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - return RenameFileAndReconcileResponseValidationError{ + return PutFileAndReconcileResponseValidationError{ field: fmt.Sprintf("Errors[%v]", idx), reason: "embedded message failed validation", cause: err, @@ -9048,19 +9619,19 @@ func (m *RenameFileAndReconcileResponse) validate(all bool) error { } if len(errors) > 0 { - return RenameFileAndReconcileResponseMultiError(errors) + return PutFileAndReconcileResponseMultiError(errors) } return nil } -// RenameFileAndReconcileResponseMultiError is an error wrapping multiple -// validation errors returned by RenameFileAndReconcileResponse.ValidateAll() -// if the designated constraints aren't met. -type RenameFileAndReconcileResponseMultiError []error +// PutFileAndReconcileResponseMultiError is an error wrapping multiple +// validation errors returned by PutFileAndReconcileResponse.ValidateAll() if +// the designated constraints aren't met. +type PutFileAndReconcileResponseMultiError []error // Error returns a concatenation of all the error messages it wraps. -func (m RenameFileAndReconcileResponseMultiError) Error() string { +func (m PutFileAndReconcileResponseMultiError) Error() string { var msgs []string for _, err := range m { msgs = append(msgs, err.Error()) @@ -9069,12 +9640,12 @@ func (m RenameFileAndReconcileResponseMultiError) Error() string { } // AllErrors returns a list of validation violation errors. -func (m RenameFileAndReconcileResponseMultiError) AllErrors() []error { return m } +func (m PutFileAndReconcileResponseMultiError) AllErrors() []error { return m } -// RenameFileAndReconcileResponseValidationError is the validation error -// returned by RenameFileAndReconcileResponse.Validate if the designated -// constraints aren't met. -type RenameFileAndReconcileResponseValidationError struct { +// PutFileAndReconcileResponseValidationError is the validation error returned +// by PutFileAndReconcileResponse.Validate if the designated constraints +// aren't met. +type PutFileAndReconcileResponseValidationError struct { field string reason string cause error @@ -9082,24 +9653,24 @@ type RenameFileAndReconcileResponseValidationError struct { } // Field function returns field value. -func (e RenameFileAndReconcileResponseValidationError) Field() string { return e.field } +func (e PutFileAndReconcileResponseValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e RenameFileAndReconcileResponseValidationError) Reason() string { return e.reason } +func (e PutFileAndReconcileResponseValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e RenameFileAndReconcileResponseValidationError) Cause() error { return e.cause } +func (e PutFileAndReconcileResponseValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e RenameFileAndReconcileResponseValidationError) Key() bool { return e.key } +func (e PutFileAndReconcileResponseValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e RenameFileAndReconcileResponseValidationError) ErrorName() string { - return "RenameFileAndReconcileResponseValidationError" +func (e PutFileAndReconcileResponseValidationError) ErrorName() string { + return "PutFileAndReconcileResponseValidationError" } // Error satisfies the builtin error interface -func (e RenameFileAndReconcileResponseValidationError) Error() string { +func (e PutFileAndReconcileResponseValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -9111,14 +9682,14 @@ func (e RenameFileAndReconcileResponseValidationError) Error() string { } return fmt.Sprintf( - "invalid %sRenameFileAndReconcileResponse.%s: %s%s", + "invalid %sPutFileAndReconcileResponse.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = RenameFileAndReconcileResponseValidationError{} +var _ error = PutFileAndReconcileResponseValidationError{} var _ interface { Field() string @@ -9126,32 +9697,32 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = RenameFileAndReconcileResponseValidationError{} +} = PutFileAndReconcileResponseValidationError{} -// Validate checks the field values on RefreshAndReconcileRequest with the +// Validate checks the field values on DeleteFileAndReconcileRequest with the // rules defined in the proto definition for this message. If any rules are // violated, the first error encountered is returned, or nil if there are no violations. -func (m *RefreshAndReconcileRequest) Validate() error { +func (m *DeleteFileAndReconcileRequest) Validate() error { return m.validate(false) } -// ValidateAll checks the field values on RefreshAndReconcileRequest with the -// rules defined in the proto definition for this message. If any rules are -// violated, the result is a list of violation errors wrapped in -// RefreshAndReconcileRequestMultiError, or nil if none found. -func (m *RefreshAndReconcileRequest) ValidateAll() error { +// ValidateAll checks the field values on DeleteFileAndReconcileRequest with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// DeleteFileAndReconcileRequestMultiError, or nil if none found. +func (m *DeleteFileAndReconcileRequest) ValidateAll() error { return m.validate(true) } -func (m *RefreshAndReconcileRequest) validate(all bool) error { +func (m *DeleteFileAndReconcileRequest) validate(all bool) error { if m == nil { return nil } var errors []error - if !_RefreshAndReconcileRequest_InstanceId_Pattern.MatchString(m.GetInstanceId()) { - err := RefreshAndReconcileRequestValidationError{ + if !_DeleteFileAndReconcileRequest_InstanceId_Pattern.MatchString(m.GetInstanceId()) { + err := DeleteFileAndReconcileRequestValidationError{ field: "InstanceId", reason: "value does not match regex pattern \"^[_\\\\-a-zA-Z0-9]+$\"", } @@ -9168,19 +9739,19 @@ func (m *RefreshAndReconcileRequest) validate(all bool) error { // no validation rules for Strict if len(errors) > 0 { - return RefreshAndReconcileRequestMultiError(errors) + return DeleteFileAndReconcileRequestMultiError(errors) } return nil } -// RefreshAndReconcileRequestMultiError is an error wrapping multiple -// validation errors returned by RefreshAndReconcileRequest.ValidateAll() if -// the designated constraints aren't met. -type RefreshAndReconcileRequestMultiError []error +// DeleteFileAndReconcileRequestMultiError is an error wrapping multiple +// validation errors returned by DeleteFileAndReconcileRequest.ValidateAll() +// if the designated constraints aren't met. +type DeleteFileAndReconcileRequestMultiError []error // Error returns a concatenation of all the error messages it wraps. -func (m RefreshAndReconcileRequestMultiError) Error() string { +func (m DeleteFileAndReconcileRequestMultiError) Error() string { var msgs []string for _, err := range m { msgs = append(msgs, err.Error()) @@ -9189,11 +9760,12 @@ func (m RefreshAndReconcileRequestMultiError) Error() string { } // AllErrors returns a list of validation violation errors. -func (m RefreshAndReconcileRequestMultiError) AllErrors() []error { return m } +func (m DeleteFileAndReconcileRequestMultiError) AllErrors() []error { return m } -// RefreshAndReconcileRequestValidationError is the validation error returned -// by RefreshAndReconcileRequest.Validate if the designated constraints aren't met. -type RefreshAndReconcileRequestValidationError struct { +// DeleteFileAndReconcileRequestValidationError is the validation error +// returned by DeleteFileAndReconcileRequest.Validate if the designated +// constraints aren't met. +type DeleteFileAndReconcileRequestValidationError struct { field string reason string cause error @@ -9201,24 +9773,24 @@ type RefreshAndReconcileRequestValidationError struct { } // Field function returns field value. -func (e RefreshAndReconcileRequestValidationError) Field() string { return e.field } +func (e DeleteFileAndReconcileRequestValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e RefreshAndReconcileRequestValidationError) Reason() string { return e.reason } +func (e DeleteFileAndReconcileRequestValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e RefreshAndReconcileRequestValidationError) Cause() error { return e.cause } +func (e DeleteFileAndReconcileRequestValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e RefreshAndReconcileRequestValidationError) Key() bool { return e.key } +func (e DeleteFileAndReconcileRequestValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e RefreshAndReconcileRequestValidationError) ErrorName() string { - return "RefreshAndReconcileRequestValidationError" +func (e DeleteFileAndReconcileRequestValidationError) ErrorName() string { + return "DeleteFileAndReconcileRequestValidationError" } // Error satisfies the builtin error interface -func (e RefreshAndReconcileRequestValidationError) Error() string { +func (e DeleteFileAndReconcileRequestValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -9230,14 +9802,14 @@ func (e RefreshAndReconcileRequestValidationError) Error() string { } return fmt.Sprintf( - "invalid %sRefreshAndReconcileRequest.%s: %s%s", + "invalid %sDeleteFileAndReconcileRequest.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = RefreshAndReconcileRequestValidationError{} +var _ error = DeleteFileAndReconcileRequestValidationError{} var _ interface { Field() string @@ -9245,26 +9817,26 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = RefreshAndReconcileRequestValidationError{} +} = DeleteFileAndReconcileRequestValidationError{} -var _RefreshAndReconcileRequest_InstanceId_Pattern = regexp.MustCompile("^[_\\-a-zA-Z0-9]+$") +var _DeleteFileAndReconcileRequest_InstanceId_Pattern = regexp.MustCompile("^[_\\-a-zA-Z0-9]+$") -// Validate checks the field values on RefreshAndReconcileResponse with the +// Validate checks the field values on DeleteFileAndReconcileResponse with the // rules defined in the proto definition for this message. If any rules are // violated, the first error encountered is returned, or nil if there are no violations. -func (m *RefreshAndReconcileResponse) Validate() error { +func (m *DeleteFileAndReconcileResponse) Validate() error { return m.validate(false) } -// ValidateAll checks the field values on RefreshAndReconcileResponse with the -// rules defined in the proto definition for this message. If any rules are -// violated, the result is a list of violation errors wrapped in -// RefreshAndReconcileResponseMultiError, or nil if none found. -func (m *RefreshAndReconcileResponse) ValidateAll() error { +// ValidateAll checks the field values on DeleteFileAndReconcileResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// DeleteFileAndReconcileResponseMultiError, or nil if none found. +func (m *DeleteFileAndReconcileResponse) ValidateAll() error { return m.validate(true) } -func (m *RefreshAndReconcileResponse) validate(all bool) error { +func (m *DeleteFileAndReconcileResponse) validate(all bool) error { if m == nil { return nil } @@ -9278,7 +9850,7 @@ func (m *RefreshAndReconcileResponse) validate(all bool) error { switch v := interface{}(item).(type) { case interface{ ValidateAll() error }: if err := v.ValidateAll(); err != nil { - errors = append(errors, RefreshAndReconcileResponseValidationError{ + errors = append(errors, DeleteFileAndReconcileResponseValidationError{ field: fmt.Sprintf("Errors[%v]", idx), reason: "embedded message failed validation", cause: err, @@ -9286,7 +9858,7 @@ func (m *RefreshAndReconcileResponse) validate(all bool) error { } case interface{ Validate() error }: if err := v.Validate(); err != nil { - errors = append(errors, RefreshAndReconcileResponseValidationError{ + errors = append(errors, DeleteFileAndReconcileResponseValidationError{ field: fmt.Sprintf("Errors[%v]", idx), reason: "embedded message failed validation", cause: err, @@ -9295,7 +9867,7 @@ func (m *RefreshAndReconcileResponse) validate(all bool) error { } } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - return RefreshAndReconcileResponseValidationError{ + return DeleteFileAndReconcileResponseValidationError{ field: fmt.Sprintf("Errors[%v]", idx), reason: "embedded message failed validation", cause: err, @@ -9306,19 +9878,19 @@ func (m *RefreshAndReconcileResponse) validate(all bool) error { } if len(errors) > 0 { - return RefreshAndReconcileResponseMultiError(errors) + return DeleteFileAndReconcileResponseMultiError(errors) } return nil } -// RefreshAndReconcileResponseMultiError is an error wrapping multiple -// validation errors returned by RefreshAndReconcileResponse.ValidateAll() if -// the designated constraints aren't met. -type RefreshAndReconcileResponseMultiError []error +// DeleteFileAndReconcileResponseMultiError is an error wrapping multiple +// validation errors returned by DeleteFileAndReconcileResponse.ValidateAll() +// if the designated constraints aren't met. +type DeleteFileAndReconcileResponseMultiError []error // Error returns a concatenation of all the error messages it wraps. -func (m RefreshAndReconcileResponseMultiError) Error() string { +func (m DeleteFileAndReconcileResponseMultiError) Error() string { var msgs []string for _, err := range m { msgs = append(msgs, err.Error()) @@ -9327,12 +9899,12 @@ func (m RefreshAndReconcileResponseMultiError) Error() string { } // AllErrors returns a list of validation violation errors. -func (m RefreshAndReconcileResponseMultiError) AllErrors() []error { return m } +func (m DeleteFileAndReconcileResponseMultiError) AllErrors() []error { return m } -// RefreshAndReconcileResponseValidationError is the validation error returned -// by RefreshAndReconcileResponse.Validate if the designated constraints -// aren't met. -type RefreshAndReconcileResponseValidationError struct { +// DeleteFileAndReconcileResponseValidationError is the validation error +// returned by DeleteFileAndReconcileResponse.Validate if the designated +// constraints aren't met. +type DeleteFileAndReconcileResponseValidationError struct { field string reason string cause error @@ -9340,24 +9912,146 @@ type RefreshAndReconcileResponseValidationError struct { } // Field function returns field value. -func (e RefreshAndReconcileResponseValidationError) Field() string { return e.field } +func (e DeleteFileAndReconcileResponseValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e RefreshAndReconcileResponseValidationError) Reason() string { return e.reason } +func (e DeleteFileAndReconcileResponseValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e RefreshAndReconcileResponseValidationError) Cause() error { return e.cause } +func (e DeleteFileAndReconcileResponseValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e RefreshAndReconcileResponseValidationError) Key() bool { return e.key } +func (e DeleteFileAndReconcileResponseValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e DeleteFileAndReconcileResponseValidationError) ErrorName() string { + return "DeleteFileAndReconcileResponseValidationError" +} + +// Error satisfies the builtin error interface +func (e DeleteFileAndReconcileResponseValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sDeleteFileAndReconcileResponse.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = DeleteFileAndReconcileResponseValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = DeleteFileAndReconcileResponseValidationError{} + +// Validate checks the field values on RenameFileAndReconcileRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *RenameFileAndReconcileRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on RenameFileAndReconcileRequest with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// RenameFileAndReconcileRequestMultiError, or nil if none found. +func (m *RenameFileAndReconcileRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *RenameFileAndReconcileRequest) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if !_RenameFileAndReconcileRequest_InstanceId_Pattern.MatchString(m.GetInstanceId()) { + err := RenameFileAndReconcileRequestValidationError{ + field: "InstanceId", + reason: "value does not match regex pattern \"^[_\\\\-a-zA-Z0-9]+$\"", + } + if !all { + return err + } + errors = append(errors, err) + } + + // no validation rules for FromPath + + // no validation rules for ToPath + + // no validation rules for Dry + + // no validation rules for Strict + + if len(errors) > 0 { + return RenameFileAndReconcileRequestMultiError(errors) + } + + return nil +} + +// RenameFileAndReconcileRequestMultiError is an error wrapping multiple +// validation errors returned by RenameFileAndReconcileRequest.ValidateAll() +// if the designated constraints aren't met. +type RenameFileAndReconcileRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m RenameFileAndReconcileRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m RenameFileAndReconcileRequestMultiError) AllErrors() []error { return m } + +// RenameFileAndReconcileRequestValidationError is the validation error +// returned by RenameFileAndReconcileRequest.Validate if the designated +// constraints aren't met. +type RenameFileAndReconcileRequestValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e RenameFileAndReconcileRequestValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e RenameFileAndReconcileRequestValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e RenameFileAndReconcileRequestValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e RenameFileAndReconcileRequestValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e RefreshAndReconcileResponseValidationError) ErrorName() string { - return "RefreshAndReconcileResponseValidationError" +func (e RenameFileAndReconcileRequestValidationError) ErrorName() string { + return "RenameFileAndReconcileRequestValidationError" } // Error satisfies the builtin error interface -func (e RefreshAndReconcileResponseValidationError) Error() string { +func (e RenameFileAndReconcileRequestValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -9369,14 +10063,14 @@ func (e RefreshAndReconcileResponseValidationError) Error() string { } return fmt.Sprintf( - "invalid %sRefreshAndReconcileResponse.%s: %s%s", + "invalid %sRenameFileAndReconcileRequest.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = RefreshAndReconcileResponseValidationError{} +var _ error = RenameFileAndReconcileRequestValidationError{} var _ interface { Field() string @@ -9384,53 +10078,49 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = RefreshAndReconcileResponseValidationError{} +} = RenameFileAndReconcileRequestValidationError{} -// Validate checks the field values on ConnectorSpec with the rules defined in -// the proto definition for this message. If any rules are violated, the first -// error encountered is returned, or nil if there are no violations. -func (m *ConnectorSpec) Validate() error { +var _RenameFileAndReconcileRequest_InstanceId_Pattern = regexp.MustCompile("^[_\\-a-zA-Z0-9]+$") + +// Validate checks the field values on RenameFileAndReconcileResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *RenameFileAndReconcileResponse) Validate() error { return m.validate(false) } -// ValidateAll checks the field values on ConnectorSpec with the rules defined -// in the proto definition for this message. If any rules are violated, the -// result is a list of violation errors wrapped in ConnectorSpecMultiError, or -// nil if none found. -func (m *ConnectorSpec) ValidateAll() error { +// ValidateAll checks the field values on RenameFileAndReconcileResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// RenameFileAndReconcileResponseMultiError, or nil if none found. +func (m *RenameFileAndReconcileResponse) ValidateAll() error { return m.validate(true) } -func (m *ConnectorSpec) validate(all bool) error { +func (m *RenameFileAndReconcileResponse) validate(all bool) error { if m == nil { return nil } var errors []error - // no validation rules for Name - - // no validation rules for DisplayName - - // no validation rules for Description - - for idx, item := range m.GetProperties() { + for idx, item := range m.GetErrors() { _, _ = idx, item if all { switch v := interface{}(item).(type) { case interface{ ValidateAll() error }: if err := v.ValidateAll(); err != nil { - errors = append(errors, ConnectorSpecValidationError{ - field: fmt.Sprintf("Properties[%v]", idx), + errors = append(errors, RenameFileAndReconcileResponseValidationError{ + field: fmt.Sprintf("Errors[%v]", idx), reason: "embedded message failed validation", cause: err, }) } case interface{ Validate() error }: if err := v.Validate(); err != nil { - errors = append(errors, ConnectorSpecValidationError{ - field: fmt.Sprintf("Properties[%v]", idx), + errors = append(errors, RenameFileAndReconcileResponseValidationError{ + field: fmt.Sprintf("Errors[%v]", idx), reason: "embedded message failed validation", cause: err, }) @@ -9438,8 +10128,8 @@ func (m *ConnectorSpec) validate(all bool) error { } } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - return ConnectorSpecValidationError{ - field: fmt.Sprintf("Properties[%v]", idx), + return RenameFileAndReconcileResponseValidationError{ + field: fmt.Sprintf("Errors[%v]", idx), reason: "embedded message failed validation", cause: err, } @@ -9449,19 +10139,19 @@ func (m *ConnectorSpec) validate(all bool) error { } if len(errors) > 0 { - return ConnectorSpecMultiError(errors) + return RenameFileAndReconcileResponseMultiError(errors) } return nil } -// ConnectorSpecMultiError is an error wrapping multiple validation errors -// returned by ConnectorSpec.ValidateAll() if the designated constraints -// aren't met. -type ConnectorSpecMultiError []error +// RenameFileAndReconcileResponseMultiError is an error wrapping multiple +// validation errors returned by RenameFileAndReconcileResponse.ValidateAll() +// if the designated constraints aren't met. +type RenameFileAndReconcileResponseMultiError []error // Error returns a concatenation of all the error messages it wraps. -func (m ConnectorSpecMultiError) Error() string { +func (m RenameFileAndReconcileResponseMultiError) Error() string { var msgs []string for _, err := range m { msgs = append(msgs, err.Error()) @@ -9470,11 +10160,12 @@ func (m ConnectorSpecMultiError) Error() string { } // AllErrors returns a list of validation violation errors. -func (m ConnectorSpecMultiError) AllErrors() []error { return m } +func (m RenameFileAndReconcileResponseMultiError) AllErrors() []error { return m } -// ConnectorSpecValidationError is the validation error returned by -// ConnectorSpec.Validate if the designated constraints aren't met. -type ConnectorSpecValidationError struct { +// RenameFileAndReconcileResponseValidationError is the validation error +// returned by RenameFileAndReconcileResponse.Validate if the designated +// constraints aren't met. +type RenameFileAndReconcileResponseValidationError struct { field string reason string cause error @@ -9482,22 +10173,24 @@ type ConnectorSpecValidationError struct { } // Field function returns field value. -func (e ConnectorSpecValidationError) Field() string { return e.field } +func (e RenameFileAndReconcileResponseValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e ConnectorSpecValidationError) Reason() string { return e.reason } +func (e RenameFileAndReconcileResponseValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e ConnectorSpecValidationError) Cause() error { return e.cause } +func (e RenameFileAndReconcileResponseValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e ConnectorSpecValidationError) Key() bool { return e.key } +func (e RenameFileAndReconcileResponseValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e ConnectorSpecValidationError) ErrorName() string { return "ConnectorSpecValidationError" } +func (e RenameFileAndReconcileResponseValidationError) ErrorName() string { + return "RenameFileAndReconcileResponseValidationError" +} // Error satisfies the builtin error interface -func (e ConnectorSpecValidationError) Error() string { +func (e RenameFileAndReconcileResponseValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -9509,14 +10202,14 @@ func (e ConnectorSpecValidationError) Error() string { } return fmt.Sprintf( - "invalid %sConnectorSpec.%s: %s%s", + "invalid %sRenameFileAndReconcileResponse.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = ConnectorSpecValidationError{} +var _ error = RenameFileAndReconcileResponseValidationError{} var _ interface { Field() string @@ -9524,44 +10217,61 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = ConnectorSpecValidationError{} +} = RenameFileAndReconcileResponseValidationError{} -// Validate checks the field values on ListConnectorsRequest with the rules -// defined in the proto definition for this message. If any rules are +// Validate checks the field values on RefreshAndReconcileRequest with the +// rules defined in the proto definition for this message. If any rules are // violated, the first error encountered is returned, or nil if there are no violations. -func (m *ListConnectorsRequest) Validate() error { +func (m *RefreshAndReconcileRequest) Validate() error { return m.validate(false) } -// ValidateAll checks the field values on ListConnectorsRequest with the rules -// defined in the proto definition for this message. If any rules are +// ValidateAll checks the field values on RefreshAndReconcileRequest with the +// rules defined in the proto definition for this message. If any rules are // violated, the result is a list of violation errors wrapped in -// ListConnectorsRequestMultiError, or nil if none found. -func (m *ListConnectorsRequest) ValidateAll() error { +// RefreshAndReconcileRequestMultiError, or nil if none found. +func (m *RefreshAndReconcileRequest) ValidateAll() error { return m.validate(true) } -func (m *ListConnectorsRequest) validate(all bool) error { +func (m *RefreshAndReconcileRequest) validate(all bool) error { if m == nil { return nil } var errors []error + if !_RefreshAndReconcileRequest_InstanceId_Pattern.MatchString(m.GetInstanceId()) { + err := RefreshAndReconcileRequestValidationError{ + field: "InstanceId", + reason: "value does not match regex pattern \"^[_\\\\-a-zA-Z0-9]+$\"", + } + if !all { + return err + } + errors = append(errors, err) + } + + // no validation rules for Path + + // no validation rules for Dry + + // no validation rules for Strict + if len(errors) > 0 { - return ListConnectorsRequestMultiError(errors) + return RefreshAndReconcileRequestMultiError(errors) } return nil } -// ListConnectorsRequestMultiError is an error wrapping multiple validation -// errors returned by ListConnectorsRequest.ValidateAll() if the designated -// constraints aren't met. -type ListConnectorsRequestMultiError []error +// RefreshAndReconcileRequestMultiError is an error wrapping multiple +// validation errors returned by RefreshAndReconcileRequest.ValidateAll() if +// the designated constraints aren't met. +type RefreshAndReconcileRequestMultiError []error // Error returns a concatenation of all the error messages it wraps. -func (m ListConnectorsRequestMultiError) Error() string { +func (m RefreshAndReconcileRequestMultiError) Error() string { var msgs []string for _, err := range m { msgs = append(msgs, err.Error()) @@ -9570,11 +10280,11 @@ func (m ListConnectorsRequestMultiError) Error() string { } // AllErrors returns a list of validation violation errors. -func (m ListConnectorsRequestMultiError) AllErrors() []error { return m } +func (m RefreshAndReconcileRequestMultiError) AllErrors() []error { return m } -// ListConnectorsRequestValidationError is the validation error returned by -// ListConnectorsRequest.Validate if the designated constraints aren't met. -type ListConnectorsRequestValidationError struct { +// RefreshAndReconcileRequestValidationError is the validation error returned +// by RefreshAndReconcileRequest.Validate if the designated constraints aren't met. +type RefreshAndReconcileRequestValidationError struct { field string reason string cause error @@ -9582,24 +10292,24 @@ type ListConnectorsRequestValidationError struct { } // Field function returns field value. -func (e ListConnectorsRequestValidationError) Field() string { return e.field } +func (e RefreshAndReconcileRequestValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e ListConnectorsRequestValidationError) Reason() string { return e.reason } +func (e RefreshAndReconcileRequestValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e ListConnectorsRequestValidationError) Cause() error { return e.cause } +func (e RefreshAndReconcileRequestValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e ListConnectorsRequestValidationError) Key() bool { return e.key } +func (e RefreshAndReconcileRequestValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e ListConnectorsRequestValidationError) ErrorName() string { - return "ListConnectorsRequestValidationError" +func (e RefreshAndReconcileRequestValidationError) ErrorName() string { + return "RefreshAndReconcileRequestValidationError" } // Error satisfies the builtin error interface -func (e ListConnectorsRequestValidationError) Error() string { +func (e RefreshAndReconcileRequestValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -9611,14 +10321,14 @@ func (e ListConnectorsRequestValidationError) Error() string { } return fmt.Sprintf( - "invalid %sListConnectorsRequest.%s: %s%s", + "invalid %sRefreshAndReconcileRequest.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = ListConnectorsRequestValidationError{} +var _ error = RefreshAndReconcileRequestValidationError{} var _ interface { Field() string @@ -9626,47 +10336,49 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = ListConnectorsRequestValidationError{} +} = RefreshAndReconcileRequestValidationError{} -// Validate checks the field values on ListConnectorsResponse with the rules -// defined in the proto definition for this message. If any rules are +var _RefreshAndReconcileRequest_InstanceId_Pattern = regexp.MustCompile("^[_\\-a-zA-Z0-9]+$") + +// Validate checks the field values on RefreshAndReconcileResponse with the +// rules defined in the proto definition for this message. If any rules are // violated, the first error encountered is returned, or nil if there are no violations. -func (m *ListConnectorsResponse) Validate() error { +func (m *RefreshAndReconcileResponse) Validate() error { return m.validate(false) } -// ValidateAll checks the field values on ListConnectorsResponse with the rules -// defined in the proto definition for this message. If any rules are +// ValidateAll checks the field values on RefreshAndReconcileResponse with the +// rules defined in the proto definition for this message. If any rules are // violated, the result is a list of violation errors wrapped in -// ListConnectorsResponseMultiError, or nil if none found. -func (m *ListConnectorsResponse) ValidateAll() error { +// RefreshAndReconcileResponseMultiError, or nil if none found. +func (m *RefreshAndReconcileResponse) ValidateAll() error { return m.validate(true) } -func (m *ListConnectorsResponse) validate(all bool) error { +func (m *RefreshAndReconcileResponse) validate(all bool) error { if m == nil { return nil } var errors []error - for idx, item := range m.GetConnectors() { + for idx, item := range m.GetErrors() { _, _ = idx, item if all { switch v := interface{}(item).(type) { case interface{ ValidateAll() error }: if err := v.ValidateAll(); err != nil { - errors = append(errors, ListConnectorsResponseValidationError{ - field: fmt.Sprintf("Connectors[%v]", idx), + errors = append(errors, RefreshAndReconcileResponseValidationError{ + field: fmt.Sprintf("Errors[%v]", idx), reason: "embedded message failed validation", cause: err, }) } case interface{ Validate() error }: if err := v.Validate(); err != nil { - errors = append(errors, ListConnectorsResponseValidationError{ - field: fmt.Sprintf("Connectors[%v]", idx), + errors = append(errors, RefreshAndReconcileResponseValidationError{ + field: fmt.Sprintf("Errors[%v]", idx), reason: "embedded message failed validation", cause: err, }) @@ -9674,8 +10386,8 @@ func (m *ListConnectorsResponse) validate(all bool) error { } } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - return ListConnectorsResponseValidationError{ - field: fmt.Sprintf("Connectors[%v]", idx), + return RefreshAndReconcileResponseValidationError{ + field: fmt.Sprintf("Errors[%v]", idx), reason: "embedded message failed validation", cause: err, } @@ -9685,19 +10397,19 @@ func (m *ListConnectorsResponse) validate(all bool) error { } if len(errors) > 0 { - return ListConnectorsResponseMultiError(errors) + return RefreshAndReconcileResponseMultiError(errors) } return nil } -// ListConnectorsResponseMultiError is an error wrapping multiple validation -// errors returned by ListConnectorsResponse.ValidateAll() if the designated -// constraints aren't met. -type ListConnectorsResponseMultiError []error +// RefreshAndReconcileResponseMultiError is an error wrapping multiple +// validation errors returned by RefreshAndReconcileResponse.ValidateAll() if +// the designated constraints aren't met. +type RefreshAndReconcileResponseMultiError []error // Error returns a concatenation of all the error messages it wraps. -func (m ListConnectorsResponseMultiError) Error() string { +func (m RefreshAndReconcileResponseMultiError) Error() string { var msgs []string for _, err := range m { msgs = append(msgs, err.Error()) @@ -9706,11 +10418,12 @@ func (m ListConnectorsResponseMultiError) Error() string { } // AllErrors returns a list of validation violation errors. -func (m ListConnectorsResponseMultiError) AllErrors() []error { return m } +func (m RefreshAndReconcileResponseMultiError) AllErrors() []error { return m } -// ListConnectorsResponseValidationError is the validation error returned by -// ListConnectorsResponse.Validate if the designated constraints aren't met. -type ListConnectorsResponseValidationError struct { +// RefreshAndReconcileResponseValidationError is the validation error returned +// by RefreshAndReconcileResponse.Validate if the designated constraints +// aren't met. +type RefreshAndReconcileResponseValidationError struct { field string reason string cause error @@ -9718,24 +10431,24 @@ type ListConnectorsResponseValidationError struct { } // Field function returns field value. -func (e ListConnectorsResponseValidationError) Field() string { return e.field } +func (e RefreshAndReconcileResponseValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e ListConnectorsResponseValidationError) Reason() string { return e.reason } +func (e RefreshAndReconcileResponseValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e ListConnectorsResponseValidationError) Cause() error { return e.cause } +func (e RefreshAndReconcileResponseValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e ListConnectorsResponseValidationError) Key() bool { return e.key } +func (e RefreshAndReconcileResponseValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e ListConnectorsResponseValidationError) ErrorName() string { - return "ListConnectorsResponseValidationError" +func (e RefreshAndReconcileResponseValidationError) ErrorName() string { + return "RefreshAndReconcileResponseValidationError" } // Error satisfies the builtin error interface -func (e ListConnectorsResponseValidationError) Error() string { +func (e RefreshAndReconcileResponseValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -9747,14 +10460,14 @@ func (e ListConnectorsResponseValidationError) Error() string { } return fmt.Sprintf( - "invalid %sListConnectorsResponse.%s: %s%s", + "invalid %sRefreshAndReconcileResponse.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = ListConnectorsResponseValidationError{} +var _ error = RefreshAndReconcileResponseValidationError{} var _ interface { Field() string @@ -9762,7 +10475,7 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = ListConnectorsResponseValidationError{} +} = RefreshAndReconcileResponseValidationError{} // Validate checks the field values on IssueDevJWTRequest with the rules // defined in the proto definition for this message. If any rules are @@ -9994,46 +10707,62 @@ var _ interface { ErrorName() string } = IssueDevJWTResponseValidationError{} -// Validate checks the field values on ReconcileError_CharLocation with the -// rules defined in the proto definition for this message. If any rules are +// Validate checks the field values on ConnectorDriver_Property with the rules +// defined in the proto definition for this message. If any rules are // violated, the first error encountered is returned, or nil if there are no violations. -func (m *ReconcileError_CharLocation) Validate() error { +func (m *ConnectorDriver_Property) Validate() error { return m.validate(false) } -// ValidateAll checks the field values on ReconcileError_CharLocation with the +// ValidateAll checks the field values on ConnectorDriver_Property with the // rules defined in the proto definition for this message. If any rules are // violated, the result is a list of violation errors wrapped in -// ReconcileError_CharLocationMultiError, or nil if none found. -func (m *ReconcileError_CharLocation) ValidateAll() error { +// ConnectorDriver_PropertyMultiError, or nil if none found. +func (m *ConnectorDriver_Property) ValidateAll() error { return m.validate(true) } -func (m *ReconcileError_CharLocation) validate(all bool) error { +func (m *ConnectorDriver_Property) validate(all bool) error { if m == nil { return nil } var errors []error - // no validation rules for Line + // no validation rules for Key - // no validation rules for Column + // no validation rules for Type + + // no validation rules for Required + + // no validation rules for DisplayName + + // no validation rules for Description + + // no validation rules for DocsUrl + + // no validation rules for Hint + + // no validation rules for Default + + // no validation rules for Placeholder + + // no validation rules for Secret if len(errors) > 0 { - return ReconcileError_CharLocationMultiError(errors) + return ConnectorDriver_PropertyMultiError(errors) } return nil } -// ReconcileError_CharLocationMultiError is an error wrapping multiple -// validation errors returned by ReconcileError_CharLocation.ValidateAll() if -// the designated constraints aren't met. -type ReconcileError_CharLocationMultiError []error +// ConnectorDriver_PropertyMultiError is an error wrapping multiple validation +// errors returned by ConnectorDriver_Property.ValidateAll() if the designated +// constraints aren't met. +type ConnectorDriver_PropertyMultiError []error // Error returns a concatenation of all the error messages it wraps. -func (m ReconcileError_CharLocationMultiError) Error() string { +func (m ConnectorDriver_PropertyMultiError) Error() string { var msgs []string for _, err := range m { msgs = append(msgs, err.Error()) @@ -10042,12 +10771,11 @@ func (m ReconcileError_CharLocationMultiError) Error() string { } // AllErrors returns a list of validation violation errors. -func (m ReconcileError_CharLocationMultiError) AllErrors() []error { return m } +func (m ConnectorDriver_PropertyMultiError) AllErrors() []error { return m } -// ReconcileError_CharLocationValidationError is the validation error returned -// by ReconcileError_CharLocation.Validate if the designated constraints -// aren't met. -type ReconcileError_CharLocationValidationError struct { +// ConnectorDriver_PropertyValidationError is the validation error returned by +// ConnectorDriver_Property.Validate if the designated constraints aren't met. +type ConnectorDriver_PropertyValidationError struct { field string reason string cause error @@ -10055,24 +10783,24 @@ type ReconcileError_CharLocationValidationError struct { } // Field function returns field value. -func (e ReconcileError_CharLocationValidationError) Field() string { return e.field } +func (e ConnectorDriver_PropertyValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e ReconcileError_CharLocationValidationError) Reason() string { return e.reason } +func (e ConnectorDriver_PropertyValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e ReconcileError_CharLocationValidationError) Cause() error { return e.cause } +func (e ConnectorDriver_PropertyValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e ReconcileError_CharLocationValidationError) Key() bool { return e.key } +func (e ConnectorDriver_PropertyValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e ReconcileError_CharLocationValidationError) ErrorName() string { - return "ReconcileError_CharLocationValidationError" +func (e ConnectorDriver_PropertyValidationError) ErrorName() string { + return "ConnectorDriver_PropertyValidationError" } // Error satisfies the builtin error interface -func (e ReconcileError_CharLocationValidationError) Error() string { +func (e ConnectorDriver_PropertyValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -10084,14 +10812,14 @@ func (e ReconcileError_CharLocationValidationError) Error() string { } return fmt.Sprintf( - "invalid %sReconcileError_CharLocation.%s: %s%s", + "invalid %sConnectorDriver_Property.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = ReconcileError_CharLocationValidationError{} +var _ error = ConnectorDriver_PropertyValidationError{} var _ interface { Field() string @@ -10099,69 +10827,48 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = ReconcileError_CharLocationValidationError{} +} = ConnectorDriver_PropertyValidationError{} -// Validate checks the field values on ConnectorSpec_Property with the rules -// defined in the proto definition for this message. If any rules are +// Validate checks the field values on ReconcileError_CharLocation with the +// rules defined in the proto definition for this message. If any rules are // violated, the first error encountered is returned, or nil if there are no violations. -func (m *ConnectorSpec_Property) Validate() error { +func (m *ReconcileError_CharLocation) Validate() error { return m.validate(false) } -// ValidateAll checks the field values on ConnectorSpec_Property with the rules -// defined in the proto definition for this message. If any rules are +// ValidateAll checks the field values on ReconcileError_CharLocation with the +// rules defined in the proto definition for this message. If any rules are // violated, the result is a list of violation errors wrapped in -// ConnectorSpec_PropertyMultiError, or nil if none found. -func (m *ConnectorSpec_Property) ValidateAll() error { +// ReconcileError_CharLocationMultiError, or nil if none found. +func (m *ReconcileError_CharLocation) ValidateAll() error { return m.validate(true) } -func (m *ConnectorSpec_Property) validate(all bool) error { +func (m *ReconcileError_CharLocation) validate(all bool) error { if m == nil { return nil } var errors []error - // no validation rules for Key - - // no validation rules for DisplayName - - // no validation rules for Description - - // no validation rules for Placeholder - - if _, ok := ConnectorSpec_Property_Type_name[int32(m.GetType())]; !ok { - err := ConnectorSpec_PropertyValidationError{ - field: "Type", - reason: "value must be one of the defined enum values", - } - if !all { - return err - } - errors = append(errors, err) - } - - // no validation rules for Nullable - - // no validation rules for Hint + // no validation rules for Line - // no validation rules for Href + // no validation rules for Column if len(errors) > 0 { - return ConnectorSpec_PropertyMultiError(errors) + return ReconcileError_CharLocationMultiError(errors) } return nil } -// ConnectorSpec_PropertyMultiError is an error wrapping multiple validation -// errors returned by ConnectorSpec_Property.ValidateAll() if the designated -// constraints aren't met. -type ConnectorSpec_PropertyMultiError []error +// ReconcileError_CharLocationMultiError is an error wrapping multiple +// validation errors returned by ReconcileError_CharLocation.ValidateAll() if +// the designated constraints aren't met. +type ReconcileError_CharLocationMultiError []error // Error returns a concatenation of all the error messages it wraps. -func (m ConnectorSpec_PropertyMultiError) Error() string { +func (m ReconcileError_CharLocationMultiError) Error() string { var msgs []string for _, err := range m { msgs = append(msgs, err.Error()) @@ -10170,11 +10877,12 @@ func (m ConnectorSpec_PropertyMultiError) Error() string { } // AllErrors returns a list of validation violation errors. -func (m ConnectorSpec_PropertyMultiError) AllErrors() []error { return m } +func (m ReconcileError_CharLocationMultiError) AllErrors() []error { return m } -// ConnectorSpec_PropertyValidationError is the validation error returned by -// ConnectorSpec_Property.Validate if the designated constraints aren't met. -type ConnectorSpec_PropertyValidationError struct { +// ReconcileError_CharLocationValidationError is the validation error returned +// by ReconcileError_CharLocation.Validate if the designated constraints +// aren't met. +type ReconcileError_CharLocationValidationError struct { field string reason string cause error @@ -10182,24 +10890,24 @@ type ConnectorSpec_PropertyValidationError struct { } // Field function returns field value. -func (e ConnectorSpec_PropertyValidationError) Field() string { return e.field } +func (e ReconcileError_CharLocationValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e ConnectorSpec_PropertyValidationError) Reason() string { return e.reason } +func (e ReconcileError_CharLocationValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e ConnectorSpec_PropertyValidationError) Cause() error { return e.cause } +func (e ReconcileError_CharLocationValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e ConnectorSpec_PropertyValidationError) Key() bool { return e.key } +func (e ReconcileError_CharLocationValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e ConnectorSpec_PropertyValidationError) ErrorName() string { - return "ConnectorSpec_PropertyValidationError" +func (e ReconcileError_CharLocationValidationError) ErrorName() string { + return "ReconcileError_CharLocationValidationError" } // Error satisfies the builtin error interface -func (e ConnectorSpec_PropertyValidationError) Error() string { +func (e ReconcileError_CharLocationValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -10211,14 +10919,14 @@ func (e ConnectorSpec_PropertyValidationError) Error() string { } return fmt.Sprintf( - "invalid %sConnectorSpec_Property.%s: %s%s", + "invalid %sReconcileError_CharLocation.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = ConnectorSpec_PropertyValidationError{} +var _ error = ReconcileError_CharLocationValidationError{} var _ interface { Field() string @@ -10226,4 +10934,4 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = ConnectorSpec_PropertyValidationError{} +} = ReconcileError_CharLocationValidationError{} diff --git a/proto/gen/rill/runtime/v1/api_grpc.pb.go b/proto/gen/rill/runtime/v1/api_grpc.pb.go index 068bbbb4f5c4..db9f016f5062 100644 --- a/proto/gen/rill/runtime/v1/api_grpc.pb.go +++ b/proto/gen/rill/runtime/v1/api_grpc.pb.go @@ -43,6 +43,9 @@ const ( RuntimeService_WatchResources_FullMethodName = "/rill.runtime.v1.RuntimeService/WatchResources" RuntimeService_GetResource_FullMethodName = "/rill.runtime.v1.RuntimeService/GetResource" RuntimeService_CreateTrigger_FullMethodName = "/rill.runtime.v1.RuntimeService/CreateTrigger" + RuntimeService_ListConnectorDrivers_FullMethodName = "/rill.runtime.v1.RuntimeService/ListConnectorDrivers" + RuntimeService_AnalyzeConnectors_FullMethodName = "/rill.runtime.v1.RuntimeService/AnalyzeConnectors" + RuntimeService_ListNotifierConnectors_FullMethodName = "/rill.runtime.v1.RuntimeService/ListNotifierConnectors" RuntimeService_ListCatalogEntries_FullMethodName = "/rill.runtime.v1.RuntimeService/ListCatalogEntries" RuntimeService_GetCatalogEntry_FullMethodName = "/rill.runtime.v1.RuntimeService/GetCatalogEntry" RuntimeService_TriggerRefresh_FullMethodName = "/rill.runtime.v1.RuntimeService/TriggerRefresh" @@ -51,7 +54,6 @@ const ( RuntimeService_DeleteFileAndReconcile_FullMethodName = "/rill.runtime.v1.RuntimeService/DeleteFileAndReconcile" RuntimeService_RenameFileAndReconcile_FullMethodName = "/rill.runtime.v1.RuntimeService/RenameFileAndReconcile" RuntimeService_RefreshAndReconcile_FullMethodName = "/rill.runtime.v1.RuntimeService/RefreshAndReconcile" - RuntimeService_ListConnectors_FullMethodName = "/rill.runtime.v1.RuntimeService/ListConnectors" RuntimeService_IssueDevJWT_FullMethodName = "/rill.runtime.v1.RuntimeService/IssueDevJWT" ) @@ -109,6 +111,14 @@ type RuntimeServiceClient interface { // CreateTrigger creates a trigger in the catalog. // Triggers are ephemeral resources that will be cleaned up by the controller. CreateTrigger(ctx context.Context, in *CreateTriggerRequest, opts ...grpc.CallOption) (*CreateTriggerResponse, error) + // ListConnectorDrivers returns a description of all the connector drivers registed in the runtime, + // including their configuration specs and the capabilities they support. + ListConnectorDrivers(ctx context.Context, in *ListConnectorDriversRequest, opts ...grpc.CallOption) (*ListConnectorDriversResponse, error) + // AnalyzeConnectors scans all the project files and returns information about all referenced connectors. + AnalyzeConnectors(ctx context.Context, in *AnalyzeConnectorsRequest, opts ...grpc.CallOption) (*AnalyzeConnectorsResponse, error) + // ListNotifierConnectors returns the names of all configured connectors that can be used as notifiers. + // This API is much faster than AnalyzeConnectors and can be called without admin-level permissions. + ListNotifierConnectors(ctx context.Context, in *ListNotifierConnectorsRequest, opts ...grpc.CallOption) (*ListNotifierConnectorsResponse, error) // ListCatalogEntries lists all the entries registered in an instance's catalog (like tables, sources or metrics views) ListCatalogEntries(ctx context.Context, in *ListCatalogEntriesRequest, opts ...grpc.CallOption) (*ListCatalogEntriesResponse, error) // GetCatalogEntry returns information about a specific entry in the catalog @@ -130,9 +140,6 @@ type RuntimeServiceClient interface { // RenameFileAndReconcile combines RenameFile and Reconcile in a single endpoint to reduce latency. RenameFileAndReconcile(ctx context.Context, in *RenameFileAndReconcileRequest, opts ...grpc.CallOption) (*RenameFileAndReconcileResponse, error) RefreshAndReconcile(ctx context.Context, in *RefreshAndReconcileRequest, opts ...grpc.CallOption) (*RefreshAndReconcileResponse, error) - // ListConnectors returns a description of all the connectors implemented in the runtime, - // including their schema and validation rules - ListConnectors(ctx context.Context, in *ListConnectorsRequest, opts ...grpc.CallOption) (*ListConnectorsResponse, error) IssueDevJWT(ctx context.Context, in *IssueDevJWTRequest, opts ...grpc.CallOption) (*IssueDevJWTResponse, error) } @@ -429,6 +436,33 @@ func (c *runtimeServiceClient) CreateTrigger(ctx context.Context, in *CreateTrig return out, nil } +func (c *runtimeServiceClient) ListConnectorDrivers(ctx context.Context, in *ListConnectorDriversRequest, opts ...grpc.CallOption) (*ListConnectorDriversResponse, error) { + out := new(ListConnectorDriversResponse) + err := c.cc.Invoke(ctx, RuntimeService_ListConnectorDrivers_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *runtimeServiceClient) AnalyzeConnectors(ctx context.Context, in *AnalyzeConnectorsRequest, opts ...grpc.CallOption) (*AnalyzeConnectorsResponse, error) { + out := new(AnalyzeConnectorsResponse) + err := c.cc.Invoke(ctx, RuntimeService_AnalyzeConnectors_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *runtimeServiceClient) ListNotifierConnectors(ctx context.Context, in *ListNotifierConnectorsRequest, opts ...grpc.CallOption) (*ListNotifierConnectorsResponse, error) { + out := new(ListNotifierConnectorsResponse) + err := c.cc.Invoke(ctx, RuntimeService_ListNotifierConnectors_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *runtimeServiceClient) ListCatalogEntries(ctx context.Context, in *ListCatalogEntriesRequest, opts ...grpc.CallOption) (*ListCatalogEntriesResponse, error) { out := new(ListCatalogEntriesResponse) err := c.cc.Invoke(ctx, RuntimeService_ListCatalogEntries_FullMethodName, in, out, opts...) @@ -501,15 +535,6 @@ func (c *runtimeServiceClient) RefreshAndReconcile(ctx context.Context, in *Refr return out, nil } -func (c *runtimeServiceClient) ListConnectors(ctx context.Context, in *ListConnectorsRequest, opts ...grpc.CallOption) (*ListConnectorsResponse, error) { - out := new(ListConnectorsResponse) - err := c.cc.Invoke(ctx, RuntimeService_ListConnectors_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *runtimeServiceClient) IssueDevJWT(ctx context.Context, in *IssueDevJWTRequest, opts ...grpc.CallOption) (*IssueDevJWTResponse, error) { out := new(IssueDevJWTResponse) err := c.cc.Invoke(ctx, RuntimeService_IssueDevJWT_FullMethodName, in, out, opts...) @@ -573,6 +598,14 @@ type RuntimeServiceServer interface { // CreateTrigger creates a trigger in the catalog. // Triggers are ephemeral resources that will be cleaned up by the controller. CreateTrigger(context.Context, *CreateTriggerRequest) (*CreateTriggerResponse, error) + // ListConnectorDrivers returns a description of all the connector drivers registed in the runtime, + // including their configuration specs and the capabilities they support. + ListConnectorDrivers(context.Context, *ListConnectorDriversRequest) (*ListConnectorDriversResponse, error) + // AnalyzeConnectors scans all the project files and returns information about all referenced connectors. + AnalyzeConnectors(context.Context, *AnalyzeConnectorsRequest) (*AnalyzeConnectorsResponse, error) + // ListNotifierConnectors returns the names of all configured connectors that can be used as notifiers. + // This API is much faster than AnalyzeConnectors and can be called without admin-level permissions. + ListNotifierConnectors(context.Context, *ListNotifierConnectorsRequest) (*ListNotifierConnectorsResponse, error) // ListCatalogEntries lists all the entries registered in an instance's catalog (like tables, sources or metrics views) ListCatalogEntries(context.Context, *ListCatalogEntriesRequest) (*ListCatalogEntriesResponse, error) // GetCatalogEntry returns information about a specific entry in the catalog @@ -594,9 +627,6 @@ type RuntimeServiceServer interface { // RenameFileAndReconcile combines RenameFile and Reconcile in a single endpoint to reduce latency. RenameFileAndReconcile(context.Context, *RenameFileAndReconcileRequest) (*RenameFileAndReconcileResponse, error) RefreshAndReconcile(context.Context, *RefreshAndReconcileRequest) (*RefreshAndReconcileResponse, error) - // ListConnectors returns a description of all the connectors implemented in the runtime, - // including their schema and validation rules - ListConnectors(context.Context, *ListConnectorsRequest) (*ListConnectorsResponse, error) IssueDevJWT(context.Context, *IssueDevJWTRequest) (*IssueDevJWTResponse, error) mustEmbedUnimplementedRuntimeServiceServer() } @@ -677,6 +707,15 @@ func (UnimplementedRuntimeServiceServer) GetResource(context.Context, *GetResour func (UnimplementedRuntimeServiceServer) CreateTrigger(context.Context, *CreateTriggerRequest) (*CreateTriggerResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method CreateTrigger not implemented") } +func (UnimplementedRuntimeServiceServer) ListConnectorDrivers(context.Context, *ListConnectorDriversRequest) (*ListConnectorDriversResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListConnectorDrivers not implemented") +} +func (UnimplementedRuntimeServiceServer) AnalyzeConnectors(context.Context, *AnalyzeConnectorsRequest) (*AnalyzeConnectorsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method AnalyzeConnectors not implemented") +} +func (UnimplementedRuntimeServiceServer) ListNotifierConnectors(context.Context, *ListNotifierConnectorsRequest) (*ListNotifierConnectorsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListNotifierConnectors not implemented") +} func (UnimplementedRuntimeServiceServer) ListCatalogEntries(context.Context, *ListCatalogEntriesRequest) (*ListCatalogEntriesResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListCatalogEntries not implemented") } @@ -701,9 +740,6 @@ func (UnimplementedRuntimeServiceServer) RenameFileAndReconcile(context.Context, func (UnimplementedRuntimeServiceServer) RefreshAndReconcile(context.Context, *RefreshAndReconcileRequest) (*RefreshAndReconcileResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method RefreshAndReconcile not implemented") } -func (UnimplementedRuntimeServiceServer) ListConnectors(context.Context, *ListConnectorsRequest) (*ListConnectorsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListConnectors not implemented") -} func (UnimplementedRuntimeServiceServer) IssueDevJWT(context.Context, *IssueDevJWTRequest) (*IssueDevJWTResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method IssueDevJWT not implemented") } @@ -1161,6 +1197,60 @@ func _RuntimeService_CreateTrigger_Handler(srv interface{}, ctx context.Context, return interceptor(ctx, in, info, handler) } +func _RuntimeService_ListConnectorDrivers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListConnectorDriversRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(RuntimeServiceServer).ListConnectorDrivers(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: RuntimeService_ListConnectorDrivers_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(RuntimeServiceServer).ListConnectorDrivers(ctx, req.(*ListConnectorDriversRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _RuntimeService_AnalyzeConnectors_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AnalyzeConnectorsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(RuntimeServiceServer).AnalyzeConnectors(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: RuntimeService_AnalyzeConnectors_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(RuntimeServiceServer).AnalyzeConnectors(ctx, req.(*AnalyzeConnectorsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _RuntimeService_ListNotifierConnectors_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListNotifierConnectorsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(RuntimeServiceServer).ListNotifierConnectors(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: RuntimeService_ListNotifierConnectors_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(RuntimeServiceServer).ListNotifierConnectors(ctx, req.(*ListNotifierConnectorsRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _RuntimeService_ListCatalogEntries_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ListCatalogEntriesRequest) if err := dec(in); err != nil { @@ -1305,24 +1395,6 @@ func _RuntimeService_RefreshAndReconcile_Handler(srv interface{}, ctx context.Co return interceptor(ctx, in, info, handler) } -func _RuntimeService_ListConnectors_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListConnectorsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(RuntimeServiceServer).ListConnectors(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: RuntimeService_ListConnectors_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(RuntimeServiceServer).ListConnectors(ctx, req.(*ListConnectorsRequest)) - } - return interceptor(ctx, in, info, handler) -} - func _RuntimeService_IssueDevJWT_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(IssueDevJWTRequest) if err := dec(in); err != nil { @@ -1432,6 +1504,18 @@ var RuntimeService_ServiceDesc = grpc.ServiceDesc{ MethodName: "CreateTrigger", Handler: _RuntimeService_CreateTrigger_Handler, }, + { + MethodName: "ListConnectorDrivers", + Handler: _RuntimeService_ListConnectorDrivers_Handler, + }, + { + MethodName: "AnalyzeConnectors", + Handler: _RuntimeService_AnalyzeConnectors_Handler, + }, + { + MethodName: "ListNotifierConnectors", + Handler: _RuntimeService_ListNotifierConnectors_Handler, + }, { MethodName: "ListCatalogEntries", Handler: _RuntimeService_ListCatalogEntries_Handler, @@ -1464,10 +1548,6 @@ var RuntimeService_ServiceDesc = grpc.ServiceDesc{ MethodName: "RefreshAndReconcile", Handler: _RuntimeService_RefreshAndReconcile_Handler, }, - { - MethodName: "ListConnectors", - Handler: _RuntimeService_ListConnectors_Handler, - }, { MethodName: "IssueDevJWT", Handler: _RuntimeService_IssueDevJWT_Handler, diff --git a/proto/gen/rill/runtime/v1/connectors.pb.go b/proto/gen/rill/runtime/v1/connectors.pb.go index 3015f7fdbe00..297553a1ceb7 100644 --- a/proto/gen/rill/runtime/v1/connectors.pb.go +++ b/proto/gen/rill/runtime/v1/connectors.pb.go @@ -1632,163 +1632,6 @@ func (x *BigQueryListTablesResponse) GetNames() []string { return nil } -type ScanConnectorsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - InstanceId string `protobuf:"bytes,1,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"` -} - -func (x *ScanConnectorsRequest) Reset() { - *x = ScanConnectorsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_rill_runtime_v1_connectors_proto_msgTypes[25] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ScanConnectorsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ScanConnectorsRequest) ProtoMessage() {} - -func (x *ScanConnectorsRequest) ProtoReflect() protoreflect.Message { - mi := &file_rill_runtime_v1_connectors_proto_msgTypes[25] - 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 ScanConnectorsRequest.ProtoReflect.Descriptor instead. -func (*ScanConnectorsRequest) Descriptor() ([]byte, []int) { - return file_rill_runtime_v1_connectors_proto_rawDescGZIP(), []int{25} -} - -func (x *ScanConnectorsRequest) GetInstanceId() string { - if x != nil { - return x.InstanceId - } - return "" -} - -type ScanConnectorsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Connectors []*ScannedConnector `protobuf:"bytes,1,rep,name=connectors,proto3" json:"connectors,omitempty"` -} - -func (x *ScanConnectorsResponse) Reset() { - *x = ScanConnectorsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_rill_runtime_v1_connectors_proto_msgTypes[26] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ScanConnectorsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ScanConnectorsResponse) ProtoMessage() {} - -func (x *ScanConnectorsResponse) ProtoReflect() protoreflect.Message { - mi := &file_rill_runtime_v1_connectors_proto_msgTypes[26] - 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 ScanConnectorsResponse.ProtoReflect.Descriptor instead. -func (*ScanConnectorsResponse) Descriptor() ([]byte, []int) { - return file_rill_runtime_v1_connectors_proto_rawDescGZIP(), []int{26} -} - -func (x *ScanConnectorsResponse) GetConnectors() []*ScannedConnector { - if x != nil { - return x.Connectors - } - return nil -} - -type ScannedConnector struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` - HasAnonymousAccess bool `protobuf:"varint,3,opt,name=has_anonymous_access,json=hasAnonymousAccess,proto3" json:"has_anonymous_access,omitempty"` // reports whether access is present without any credentials -} - -func (x *ScannedConnector) Reset() { - *x = ScannedConnector{} - if protoimpl.UnsafeEnabled { - mi := &file_rill_runtime_v1_connectors_proto_msgTypes[27] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ScannedConnector) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ScannedConnector) ProtoMessage() {} - -func (x *ScannedConnector) ProtoReflect() protoreflect.Message { - mi := &file_rill_runtime_v1_connectors_proto_msgTypes[27] - 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 ScannedConnector.ProtoReflect.Descriptor instead. -func (*ScannedConnector) Descriptor() ([]byte, []int) { - return file_rill_runtime_v1_connectors_proto_rawDescGZIP(), []int{27} -} - -func (x *ScannedConnector) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *ScannedConnector) GetType() string { - if x != nil { - return x.Type - } - return "" -} - -func (x *ScannedConnector) GetHasAnonymousAccess() bool { - if x != nil { - return x.HasAnonymousAccess - } - return false -} - var File_rill_runtime_v1_connectors_proto protoreflect.FileDescriptor var file_rill_runtime_v1_connectors_proto_rawDesc = []byte{ @@ -2013,141 +1856,117 @@ var file_rill_runtime_v1_connectors_proto_rawDesc = []byte{ 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x38, 0x0a, 0x15, 0x53, 0x63, - 0x61, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x49, 0x64, 0x22, 0x5b, 0x0a, 0x16, 0x53, 0x63, 0x61, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, - 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x73, 0x22, 0x6c, 0x0a, 0x10, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x30, 0x0a, - 0x14, 0x68, 0x61, 0x73, 0x5f, 0x61, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x6f, 0x75, 0x73, 0x5f, 0x61, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x68, 0x61, 0x73, - 0x41, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x6f, 0x75, 0x73, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x32, - 0x88, 0x0d, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x12, 0x7e, 0x0a, 0x0e, 0x53, 0x63, 0x61, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x43, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, - 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x2f, - 0x73, 0x63, 0x61, 0x6e, 0x12, 0x76, 0x0a, 0x0d, 0x53, 0x33, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x33, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, - 0x33, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f, 0x76, - 0x31, 0x2f, 0x73, 0x33, 0x2f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x86, 0x01, 0x0a, - 0x0d, 0x53, 0x33, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x25, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x53, 0x33, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x33, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x33, 0x2f, 0x62, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x2f, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x7d, 0x2f, 0x6f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x99, 0x01, 0x0a, 0x13, 0x53, 0x33, 0x47, 0x65, 0x74, 0x42, - 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2b, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x53, 0x33, 0x47, 0x65, 0x74, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x33, 0x47, - 0x65, 0x74, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, - 0x12, 0x1f, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x33, 0x2f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2f, - 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x7d, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x12, 0x94, 0x01, 0x0a, 0x14, 0x53, 0x33, 0x47, 0x65, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2c, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x33, 0x47, - 0x65, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x03, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x32, 0x88, 0x0c, 0x0a, 0x10, 0x43, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, + 0x76, 0x0a, 0x0d, 0x53, 0x33, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, + 0x12, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x53, 0x33, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x33, 0x4c, 0x69, 0x73, 0x74, + 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x33, 0x2f, + 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x86, 0x01, 0x0a, 0x0d, 0x53, 0x33, 0x4c, 0x69, + 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x33, 0x4c, 0x69, + 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x53, 0x33, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, + 0x12, 0x1e, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x33, 0x2f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2f, + 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x7d, 0x2f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x12, 0x99, 0x01, 0x0a, 0x13, 0x53, 0x33, 0x47, 0x65, 0x74, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x33, 0x47, 0x65, 0x74, - 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x12, - 0x17, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x33, 0x2f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x61, 0x6c, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x7a, 0x0a, 0x0e, 0x47, 0x43, 0x53, 0x4c, - 0x69, 0x73, 0x74, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x26, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x43, 0x53, - 0x4c, 0x69, 0x73, 0x74, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x43, 0x53, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x75, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x17, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x11, 0x12, 0x0f, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x63, 0x73, 0x2f, 0x62, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x12, 0x8a, 0x01, 0x0a, 0x0e, 0x47, 0x43, 0x53, 0x4c, 0x69, 0x73, 0x74, - 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, - 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x43, 0x53, 0x4c, 0x69, 0x73, - 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x43, 0x53, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, - 0x12, 0x1f, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x63, 0x73, 0x2f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x2f, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x7d, 0x2f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x12, 0x98, 0x01, 0x0a, 0x15, 0x47, 0x43, 0x53, 0x47, 0x65, 0x74, 0x43, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2d, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x43, - 0x53, 0x47, 0x65, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x72, 0x69, 0x6c, + 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x33, 0x47, 0x65, 0x74, 0x42, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x12, 0x1f, 0x2f, 0x76, 0x31, + 0x2f, 0x73, 0x33, 0x2f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2f, 0x7b, 0x62, 0x75, 0x63, 0x6b, + 0x65, 0x74, 0x7d, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x94, 0x01, 0x0a, + 0x14, 0x53, 0x33, 0x47, 0x65, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, + 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x33, 0x47, 0x65, 0x74, 0x43, 0x72, 0x65, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x33, 0x47, 0x65, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x12, 0x17, 0x2f, 0x76, 0x31, 0x2f, + 0x73, 0x33, 0x2f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x5f, 0x69, + 0x6e, 0x66, 0x6f, 0x12, 0x7a, 0x0a, 0x0e, 0x47, 0x43, 0x53, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x75, + 0x63, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x43, 0x53, 0x4c, 0x69, 0x73, 0x74, 0x42, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x43, 0x53, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x12, 0x0f, + 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x63, 0x73, 0x2f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x12, + 0x8a, 0x01, 0x0a, 0x0e, 0x47, 0x43, 0x53, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x12, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x43, 0x53, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x43, 0x53, - 0x47, 0x65, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x49, 0x6e, - 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x63, 0x73, 0x2f, 0x63, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x7a, 0x0a, 0x0e, - 0x4f, 0x4c, 0x41, 0x50, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x26, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x4f, 0x4c, 0x41, 0x50, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x4c, 0x41, 0x50, 0x4c, 0x69, 0x73, - 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x12, 0x0f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x6c, 0x61, - 0x70, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x7e, 0x0a, 0x0c, 0x4f, 0x4c, 0x41, 0x50, - 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x4c, 0x41, 0x50, 0x47, - 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x4f, 0x4c, 0x41, 0x50, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x12, 0x19, 0x2f, - 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x6f, 0x6c, - 0x61, 0x70, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x92, 0x01, 0x0a, 0x14, 0x42, 0x69, 0x67, + 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x12, 0x1f, 0x2f, 0x76, 0x31, + 0x2f, 0x67, 0x63, 0x73, 0x2f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2f, 0x7b, 0x62, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x7d, 0x2f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x98, 0x01, 0x0a, + 0x15, 0x47, 0x43, 0x53, 0x47, 0x65, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, + 0x6c, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, + 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x43, 0x53, 0x47, 0x65, 0x74, 0x43, + 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x43, 0x53, 0x47, 0x65, 0x74, 0x43, 0x72, + 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, + 0x76, 0x31, 0x2f, 0x67, 0x63, 0x73, 0x2f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, + 0x6c, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x7a, 0x0a, 0x0e, 0x4f, 0x4c, 0x41, 0x50, 0x4c, + 0x69, 0x73, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x4c, 0x41, 0x50, + 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x4c, 0x41, 0x50, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x62, 0x6c, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x11, 0x12, 0x0f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x6c, 0x61, 0x70, 0x2f, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x73, 0x12, 0x7e, 0x0a, 0x0c, 0x4f, 0x4c, 0x41, 0x50, 0x47, 0x65, 0x74, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x12, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x4c, 0x41, 0x50, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x4c, 0x41, 0x50, + 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x12, 0x19, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x6f, 0x6c, 0x61, 0x70, 0x2f, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x12, 0x92, 0x01, 0x0a, 0x14, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x12, 0x2c, 0x2e, 0x72, + 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, + 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x73, + 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, - 0x73, 0x12, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x69, 0x73, 0x74, - 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, - 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x69, 0x67, 0x71, - 0x75, 0x65, 0x72, 0x79, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x12, 0x8a, 0x01, - 0x0a, 0x12, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, - 0x62, 0x6c, 0x65, 0x73, 0x12, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, - 0x69, 0x73, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x54, - 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x69, 0x67, 0x71, 0x75, - 0x65, 0x72, 0x79, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x42, 0xc2, 0x01, 0x0a, 0x13, 0x63, - 0x6f, 0x6d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x76, 0x31, 0x42, 0x0f, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x72, 0x69, 0x6c, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x72, 0x69, 0x6c, 0x6c, 0x2f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x72, 0x69, 0x6c, 0x6c, 0x2f, 0x72, - 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, - 0x65, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x52, 0x52, 0x58, 0xaa, 0x02, 0x0f, 0x52, 0x69, 0x6c, 0x6c, - 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0f, 0x52, 0x69, - 0x6c, 0x6c, 0x5c, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1b, - 0x52, 0x69, 0x6c, 0x6c, 0x5c, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5c, 0x56, 0x31, 0x5c, - 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x11, 0x52, 0x69, - 0x6c, 0x6c, 0x3a, 0x3a, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x17, 0x12, 0x15, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2f, + 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x12, 0x8a, 0x01, 0x0a, 0x12, 0x42, 0x69, 0x67, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, + 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, + 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, + 0x12, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2f, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x73, 0x42, 0xc2, 0x01, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0f, 0x43, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, + 0x5a, 0x3c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x69, 0x6c, + 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x72, 0x69, 0x6c, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x72, 0x69, 0x6c, 0x6c, 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x76, 0x31, 0xa2, 0x02, + 0x03, 0x52, 0x52, 0x58, 0xaa, 0x02, 0x0f, 0x52, 0x69, 0x6c, 0x6c, 0x2e, 0x52, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0f, 0x52, 0x69, 0x6c, 0x6c, 0x5c, 0x52, 0x75, + 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1b, 0x52, 0x69, 0x6c, 0x6c, 0x5c, + 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x11, 0x52, 0x69, 0x6c, 0x6c, 0x3a, 0x3a, 0x52, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( @@ -2162,7 +1981,7 @@ func file_rill_runtime_v1_connectors_proto_rawDescGZIP() []byte { return file_rill_runtime_v1_connectors_proto_rawDescData } -var file_rill_runtime_v1_connectors_proto_msgTypes = make([]protoimpl.MessageInfo, 29) +var file_rill_runtime_v1_connectors_proto_msgTypes = make([]protoimpl.MessageInfo, 26) var file_rill_runtime_v1_connectors_proto_goTypes = []interface{}{ (*S3Object)(nil), // 0: rill.runtime.v1.S3Object (*S3ListBucketsRequest)(nil), // 1: rill.runtime.v1.S3ListBucketsRequest @@ -2189,51 +2008,45 @@ var file_rill_runtime_v1_connectors_proto_goTypes = []interface{}{ (*BigQueryListDatasetsResponse)(nil), // 22: rill.runtime.v1.BigQueryListDatasetsResponse (*BigQueryListTablesRequest)(nil), // 23: rill.runtime.v1.BigQueryListTablesRequest (*BigQueryListTablesResponse)(nil), // 24: rill.runtime.v1.BigQueryListTablesResponse - (*ScanConnectorsRequest)(nil), // 25: rill.runtime.v1.ScanConnectorsRequest - (*ScanConnectorsResponse)(nil), // 26: rill.runtime.v1.ScanConnectorsResponse - (*ScannedConnector)(nil), // 27: rill.runtime.v1.ScannedConnector - nil, // 28: rill.runtime.v1.OLAPGetTableResponse.UnsupportedColumnsEntry - (*timestamppb.Timestamp)(nil), // 29: google.protobuf.Timestamp - (*StructType)(nil), // 30: rill.runtime.v1.StructType + nil, // 25: rill.runtime.v1.OLAPGetTableResponse.UnsupportedColumnsEntry + (*timestamppb.Timestamp)(nil), // 26: google.protobuf.Timestamp + (*StructType)(nil), // 27: rill.runtime.v1.StructType } var file_rill_runtime_v1_connectors_proto_depIdxs = []int32{ - 29, // 0: rill.runtime.v1.S3Object.modified_on:type_name -> google.protobuf.Timestamp + 26, // 0: rill.runtime.v1.S3Object.modified_on:type_name -> google.protobuf.Timestamp 0, // 1: rill.runtime.v1.S3ListObjectsResponse.objects:type_name -> rill.runtime.v1.S3Object - 29, // 2: rill.runtime.v1.GCSObject.modified_on:type_name -> google.protobuf.Timestamp + 26, // 2: rill.runtime.v1.GCSObject.modified_on:type_name -> google.protobuf.Timestamp 9, // 3: rill.runtime.v1.GCSListObjectsResponse.objects:type_name -> rill.runtime.v1.GCSObject 18, // 4: rill.runtime.v1.OLAPListTablesResponse.tables:type_name -> rill.runtime.v1.TableInfo - 30, // 5: rill.runtime.v1.OLAPGetTableResponse.schema:type_name -> rill.runtime.v1.StructType - 28, // 6: rill.runtime.v1.OLAPGetTableResponse.unsupported_columns:type_name -> rill.runtime.v1.OLAPGetTableResponse.UnsupportedColumnsEntry - 27, // 7: rill.runtime.v1.ScanConnectorsResponse.connectors:type_name -> rill.runtime.v1.ScannedConnector - 25, // 8: rill.runtime.v1.ConnectorService.ScanConnectors:input_type -> rill.runtime.v1.ScanConnectorsRequest - 1, // 9: rill.runtime.v1.ConnectorService.S3ListBuckets:input_type -> rill.runtime.v1.S3ListBucketsRequest - 3, // 10: rill.runtime.v1.ConnectorService.S3ListObjects:input_type -> rill.runtime.v1.S3ListObjectsRequest - 5, // 11: rill.runtime.v1.ConnectorService.S3GetBucketMetadata:input_type -> rill.runtime.v1.S3GetBucketMetadataRequest - 7, // 12: rill.runtime.v1.ConnectorService.S3GetCredentialsInfo:input_type -> rill.runtime.v1.S3GetCredentialsInfoRequest - 10, // 13: rill.runtime.v1.ConnectorService.GCSListBuckets:input_type -> rill.runtime.v1.GCSListBucketsRequest - 12, // 14: rill.runtime.v1.ConnectorService.GCSListObjects:input_type -> rill.runtime.v1.GCSListObjectsRequest - 14, // 15: rill.runtime.v1.ConnectorService.GCSGetCredentialsInfo:input_type -> rill.runtime.v1.GCSGetCredentialsInfoRequest - 16, // 16: rill.runtime.v1.ConnectorService.OLAPListTables:input_type -> rill.runtime.v1.OLAPListTablesRequest - 19, // 17: rill.runtime.v1.ConnectorService.OLAPGetTable:input_type -> rill.runtime.v1.OLAPGetTableRequest - 21, // 18: rill.runtime.v1.ConnectorService.BigQueryListDatasets:input_type -> rill.runtime.v1.BigQueryListDatasetsRequest - 23, // 19: rill.runtime.v1.ConnectorService.BigQueryListTables:input_type -> rill.runtime.v1.BigQueryListTablesRequest - 26, // 20: rill.runtime.v1.ConnectorService.ScanConnectors:output_type -> rill.runtime.v1.ScanConnectorsResponse - 2, // 21: rill.runtime.v1.ConnectorService.S3ListBuckets:output_type -> rill.runtime.v1.S3ListBucketsResponse - 4, // 22: rill.runtime.v1.ConnectorService.S3ListObjects:output_type -> rill.runtime.v1.S3ListObjectsResponse - 6, // 23: rill.runtime.v1.ConnectorService.S3GetBucketMetadata:output_type -> rill.runtime.v1.S3GetBucketMetadataResponse - 8, // 24: rill.runtime.v1.ConnectorService.S3GetCredentialsInfo:output_type -> rill.runtime.v1.S3GetCredentialsInfoResponse - 11, // 25: rill.runtime.v1.ConnectorService.GCSListBuckets:output_type -> rill.runtime.v1.GCSListBucketsResponse - 13, // 26: rill.runtime.v1.ConnectorService.GCSListObjects:output_type -> rill.runtime.v1.GCSListObjectsResponse - 15, // 27: rill.runtime.v1.ConnectorService.GCSGetCredentialsInfo:output_type -> rill.runtime.v1.GCSGetCredentialsInfoResponse - 17, // 28: rill.runtime.v1.ConnectorService.OLAPListTables:output_type -> rill.runtime.v1.OLAPListTablesResponse - 20, // 29: rill.runtime.v1.ConnectorService.OLAPGetTable:output_type -> rill.runtime.v1.OLAPGetTableResponse - 22, // 30: rill.runtime.v1.ConnectorService.BigQueryListDatasets:output_type -> rill.runtime.v1.BigQueryListDatasetsResponse - 24, // 31: rill.runtime.v1.ConnectorService.BigQueryListTables:output_type -> rill.runtime.v1.BigQueryListTablesResponse - 20, // [20:32] is the sub-list for method output_type - 8, // [8:20] is the sub-list for method input_type - 8, // [8:8] is the sub-list for extension type_name - 8, // [8:8] is the sub-list for extension extendee - 0, // [0:8] is the sub-list for field type_name + 27, // 5: rill.runtime.v1.OLAPGetTableResponse.schema:type_name -> rill.runtime.v1.StructType + 25, // 6: rill.runtime.v1.OLAPGetTableResponse.unsupported_columns:type_name -> rill.runtime.v1.OLAPGetTableResponse.UnsupportedColumnsEntry + 1, // 7: rill.runtime.v1.ConnectorService.S3ListBuckets:input_type -> rill.runtime.v1.S3ListBucketsRequest + 3, // 8: rill.runtime.v1.ConnectorService.S3ListObjects:input_type -> rill.runtime.v1.S3ListObjectsRequest + 5, // 9: rill.runtime.v1.ConnectorService.S3GetBucketMetadata:input_type -> rill.runtime.v1.S3GetBucketMetadataRequest + 7, // 10: rill.runtime.v1.ConnectorService.S3GetCredentialsInfo:input_type -> rill.runtime.v1.S3GetCredentialsInfoRequest + 10, // 11: rill.runtime.v1.ConnectorService.GCSListBuckets:input_type -> rill.runtime.v1.GCSListBucketsRequest + 12, // 12: rill.runtime.v1.ConnectorService.GCSListObjects:input_type -> rill.runtime.v1.GCSListObjectsRequest + 14, // 13: rill.runtime.v1.ConnectorService.GCSGetCredentialsInfo:input_type -> rill.runtime.v1.GCSGetCredentialsInfoRequest + 16, // 14: rill.runtime.v1.ConnectorService.OLAPListTables:input_type -> rill.runtime.v1.OLAPListTablesRequest + 19, // 15: rill.runtime.v1.ConnectorService.OLAPGetTable:input_type -> rill.runtime.v1.OLAPGetTableRequest + 21, // 16: rill.runtime.v1.ConnectorService.BigQueryListDatasets:input_type -> rill.runtime.v1.BigQueryListDatasetsRequest + 23, // 17: rill.runtime.v1.ConnectorService.BigQueryListTables:input_type -> rill.runtime.v1.BigQueryListTablesRequest + 2, // 18: rill.runtime.v1.ConnectorService.S3ListBuckets:output_type -> rill.runtime.v1.S3ListBucketsResponse + 4, // 19: rill.runtime.v1.ConnectorService.S3ListObjects:output_type -> rill.runtime.v1.S3ListObjectsResponse + 6, // 20: rill.runtime.v1.ConnectorService.S3GetBucketMetadata:output_type -> rill.runtime.v1.S3GetBucketMetadataResponse + 8, // 21: rill.runtime.v1.ConnectorService.S3GetCredentialsInfo:output_type -> rill.runtime.v1.S3GetCredentialsInfoResponse + 11, // 22: rill.runtime.v1.ConnectorService.GCSListBuckets:output_type -> rill.runtime.v1.GCSListBucketsResponse + 13, // 23: rill.runtime.v1.ConnectorService.GCSListObjects:output_type -> rill.runtime.v1.GCSListObjectsResponse + 15, // 24: rill.runtime.v1.ConnectorService.GCSGetCredentialsInfo:output_type -> rill.runtime.v1.GCSGetCredentialsInfoResponse + 17, // 25: rill.runtime.v1.ConnectorService.OLAPListTables:output_type -> rill.runtime.v1.OLAPListTablesResponse + 20, // 26: rill.runtime.v1.ConnectorService.OLAPGetTable:output_type -> rill.runtime.v1.OLAPGetTableResponse + 22, // 27: rill.runtime.v1.ConnectorService.BigQueryListDatasets:output_type -> rill.runtime.v1.BigQueryListDatasetsResponse + 24, // 28: rill.runtime.v1.ConnectorService.BigQueryListTables:output_type -> rill.runtime.v1.BigQueryListTablesResponse + 18, // [18:29] is the sub-list for method output_type + 7, // [7:18] is the sub-list for method input_type + 7, // [7:7] is the sub-list for extension type_name + 7, // [7:7] is the sub-list for extension extendee + 0, // [0:7] is the sub-list for field type_name } func init() { file_rill_runtime_v1_connectors_proto_init() } @@ -2543,42 +2356,6 @@ func file_rill_runtime_v1_connectors_proto_init() { return nil } } - file_rill_runtime_v1_connectors_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ScanConnectorsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_rill_runtime_v1_connectors_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ScanConnectorsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_rill_runtime_v1_connectors_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ScannedConnector); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } } type x struct{} out := protoimpl.TypeBuilder{ @@ -2586,7 +2363,7 @@ func file_rill_runtime_v1_connectors_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_rill_runtime_v1_connectors_proto_rawDesc, NumEnums: 0, - NumMessages: 29, + NumMessages: 26, NumExtensions: 0, NumServices: 1, }, diff --git a/proto/gen/rill/runtime/v1/connectors.pb.gw.go b/proto/gen/rill/runtime/v1/connectors.pb.gw.go index 118d6f227368..ed404ebc0f99 100644 --- a/proto/gen/rill/runtime/v1/connectors.pb.gw.go +++ b/proto/gen/rill/runtime/v1/connectors.pb.gw.go @@ -31,42 +31,6 @@ var _ = runtime.String var _ = utilities.NewDoubleArray var _ = metadata.Join -var ( - filter_ConnectorService_ScanConnectors_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} -) - -func request_ConnectorService_ScanConnectors_0(ctx context.Context, marshaler runtime.Marshaler, client ConnectorServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq ScanConnectorsRequest - var metadata runtime.ServerMetadata - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_ConnectorService_ScanConnectors_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.ScanConnectors(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_ConnectorService_ScanConnectors_0(ctx context.Context, marshaler runtime.Marshaler, server ConnectorServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq ScanConnectorsRequest - var metadata runtime.ServerMetadata - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_ConnectorService_ScanConnectors_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.ScanConnectors(ctx, &protoReq) - return msg, metadata, err - -} - var ( filter_ConnectorService_S3ListBuckets_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} ) @@ -571,31 +535,6 @@ func local_request_ConnectorService_BigQueryListTables_0(ctx context.Context, ma // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterConnectorServiceHandlerFromEndpoint instead. func RegisterConnectorServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server ConnectorServiceServer) error { - mux.Handle("GET", pattern_ConnectorService_ScanConnectors_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.ConnectorService/ScanConnectors", runtime.WithHTTPPathPattern("/v1/connectors/scan")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_ConnectorService_ScanConnectors_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_ConnectorService_ScanConnectors_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - mux.Handle("GET", pattern_ConnectorService_S3ListBuckets_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -912,28 +851,6 @@ func RegisterConnectorServiceHandler(ctx context.Context, mux *runtime.ServeMux, // "ConnectorServiceClient" to call the correct interceptors. func RegisterConnectorServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ConnectorServiceClient) error { - mux.Handle("GET", pattern_ConnectorService_ScanConnectors_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.ConnectorService/ScanConnectors", runtime.WithHTTPPathPattern("/v1/connectors/scan")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_ConnectorService_ScanConnectors_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_ConnectorService_ScanConnectors_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - mux.Handle("GET", pattern_ConnectorService_S3ListBuckets_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -1180,8 +1097,6 @@ func RegisterConnectorServiceHandlerClient(ctx context.Context, mux *runtime.Ser } var ( - pattern_ConnectorService_ScanConnectors_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "connectors", "scan"}, "")) - pattern_ConnectorService_S3ListBuckets_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "s3", "buckets"}, "")) pattern_ConnectorService_S3ListObjects_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"v1", "s3", "bucket", "objects"}, "")) @@ -1206,8 +1121,6 @@ var ( ) var ( - forward_ConnectorService_ScanConnectors_0 = runtime.ForwardResponseMessage - forward_ConnectorService_S3ListBuckets_0 = runtime.ForwardResponseMessage forward_ConnectorService_S3ListObjects_0 = runtime.ForwardResponseMessage diff --git a/proto/gen/rill/runtime/v1/connectors.pb.validate.go b/proto/gen/rill/runtime/v1/connectors.pb.validate.go index b13e5fa6002e..45a38920949f 100644 --- a/proto/gen/rill/runtime/v1/connectors.pb.validate.go +++ b/proto/gen/rill/runtime/v1/connectors.pb.validate.go @@ -3001,349 +3001,3 @@ var _ interface { Cause() error ErrorName() string } = BigQueryListTablesResponseValidationError{} - -// Validate checks the field values on ScanConnectorsRequest with the rules -// defined in the proto definition for this message. If any rules are -// violated, the first error encountered is returned, or nil if there are no violations. -func (m *ScanConnectorsRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ScanConnectorsRequest with the rules -// defined in the proto definition for this message. If any rules are -// violated, the result is a list of violation errors wrapped in -// ScanConnectorsRequestMultiError, or nil if none found. -func (m *ScanConnectorsRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *ScanConnectorsRequest) validate(all bool) error { - if m == nil { - return nil - } - - var errors []error - - // no validation rules for InstanceId - - if len(errors) > 0 { - return ScanConnectorsRequestMultiError(errors) - } - - return nil -} - -// ScanConnectorsRequestMultiError is an error wrapping multiple validation -// errors returned by ScanConnectorsRequest.ValidateAll() if the designated -// constraints aren't met. -type ScanConnectorsRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ScanConnectorsRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ScanConnectorsRequestMultiError) AllErrors() []error { return m } - -// ScanConnectorsRequestValidationError is the validation error returned by -// ScanConnectorsRequest.Validate if the designated constraints aren't met. -type ScanConnectorsRequestValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e ScanConnectorsRequestValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e ScanConnectorsRequestValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e ScanConnectorsRequestValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e ScanConnectorsRequestValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e ScanConnectorsRequestValidationError) ErrorName() string { - return "ScanConnectorsRequestValidationError" -} - -// Error satisfies the builtin error interface -func (e ScanConnectorsRequestValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sScanConnectorsRequest.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = ScanConnectorsRequestValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = ScanConnectorsRequestValidationError{} - -// Validate checks the field values on ScanConnectorsResponse with the rules -// defined in the proto definition for this message. If any rules are -// violated, the first error encountered is returned, or nil if there are no violations. -func (m *ScanConnectorsResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ScanConnectorsResponse with the rules -// defined in the proto definition for this message. If any rules are -// violated, the result is a list of violation errors wrapped in -// ScanConnectorsResponseMultiError, or nil if none found. -func (m *ScanConnectorsResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *ScanConnectorsResponse) validate(all bool) error { - if m == nil { - return nil - } - - var errors []error - - for idx, item := range m.GetConnectors() { - _, _ = idx, item - - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ScanConnectorsResponseValidationError{ - field: fmt.Sprintf("Connectors[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ScanConnectorsResponseValidationError{ - field: fmt.Sprintf("Connectors[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return ScanConnectorsResponseValidationError{ - field: fmt.Sprintf("Connectors[%v]", idx), - reason: "embedded message failed validation", - cause: err, - } - } - } - - } - - if len(errors) > 0 { - return ScanConnectorsResponseMultiError(errors) - } - - return nil -} - -// ScanConnectorsResponseMultiError is an error wrapping multiple validation -// errors returned by ScanConnectorsResponse.ValidateAll() if the designated -// constraints aren't met. -type ScanConnectorsResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ScanConnectorsResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ScanConnectorsResponseMultiError) AllErrors() []error { return m } - -// ScanConnectorsResponseValidationError is the validation error returned by -// ScanConnectorsResponse.Validate if the designated constraints aren't met. -type ScanConnectorsResponseValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e ScanConnectorsResponseValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e ScanConnectorsResponseValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e ScanConnectorsResponseValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e ScanConnectorsResponseValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e ScanConnectorsResponseValidationError) ErrorName() string { - return "ScanConnectorsResponseValidationError" -} - -// Error satisfies the builtin error interface -func (e ScanConnectorsResponseValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sScanConnectorsResponse.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = ScanConnectorsResponseValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = ScanConnectorsResponseValidationError{} - -// Validate checks the field values on ScannedConnector with the rules defined -// in the proto definition for this message. If any rules are violated, the -// first error encountered is returned, or nil if there are no violations. -func (m *ScannedConnector) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ScannedConnector with the rules -// defined in the proto definition for this message. If any rules are -// violated, the result is a list of violation errors wrapped in -// ScannedConnectorMultiError, or nil if none found. -func (m *ScannedConnector) ValidateAll() error { - return m.validate(true) -} - -func (m *ScannedConnector) validate(all bool) error { - if m == nil { - return nil - } - - var errors []error - - // no validation rules for Name - - // no validation rules for Type - - // no validation rules for HasAnonymousAccess - - if len(errors) > 0 { - return ScannedConnectorMultiError(errors) - } - - return nil -} - -// ScannedConnectorMultiError is an error wrapping multiple validation errors -// returned by ScannedConnector.ValidateAll() if the designated constraints -// aren't met. -type ScannedConnectorMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ScannedConnectorMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ScannedConnectorMultiError) AllErrors() []error { return m } - -// ScannedConnectorValidationError is the validation error returned by -// ScannedConnector.Validate if the designated constraints aren't met. -type ScannedConnectorValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e ScannedConnectorValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e ScannedConnectorValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e ScannedConnectorValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e ScannedConnectorValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e ScannedConnectorValidationError) ErrorName() string { return "ScannedConnectorValidationError" } - -// Error satisfies the builtin error interface -func (e ScannedConnectorValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sScannedConnector.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = ScannedConnectorValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = ScannedConnectorValidationError{} diff --git a/proto/gen/rill/runtime/v1/connectors_grpc.pb.go b/proto/gen/rill/runtime/v1/connectors_grpc.pb.go index 39d06edba2df..555c243f1afb 100644 --- a/proto/gen/rill/runtime/v1/connectors_grpc.pb.go +++ b/proto/gen/rill/runtime/v1/connectors_grpc.pb.go @@ -19,7 +19,6 @@ import ( const _ = grpc.SupportPackageIsVersion7 const ( - ConnectorService_ScanConnectors_FullMethodName = "/rill.runtime.v1.ConnectorService/ScanConnectors" ConnectorService_S3ListBuckets_FullMethodName = "/rill.runtime.v1.ConnectorService/S3ListBuckets" ConnectorService_S3ListObjects_FullMethodName = "/rill.runtime.v1.ConnectorService/S3ListObjects" ConnectorService_S3GetBucketMetadata_FullMethodName = "/rill.runtime.v1.ConnectorService/S3GetBucketMetadata" @@ -37,10 +36,6 @@ const ( // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type ConnectorServiceClient interface { - // ScanConnectors scans the artifacts for connectors and returns information about - // the connectors referenced in the artifacts. The information includes name,type and - // credentials for the connector. - ScanConnectors(ctx context.Context, in *ScanConnectorsRequest, opts ...grpc.CallOption) (*ScanConnectorsResponse, error) // S3ListBuckets lists buckets accessible with the configured credentials. S3ListBuckets(ctx context.Context, in *S3ListBucketsRequest, opts ...grpc.CallOption) (*S3ListBucketsResponse, error) // S3ListBuckets lists objects for the given bucket. @@ -73,15 +68,6 @@ func NewConnectorServiceClient(cc grpc.ClientConnInterface) ConnectorServiceClie return &connectorServiceClient{cc} } -func (c *connectorServiceClient) ScanConnectors(ctx context.Context, in *ScanConnectorsRequest, opts ...grpc.CallOption) (*ScanConnectorsResponse, error) { - out := new(ScanConnectorsResponse) - err := c.cc.Invoke(ctx, ConnectorService_ScanConnectors_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *connectorServiceClient) S3ListBuckets(ctx context.Context, in *S3ListBucketsRequest, opts ...grpc.CallOption) (*S3ListBucketsResponse, error) { out := new(S3ListBucketsResponse) err := c.cc.Invoke(ctx, ConnectorService_S3ListBuckets_FullMethodName, in, out, opts...) @@ -185,10 +171,6 @@ func (c *connectorServiceClient) BigQueryListTables(ctx context.Context, in *Big // All implementations must embed UnimplementedConnectorServiceServer // for forward compatibility type ConnectorServiceServer interface { - // ScanConnectors scans the artifacts for connectors and returns information about - // the connectors referenced in the artifacts. The information includes name,type and - // credentials for the connector. - ScanConnectors(context.Context, *ScanConnectorsRequest) (*ScanConnectorsResponse, error) // S3ListBuckets lists buckets accessible with the configured credentials. S3ListBuckets(context.Context, *S3ListBucketsRequest) (*S3ListBucketsResponse, error) // S3ListBuckets lists objects for the given bucket. @@ -218,9 +200,6 @@ type ConnectorServiceServer interface { type UnimplementedConnectorServiceServer struct { } -func (UnimplementedConnectorServiceServer) ScanConnectors(context.Context, *ScanConnectorsRequest) (*ScanConnectorsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ScanConnectors not implemented") -} func (UnimplementedConnectorServiceServer) S3ListBuckets(context.Context, *S3ListBucketsRequest) (*S3ListBucketsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method S3ListBuckets not implemented") } @@ -267,24 +246,6 @@ func RegisterConnectorServiceServer(s grpc.ServiceRegistrar, srv ConnectorServic s.RegisterService(&ConnectorService_ServiceDesc, srv) } -func _ConnectorService_ScanConnectors_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ScanConnectorsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ConnectorServiceServer).ScanConnectors(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: ConnectorService_ScanConnectors_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ConnectorServiceServer).ScanConnectors(ctx, req.(*ScanConnectorsRequest)) - } - return interceptor(ctx, in, info, handler) -} - func _ConnectorService_S3ListBuckets_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(S3ListBucketsRequest) if err := dec(in); err != nil { @@ -490,10 +451,6 @@ var ConnectorService_ServiceDesc = grpc.ServiceDesc{ ServiceName: "rill.runtime.v1.ConnectorService", HandlerType: (*ConnectorServiceServer)(nil), Methods: []grpc.MethodDesc{ - { - MethodName: "ScanConnectors", - Handler: _ConnectorService_ScanConnectors_Handler, - }, { MethodName: "S3ListBuckets", Handler: _ConnectorService_S3ListBuckets_Handler, diff --git a/proto/gen/rill/runtime/v1/runtime.swagger.yaml b/proto/gen/rill/runtime/v1/runtime.swagger.yaml index cfb6da1fb34a..1da6a3a9912a 100644 --- a/proto/gen/rill/runtime/v1/runtime.swagger.yaml +++ b/proto/gen/rill/runtime/v1/runtime.swagger.yaml @@ -84,14 +84,14 @@ paths: /v1/connectors/meta: get: summary: |- - ListConnectors returns a description of all the connectors implemented in the runtime, - including their schema and validation rules - operationId: RuntimeService_ListConnectors + ListConnectorDrivers returns a description of all the connector drivers registed in the runtime, + including their configuration specs and the capabilities they support. + operationId: RuntimeService_ListConnectorDrivers responses: "200": description: A successful response. schema: - $ref: '#/definitions/v1ListConnectorsResponse' + $ref: '#/definitions/v1ListConnectorDriversResponse' default: description: An unexpected error response. schema: @@ -126,29 +126,6 @@ paths: type: string tags: - ConnectorService - /v1/connectors/scan: - get: - summary: |- - ScanConnectors scans the artifacts for connectors and returns information about - the connectors referenced in the artifacts. The information includes name,type and - credentials for the connector. - operationId: ConnectorService_ScanConnectors - responses: - "200": - description: A successful response. - schema: - $ref: '#/definitions/v1ScanConnectorsResponse' - default: - description: An unexpected error response. - schema: - $ref: '#/definitions/rpcStatus' - parameters: - - name: instanceId - in: query - required: false - type: string - tags: - - ConnectorService /v1/delete-and-reconcile: post: summary: DeleteFileAndReconcile combines RenameFile and Reconcile in a single endpoint to reduce latency. @@ -569,6 +546,48 @@ paths: type: string tags: - RuntimeService + /v1/instances/{instanceId}/connectors/analyze: + get: + summary: AnalyzeConnectors scans all the project files and returns information about all referenced connectors. + operationId: RuntimeService_AnalyzeConnectors + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1AnalyzeConnectorsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: instanceId + in: path + required: true + type: string + tags: + - RuntimeService + /v1/instances/{instanceId}/connectors/notifiers: + get: + summary: |- + ListNotifierConnectors returns the names of all configured connectors that can be used as notifiers. + This API is much faster than AnalyzeConnectors and can be called without admin-level permissions. + operationId: RuntimeService_ListNotifierConnectors + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1ListNotifierConnectorsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: instanceId + in: path + required: true + type: string + tags: + - RuntimeService /v1/instances/{instanceId}/files: get: summary: |- @@ -2613,44 +2632,51 @@ definitions: sqlName: type: string title: Optional. Defaults to 'measure_{i}', ie measure_0 - ConnectorSpecProperty: + ConnectorDriverProperty: type: object properties: key: type: string title: The property key + type: + $ref: '#/definitions/ConnectorDriverPropertyType' + title: The type expected for this property + required: + type: boolean + title: Required is true if the field must be set displayName: type: string title: Pretty name for the property description: type: string title: Human readable description of the field - placeholder: + docsUrl: type: string - title: Placeholder value for use in UIs - type: - $ref: '#/definitions/ConnectorSpecPropertyType' - title: The type expected for this property - nullable: - type: boolean - title: Nullable is true if the field is optional + title: Link to documentation for this property hint: type: string title: Additional textual explanation for use in UIs - href: + default: type: string - title: Link to documentation for this property - title: Property represents one of the connector's config properties - ConnectorSpecPropertyType: + title: Default value for the property + placeholder: + type: string + title: Placeholder value for use in UIs + secret: + type: boolean + title: If true, the property is a secret and should not be displayed in UIs + title: Property represents the spec of one of the driver's config properties + ConnectorDriverPropertyType: type: string enum: - TYPE_UNSPECIFIED - - TYPE_STRING - TYPE_NUMBER - TYPE_BOOLEAN + - TYPE_STRING + - TYPE_FILE - TYPE_INFORMATIONAL default: TYPE_UNSPECIFIED - title: Type represents the field type + title: Type of the property MetricsViewDimension: type: object properties: @@ -3053,6 +3079,54 @@ definitions: executionCount: type: integer format: int64 + v1AnalyzeConnectorsResponse: + type: object + properties: + connectors: + type: array + items: + type: object + $ref: '#/definitions/v1AnalyzedConnector' + title: Response message for RuntimeService.AnalyzeConnectors + v1AnalyzedConnector: + type: object + properties: + name: + type: string + title: Connector name + driver: + $ref: '#/definitions/v1ConnectorDriver' + title: Connector driver metadata + config: + type: object + additionalProperties: + type: string + title: Combined config properties for the connector + presetConfig: + type: object + additionalProperties: + type: string + title: Config properties preset by the runtime or when the instance was created + projectConfig: + type: object + additionalProperties: + type: string + title: Config properties set in project YAML files + envConfig: + type: object + additionalProperties: + type: string + title: Config properties set as dynamic variables + hasAnonymousAccess: + type: boolean + title: True if the connector can be accessed without credentials + usedBy: + type: array + items: + type: object + $ref: '#/definitions/v1ResourceName' + title: List of resources that appear to use the connector + description: AnalyzedConnector contains information about a connector that is referenced in the project files. v1AssertionResult: type: object properties: @@ -3476,27 +3550,50 @@ definitions: additionalProperties: type: string title: Config for the connector - v1ConnectorSpec: + v1ConnectorDriver: type: object properties: name: type: string - title: Name is the name of the connector (e.g. "CREATE SOURCE foo WITH connector = 'name'") + title: Name is the name of the connector + configProperties: + type: array + items: + type: object + $ref: '#/definitions/ConnectorDriverProperty' + title: Properties for configuring the connector + sourceProperties: + type: array + items: + type: object + $ref: '#/definitions/ConnectorDriverProperty' + title: Properties that can be provided to the connector when using it as a source displayName: type: string title: Pretty display name for use in UIs description: type: string title: Human readable description of the connector - properties: - type: array - items: - type: object - $ref: '#/definitions/ConnectorSpecProperty' - title: Properties accepted by the connector - description: |- - ConnectorSpec represents a connector available in the runtime. - It should not be confused with a source. + implementsRegistry: + type: boolean + title: Capabilities supported by the connector + implementsCatalog: + type: boolean + implementsRepo: + type: boolean + implementsAdmin: + type: boolean + implementsAi: + type: boolean + implementsSqlStore: + type: boolean + implementsOlap: + type: boolean + implementsObjectStore: + type: boolean + implementsFileStore: + type: boolean + description: ConnectorDriver represents a connector driver available in the runtime. v1CreateInstanceRequest: type: object properties: @@ -3854,15 +3951,15 @@ definitions: type: object $ref: '#/definitions/v1CatalogEntry' title: Response message for RuntimeService.ListCatalogEntries - v1ListConnectorsResponse: + v1ListConnectorDriversResponse: type: object properties: connectors: type: array items: type: object - $ref: '#/definitions/v1ConnectorSpec' - title: Response message for RuntimeService.ListConnectors + $ref: '#/definitions/v1ConnectorDriver' + title: Response message for RuntimeService.ListConnectorDrivers v1ListExamplesResponse: type: object properties: @@ -3891,6 +3988,16 @@ definitions: nextPageToken: type: string title: Response message for RuntimeService.ListInstances + v1ListNotifierConnectorsResponse: + type: object + properties: + connectors: + type: array + items: + type: object + $ref: '#/definitions/v1Connector' + description: 'Note: In this list, the Connector.config property will always be empty.' + title: Response message for RuntimeService.ListNotifierConnectors v1ListResourcesResponse: type: object properties: @@ -5404,24 +5511,6 @@ definitions: format: int64 isDir: type: boolean - v1ScanConnectorsResponse: - type: object - properties: - connectors: - type: array - items: - type: object - $ref: '#/definitions/v1ScannedConnector' - v1ScannedConnector: - type: object - properties: - name: - type: string - type: - type: string - hasAnonymousAccess: - type: boolean - title: reports whether access is present without any credentials v1Schedule: type: object properties: diff --git a/proto/rill/runtime/v1/api.proto b/proto/rill/runtime/v1/api.proto index dafab0198799..5a6c7132ea6f 100644 --- a/proto/rill/runtime/v1/api.proto +++ b/proto/rill/runtime/v1/api.proto @@ -172,6 +172,25 @@ service RuntimeService { }; } + // Connectors + + // ListConnectorDrivers returns a description of all the connector drivers registed in the runtime, + // including their configuration specs and the capabilities they support. + rpc ListConnectorDrivers(ListConnectorDriversRequest) returns (ListConnectorDriversResponse) { + option (google.api.http) = {get: "/v1/connectors/meta"}; + } + + // AnalyzeConnectors scans all the project files and returns information about all referenced connectors. + rpc AnalyzeConnectors(AnalyzeConnectorsRequest) returns (AnalyzeConnectorsResponse) { + option (google.api.http) = {get: "/v1/instances/{instance_id}/connectors/analyze"}; + } + + // ListNotifierConnectors returns the names of all configured connectors that can be used as notifiers. + // This API is much faster than AnalyzeConnectors and can be called without admin-level permissions. + rpc ListNotifierConnectors(ListNotifierConnectorsRequest) returns (ListNotifierConnectorsResponse) { + option (google.api.http) = {get: "/v1/instances/{instance_id}/connectors/notifiers"}; + } + // DEPRECATE: // Catalog @@ -236,14 +255,6 @@ service RuntimeService { }; } - // Connectors - - // ListConnectors returns a description of all the connectors implemented in the runtime, - // including their schema and validation rules - rpc ListConnectors(ListConnectorsRequest) returns (ListConnectorsResponse) { - option (google.api.http) = {get: "/v1/connectors/meta"}; - } - rpc IssueDevJWT(IssueDevJWTRequest) returns (IssueDevJWTResponse) { option (google.api.http) = {get: "/v1/dev-jwt"}; } @@ -629,6 +640,115 @@ message CreateTriggerRequest { message CreateTriggerResponse {} +// ********** +// Connectors +// ********** + +// ConnectorDriver represents a connector driver available in the runtime. +message ConnectorDriver { + // Property represents the spec of one of the driver's config properties + message Property { + // Type of the property + enum Type { + TYPE_UNSPECIFIED = 0; + TYPE_NUMBER = 1; + TYPE_BOOLEAN = 2; + TYPE_STRING = 3; + TYPE_FILE = 4; + TYPE_INFORMATIONAL = 5; + } + // The property key + string key = 1; + // The type expected for this property + Type type = 2; + // Required is true if the field must be set + bool required = 3; + // Pretty name for the property + string display_name = 4; + // Human readable description of the field + string description = 5; + // Link to documentation for this property + string docs_url = 6; + // Additional textual explanation for use in UIs + string hint = 7; + // Default value for the property + string default = 8; + // Placeholder value for use in UIs + string placeholder = 9; + // If true, the property is a secret and should not be displayed in UIs + bool secret = 10; + } + // Name is the name of the connector + string name = 1; + // Properties for configuring the connector + repeated Property config_properties = 2; + // Properties that can be provided to the connector when using it as a source + repeated Property source_properties = 3; + // Pretty display name for use in UIs + string display_name = 4; + // Human readable description of the connector + string description = 5; + // Capabilities supported by the connector + bool implements_registry = 10; + bool implements_catalog = 11; + bool implements_repo = 12; + bool implements_admin = 13; + bool implements_ai = 14; + bool implements_sql_store = 15; + bool implements_olap = 16; + bool implements_object_store = 17; + bool implements_file_store = 18; +} + +// AnalyzedConnector contains information about a connector that is referenced in the project files. +message AnalyzedConnector { + // Connector name + string name = 1; + // Connector driver metadata + ConnectorDriver driver = 2; + // Combined config properties for the connector + map config = 3; + // Config properties preset by the runtime or when the instance was created + map preset_config = 4; + // Config properties set in project YAML files + map project_config = 5; + // Config properties set as dynamic variables + map env_config = 6; + // True if the connector can be accessed without credentials + bool has_anonymous_access = 7; + // List of resources that appear to use the connector + repeated ResourceName used_by = 8; +} + +// Request message for RuntimeService.ListConnectorDrivers +message ListConnectorDriversRequest {} + +// Response message for RuntimeService.ListConnectorDrivers +message ListConnectorDriversResponse { + repeated ConnectorDriver connectors = 1; +} + +// Request message for RuntimeService.AnalyzeConnectors +message AnalyzeConnectorsRequest { + string instance_id = 1; +} + +// Response message for RuntimeService.AnalyzeConnectors +message AnalyzeConnectorsResponse { + repeated AnalyzedConnector connectors = 1; +} + +// Request message for RuntimeService.ListNotifierConnectors +message ListNotifierConnectorsRequest { + string instance_id = 1; +} + +// Response message for RuntimeService.ListNotifierConnectors +message ListNotifierConnectorsResponse { + // Note: In this list, the Connector.config property will always be empty. + repeated Connector connectors = 1; +} + // ********** // Catalog // ********** @@ -876,58 +996,6 @@ message RefreshAndReconcileResponse { repeated string affected_paths = 2; } -// ********** -// Connectors -// ********** - -// ConnectorSpec represents a connector available in the runtime. -// It should not be confused with a source. -message ConnectorSpec { - // Property represents one of the connector's config properties - message Property { - // Type represents the field type - enum Type { - TYPE_UNSPECIFIED = 0; - TYPE_STRING = 1; - TYPE_NUMBER = 2; - TYPE_BOOLEAN = 3; - TYPE_INFORMATIONAL = 4; - } - // The property key - string key = 1; - // Pretty name for the property - string display_name = 2; - // Human readable description of the field - string description = 3; - // Placeholder value for use in UIs - string placeholder = 4; - // The type expected for this property - Type type = 5 [(validate.rules).enum.defined_only = true]; - // Nullable is true if the field is optional - bool nullable = 6; - // Additional textual explanation for use in UIs - string hint = 7; - // Link to documentation for this property - string href = 8; - } - // Name is the name of the connector (e.g. "CREATE SOURCE foo WITH connector = 'name'") - string name = 1; - // Pretty display name for use in UIs - string display_name = 2; - // Human readable description of the connector - string description = 3; - // Properties accepted by the connector - repeated Property properties = 4; -} - -// Request message for RuntimeService.ListConnectors -message ListConnectorsRequest {} - -// Response message for RuntimeService.ListConnectors -message ListConnectorsResponse { - repeated ConnectorSpec connectors = 1; -} - // Request message for RuntimeService.IssueDevJWT message IssueDevJWTRequest { string name = 1 [(validate.rules).string.min_len = 1]; diff --git a/proto/rill/runtime/v1/connectors.proto b/proto/rill/runtime/v1/connectors.proto index 56f6c37e4cda..e63f5ba331fb 100644 --- a/proto/rill/runtime/v1/connectors.proto +++ b/proto/rill/runtime/v1/connectors.proto @@ -7,13 +7,6 @@ import "rill/runtime/v1/schema.proto"; import "validate/validate.proto"; service ConnectorService { - // ScanConnectors scans the artifacts for connectors and returns information about - // the connectors referenced in the artifacts. The information includes name,type and - // credentials for the connector. - rpc ScanConnectors(ScanConnectorsRequest) returns (ScanConnectorsResponse) { - option (google.api.http) = {get: "/v1/connectors/scan"}; - } - // S3ListBuckets lists buckets accessible with the configured credentials. rpc S3ListBuckets(S3ListBucketsRequest) returns (S3ListBucketsResponse) { option (google.api.http) = {get: "/v1/s3/buckets"}; @@ -225,17 +218,3 @@ message BigQueryListTablesResponse { string next_page_token = 1; repeated string names = 2; } - -message ScanConnectorsRequest { - string instance_id = 1; -} - -message ScanConnectorsResponse { - repeated ScannedConnector connectors = 1; -} - -message ScannedConnector { - string name = 1; - string type = 2; - bool has_anonymous_access = 3; // reports whether access is present without any credentials -} \ No newline at end of file diff --git a/runtime/compilers/rillv1/connectors.go b/runtime/compilers/rillv1/connectors.go index 89cc3c898d51..13ae3365bf37 100644 --- a/runtime/compilers/rillv1/connectors.go +++ b/runtime/compilers/rillv1/connectors.go @@ -8,13 +8,15 @@ import ( "github.com/rilldata/rill/runtime/drivers" "go.uber.org/zap" "golang.org/x/exp/maps" + "google.golang.org/protobuf/types/known/structpb" ) // Connector contains metadata about a connector used in a Rill project type Connector struct { - Driver string Name string + Driver string Spec drivers.Spec + DefaultConfig map[string]string Resources []*Resource AnonymousAccess bool } @@ -76,6 +78,10 @@ func (a *connectorAnalyzer) analyzeResource(ctx context.Context, r *Resource) er return a.trackConnector(r.MetricsViewSpec.Connector, r, false) } else if r.MigrationSpec != nil { return a.trackConnector(r.MigrationSpec.Connector, r, false) + } else if r.APISpec != nil { + return a.analyzeResourceWithResolver(r, r.APISpec.Resolver, r.APISpec.ResolverProperties) + } else if r.ChartSpec != nil { + return a.analyzeResourceWithResolver(r, r.ChartSpec.Resolver, r.ChartSpec.ResolverProperties) } // Other resource kinds currently don't use connectors. return nil @@ -124,6 +130,23 @@ func (a *connectorAnalyzer) analyzeSource(ctx context.Context, r *Resource) erro return nil } +// analyzeResourceWithResolver extracts connector metadata for a resource that uses a resolver. +func (a *connectorAnalyzer) analyzeResourceWithResolver(r *Resource, resolver string, resolverProps *structpb.Struct) error { + // The "sql" resolver takes an optional "connector" property + if resolver == "sql" { + for k, v := range resolverProps.Fields { + if k == "connector" { + connector := v.GetStringValue() + if connector != "" { + return a.trackConnector(connector, r, false) + } + } + } + } + + return nil +} + // trackConnector tracks a connector and an associated resource in the analyzer's result map func (a *connectorAnalyzer) trackConnector(connector string, r *Resource, anonAccess bool) error { res, ok := a.result[connector] @@ -133,10 +156,22 @@ func (a *connectorAnalyzer) trackConnector(connector string, r *Resource, anonAc return err } + // Searfch rill.yaml for default config properties for this connector + var defaultConfig map[string]string + if a.parser.RillYAML != nil { + for _, c := range a.parser.RillYAML.Connectors { + if c.Name == connector { + defaultConfig = c.Defaults + break + } + } + } + res = &Connector{ - Driver: driver, Name: connector, + Driver: driver, Spec: driverConnector.Spec(), + DefaultConfig: defaultConfig, AnonymousAccess: true, } diff --git a/runtime/connections.go b/runtime/connections.go index 9ebc6bcab3d4..cb1e96f14c8c 100644 --- a/runtime/connections.go +++ b/runtime/connections.go @@ -3,9 +3,10 @@ package runtime import ( "context" "fmt" + "maps" + "strconv" "strings" - runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" "github.com/rilldata/rill/runtime/drivers" ) @@ -29,7 +30,7 @@ func (r *Runtime) AcquireSystemHandle(ctx context.Context, connector string) (dr // AcquireHandle returns instance specific handle func (r *Runtime) AcquireHandle(ctx context.Context, instanceID, connector string) (drivers.Handle, func(), error) { - driver, cfg, err := r.connectorConfig(ctx, instanceID, connector) + cfg, err := r.ConnectorConfig(ctx, instanceID, connector) if err != nil { return nil, nil, err } @@ -38,7 +39,7 @@ func (r *Runtime) AcquireHandle(ctx context.Context, instanceID, connector strin // So we take this moment to make sure the ctx gets checked for cancellation at least every once in a while. return nil, nil, ctx.Err() } - return r.getConnection(ctx, instanceID, driver, cfg, false) + return r.getConnection(ctx, instanceID, cfg.Driver, cfg.Resolve(), false) } func (r *Runtime) Repo(ctx context.Context, instanceID string) (drivers.RepoStore, func(), error) { @@ -180,106 +181,153 @@ func (r *Runtime) Catalog(ctx context.Context, instanceID string) (drivers.Catal return store, release, nil } -func (r *Runtime) connectorConfig(ctx context.Context, instanceID, name string) (string, map[string]any, error) { +func (r *Runtime) ConnectorConfig(ctx context.Context, instanceID, name string) (*ConnectorConfig, error) { inst, err := r.Instance(ctx, instanceID) if err != nil { - return "", nil, err + return nil, err } + res := &ConnectorConfig{} + // Search for connector definition in instance - var connector *runtimev1.Connector for _, c := range inst.Connectors { if c.Name == name { - connector = c + res.Driver = c.Type + res.Preset = maps.Clone(c.Config) // Cloning because Preset may be mutated later, but the inst object is shared. break } } // Search for connector definition in rill.yaml - if connector == nil { - for _, c := range inst.ProjectConnectors { - if c.Name == name { - connector = c - break - } + for _, c := range inst.ProjectConnectors { + if c.Name == name { + res.Driver = c.Type + res.Project = maps.Clone(c.Config) // Cloning because Project may be mutated later, but the inst object is shared. + break } } // Search for implicit connectors (where the name matches a driver name) - if connector == nil { + if res.Driver == "" { _, ok := drivers.Drivers[name] if ok { - connector = &runtimev1.Connector{ - Type: name, - Name: name, - } + res.Driver = name } } - // Return if search for connector was unsuccessful - if connector == nil { - return "", nil, fmt.Errorf("unknown connector %q", name) - } - - // Build connector config - cfg := make(map[string]any) - - // Apply config from definition - for key, value := range connector.Config { - cfg[strings.ToLower(key)] = value + // Return if search for connector driver was unsuccessful + if res.Driver == "" { + return nil, fmt.Errorf("unknown connector %q", name) } - // Instance variables matching the format "connector.name.var" are applied to the connector config + // Build res.Env config based on instance variables matching the format "connector.name.var" vars := inst.ResolveVariables() prefix := fmt.Sprintf("connector.%s.", name) for k, v := range vars { if after, found := strings.CutPrefix(k, prefix); found { - cfg[strings.ToLower(after)] = v + if res.Env == nil { + res.Env = make(map[string]string) + } + res.Env[after] = v } } // For backwards compatibility, certain root-level variables apply to certain implicit connectors. // NOTE: This switches on connector.Name, not connector.Type, because this only applies to implicit connectors. - switch connector.Name { + switch name { case "s3", "athena", "redshift": - setIfNil(cfg, "aws_access_key_id", vars["aws_access_key_id"]) - setIfNil(cfg, "aws_secret_access_key", vars["aws_secret_access_key"]) - setIfNil(cfg, "aws_session_token", vars["aws_session_token"]) + res.setPreset("aws_access_key_id", vars["aws_access_key_id"]) + res.setPreset("aws_secret_access_key", vars["aws_secret_access_key"]) + res.setPreset("aws_session_token", vars["aws_session_token"]) case "azure": - setIfNil(cfg, "azure_storage_account", vars["azure_storage_account"]) - setIfNil(cfg, "azure_storage_key", vars["azure_storage_key"]) - setIfNil(cfg, "azure_storage_sas_token", vars["azure_storage_sas_token"]) - setIfNil(cfg, "azure_storage_connection_string", vars["azure_storage_connection_string"]) + res.setPreset("azure_storage_account", vars["azure_storage_account"]) + res.setPreset("azure_storage_key", vars["azure_storage_key"]) + res.setPreset("azure_storage_sas_token", vars["azure_storage_sas_token"]) + res.setPreset("azure_storage_connection_string", vars["azure_storage_connection_string"]) case "gcs": - setIfNil(cfg, "google_application_credentials", vars["google_application_credentials"]) + res.setPreset("google_application_credentials", vars["google_application_credentials"]) case "bigquery": - setIfNil(cfg, "google_application_credentials", vars["google_application_credentials"]) + res.setPreset("google_application_credentials", vars["google_application_credentials"]) case "motherduck": - setIfNil(cfg, "token", vars["token"]) - setIfNil(cfg, "dsn", "") - } - - // Apply built-in connector config - cfg["allow_host_access"] = r.opts.AllowHostAccess - - // The "local_file" connector needs to know the repo root. - // TODO: This is an ugly hack. But how can we get rid of it? - if connector.Name == "local_file" { + res.setPreset("token", vars["token"]) + res.setPreset("dsn", "") + case "local_file": + // The "local_file" connector needs to know the repo root. + // TODO: This is an ugly hack. But how can we get rid of it? if inst.RepoConnector != "local_file" { // The RepoConnector shouldn't be named "local_file", but let's still try to avoid infinite recursion repo, release, err := r.Repo(ctx, instanceID) if err != nil { - return "", nil, err + return nil, err } - cfg["dsn"] = repo.Root() + res.setPreset("dsn", repo.Root()) release() } } - return connector.Type, cfg, nil + // Apply built-in system-wide config + res.setPreset("allow_host_access", strconv.FormatBool(r.opts.AllowHostAccess)) + + // Done + return res, nil +} + +// ConnectorConfig holds and resolves connector configuration. +// We support three levels of configuration: +// 1. Preset: provided when creating the instance (or set by the system, such as allow_host_access). Cannot be overridden. +// 2. Project: defined in the rill.yaml file. Can be overridden by the env. +// 3. Env: defined in the instance's variables (in the format "connector.name.var"). +type ConnectorConfig struct { + Driver string + Preset map[string]string + Project map[string]string + Env map[string]string +} + +// Resolve returns the final resolved connector configuration. +// It guarantees that all keys in the result are lowercase. +func (c *ConnectorConfig) Resolve() map[string]any { + n := len(c.Preset) + len(c.Project) + len(c.Env) + if n == 0 { + return nil + } + + cfg := make(map[string]any, n) + for k, v := range c.Project { + cfg[strings.ToLower(k)] = v + } + for k, v := range c.Env { + cfg[strings.ToLower(k)] = v + } + for k, v := range c.Preset { + cfg[strings.ToLower(k)] = v + } + return cfg +} + +// ResolveString is similar to Resolve, but it returns a map of strings. +func (c *ConnectorConfig) ResolveStrings() map[string]string { + n := len(c.Preset) + len(c.Project) + len(c.Env) + if n == 0 { + return nil + } + + cfg := make(map[string]string, n) + for k, v := range c.Preset { + cfg[strings.ToLower(k)] = v + } + for k, v := range c.Project { + cfg[strings.ToLower(k)] = v + } + for k, v := range c.Env { + cfg[strings.ToLower(k)] = v + } + return cfg } -func setIfNil(m map[string]any, key string, value any) { - if _, ok := m[key]; !ok { - m[key] = value +// setPreset sets a preset value if it's not empty. +func (c *ConnectorConfig) setPreset(k, v string) { + if c.Preset == nil { + c.Preset = make(map[string]string) } + c.Preset[k] = v } diff --git a/runtime/drivers/admin/admin.go b/runtime/drivers/admin/admin.go index b640e681de1f..9c854df911f0 100644 --- a/runtime/drivers/admin/admin.go +++ b/runtime/drivers/admin/admin.go @@ -36,9 +36,10 @@ var tracer = otel.Tracer("github.com/rilldata/rill/runtime/drivers/admin") var spec = drivers.Spec{ DisplayName: "Rill Admin", - ConfigProperties: []drivers.PropertySchema{ + ConfigProperties: []*drivers.PropertySpec{ { Key: "access_token", + Type: drivers.StringPropertyType, Secret: true, }, }, diff --git a/runtime/drivers/athena/athena.go b/runtime/drivers/athena/athena.go index f60ffd8e3647..2da2679f4334 100644 --- a/runtime/drivers/athena/athena.go +++ b/runtime/drivers/athena/athena.go @@ -16,10 +16,10 @@ func init() { } var spec = drivers.Spec{ - DisplayName: "Amazon Athena", - Description: "Connect to Amazon Athena database.", - ServiceAccountDocs: "", - SourceProperties: []drivers.PropertySchema{ + DisplayName: "Amazon Athena", + Description: "Connect to Amazon Athena database.", + DocsURL: "", + SourceProperties: []*drivers.PropertySpec{ { Key: "sql", Type: drivers.StringPropertyType, @@ -30,36 +30,38 @@ var spec = drivers.Spec{ }, { Key: "output_location", + Type: drivers.StringPropertyType, DisplayName: "S3 output location", Description: "Output location for query results in S3.", Placeholder: "s3://bucket-name/path/", - Type: drivers.StringPropertyType, Required: false, }, { Key: "workgroup", + Type: drivers.StringPropertyType, DisplayName: "AWS Athena workgroup", Description: "AWS Athena workgroup to use for queries.", Placeholder: "primary", - Type: drivers.StringPropertyType, Required: false, }, { Key: "region", + Type: drivers.StringPropertyType, DisplayName: "AWS region", Description: "AWS region to connect to Athena and the output location.", Placeholder: "us-east-1", - Type: drivers.StringPropertyType, Required: false, }, }, - ConfigProperties: []drivers.PropertySchema{ + ConfigProperties: []*drivers.PropertySpec{ { Key: "aws_access_key_id", + Type: drivers.StringPropertyType, Secret: true, }, { Key: "aws_secret_access_key", + Type: drivers.StringPropertyType, Secret: true, }, }, @@ -67,12 +69,19 @@ var spec = drivers.Spec{ type driver struct{} +type configProperties struct { + AccessKeyID string `mapstructure:"aws_access_key_id"` + SecretAccessKey string `mapstructure:"aws_secret_access_key"` + SessionToken string `mapstructure:"aws_access_token"` + AllowHostAccess bool `mapstructure:"allow_host_access"` +} + func (d driver) Open(config map[string]any, shared bool, _ *activity.Client, logger *zap.Logger) (drivers.Handle, error) { if shared { return nil, fmt.Errorf("athena driver can't be shared") } conf := &configProperties{} - err := mapstructure.Decode(config, conf) + err := mapstructure.WeakDecode(config, conf) if err != nil { return nil, err } @@ -182,10 +191,3 @@ func (c *Connection) AsFileStore() (drivers.FileStore, bool) { func (c *Connection) AsSQLStore() (drivers.SQLStore, bool) { return c, true } - -type configProperties struct { - AccessKeyID string `mapstructure:"aws_access_key_id"` - SecretAccessKey string `mapstructure:"aws_secret_access_key"` - SessionToken string `mapstructure:"aws_access_token"` - AllowHostAccess bool `mapstructure:"allow_host_access"` -} diff --git a/runtime/drivers/azure/azure.go b/runtime/drivers/azure/azure.go index 08457e168659..25c83e7cce04 100644 --- a/runtime/drivers/azure/azure.go +++ b/runtime/drivers/azure/azure.go @@ -32,45 +32,50 @@ func init() { } var spec = drivers.Spec{ - DisplayName: "Azure Blob Storage", - Description: "Connect to Azure Blob Storage.", - ServiceAccountDocs: "https://docs.rilldata.com/reference/connectors/azure", - SourceProperties: []drivers.PropertySchema{ - { - Key: "path", - DisplayName: "Blob URI", - Description: "Path to file on the disk.", - Placeholder: "azure://container-name/path/to/file.csv", - Type: drivers.StringPropertyType, - Required: true, - Hint: "Glob patterns are supported", - }, - { - Key: "account", - DisplayName: "Account name", - Description: "Azure storage account name.", - Type: drivers.StringPropertyType, - Required: false, - }, - }, - ConfigProperties: []drivers.PropertySchema{ + DisplayName: "Azure Blob Storage", + Description: "Connect to Azure Blob Storage.", + DocsURL: "https://docs.rilldata.com/reference/connectors/azure", + ConfigProperties: []*drivers.PropertySpec{ { Key: "azure_storage_account", + Type: drivers.StringPropertyType, Secret: true, }, { Key: "azure_storage_key", + Type: drivers.StringPropertyType, Secret: true, }, { Key: "azure_storage_sas_token", + Type: drivers.StringPropertyType, Secret: true, }, { Key: "azure_storage_connection_string", + Type: drivers.StringPropertyType, Secret: true, }, }, + SourceProperties: []*drivers.PropertySpec{ + { + Key: "path", + Type: drivers.StringPropertyType, + DisplayName: "Blob URI", + Description: "Path to file on the disk.", + Placeholder: "azure://container-name/path/to/file.csv", + Required: true, + Hint: "Glob patterns are supported", + }, + { + Key: "account", + Type: drivers.StringPropertyType, + DisplayName: "Account name", + Description: "Azure storage account name.", + Required: false, + }, + }, + ImplementsObjectStore: true, } type driver struct{} @@ -88,7 +93,7 @@ func (d driver) Open(config map[string]any, shared bool, client *activity.Client return nil, fmt.Errorf("azure driver does not support shared connections") } conf := &configProperties{} - err := mapstructure.Decode(config, conf) + err := mapstructure.WeakDecode(config, conf) if err != nil { return nil, err } diff --git a/runtime/drivers/bigquery/bigquery.go b/runtime/drivers/bigquery/bigquery.go index 2296c1051f90..51bfd0ca534f 100644 --- a/runtime/drivers/bigquery/bigquery.go +++ b/runtime/drivers/bigquery/bigquery.go @@ -3,14 +3,11 @@ package bigquery import ( "context" "fmt" - "os" - "strings" "cloud.google.com/go/bigquery" "github.com/mitchellh/mapstructure" "github.com/rilldata/rill/runtime/drivers" "github.com/rilldata/rill/runtime/pkg/activity" - "github.com/rilldata/rill/runtime/pkg/fileutil" "github.com/rilldata/rill/runtime/pkg/gcputil" "go.uber.org/zap" "google.golang.org/api/option" @@ -23,10 +20,17 @@ func init() { // spec for bigquery connector var spec = drivers.Spec{ - DisplayName: "BigQuery", - Description: "Import data from BigQuery.", - ServiceAccountDocs: "https://docs.rilldata.com/reference/connectors/bigquery", - SourceProperties: []drivers.PropertySchema{ + DisplayName: "BigQuery", + Description: "Import data from BigQuery.", + DocsURL: "https://docs.rilldata.com/reference/connectors/bigquery", + ConfigProperties: []*drivers.PropertySpec{ + { + Key: "google_application_credentials", + Type: drivers.FilePropertyType, + Hint: "Enter path of file to load from.", + }, + }, + SourceProperties: []*drivers.PropertySpec{ { Key: "sql", Type: drivers.StringPropertyType, @@ -46,48 +50,14 @@ var spec = drivers.Spec{ }, { Key: "google_application_credentials", + Type: drivers.InformationalPropertyType, DisplayName: "GCP credentials", Description: "GCP credentials inferred from your local environment.", - Type: drivers.InformationalPropertyType, Hint: "Set your local credentials: gcloud auth application-default login Click to learn more.", - Href: "https://docs.rilldata.com/reference/connectors/gcs#local-credentials", - }, - }, - ConfigProperties: []drivers.PropertySchema{ - { - Key: "google_application_credentials", - Hint: "Enter path of file to load from.", - ValidateFunc: func(any interface{}) error { - val := any.(string) - if val == "" { - // user can chhose to leave empty for public sources - return nil - } - - path, err := fileutil.ExpandHome(strings.TrimSpace(val)) - if err != nil { - return err - } - - _, err = os.Stat(path) - return err - }, - TransformFunc: func(any interface{}) interface{} { - val := any.(string) - if val == "" { - return "" - } - - path, err := fileutil.ExpandHome(strings.TrimSpace(val)) - if err != nil { - return err - } - // ignoring error since PathError is already validated - content, _ := os.ReadFile(path) - return string(content) - }, + DocsURL: "https://docs.rilldata.com/reference/connectors/gcs#local-credentials", }, }, + ImplementsSQLStore: true, } type driver struct{} @@ -102,7 +72,7 @@ func (d driver) Open(config map[string]any, shared bool, client *activity.Client return nil, fmt.Errorf("bigquery driver can't be shared") } conf := &configProperties{} - err := mapstructure.Decode(config, conf) + err := mapstructure.WeakDecode(config, conf) if err != nil { return nil, err } diff --git a/runtime/drivers/clickhouse/clickhouse.go b/runtime/drivers/clickhouse/clickhouse.go index 492fcfdd36f1..97d198315ae4 100644 --- a/runtime/drivers/clickhouse/clickhouse.go +++ b/runtime/drivers/clickhouse/clickhouse.go @@ -24,8 +24,21 @@ func init() { var spec = drivers.Spec{ DisplayName: "ClickHouse", Description: "Connect to ClickHouse.", + DocsURL: "https://docs.rilldata.com/reference/olap-engines/clickhouse", + ConfigProperties: []*drivers.PropertySpec{ + { + Key: "dsn", + Type: drivers.StringPropertyType, + Required: true, + DisplayName: "Connection string", + Placeholder: "clickhouse://localhost:9000?username=default&password=", + Secret: true, + }, + }, // This spec is intentionally missing a source schema, as the frontend provides // custom instructions for how to connect Clickhouse as the OLAP driver. + SourceProperties: nil, + ImplementsOLAP: true, } var maxOpenConnections = 20 diff --git a/runtime/drivers/connectors.go b/runtime/drivers/connectors.go index 4f315960c0ac..8ff9691765ce 100644 --- a/runtime/drivers/connectors.go +++ b/runtime/drivers/connectors.go @@ -17,53 +17,44 @@ func RegisterAsConnector(name string, driver Driver) { // Spec provides metadata about a connector and the properties it supports. type Spec struct { - DisplayName string - Description string - ServiceAccountDocs string - SourceProperties []PropertySchema - ConfigProperties []PropertySchema - Help string + DisplayName string + Description string + DocsURL string + ConfigProperties []*PropertySpec + SourceProperties []*PropertySpec + ImplementsRegistry bool + ImplementsCatalog bool + ImplementsRepo bool + ImplementsAdmin bool + ImplementsAI bool + ImplementsSQLStore bool + ImplementsOLAP bool + ImplementsObjectStore bool + ImplementsFileStore bool } -// PropertySchema provides the schema for a property supported by a connector. -type PropertySchema struct { +// PropertySpec provides metadata about a single connector property. +type PropertySpec struct { Key string - Type PropertySchemaType + Type PropertyType Required bool DisplayName string Description string + DocsURL string + Hint string + Default string Placeholder string - // Default can be different from placeholder in the sense that placeholder should not be used as default value. - // If a default is set then it should also be used as a placeholder. - Default string - Hint string - Href string - Secret bool - ValidateFunc func(any interface{}) error - TransformFunc func(any interface{}) interface{} + Secret bool } -// PropertySchemaType is an enum of types supported for connector properties. -type PropertySchemaType int +// PropertyType is an enum of types supported for connector properties. +type PropertyType int const ( - UnspecifiedPropertyType PropertySchemaType = iota - StringPropertyType + UnspecifiedPropertyType PropertyType = iota NumberPropertyType BooleanPropertyType + StringPropertyType + FilePropertyType InformationalPropertyType ) - -// ValidateType checks that val has the correct type. -func (ps PropertySchema) ValidateType(val any) bool { - switch val.(type) { - case string: - return ps.Type == StringPropertyType - case bool: - return ps.Type == BooleanPropertyType - case int, int8, int16, int32, int64, float32, float64: - return ps.Type == NumberPropertyType - default: - return false - } -} diff --git a/runtime/drivers/druid/druid.go b/runtime/drivers/druid/druid.go index 7affcbca65cc..40ba4808628a 100644 --- a/runtime/drivers/druid/druid.go +++ b/runtime/drivers/druid/druid.go @@ -14,21 +14,26 @@ import ( _ "github.com/apache/calcite-avatica-go/v5" ) +func init() { + drivers.Register("druid", driver{}) + drivers.RegisterAsConnector("druid", driver{}) +} + var spec = drivers.Spec{ - ConfigProperties: []drivers.PropertySchema{ + DisplayName: "Druid", + Description: "Connect to Apache Druid.", + DocsURL: "https://docs.rilldata.com/reference/olap-engines/druid", + ConfigProperties: []*drivers.PropertySpec{ { Key: "dsn", Type: drivers.StringPropertyType, Required: true, - Description: "Druid connection string (using the Avatica protobuf endpoint)", + DisplayName: "Connection string", + Placeholder: "https://example.com/druid/v2/sql/avatica-protobuf?authentication=BASIC&avaticaUser=username&avaticaPassword=password", Secret: true, }, }, -} - -func init() { - drivers.Register("druid", driver{}) - drivers.RegisterAsConnector("druid", driver{}) + ImplementsOLAP: true, } type driver struct{} diff --git a/runtime/drivers/duckdb/duckdb.go b/runtime/drivers/duckdb/duckdb.go index 922e3cfb683a..c1f76d663384 100644 --- a/runtime/drivers/duckdb/duckdb.go +++ b/runtime/drivers/duckdb/duckdb.go @@ -39,8 +39,15 @@ func init() { var spec = drivers.Spec{ DisplayName: "DuckDB", - Description: "Create a DuckDB SQL source.", - SourceProperties: []drivers.PropertySchema{ + Description: "DuckDB SQL connector.", + DocsURL: "https://docs.rilldata.com/reference/connectors/motherduck", + ConfigProperties: []*drivers.PropertySpec{ + { + Key: "path", + Type: drivers.StringPropertyType, + }, + }, + SourceProperties: []*drivers.PropertySpec{ { Key: "sql", Type: drivers.StringPropertyType, @@ -58,21 +65,22 @@ var spec = drivers.Spec{ Placeholder: "/path/to/main.db or md:main.db(for motherduck)", }, }, - ConfigProperties: []drivers.PropertySchema{ - { - Key: "path", - Type: drivers.StringPropertyType, - }, - }, + ImplementsCatalog: true, + ImplementsOLAP: true, } var motherduckSpec = drivers.Spec{ - ConfigProperties: []drivers.PropertySchema{ + DisplayName: "MotherDuck", + Description: "MotherDuck SQL connector.", + DocsURL: "https://docs.rilldata.com/reference/connectors/motherduck", + ConfigProperties: []*drivers.PropertySpec{ { Key: "token", + Type: drivers.StringPropertyType, Secret: true, }, }, + ImplementsOLAP: true, } type Driver struct { diff --git a/runtime/drivers/file/file.go b/runtime/drivers/file/file.go index 05e038b2a50a..5a466a7e9547 100644 --- a/runtime/drivers/file/file.go +++ b/runtime/drivers/file/file.go @@ -23,7 +23,7 @@ func init() { var spec = drivers.Spec{ DisplayName: "Local file", Description: "Import Locally Stored File.", - SourceProperties: []drivers.PropertySchema{ + SourceProperties: []*drivers.PropertySpec{ { Key: "path", Type: drivers.StringPropertyType, @@ -41,22 +41,30 @@ var spec = drivers.Spec{ Placeholder: "csv", }, }, + ImplementsFileStore: true, } type driver struct { name string } +type configProperties struct { + DSN string `mapstructure:"dsn"` + AllowHostAccess bool `mapstructure:"allow_host_access"` +} + func (d driver) Open(config map[string]any, shared bool, client *activity.Client, logger *zap.Logger) (drivers.Handle, error) { if shared { return nil, fmt.Errorf("file driver can't be shared") } - dsn, ok := config["dsn"].(string) - if !ok { - return nil, fmt.Errorf("require dsn to open file connection") + + conf := &configProperties{} + err := mapstructure.WeakDecode(config, conf) + if err != nil { + return nil, err } - path, err := fileutil.ExpandHome(dsn) + path, err := fileutil.ExpandHome(conf.DSN) if err != nil { return nil, err } @@ -69,7 +77,7 @@ func (d driver) Open(config map[string]any, shared bool, client *activity.Client c := &connection{ logger: logger, root: absPath, - driverConfig: config, + driverConfig: conf, driverName: d.name, shared: shared, } @@ -114,7 +122,7 @@ type connection struct { logger *zap.Logger // root should be absolute path root string - driverConfig map[string]any + driverConfig *configProperties driverName string shared bool @@ -125,7 +133,9 @@ type connection struct { // Config implements drivers.Connection. func (c *connection) Config() map[string]any { - return c.driverConfig + m := make(map[string]any, 0) + _ = mapstructure.Decode(c.driverConfig, m) + return m } // Close implements drivers.Connection. diff --git a/runtime/drivers/file/file_store.go b/runtime/drivers/file/file_store.go index cd937d8facb3..9fd48b105eb1 100644 --- a/runtime/drivers/file/file_store.go +++ b/runtime/drivers/file/file_store.go @@ -33,9 +33,5 @@ func (c *connection) FilePaths(ctx context.Context, src map[string]any) ([]strin } func (c *connection) resolveLocalPath(path string) (string, error) { - allowHostAccess := false - if val, ok := c.driverConfig["allow_host_access"].(bool); ok { - allowHostAccess = val - } - return fileutil.ResolveLocalPath(path, c.root, allowHostAccess) + return fileutil.ResolveLocalPath(path, c.root, c.driverConfig.AllowHostAccess) } diff --git a/runtime/drivers/gcs/gcs.go b/runtime/drivers/gcs/gcs.go index ed162f5d8dab..da8d9599359f 100644 --- a/runtime/drivers/gcs/gcs.go +++ b/runtime/drivers/gcs/gcs.go @@ -6,8 +6,6 @@ import ( "fmt" "math" "net/http" - "os" - "strings" "github.com/bmatcuk/doublestar/v4" "github.com/c2h5oh/datasize" @@ -15,7 +13,6 @@ import ( "github.com/rilldata/rill/runtime/drivers" rillblob "github.com/rilldata/rill/runtime/drivers/blob" "github.com/rilldata/rill/runtime/pkg/activity" - "github.com/rilldata/rill/runtime/pkg/fileutil" "github.com/rilldata/rill/runtime/pkg/gcputil" "github.com/rilldata/rill/runtime/pkg/globutil" "go.uber.org/zap" @@ -33,63 +30,36 @@ func init() { } var spec = drivers.Spec{ - DisplayName: "Google Cloud Storage", - Description: "Connect to Google Cloud Storage.", - ServiceAccountDocs: "https://docs.rilldata.com/reference/connectors/gcs", - SourceProperties: []drivers.PropertySchema{ + DisplayName: "Google Cloud Storage", + Description: "Connect to Google Cloud Storage.", + DocsURL: "https://docs.rilldata.com/reference/connectors/gcs", + ConfigProperties: []*drivers.PropertySpec{ + { + Key: "google_application_credentials", + Type: drivers.FilePropertyType, + Hint: "Enter path of file to load from.", + }, + }, + SourceProperties: []*drivers.PropertySpec{ { Key: "path", + Type: drivers.StringPropertyType, DisplayName: "GS URI", Description: "Path to file on the disk.", Placeholder: "gs://bucket-name/path/to/file.csv", - Type: drivers.StringPropertyType, Required: true, Hint: "Glob patterns are supported", }, { Key: "gcp.credentials", + Type: drivers.InformationalPropertyType, DisplayName: "GCP credentials", Description: "GCP credentials inferred from your local environment.", - Type: drivers.InformationalPropertyType, Hint: "Set your local credentials: gcloud auth application-default login Click to learn more.", - Href: "https://docs.rilldata.com/reference/connectors/gcs#local-credentials", - }, - }, - ConfigProperties: []drivers.PropertySchema{ - { - Key: "google_application_credentials", - Hint: "Enter path of file to load from.", - ValidateFunc: func(any interface{}) error { - val := any.(string) - if val == "" { - // user can chhose to leave empty for public sources - return nil - } - - path, err := fileutil.ExpandHome(strings.TrimSpace(val)) - if err != nil { - return err - } - - _, err = os.Stat(path) - return err - }, - TransformFunc: func(any interface{}) interface{} { - val := any.(string) - if val == "" { - return "" - } - - path, err := fileutil.ExpandHome(strings.TrimSpace(val)) - if err != nil { - return err - } - // ignoring error since PathError is already validated - content, _ := os.ReadFile(path) - return string(content) - }, + DocsURL: "https://docs.rilldata.com/reference/connectors/gcs#local-credentials", }, }, + ImplementsObjectStore: true, } type driver struct{} @@ -104,7 +74,7 @@ func (d driver) Open(config map[string]any, shared bool, client *activity.Client return nil, fmt.Errorf("gcs driver can't be shared") } conf := &configProperties{} - err := mapstructure.Decode(config, conf) + err := mapstructure.WeakDecode(config, conf) if err != nil { return nil, err } diff --git a/runtime/drivers/https/https.go b/runtime/drivers/https/https.go index b467072018ae..cd695ba48b2a 100644 --- a/runtime/drivers/https/https.go +++ b/runtime/drivers/https/https.go @@ -22,16 +22,17 @@ func init() { var spec = drivers.Spec{ DisplayName: "https", Description: "Connect to a remote file.", - SourceProperties: []drivers.PropertySchema{ + SourceProperties: []*drivers.PropertySpec{ { Key: "path", + Type: drivers.StringPropertyType, DisplayName: "Path", Description: "Path to the remote file.", Placeholder: "https://example.com/file.csv", - Type: drivers.StringPropertyType, Required: true, }, }, + ImplementsFileStore: true, } type driver struct{} diff --git a/runtime/drivers/mysql/mysql.go b/runtime/drivers/mysql/mysql.go index c1b705489f0c..86d22095f28e 100644 --- a/runtime/drivers/mysql/mysql.go +++ b/runtime/drivers/mysql/mysql.go @@ -16,7 +16,15 @@ func init() { var spec = drivers.Spec{ DisplayName: "MySQL", Description: "Connect to MySQL.", - SourceProperties: []drivers.PropertySchema{ + ConfigProperties: []*drivers.PropertySpec{ + { + Key: "dsn", + Type: drivers.StringPropertyType, + Placeholder: "username:password@tcp(example.com:3306)/my-db", + Secret: true, + }, + }, + SourceProperties: []*drivers.PropertySpec{ { Key: "sql", Type: drivers.StringPropertyType, @@ -27,20 +35,15 @@ var spec = drivers.Spec{ }, { Key: "dsn", - DisplayName: "MySQL Connection String", Type: drivers.StringPropertyType, + DisplayName: "MySQL Connection String", Required: false, - Href: "https://github.com/go-sql-driver/mysql?tab=readme-ov-file#dsn-data-source-name", + DocsURL: "https://github.com/go-sql-driver/mysql?tab=readme-ov-file#dsn-data-source-name", Placeholder: "username:password@tcp(example.com:3306)/my-db", Hint: "Either set this or pass --var connector.mysql.dsn=... to rill start", }, }, - ConfigProperties: []drivers.PropertySchema{ - { - Key: "dsn", - Secret: true, - }, - }, + ImplementsSQLStore: true, } type driver struct{} diff --git a/runtime/drivers/postgres/postgres.go b/runtime/drivers/postgres/postgres.go index ae0995e69ee0..7f57a595f6c6 100644 --- a/runtime/drivers/postgres/postgres.go +++ b/runtime/drivers/postgres/postgres.go @@ -16,7 +16,13 @@ func init() { var spec = drivers.Spec{ DisplayName: "Postgres", Description: "Connect to Postgres.", - SourceProperties: []drivers.PropertySchema{ + ConfigProperties: []*drivers.PropertySpec{ + { + Key: "database_url", + Secret: true, + }, + }, + SourceProperties: []*drivers.PropertySpec{ { Key: "sql", Type: drivers.StringPropertyType, @@ -27,20 +33,15 @@ var spec = drivers.Spec{ }, { Key: "database_url", - DisplayName: "Postgress Connection String", Type: drivers.StringPropertyType, + DisplayName: "Postgres Connection String", Required: false, - Href: "https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING", + DocsURL: "https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING", Placeholder: "postgresql://postgres:postgres@localhost:5432/postgres", Hint: "Either set this or pass --var connector.postgres.database_url=... to rill start", }, }, - ConfigProperties: []drivers.PropertySchema{ - { - Key: "database_url", - Secret: true, - }, - }, + ImplementsSQLStore: true, } type driver struct{} diff --git a/runtime/drivers/redshift/redshift.go b/runtime/drivers/redshift/redshift.go index faf2f7931462..2d8d91ee60d9 100644 --- a/runtime/drivers/redshift/redshift.go +++ b/runtime/drivers/redshift/redshift.go @@ -16,10 +16,22 @@ func init() { } var spec = drivers.Spec{ - DisplayName: "Amazon Redshift", - Description: "Connect to Amazon Redshift database.", - ServiceAccountDocs: "", - SourceProperties: []drivers.PropertySchema{ + DisplayName: "Amazon Redshift", + Description: "Connect to Amazon Redshift database.", + DocsURL: "", + ConfigProperties: []*drivers.PropertySpec{ + { + Key: "aws_access_key_id", + Type: drivers.StringPropertyType, + Secret: true, + }, + { + Key: "aws_secret_access_key", + Type: drivers.StringPropertyType, + Secret: true, + }, + }, + SourceProperties: []*drivers.PropertySpec{ { Key: "sql", Type: drivers.StringPropertyType, @@ -30,73 +42,71 @@ var spec = drivers.Spec{ }, { Key: "output_location", + Type: drivers.StringPropertyType, DisplayName: "S3 output location", Description: "Output location in S3 for temporary data.", Placeholder: "s3://bucket-name/path/", - Type: drivers.StringPropertyType, Required: true, }, { Key: "workgroup", + Type: drivers.StringPropertyType, DisplayName: "AWS Redshift workgroup", Description: "AWS Redshift workgroup", Placeholder: "default-workgroup", - Type: drivers.StringPropertyType, Required: false, }, { Key: "region", + Type: drivers.StringPropertyType, DisplayName: "AWS region", Description: "AWS region", Placeholder: "us-east-1", - Type: drivers.StringPropertyType, Required: false, }, { Key: "database", + Type: drivers.StringPropertyType, DisplayName: "Redshift database", Description: "Redshift database", Placeholder: "dev", - Type: drivers.StringPropertyType, Required: true, }, { Key: "cluster_identifier", + Type: drivers.StringPropertyType, DisplayName: "Redshift cluster identifier", Description: "Redshift cluster identifier", Placeholder: "redshift-cluster-1", - Type: drivers.StringPropertyType, Required: false, }, { Key: "role_arn", + Type: drivers.StringPropertyType, DisplayName: "Redshift role ARN", Description: "Redshift role ARN", Placeholder: "arn:aws:iam::03214372:role/service-role/AmazonRedshift-CommandsAccessRole-20240307T203902", - Type: drivers.StringPropertyType, Required: true, }, }, - ConfigProperties: []drivers.PropertySchema{ - { - Key: "aws_access_key_id", - Secret: true, - }, - { - Key: "aws_secret_access_key", - Secret: true, - }, - }, + ImplementsSQLStore: true, } type driver struct{} +type configProperties struct { + AccessKeyID string `mapstructure:"aws_access_key_id"` + SecretAccessKey string `mapstructure:"aws_secret_access_key"` + SessionToken string `mapstructure:"aws_access_token"` + AllowHostAccess bool `mapstructure:"allow_host_access"` +} + func (d driver) Open(config map[string]any, shared bool, _ *activity.Client, logger *zap.Logger) (drivers.Handle, error) { if shared { return nil, fmt.Errorf("redshift driver can't be shared") } conf := &configProperties{} - err := mapstructure.Decode(config, conf) + err := mapstructure.WeakDecode(config, conf) if err != nil { return nil, err } @@ -206,10 +216,3 @@ func (c *Connection) AsSQLStore() (drivers.SQLStore, bool) { func (c *Connection) AsAI(instanceID string) (drivers.AIService, bool) { return nil, false } - -type configProperties struct { - AccessKeyID string `mapstructure:"aws_access_key_id"` - SecretAccessKey string `mapstructure:"aws_secret_access_key"` - SessionToken string `mapstructure:"aws_access_token"` - AllowHostAccess bool `mapstructure:"allow_host_access"` -} diff --git a/runtime/drivers/s3/s3.go b/runtime/drivers/s3/s3.go index b7bc05f97f2b..b909720c6982 100644 --- a/runtime/drivers/s3/s3.go +++ b/runtime/drivers/s3/s3.go @@ -26,56 +26,59 @@ import ( ) var spec = drivers.Spec{ - DisplayName: "Amazon S3", - Description: "Connect to AWS S3 Storage.", - ServiceAccountDocs: "https://docs.rilldata.com/reference/connectors/s3", - SourceProperties: []drivers.PropertySchema{ + DisplayName: "Amazon S3", + Description: "Connect to AWS S3 Storage.", + DocsURL: "https://docs.rilldata.com/reference/connectors/s3", + ConfigProperties: []*drivers.PropertySpec{ + { + Key: "aws_access_key_id", + Type: drivers.StringPropertyType, + Secret: true, + }, + { + Key: "aws_secret_access_key", + Type: drivers.StringPropertyType, + Secret: true, + }, + }, + SourceProperties: []*drivers.PropertySpec{ { Key: "path", + Type: drivers.StringPropertyType, DisplayName: "S3 URI", Description: "Path to file on the disk.", Placeholder: "s3://bucket-name/path/to/file.csv", - Type: drivers.StringPropertyType, Required: true, Hint: "Glob patterns are supported", }, { Key: "region", + Type: drivers.StringPropertyType, DisplayName: "AWS region", Description: "AWS Region for the bucket.", Placeholder: "us-east-1", - Type: drivers.StringPropertyType, Required: false, Hint: "Rill will use the default region in your local AWS config, unless set here.", }, { Key: "endpoint", + Type: drivers.StringPropertyType, DisplayName: "Endpoint URL", Description: "Override S3 Endpoint URL", Placeholder: "https://my.s3.server.com", - Type: drivers.StringPropertyType, Required: false, Hint: "Overrides the S3 endpoint to connect to. This should only be used to connect to S3-compatible services, such as Cloudflare R2 or MinIO.", }, { Key: "aws.credentials", + Type: drivers.InformationalPropertyType, DisplayName: "AWS credentials", Description: "AWS credentials inferred from your local environment.", - Type: drivers.InformationalPropertyType, Hint: "Set your local credentials: aws configure Click to learn more.", - Href: "https://docs.rilldata.com/reference/connectors/s3#local-credentials", - }, - }, - ConfigProperties: []drivers.PropertySchema{ - { - Key: "aws_access_key_id", - Secret: true, - }, - { - Key: "aws_secret_access_key", - Secret: true, + DocsURL: "https://docs.rilldata.com/reference/connectors/s3#local-credentials", }, }, + ImplementsObjectStore: true, } const defaultPageSize = 20 diff --git a/runtime/drivers/salesforce/salesforce.go b/runtime/drivers/salesforce/salesforce.go index 4990008cdc7f..08c36377c3cf 100644 --- a/runtime/drivers/salesforce/salesforce.go +++ b/runtime/drivers/salesforce/salesforce.go @@ -23,7 +23,34 @@ func (silentLogger) Info(args ...any) { var spec = drivers.Spec{ DisplayName: "Salesforce", Description: "Connect to Salesforce.", - SourceProperties: []drivers.PropertySchema{ + ConfigProperties: []*drivers.PropertySpec{ + { + Key: "username", + Type: drivers.StringPropertyType, + Secret: false, + }, + { + Key: "password", + Type: drivers.StringPropertyType, + Secret: true, + }, + { + Key: "key", + Type: drivers.StringPropertyType, + Secret: true, + }, + { + Key: "endpoint", + Type: drivers.StringPropertyType, + Secret: false, + }, + { + Key: "client_id", + Type: drivers.StringPropertyType, + Secret: false, + }, + }, + SourceProperties: []*drivers.PropertySpec{ { Key: "soql", Type: drivers.StringPropertyType, @@ -49,30 +76,30 @@ var spec = drivers.Spec{ }, { Key: "username", - DisplayName: "Salesforce Username", Type: drivers.StringPropertyType, + DisplayName: "Salesforce Username", Required: false, Placeholder: "user@example.com", Hint: "Either set this or pass --var connector.salesforce.username=... to rill start", }, { Key: "password", - DisplayName: "Salesforce Password", Type: drivers.StringPropertyType, + DisplayName: "Salesforce Password", Required: false, Hint: "Either set this or pass --var connector.salesforce.password=... to rill start", }, { Key: "key", - DisplayName: "JWT Key for Authentication", Type: drivers.StringPropertyType, + DisplayName: "JWT Key for Authentication", Required: false, Hint: "Either set this or pass --var connector.salesforce.key=... to rill start", }, { Key: "endpoint", - DisplayName: "Login Endpoint", Type: drivers.StringPropertyType, + DisplayName: "Login Endpoint", Required: false, Default: "login.salesforce.com", Placeholder: "login.salesforce.com", @@ -80,35 +107,14 @@ var spec = drivers.Spec{ }, { Key: "client_id", - DisplayName: "Connected App Client Id", Type: drivers.StringPropertyType, + DisplayName: "Connected App Client Id", Required: false, Default: defaultClientID, Hint: "Either set this or pass --var connector.salesforce.client_id=... to rill start", }, }, - ConfigProperties: []drivers.PropertySchema{ - { - Key: "username", - Secret: false, - }, - { - Key: "password", - Secret: true, - }, - { - Key: "key", - Secret: true, - }, - { - Key: "endpoint", - Secret: false, - }, - { - Key: "client_id", - Secret: false, - }, - }, + ImplementsSQLStore: true, } type driver struct{} diff --git a/runtime/drivers/snowflake/snowflake.go b/runtime/drivers/snowflake/snowflake.go index 526444768504..a131a79518b4 100644 --- a/runtime/drivers/snowflake/snowflake.go +++ b/runtime/drivers/snowflake/snowflake.go @@ -16,7 +16,14 @@ func init() { var spec = drivers.Spec{ DisplayName: "Snowflake", Description: "Connect to Snowflake.", - SourceProperties: []drivers.PropertySchema{ + ConfigProperties: []*drivers.PropertySpec{ + { + Key: "dsn", + Type: drivers.StringPropertyType, + Secret: true, + }, + }, + SourceProperties: []*drivers.PropertySpec{ { Key: "sql", Type: drivers.StringPropertyType, @@ -27,20 +34,15 @@ var spec = drivers.Spec{ }, { Key: "dsn", - DisplayName: "Snowflake Connection String", Type: drivers.StringPropertyType, + DisplayName: "Snowflake Connection String", Required: false, - Href: "https://pkg.go.dev/github.com/snowflakedb/gosnowflake#hdr-Connection_String", + DocsURL: "https://pkg.go.dev/github.com/snowflakedb/gosnowflake#hdr-Connection_String", Placeholder: "my_user_name:my_password@ac123456/my_database/my_schema?warehouse=my_warehouse&role=my_user_role", Hint: "Either set this or pass --var connector.snowflake.dsn=... to rill start", }, }, - ConfigProperties: []drivers.PropertySchema{ - { - Key: "dsn", - Secret: true, - }, - }, + ImplementsSQLStore: true, } type driver struct{} diff --git a/runtime/drivers/sqlite/sqlite.go b/runtime/drivers/sqlite/sqlite.go index 4dcba475634b..2def5b8014ce 100644 --- a/runtime/drivers/sqlite/sqlite.go +++ b/runtime/drivers/sqlite/sqlite.go @@ -59,7 +59,7 @@ func (d driver) Spec() drivers.Spec { return drivers.Spec{ DisplayName: "SQLite", Description: "Import data from SQLite into DuckDB.", - SourceProperties: []drivers.PropertySchema{ + SourceProperties: []*drivers.PropertySpec{ { Key: "db", Type: drivers.StringPropertyType, @@ -77,6 +77,8 @@ func (d driver) Spec() drivers.Spec { Placeholder: "table", }, }, + ImplementsRegistry: true, + ImplementsCatalog: true, } } diff --git a/runtime/registry.go b/runtime/registry.go index efb3fecbbcb9..b62a62b39435 100644 --- a/runtime/registry.go +++ b/runtime/registry.go @@ -84,7 +84,7 @@ func (r *Runtime) DeleteInstance(ctx context.Context, instanceID string, dropOLA // For idempotency, it's ok for some steps to fail // Get OLAP info for dropOLAP - olapDriver, olapCfg, err := r.connectorConfig(ctx, instanceID, inst.ResolveOLAPConnector()) + olapCfg, err := r.ConnectorConfig(ctx, instanceID, inst.ResolveOLAPConnector()) if err != nil { r.logger.Error("delete instance: error getting config", zap.Error(err), zap.String("instance_id", instanceID), observability.ZapCtx(ctx)) } @@ -99,14 +99,14 @@ func (r *Runtime) DeleteInstance(ctx context.Context, instanceID string, dropOLA <-completed // If dropOLAP isn't set, let it default to true for DuckDB - if dropOLAP == nil && olapDriver == "duckdb" { + if dropOLAP == nil && olapCfg.Driver == "duckdb" { d := true dropOLAP = &d } // Can now drop the OLAP if dropOLAP != nil && *dropOLAP { - err = drivers.Drop(olapDriver, olapCfg, r.logger) + err = drivers.Drop(olapCfg.Driver, olapCfg.Resolve(), r.logger) if err != nil { r.logger.Error("could not drop database", zap.Error(err), zap.String("instance_id", instanceID), observability.ZapCtx(ctx)) } diff --git a/runtime/server/connector_service.go b/runtime/server/connector_service.go new file mode 100644 index 000000000000..5e33fb10e49d --- /dev/null +++ b/runtime/server/connector_service.go @@ -0,0 +1,254 @@ +package server + +import ( + "context" + "fmt" + + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" + "github.com/rilldata/rill/runtime/drivers/bigquery" + "github.com/rilldata/rill/runtime/drivers/gcs" + "github.com/rilldata/rill/runtime/drivers/s3" +) + +func (s *Server) S3ListBuckets(ctx context.Context, req *runtimev1.S3ListBucketsRequest) (*runtimev1.S3ListBucketsResponse, error) { + s3Conn, release, err := s.getS3Conn(ctx, req.Connector, req.InstanceId) + if err != nil { + return nil, err + } + defer release() + + buckets, err := s3Conn.ListBuckets(ctx) + if err != nil { + return nil, err + } + + return &runtimev1.S3ListBucketsResponse{ + Buckets: buckets, + }, nil +} + +func (s *Server) S3ListObjects(ctx context.Context, req *runtimev1.S3ListObjectsRequest) (*runtimev1.S3ListObjectsResponse, error) { + s3Conn, release, err := s.getS3Conn(ctx, req.Connector, req.InstanceId) + if err != nil { + return nil, err + } + defer release() + + objects, nextToken, err := s3Conn.ListObjects(ctx, req) + if err != nil { + return nil, err + } + + return &runtimev1.S3ListObjectsResponse{ + Objects: objects, + NextPageToken: nextToken, + }, nil +} + +func (s *Server) S3GetBucketMetadata(ctx context.Context, req *runtimev1.S3GetBucketMetadataRequest) (*runtimev1.S3GetBucketMetadataResponse, error) { + s3Conn, release, err := s.getS3Conn(ctx, req.Connector, req.InstanceId) + if err != nil { + return nil, err + } + defer release() + + region, err := s3Conn.GetBucketMetadata(ctx, req) + if err != nil { + return nil, err + } + + return &runtimev1.S3GetBucketMetadataResponse{ + Region: region, + }, nil +} + +func (s *Server) S3GetCredentialsInfo(ctx context.Context, req *runtimev1.S3GetCredentialsInfoRequest) (*runtimev1.S3GetCredentialsInfoResponse, error) { + s3Conn, release, err := s.getS3Conn(ctx, req.Connector, req.InstanceId) + if err != nil { + return nil, err + } + defer release() + + provider, exist, err := s3Conn.GetCredentialsInfo(ctx) + if err != nil { + return nil, err + } + + return &runtimev1.S3GetCredentialsInfoResponse{ + Exist: exist, + Provider: provider, + }, nil +} + +func (s *Server) GCSListBuckets(ctx context.Context, req *runtimev1.GCSListBucketsRequest) (*runtimev1.GCSListBucketsResponse, error) { + gcsConn, release, err := s.getGCSConn(ctx, req.Connector, req.InstanceId) + if err != nil { + return nil, err + } + defer release() + + buckets, next, err := gcsConn.ListBuckets(ctx, req) + if err != nil { + return nil, err + } + + return &runtimev1.GCSListBucketsResponse{ + Buckets: buckets, + NextPageToken: next, + }, nil +} + +func (s *Server) GCSListObjects(ctx context.Context, req *runtimev1.GCSListObjectsRequest) (*runtimev1.GCSListObjectsResponse, error) { + gcsConn, release, err := s.getGCSConn(ctx, req.Connector, req.InstanceId) + if err != nil { + return nil, err + } + defer release() + + objects, nextToken, err := gcsConn.ListObjects(ctx, req) + if err != nil { + return nil, err + } + + return &runtimev1.GCSListObjectsResponse{ + Objects: objects, + NextPageToken: nextToken, + }, nil +} + +func (s *Server) GCSGetCredentialsInfo(ctx context.Context, req *runtimev1.GCSGetCredentialsInfoRequest) (*runtimev1.GCSGetCredentialsInfoResponse, error) { + gcsConn, release, err := s.getGCSConn(ctx, req.Connector, req.InstanceId) + if err != nil { + return nil, err + } + defer release() + + projectID, exist, err := gcsConn.GetCredentialsInfo(ctx) + if err != nil { + return nil, err + } + + return &runtimev1.GCSGetCredentialsInfoResponse{ + ProjectId: projectID, + Exist: exist, + }, nil +} + +func (s *Server) OLAPListTables(ctx context.Context, req *runtimev1.OLAPListTablesRequest) (*runtimev1.OLAPListTablesResponse, error) { + olap, release, err := s.runtime.OLAP(ctx, req.InstanceId, req.Connector) + if err != nil { + return nil, err + } + defer release() + + tables, err := olap.InformationSchema().All(ctx) + if err != nil { + return nil, err + } + + res := make([]*runtimev1.TableInfo, len(tables)) + for i, table := range tables { + res[i] = &runtimev1.TableInfo{ + Database: table.Database, + Name: table.Name, + HasUnsupportedDataTypes: len(table.UnsupportedCols) != 0, + } + } + return &runtimev1.OLAPListTablesResponse{ + Tables: res, + }, nil +} + +func (s *Server) OLAPGetTable(ctx context.Context, req *runtimev1.OLAPGetTableRequest) (*runtimev1.OLAPGetTableResponse, error) { + olap, release, err := s.runtime.OLAP(ctx, req.InstanceId, req.Connector) + if err != nil { + return nil, err + } + defer release() + + table, err := olap.InformationSchema().Lookup(ctx, req.Table) + if err != nil { + return nil, err + } + + return &runtimev1.OLAPGetTableResponse{ + Schema: table.Schema, + UnsupportedColumns: table.UnsupportedCols, + View: table.View, + }, nil +} + +func (s *Server) BigQueryListDatasets(ctx context.Context, req *runtimev1.BigQueryListDatasetsRequest) (*runtimev1.BigQueryListDatasetsResponse, error) { + bq, release, err := s.getBigQueryConn(ctx, req.Connector, req.InstanceId) + if err != nil { + return nil, err + } + defer release() + + names, nextToken, err := bq.ListDatasets(ctx, req) + if err != nil { + return nil, err + } + + return &runtimev1.BigQueryListDatasetsResponse{ + Names: names, + NextPageToken: nextToken, + }, nil +} + +func (s *Server) BigQueryListTables(ctx context.Context, req *runtimev1.BigQueryListTablesRequest) (*runtimev1.BigQueryListTablesResponse, error) { + bq, release, err := s.getBigQueryConn(ctx, req.Connector, req.InstanceId) + if err != nil { + return nil, err + } + defer release() + + names, nextToken, err := bq.ListTables(ctx, req) + if err != nil { + return nil, err + } + + return &runtimev1.BigQueryListTablesResponse{ + Names: names, + NextPageToken: nextToken, + }, nil +} + +func (s *Server) getGCSConn(ctx context.Context, connector, instanceID string) (*gcs.Connection, func(), error) { + conn, release, err := s.runtime.AcquireHandle(ctx, instanceID, connector) + if err != nil { + return nil, nil, fmt.Errorf("can't open connection to gcs %w", err) + } + + gcsConn, ok := conn.(*gcs.Connection) + if !ok { + panic("conn is not gcs connection") + } + return gcsConn, release, nil +} + +func (s *Server) getS3Conn(ctx context.Context, connector, instanceID string) (*s3.Connection, func(), error) { + conn, release, err := s.runtime.AcquireHandle(ctx, instanceID, connector) + if err != nil { + return nil, nil, fmt.Errorf("can't open connection to s3 %w", err) + } + + s3Conn, ok := conn.(*s3.Connection) + if !ok { + panic("conn is not s3 connection") + } + return s3Conn, release, nil +} + +func (s *Server) getBigQueryConn(ctx context.Context, connector, instanceID string) (*bigquery.Connection, func(), error) { + conn, release, err := s.runtime.AcquireHandle(ctx, instanceID, connector) + if err != nil { + return nil, nil, err + } + + bq, ok := conn.(*bigquery.Connection) + if !ok { + panic("conn is not bigquery connection") + } + return bq, release, nil +} diff --git a/runtime/server/connectors.go b/runtime/server/connectors.go index b44790592f72..be8c17ccba18 100644 --- a/runtime/server/connectors.go +++ b/runtime/server/connectors.go @@ -2,67 +2,28 @@ package server import ( "context" - "fmt" runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" + "github.com/rilldata/rill/runtime" "github.com/rilldata/rill/runtime/compilers/rillv1" "github.com/rilldata/rill/runtime/drivers" - "github.com/rilldata/rill/runtime/drivers/bigquery" - "github.com/rilldata/rill/runtime/drivers/gcs" - "github.com/rilldata/rill/runtime/drivers/s3" + "github.com/rilldata/rill/runtime/server/auth" "golang.org/x/exp/maps" ) -// ListConnectors implements RuntimeService. -func (s *Server) ListConnectors(ctx context.Context, req *runtimev1.ListConnectorsRequest) (*runtimev1.ListConnectorsResponse, error) { - var pbs []*runtimev1.ConnectorSpec - for name, connector := range drivers.Connectors { - // Build protobufs for properties - srcProps := connector.Spec().SourceProperties - propPBs := make([]*runtimev1.ConnectorSpec_Property, len(srcProps)) - for j := range connector.Spec().SourceProperties { - propSchema := srcProps[j] - // Get type - var t runtimev1.ConnectorSpec_Property_Type - switch propSchema.Type { - case drivers.StringPropertyType: - t = runtimev1.ConnectorSpec_Property_TYPE_STRING - case drivers.NumberPropertyType: - t = runtimev1.ConnectorSpec_Property_TYPE_NUMBER - case drivers.BooleanPropertyType: - t = runtimev1.ConnectorSpec_Property_TYPE_BOOLEAN - case drivers.InformationalPropertyType: - t = runtimev1.ConnectorSpec_Property_TYPE_INFORMATIONAL - default: - panic(fmt.Errorf("property type '%v' not handled", propSchema.Type)) - } - - // Add protobuf for property - propPBs[j] = &runtimev1.ConnectorSpec_Property{ - Key: propSchema.Key, - DisplayName: propSchema.DisplayName, - Description: propSchema.Description, - Placeholder: propSchema.Placeholder, - Type: t, - Nullable: !propSchema.Required, - Hint: propSchema.Hint, - Href: propSchema.Href, - } - } - - // Add connector - pbs = append(pbs, &runtimev1.ConnectorSpec{ - Name: name, - DisplayName: connector.Spec().DisplayName, - Description: connector.Spec().Description, - Properties: propPBs, - }) +func (s *Server) ListConnectorDrivers(ctx context.Context, req *runtimev1.ListConnectorDriversRequest) (*runtimev1.ListConnectorDriversResponse, error) { + var pbs []*runtimev1.ConnectorDriver + for name, driver := range drivers.Connectors { + pbs = append(pbs, driverSpecToPB(name, driver.Spec())) } - - return &runtimev1.ListConnectorsResponse{Connectors: pbs}, nil + return &runtimev1.ListConnectorDriversResponse{Connectors: pbs}, nil } -func (s *Server) ScanConnectors(ctx context.Context, req *runtimev1.ScanConnectorsRequest) (*runtimev1.ScanConnectorsResponse, error) { +func (s *Server) AnalyzeConnectors(ctx context.Context, req *runtimev1.AnalyzeConnectorsRequest) (*runtimev1.AnalyzeConnectorsResponse, error) { + if !auth.GetClaims(ctx).CanInstance(req.InstanceId, auth.ReadInstance) { + return nil, ErrForbidden + } + inst, err := s.runtime.Instance(ctx, req.InstanceId) if err != nil { return nil, err @@ -74,7 +35,7 @@ func (s *Server) ScanConnectors(ctx context.Context, req *runtimev1.ScanConnecto } defer release() - p, err := rillv1.Parse(ctx, repo, req.InstanceId, inst.Environment, "") + p, err := rillv1.Parse(ctx, repo, req.InstanceId, inst.Environment, inst.OLAPConnector) if err != nil { return nil, err } @@ -84,258 +45,135 @@ func (s *Server) ScanConnectors(ctx context.Context, req *runtimev1.ScanConnecto return nil, err } - cMap := make(map[string]*runtimev1.ScannedConnector, len(connectors)) + res := make(map[string]*runtimev1.AnalyzedConnector) + for _, connector := range connectors { - cMap[connector.Name] = &runtimev1.ScannedConnector{ + cfg, err := s.runtime.ConnectorConfig(ctx, req.InstanceId, connector.Name) + if err != nil { + return nil, err + } + + c := &runtimev1.AnalyzedConnector{ Name: connector.Name, - Type: connector.Driver, + Driver: driverSpecToPB(connector.Driver, connector.Spec), + Config: cfg.ResolveStrings(), + PresetConfig: cfg.Preset, + ProjectConfig: connector.DefaultConfig, // NOTE: Could also use cfg.Project, but connector.DefaultConfig might be slightly more up-to-date + EnvConfig: cfg.Env, HasAnonymousAccess: connector.AnonymousAccess, + UsedBy: nil, } - } - return &runtimev1.ScanConnectorsResponse{ - Connectors: maps.Values(cMap), - }, nil -} - -func (s *Server) S3ListBuckets(ctx context.Context, req *runtimev1.S3ListBucketsRequest) (*runtimev1.S3ListBucketsResponse, error) { - s3Conn, release, err := s.getS3Conn(ctx, req.Connector, req.InstanceId) - if err != nil { - return nil, err - } - defer release() - - buckets, err := s3Conn.ListBuckets(ctx) - if err != nil { - return nil, err - } - - return &runtimev1.S3ListBucketsResponse{ - Buckets: buckets, - }, nil -} - -func (s *Server) S3ListObjects(ctx context.Context, req *runtimev1.S3ListObjectsRequest) (*runtimev1.S3ListObjectsResponse, error) { - s3Conn, release, err := s.getS3Conn(ctx, req.Connector, req.InstanceId) - if err != nil { - return nil, err - } - defer release() - - objects, nextToken, err := s3Conn.ListObjects(ctx, req) - if err != nil { - return nil, err - } - - return &runtimev1.S3ListObjectsResponse{ - Objects: objects, - NextPageToken: nextToken, - }, nil -} - -func (s *Server) S3GetBucketMetadata(ctx context.Context, req *runtimev1.S3GetBucketMetadataRequest) (*runtimev1.S3GetBucketMetadataResponse, error) { - s3Conn, release, err := s.getS3Conn(ctx, req.Connector, req.InstanceId) - if err != nil { - return nil, err - } - defer release() - - region, err := s3Conn.GetBucketMetadata(ctx, req) - if err != nil { - return nil, err - } - - return &runtimev1.S3GetBucketMetadataResponse{ - Region: region, - }, nil -} - -func (s *Server) S3GetCredentialsInfo(ctx context.Context, req *runtimev1.S3GetCredentialsInfoRequest) (*runtimev1.S3GetCredentialsInfoResponse, error) { - s3Conn, release, err := s.getS3Conn(ctx, req.Connector, req.InstanceId) - if err != nil { - return nil, err - } - defer release() - provider, exist, err := s3Conn.GetCredentialsInfo(ctx) - if err != nil { - return nil, err - } - - return &runtimev1.S3GetCredentialsInfoResponse{ - Exist: exist, - Provider: provider, - }, nil -} - -func (s *Server) GCSListBuckets(ctx context.Context, req *runtimev1.GCSListBucketsRequest) (*runtimev1.GCSListBucketsResponse, error) { - gcsConn, release, err := s.getGCSConn(ctx, req.Connector, req.InstanceId) - if err != nil { - return nil, err - } - defer release() - - buckets, next, err := gcsConn.ListBuckets(ctx, req) - if err != nil { - return nil, err - } - - return &runtimev1.GCSListBucketsResponse{ - Buckets: buckets, - NextPageToken: next, - }, nil -} - -func (s *Server) GCSListObjects(ctx context.Context, req *runtimev1.GCSListObjectsRequest) (*runtimev1.GCSListObjectsResponse, error) { - gcsConn, release, err := s.getGCSConn(ctx, req.Connector, req.InstanceId) - if err != nil { - return nil, err - } - defer release() + for _, r := range connector.Resources { + c.UsedBy = append(c.UsedBy, runtime.ResourceNameFromCompiler(r.Name)) + } - objects, nextToken, err := gcsConn.ListObjects(ctx, req) - if err != nil { - return nil, err + res[connector.Name] = c } - return &runtimev1.GCSListObjectsResponse{ - Objects: objects, - NextPageToken: nextToken, + return &runtimev1.AnalyzeConnectorsResponse{ + Connectors: maps.Values(res), }, nil } -func (s *Server) GCSGetCredentialsInfo(ctx context.Context, req *runtimev1.GCSGetCredentialsInfoRequest) (*runtimev1.GCSGetCredentialsInfoResponse, error) { - gcsConn, release, err := s.getGCSConn(ctx, req.Connector, req.InstanceId) - if err != nil { - return nil, err - } - defer release() - - projectID, exist, err := gcsConn.GetCredentialsInfo(ctx) - if err != nil { - return nil, err +func (s *Server) ListNotifierConnectors(ctx context.Context, req *runtimev1.ListNotifierConnectorsRequest) (*runtimev1.ListNotifierConnectorsResponse, error) { + if !auth.GetClaims(ctx).CanInstance(req.InstanceId, auth.ReadObjects) { + return nil, ErrForbidden } - return &runtimev1.GCSGetCredentialsInfoResponse{ - ProjectId: projectID, - Exist: exist, - }, nil -} - -func (s *Server) OLAPListTables(ctx context.Context, req *runtimev1.OLAPListTablesRequest) (*runtimev1.OLAPListTablesResponse, error) { - olap, release, err := s.runtime.OLAP(ctx, req.InstanceId, req.Connector) + inst, err := s.runtime.Instance(ctx, req.InstanceId) if err != nil { return nil, err } - defer release() - tables, err := olap.InformationSchema().All(ctx) - if err != nil { - return nil, err - } + res := make(map[string]*runtimev1.Connector) - res := make([]*runtimev1.TableInfo, len(tables)) - for i, table := range tables { - res[i] = &runtimev1.TableInfo{ - Database: table.Database, - Name: table.Name, - HasUnsupportedDataTypes: len(table.UnsupportedCols) != 0, + for _, c := range inst.Connectors { + if driverIsNotifier(c.Type) { + res[c.Name] = &runtimev1.Connector{ + Type: c.Type, + Name: c.Name, + } } } - return &runtimev1.OLAPListTablesResponse{ - Tables: res, - }, nil -} -func (s *Server) OLAPGetTable(ctx context.Context, req *runtimev1.OLAPGetTableRequest) (*runtimev1.OLAPGetTableResponse, error) { - olap, release, err := s.runtime.OLAP(ctx, req.InstanceId, req.Connector) - if err != nil { - return nil, err - } - defer release() - - table, err := olap.InformationSchema().Lookup(ctx, req.Table) - if err != nil { - return nil, err + for _, c := range inst.ProjectConnectors { + if driverIsNotifier(c.Type) { + res[c.Name] = &runtimev1.Connector{ + Type: c.Type, + Name: c.Name, + } + } } - return &runtimev1.OLAPGetTableResponse{ - Schema: table.Schema, - UnsupportedColumns: table.UnsupportedCols, - View: table.View, + return &runtimev1.ListNotifierConnectorsResponse{ + Connectors: maps.Values(res), }, nil } -func (s *Server) BigQueryListDatasets(ctx context.Context, req *runtimev1.BigQueryListDatasetsRequest) (*runtimev1.BigQueryListDatasetsResponse, error) { - bq, release, err := s.getBigQueryConn(ctx, req.Connector, req.InstanceId) - if err != nil { - return nil, err +func driverSpecToPB(name string, spec drivers.Spec) *runtimev1.ConnectorDriver { + pb := &runtimev1.ConnectorDriver{ + Name: name, + ConfigProperties: nil, + SourceProperties: nil, + DisplayName: spec.DisplayName, + Description: spec.Description, + ImplementsRegistry: spec.ImplementsRegistry, + ImplementsCatalog: spec.ImplementsCatalog, + ImplementsRepo: spec.ImplementsRepo, + ImplementsAdmin: spec.ImplementsAdmin, + ImplementsAi: spec.ImplementsAI, + ImplementsSqlStore: spec.ImplementsSQLStore, + ImplementsOlap: spec.ImplementsOLAP, + ImplementsObjectStore: spec.ImplementsObjectStore, + ImplementsFileStore: spec.ImplementsFileStore, } - defer release() - names, nextToken, err := bq.ListDatasets(ctx, req) - if err != nil { - return nil, err + for _, prop := range spec.ConfigProperties { + pb.ConfigProperties = append(pb.ConfigProperties, driverPropertySpecToPB(prop)) } - return &runtimev1.BigQueryListDatasetsResponse{ - Names: names, - NextPageToken: nextToken, - }, nil -} - -func (s *Server) BigQueryListTables(ctx context.Context, req *runtimev1.BigQueryListTablesRequest) (*runtimev1.BigQueryListTablesResponse, error) { - bq, release, err := s.getBigQueryConn(ctx, req.Connector, req.InstanceId) - if err != nil { - return nil, err + for _, prop := range spec.SourceProperties { + pb.SourceProperties = append(pb.SourceProperties, driverPropertySpecToPB(prop)) } - defer release() - names, nextToken, err := bq.ListTables(ctx, req) - if err != nil { - return nil, err - } - - return &runtimev1.BigQueryListTablesResponse{ - Names: names, - NextPageToken: nextToken, - }, nil + return pb } -func (s *Server) getGCSConn(ctx context.Context, connector, instanceID string) (*gcs.Connection, func(), error) { - conn, release, err := s.runtime.AcquireHandle(ctx, instanceID, connector) - if err != nil { - return nil, nil, fmt.Errorf("can't open connection to gcs %w", err) +func driverPropertySpecToPB(spec *drivers.PropertySpec) *runtimev1.ConnectorDriver_Property { + var t runtimev1.ConnectorDriver_Property_Type + switch spec.Type { + case drivers.NumberPropertyType: + t = runtimev1.ConnectorDriver_Property_TYPE_NUMBER + case drivers.BooleanPropertyType: + t = runtimev1.ConnectorDriver_Property_TYPE_BOOLEAN + case drivers.StringPropertyType: + t = runtimev1.ConnectorDriver_Property_TYPE_STRING + case drivers.FilePropertyType: + t = runtimev1.ConnectorDriver_Property_TYPE_FILE + case drivers.InformationalPropertyType: + t = runtimev1.ConnectorDriver_Property_TYPE_INFORMATIONAL } - gcsConn, ok := conn.(*gcs.Connection) - if !ok { - panic("conn is not gcs connection") + return &runtimev1.ConnectorDriver_Property{ + Key: spec.Key, + Type: t, + Required: spec.Required, + DisplayName: spec.DisplayName, + Description: spec.Description, + DocsUrl: spec.DocsURL, + Hint: spec.Hint, + Default: spec.Default, + Placeholder: spec.Placeholder, + Secret: spec.Secret, } - return gcsConn, release, nil } -func (s *Server) getS3Conn(ctx context.Context, connector, instanceID string) (*s3.Connection, func(), error) { - conn, release, err := s.runtime.AcquireHandle(ctx, instanceID, connector) - if err != nil { - return nil, nil, fmt.Errorf("can't open connection to s3 %w", err) - } - - s3Conn, ok := conn.(*s3.Connection) +func driverIsNotifier(driver string) bool { + connector, ok := drivers.Connectors[driver] if !ok { - panic("conn is not s3 connection") - } - return s3Conn, release, nil -} - -func (s *Server) getBigQueryConn(ctx context.Context, connector, instanceID string) (*bigquery.Connection, func(), error) { - conn, release, err := s.runtime.AcquireHandle(ctx, instanceID, connector) - if err != nil { - return nil, nil, err + return false } - bq, ok := conn.(*bigquery.Connection) - if !ok { - panic("conn is not bigquery connection") - } - return bq, release, nil + return connector.Spec().ImplementsAdmin // TODO: Replace with ImplementsNotifier when this PR merges: https://github.com/rilldata/rill/pull/4371 } diff --git a/web-common/src/features/sources/modal/AddSourceModal.svelte b/web-common/src/features/sources/modal/AddSourceModal.svelte index 9f98b4567b00..03ce165ca68c 100644 --- a/web-common/src/features/sources/modal/AddSourceModal.svelte +++ b/web-common/src/features/sources/modal/AddSourceModal.svelte @@ -5,8 +5,8 @@ import MySQL from "@rilldata/web-common/components/icons/connectors/MySQL.svelte"; import { - createRuntimeServiceListConnectors, - V1ConnectorSpec, + createRuntimeServiceListConnectorDrivers, + V1ConnectorDriver, } from "@rilldata/web-common/runtime-client"; import { createEventDispatcher } from "svelte"; import AmazonS3 from "../../../components/icons/connectors/AmazonS3.svelte"; @@ -37,7 +37,7 @@ import { addSourceModal } from "./add-source-visibility"; export let step = 1; - export let selectedConnector: null | V1ConnectorSpec = null; + export let selectedConnector: null | V1ConnectorDriver = null; let requestConnector = false; @@ -79,7 +79,7 @@ clickhouse: ClickHouse, }; - const connectors = createRuntimeServiceListConnectors({ + const connectors = createRuntimeServiceListConnectorDrivers({ query: { // arrange connectors in the way we would like to display them select: (data) => { @@ -102,7 +102,7 @@ }, }); - function goToConnectorForm(connector: V1ConnectorSpec) { + function goToConnectorForm(connector: V1ConnectorDriver) { selectedConnector = connector; step = 2; } diff --git a/web-common/src/features/sources/modal/RemoteSourceForm.svelte b/web-common/src/features/sources/modal/RemoteSourceForm.svelte index 83f28a23e623..dcad782ea462 100644 --- a/web-common/src/features/sources/modal/RemoteSourceForm.svelte +++ b/web-common/src/features/sources/modal/RemoteSourceForm.svelte @@ -5,9 +5,9 @@ import Input from "@rilldata/web-common/components/forms/Input.svelte"; import SubmissionError from "@rilldata/web-common/components/forms/SubmissionError.svelte"; import { - ConnectorSpecPropertyType, + ConnectorDriverPropertyType, RpcStatus, - V1ConnectorSpec, + V1ConnectorDriver, } from "@rilldata/web-common/runtime-client"; import { useQueryClient } from "@tanstack/svelte-query"; import { createEventDispatcher } from "svelte"; @@ -18,7 +18,7 @@ import { submitRemoteSourceForm } from "./submitRemoteSourceForm"; import { getYupSchema, toYupFriendlyKey } from "./yupSchemas"; - export let connector: V1ConnectorSpec; + export let connector: V1ConnectorDriver; const queryClient = useQueryClient(); const dispatch = createEventDispatcher(); @@ -49,16 +49,16 @@ // Place the "Source name" field directly under the "Path" field, which is the first property for each connector (s3, gcs, https). const connectorProperties = [ - ...(connector.properties?.slice(0, 1) ?? []), + ...(connector.sourceProperties?.slice(0, 1) ?? []), { key: "sourceName", displayName: "Source name", description: "The name of the source", placeholder: "my_new_source", - type: ConnectorSpecPropertyType.TYPE_STRING, - nullable: false, + type: ConnectorDriverPropertyType.TYPE_STRING, + required: true, }, - ...(connector.properties?.slice(1) ?? []), + ...(connector.sourceProperties?.slice(1) ?? []), ]; function onStringInputChange(event: Event) { @@ -99,9 +99,9 @@ {#each connectorProperties as property} {@const label = - property.displayName + (property.nullable ? " (optional)" : "")} + property.displayName + (property.required ? "" : " (optional)")}
- {#if property.type === ConnectorSpecPropertyType.TYPE_STRING && property.key !== undefined} + {#if property.type === ConnectorDriverPropertyType.TYPE_STRING && property.key !== undefined} - {:else if property.type === ConnectorSpecPropertyType.TYPE_BOOLEAN && property.key !== undefined} + {:else if property.type === ConnectorDriverPropertyType.TYPE_BOOLEAN && property.key !== undefined} - {:else if property.type === ConnectorSpecPropertyType.TYPE_INFORMATIONAL} + {:else if property.type === ConnectorDriverPropertyType.TYPE_INFORMATIONAL} {/if}
diff --git a/web-common/src/features/sources/modal/yupSchemas.ts b/web-common/src/features/sources/modal/yupSchemas.ts index 361b846596f8..c511433de05a 100644 --- a/web-common/src/features/sources/modal/yupSchemas.ts +++ b/web-common/src/features/sources/modal/yupSchemas.ts @@ -1,11 +1,11 @@ -import type { V1ConnectorSpec } from "@rilldata/web-common/runtime-client"; +import type { V1ConnectorDriver } from "@rilldata/web-common/runtime-client"; import * as yup from "yup"; import { INVALID_NAME_MESSAGE, VALID_NAME_PATTERN, } from "../../entity-management/name-utils"; -export function getYupSchema(connector: V1ConnectorSpec) { +export function getYupSchema(connector: V1ConnectorDriver) { switch (connector.name) { case "s3": return yup.object().shape({ diff --git a/web-common/src/features/sources/sourceUtils.ts b/web-common/src/features/sources/sourceUtils.ts index 954e9b89108c..c943dd0c23f3 100644 --- a/web-common/src/features/sources/sourceUtils.ts +++ b/web-common/src/features/sources/sourceUtils.ts @@ -1,5 +1,5 @@ import type { - V1ConnectorSpec, + V1ConnectorDriver, V1ReconcileError, } from "@rilldata/web-common/runtime-client"; import { getFilePathFromNameAndType } from "../entity-management/entity-mappers"; @@ -77,7 +77,7 @@ function extensionContainsParts( return false; } -export function inferSourceName(connector: V1ConnectorSpec, path: string) { +export function inferSourceName(connector: V1ConnectorDriver, path: string) { if ( !path || path.endsWith("/") || diff --git a/web-common/src/proto/gen/rill/runtime/v1/api_pb.ts b/web-common/src/proto/gen/rill/runtime/v1/api_pb.ts index 70ffb89a7bec..46eebd23db47 100644 --- a/web-common/src/proto/gen/rill/runtime/v1/api_pb.ts +++ b/web-common/src/proto/gen/rill/runtime/v1/api_pb.ts @@ -2667,6 +2667,621 @@ export class CreateTriggerResponse extends Message { } } +/** + * ConnectorDriver represents a connector driver available in the runtime. + * + * @generated from message rill.runtime.v1.ConnectorDriver + */ +export class ConnectorDriver extends Message { + /** + * Name is the name of the connector + * + * @generated from field: string name = 1; + */ + name = ""; + + /** + * Properties for configuring the connector + * + * @generated from field: repeated rill.runtime.v1.ConnectorDriver.Property config_properties = 2; + */ + configProperties: ConnectorDriver_Property[] = []; + + /** + * Properties that can be provided to the connector when using it as a source + * + * @generated from field: repeated rill.runtime.v1.ConnectorDriver.Property source_properties = 3; + */ + sourceProperties: ConnectorDriver_Property[] = []; + + /** + * Pretty display name for use in UIs + * + * @generated from field: string display_name = 4; + */ + displayName = ""; + + /** + * Human readable description of the connector + * + * @generated from field: string description = 5; + */ + description = ""; + + /** + * Capabilities supported by the connector + * + * @generated from field: bool implements_registry = 10; + */ + implementsRegistry = false; + + /** + * @generated from field: bool implements_catalog = 11; + */ + implementsCatalog = false; + + /** + * @generated from field: bool implements_repo = 12; + */ + implementsRepo = false; + + /** + * @generated from field: bool implements_admin = 13; + */ + implementsAdmin = false; + + /** + * @generated from field: bool implements_ai = 14; + */ + implementsAi = false; + + /** + * @generated from field: bool implements_sql_store = 15; + */ + implementsSqlStore = false; + + /** + * @generated from field: bool implements_olap = 16; + */ + implementsOlap = false; + + /** + * @generated from field: bool implements_object_store = 17; + */ + implementsObjectStore = false; + + /** + * @generated from field: bool implements_file_store = 18; + */ + implementsFileStore = false; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "rill.runtime.v1.ConnectorDriver"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "config_properties", kind: "message", T: ConnectorDriver_Property, repeated: true }, + { no: 3, name: "source_properties", kind: "message", T: ConnectorDriver_Property, repeated: true }, + { no: 4, name: "display_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 5, name: "description", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 10, name: "implements_registry", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 11, name: "implements_catalog", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 12, name: "implements_repo", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 13, name: "implements_admin", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 14, name: "implements_ai", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 15, name: "implements_sql_store", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 16, name: "implements_olap", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 17, name: "implements_object_store", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 18, name: "implements_file_store", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): ConnectorDriver { + return new ConnectorDriver().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): ConnectorDriver { + return new ConnectorDriver().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): ConnectorDriver { + return new ConnectorDriver().fromJsonString(jsonString, options); + } + + static equals(a: ConnectorDriver | PlainMessage | undefined, b: ConnectorDriver | PlainMessage | undefined): boolean { + return proto3.util.equals(ConnectorDriver, a, b); + } +} + +/** + * Property represents the spec of one of the driver's config properties + * + * @generated from message rill.runtime.v1.ConnectorDriver.Property + */ +export class ConnectorDriver_Property extends Message { + /** + * The property key + * + * @generated from field: string key = 1; + */ + key = ""; + + /** + * The type expected for this property + * + * @generated from field: rill.runtime.v1.ConnectorDriver.Property.Type type = 2; + */ + type = ConnectorDriver_Property_Type.UNSPECIFIED; + + /** + * Required is true if the field must be set + * + * @generated from field: bool required = 3; + */ + required = false; + + /** + * Pretty name for the property + * + * @generated from field: string display_name = 4; + */ + displayName = ""; + + /** + * Human readable description of the field + * + * @generated from field: string description = 5; + */ + description = ""; + + /** + * Link to documentation for this property + * + * @generated from field: string docs_url = 6; + */ + docsUrl = ""; + + /** + * Additional textual explanation for use in UIs + * + * @generated from field: string hint = 7; + */ + hint = ""; + + /** + * Default value for the property + * + * @generated from field: string default = 8; + */ + default = ""; + + /** + * Placeholder value for use in UIs + * + * @generated from field: string placeholder = 9; + */ + placeholder = ""; + + /** + * If true, the property is a secret and should not be displayed in UIs + * + * @generated from field: bool secret = 10; + */ + secret = false; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "rill.runtime.v1.ConnectorDriver.Property"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "key", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "type", kind: "enum", T: proto3.getEnumType(ConnectorDriver_Property_Type) }, + { no: 3, name: "required", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 4, name: "display_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 5, name: "description", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 6, name: "docs_url", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 7, name: "hint", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 8, name: "default", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 9, name: "placeholder", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 10, name: "secret", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): ConnectorDriver_Property { + return new ConnectorDriver_Property().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): ConnectorDriver_Property { + return new ConnectorDriver_Property().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): ConnectorDriver_Property { + return new ConnectorDriver_Property().fromJsonString(jsonString, options); + } + + static equals(a: ConnectorDriver_Property | PlainMessage | undefined, b: ConnectorDriver_Property | PlainMessage | undefined): boolean { + return proto3.util.equals(ConnectorDriver_Property, a, b); + } +} + +/** + * Type of the property + * + * @generated from enum rill.runtime.v1.ConnectorDriver.Property.Type + */ +export enum ConnectorDriver_Property_Type { + /** + * @generated from enum value: TYPE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * @generated from enum value: TYPE_NUMBER = 1; + */ + NUMBER = 1, + + /** + * @generated from enum value: TYPE_BOOLEAN = 2; + */ + BOOLEAN = 2, + + /** + * @generated from enum value: TYPE_STRING = 3; + */ + STRING = 3, + + /** + * @generated from enum value: TYPE_FILE = 4; + */ + FILE = 4, + + /** + * @generated from enum value: TYPE_INFORMATIONAL = 5; + */ + INFORMATIONAL = 5, +} +// Retrieve enum metadata with: proto3.getEnumType(ConnectorDriver_Property_Type) +proto3.util.setEnumType(ConnectorDriver_Property_Type, "rill.runtime.v1.ConnectorDriver.Property.Type", [ + { no: 0, name: "TYPE_UNSPECIFIED" }, + { no: 1, name: "TYPE_NUMBER" }, + { no: 2, name: "TYPE_BOOLEAN" }, + { no: 3, name: "TYPE_STRING" }, + { no: 4, name: "TYPE_FILE" }, + { no: 5, name: "TYPE_INFORMATIONAL" }, +]); + +/** + * AnalyzedConnector contains information about a connector that is referenced in the project files. + * + * @generated from message rill.runtime.v1.AnalyzedConnector + */ +export class AnalyzedConnector extends Message { + /** + * Connector name + * + * @generated from field: string name = 1; + */ + name = ""; + + /** + * Connector driver metadata + * + * @generated from field: rill.runtime.v1.ConnectorDriver driver = 2; + */ + driver?: ConnectorDriver; + + /** + * Combined config properties for the connector + * + * @generated from field: map config = 3; + */ + config: { [key: string]: string } = {}; + + /** + * Config properties preset by the runtime or when the instance was created + * + * @generated from field: map preset_config = 4; + */ + presetConfig: { [key: string]: string } = {}; + + /** + * Config properties set in project YAML files + * + * @generated from field: map project_config = 5; + */ + projectConfig: { [key: string]: string } = {}; + + /** + * Config properties set as dynamic variables + * + * @generated from field: map env_config = 6; + */ + envConfig: { [key: string]: string } = {}; + + /** + * True if the connector can be accessed without credentials + * + * @generated from field: bool has_anonymous_access = 7; + */ + hasAnonymousAccess = false; + + /** + * List of resources that appear to use the connector + * + * @generated from field: repeated rill.runtime.v1.ResourceName used_by = 8; + */ + usedBy: ResourceName[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "rill.runtime.v1.AnalyzedConnector"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "driver", kind: "message", T: ConnectorDriver }, + { no: 3, name: "config", kind: "map", K: 9 /* ScalarType.STRING */, V: {kind: "scalar", T: 9 /* ScalarType.STRING */} }, + { no: 4, name: "preset_config", kind: "map", K: 9 /* ScalarType.STRING */, V: {kind: "scalar", T: 9 /* ScalarType.STRING */} }, + { no: 5, name: "project_config", kind: "map", K: 9 /* ScalarType.STRING */, V: {kind: "scalar", T: 9 /* ScalarType.STRING */} }, + { no: 6, name: "env_config", kind: "map", K: 9 /* ScalarType.STRING */, V: {kind: "scalar", T: 9 /* ScalarType.STRING */} }, + { no: 7, name: "has_anonymous_access", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 8, name: "used_by", kind: "message", T: ResourceName, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): AnalyzedConnector { + return new AnalyzedConnector().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): AnalyzedConnector { + return new AnalyzedConnector().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): AnalyzedConnector { + return new AnalyzedConnector().fromJsonString(jsonString, options); + } + + static equals(a: AnalyzedConnector | PlainMessage | undefined, b: AnalyzedConnector | PlainMessage | undefined): boolean { + return proto3.util.equals(AnalyzedConnector, a, b); + } +} + +/** + * Request message for RuntimeService.ListConnectorDrivers + * + * @generated from message rill.runtime.v1.ListConnectorDriversRequest + */ +export class ListConnectorDriversRequest extends Message { + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "rill.runtime.v1.ListConnectorDriversRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): ListConnectorDriversRequest { + return new ListConnectorDriversRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): ListConnectorDriversRequest { + return new ListConnectorDriversRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): ListConnectorDriversRequest { + return new ListConnectorDriversRequest().fromJsonString(jsonString, options); + } + + static equals(a: ListConnectorDriversRequest | PlainMessage | undefined, b: ListConnectorDriversRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(ListConnectorDriversRequest, a, b); + } +} + +/** + * Response message for RuntimeService.ListConnectorDrivers + * + * @generated from message rill.runtime.v1.ListConnectorDriversResponse + */ +export class ListConnectorDriversResponse extends Message { + /** + * @generated from field: repeated rill.runtime.v1.ConnectorDriver connectors = 1; + */ + connectors: ConnectorDriver[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "rill.runtime.v1.ListConnectorDriversResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "connectors", kind: "message", T: ConnectorDriver, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): ListConnectorDriversResponse { + return new ListConnectorDriversResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): ListConnectorDriversResponse { + return new ListConnectorDriversResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): ListConnectorDriversResponse { + return new ListConnectorDriversResponse().fromJsonString(jsonString, options); + } + + static equals(a: ListConnectorDriversResponse | PlainMessage | undefined, b: ListConnectorDriversResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(ListConnectorDriversResponse, a, b); + } +} + +/** + * Request message for RuntimeService.AnalyzeConnectors + * + * @generated from message rill.runtime.v1.AnalyzeConnectorsRequest + */ +export class AnalyzeConnectorsRequest extends Message { + /** + * @generated from field: string instance_id = 1; + */ + instanceId = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "rill.runtime.v1.AnalyzeConnectorsRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "instance_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): AnalyzeConnectorsRequest { + return new AnalyzeConnectorsRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): AnalyzeConnectorsRequest { + return new AnalyzeConnectorsRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): AnalyzeConnectorsRequest { + return new AnalyzeConnectorsRequest().fromJsonString(jsonString, options); + } + + static equals(a: AnalyzeConnectorsRequest | PlainMessage | undefined, b: AnalyzeConnectorsRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(AnalyzeConnectorsRequest, a, b); + } +} + +/** + * Response message for RuntimeService.AnalyzeConnectors + * + * @generated from message rill.runtime.v1.AnalyzeConnectorsResponse + */ +export class AnalyzeConnectorsResponse extends Message { + /** + * @generated from field: repeated rill.runtime.v1.AnalyzedConnector connectors = 1; + */ + connectors: AnalyzedConnector[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "rill.runtime.v1.AnalyzeConnectorsResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "connectors", kind: "message", T: AnalyzedConnector, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): AnalyzeConnectorsResponse { + return new AnalyzeConnectorsResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): AnalyzeConnectorsResponse { + return new AnalyzeConnectorsResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): AnalyzeConnectorsResponse { + return new AnalyzeConnectorsResponse().fromJsonString(jsonString, options); + } + + static equals(a: AnalyzeConnectorsResponse | PlainMessage | undefined, b: AnalyzeConnectorsResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(AnalyzeConnectorsResponse, a, b); + } +} + +/** + * Request message for RuntimeService.ListNotifierConnectors + * + * @generated from message rill.runtime.v1.ListNotifierConnectorsRequest + */ +export class ListNotifierConnectorsRequest extends Message { + /** + * @generated from field: string instance_id = 1; + */ + instanceId = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "rill.runtime.v1.ListNotifierConnectorsRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "instance_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): ListNotifierConnectorsRequest { + return new ListNotifierConnectorsRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): ListNotifierConnectorsRequest { + return new ListNotifierConnectorsRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): ListNotifierConnectorsRequest { + return new ListNotifierConnectorsRequest().fromJsonString(jsonString, options); + } + + static equals(a: ListNotifierConnectorsRequest | PlainMessage | undefined, b: ListNotifierConnectorsRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(ListNotifierConnectorsRequest, a, b); + } +} + +/** + * Response message for RuntimeService.ListNotifierConnectors + * + * @generated from message rill.runtime.v1.ListNotifierConnectorsResponse + */ +export class ListNotifierConnectorsResponse extends Message { + /** + * Note: In this list, the Connector.config property will always be empty. + * + * @generated from field: repeated rill.runtime.v1.Connector connectors = 1; + */ + connectors: Connector[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "rill.runtime.v1.ListNotifierConnectorsResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "connectors", kind: "message", T: Connector, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): ListNotifierConnectorsResponse { + return new ListNotifierConnectorsResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): ListNotifierConnectorsResponse { + return new ListNotifierConnectorsResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): ListNotifierConnectorsResponse { + return new ListNotifierConnectorsResponse().fromJsonString(jsonString, options); + } + + static equals(a: ListNotifierConnectorsResponse | PlainMessage | undefined, b: ListNotifierConnectorsResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(ListNotifierConnectorsResponse, a, b); + } +} + /** * CatalogEntry contains information about an object in the catalog * @@ -3948,281 +4563,6 @@ export class RefreshAndReconcileResponse extends Message { - /** - * Name is the name of the connector (e.g. "CREATE SOURCE foo WITH connector = 'name'") - * - * @generated from field: string name = 1; - */ - name = ""; - - /** - * Pretty display name for use in UIs - * - * @generated from field: string display_name = 2; - */ - displayName = ""; - - /** - * Human readable description of the connector - * - * @generated from field: string description = 3; - */ - description = ""; - - /** - * Properties accepted by the connector - * - * @generated from field: repeated rill.runtime.v1.ConnectorSpec.Property properties = 4; - */ - properties: ConnectorSpec_Property[] = []; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "rill.runtime.v1.ConnectorSpec"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "display_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 3, name: "description", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 4, name: "properties", kind: "message", T: ConnectorSpec_Property, repeated: true }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ConnectorSpec { - return new ConnectorSpec().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ConnectorSpec { - return new ConnectorSpec().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ConnectorSpec { - return new ConnectorSpec().fromJsonString(jsonString, options); - } - - static equals(a: ConnectorSpec | PlainMessage | undefined, b: ConnectorSpec | PlainMessage | undefined): boolean { - return proto3.util.equals(ConnectorSpec, a, b); - } -} - -/** - * Property represents one of the connector's config properties - * - * @generated from message rill.runtime.v1.ConnectorSpec.Property - */ -export class ConnectorSpec_Property extends Message { - /** - * The property key - * - * @generated from field: string key = 1; - */ - key = ""; - - /** - * Pretty name for the property - * - * @generated from field: string display_name = 2; - */ - displayName = ""; - - /** - * Human readable description of the field - * - * @generated from field: string description = 3; - */ - description = ""; - - /** - * Placeholder value for use in UIs - * - * @generated from field: string placeholder = 4; - */ - placeholder = ""; - - /** - * The type expected for this property - * - * @generated from field: rill.runtime.v1.ConnectorSpec.Property.Type type = 5; - */ - type = ConnectorSpec_Property_Type.UNSPECIFIED; - - /** - * Nullable is true if the field is optional - * - * @generated from field: bool nullable = 6; - */ - nullable = false; - - /** - * Additional textual explanation for use in UIs - * - * @generated from field: string hint = 7; - */ - hint = ""; - - /** - * Link to documentation for this property - * - * @generated from field: string href = 8; - */ - href = ""; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "rill.runtime.v1.ConnectorSpec.Property"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "key", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "display_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 3, name: "description", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 4, name: "placeholder", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 5, name: "type", kind: "enum", T: proto3.getEnumType(ConnectorSpec_Property_Type) }, - { no: 6, name: "nullable", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, - { no: 7, name: "hint", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 8, name: "href", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ConnectorSpec_Property { - return new ConnectorSpec_Property().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ConnectorSpec_Property { - return new ConnectorSpec_Property().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ConnectorSpec_Property { - return new ConnectorSpec_Property().fromJsonString(jsonString, options); - } - - static equals(a: ConnectorSpec_Property | PlainMessage | undefined, b: ConnectorSpec_Property | PlainMessage | undefined): boolean { - return proto3.util.equals(ConnectorSpec_Property, a, b); - } -} - -/** - * Type represents the field type - * - * @generated from enum rill.runtime.v1.ConnectorSpec.Property.Type - */ -export enum ConnectorSpec_Property_Type { - /** - * @generated from enum value: TYPE_UNSPECIFIED = 0; - */ - UNSPECIFIED = 0, - - /** - * @generated from enum value: TYPE_STRING = 1; - */ - STRING = 1, - - /** - * @generated from enum value: TYPE_NUMBER = 2; - */ - NUMBER = 2, - - /** - * @generated from enum value: TYPE_BOOLEAN = 3; - */ - BOOLEAN = 3, - - /** - * @generated from enum value: TYPE_INFORMATIONAL = 4; - */ - INFORMATIONAL = 4, -} -// Retrieve enum metadata with: proto3.getEnumType(ConnectorSpec_Property_Type) -proto3.util.setEnumType(ConnectorSpec_Property_Type, "rill.runtime.v1.ConnectorSpec.Property.Type", [ - { no: 0, name: "TYPE_UNSPECIFIED" }, - { no: 1, name: "TYPE_STRING" }, - { no: 2, name: "TYPE_NUMBER" }, - { no: 3, name: "TYPE_BOOLEAN" }, - { no: 4, name: "TYPE_INFORMATIONAL" }, -]); - -/** - * Request message for RuntimeService.ListConnectors - * - * @generated from message rill.runtime.v1.ListConnectorsRequest - */ -export class ListConnectorsRequest extends Message { - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "rill.runtime.v1.ListConnectorsRequest"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ListConnectorsRequest { - return new ListConnectorsRequest().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ListConnectorsRequest { - return new ListConnectorsRequest().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ListConnectorsRequest { - return new ListConnectorsRequest().fromJsonString(jsonString, options); - } - - static equals(a: ListConnectorsRequest | PlainMessage | undefined, b: ListConnectorsRequest | PlainMessage | undefined): boolean { - return proto3.util.equals(ListConnectorsRequest, a, b); - } -} - -/** - * Response message for RuntimeService.ListConnectors - * - * @generated from message rill.runtime.v1.ListConnectorsResponse - */ -export class ListConnectorsResponse extends Message { - /** - * @generated from field: repeated rill.runtime.v1.ConnectorSpec connectors = 1; - */ - connectors: ConnectorSpec[] = []; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "rill.runtime.v1.ListConnectorsResponse"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "connectors", kind: "message", T: ConnectorSpec, repeated: true }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ListConnectorsResponse { - return new ListConnectorsResponse().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ListConnectorsResponse { - return new ListConnectorsResponse().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ListConnectorsResponse { - return new ListConnectorsResponse().fromJsonString(jsonString, options); - } - - static equals(a: ListConnectorsResponse | PlainMessage | undefined, b: ListConnectorsResponse | PlainMessage | undefined): boolean { - return proto3.util.equals(ListConnectorsResponse, a, b); - } -} - /** * Request message for RuntimeService.IssueDevJWT * diff --git a/web-common/src/proto/gen/rill/runtime/v1/connectors_pb.ts b/web-common/src/proto/gen/rill/runtime/v1/connectors_pb.ts index 0a1e7cec5b16..06959710628f 100644 --- a/web-common/src/proto/gen/rill/runtime/v1/connectors_pb.ts +++ b/web-common/src/proto/gen/rill/runtime/v1/connectors_pb.ts @@ -1260,128 +1260,3 @@ export class BigQueryListTablesResponse extends Message { - /** - * @generated from field: string instance_id = 1; - */ - instanceId = ""; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "rill.runtime.v1.ScanConnectorsRequest"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "instance_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ScanConnectorsRequest { - return new ScanConnectorsRequest().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ScanConnectorsRequest { - return new ScanConnectorsRequest().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ScanConnectorsRequest { - return new ScanConnectorsRequest().fromJsonString(jsonString, options); - } - - static equals(a: ScanConnectorsRequest | PlainMessage | undefined, b: ScanConnectorsRequest | PlainMessage | undefined): boolean { - return proto3.util.equals(ScanConnectorsRequest, a, b); - } -} - -/** - * @generated from message rill.runtime.v1.ScanConnectorsResponse - */ -export class ScanConnectorsResponse extends Message { - /** - * @generated from field: repeated rill.runtime.v1.ScannedConnector connectors = 1; - */ - connectors: ScannedConnector[] = []; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "rill.runtime.v1.ScanConnectorsResponse"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "connectors", kind: "message", T: ScannedConnector, repeated: true }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ScanConnectorsResponse { - return new ScanConnectorsResponse().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ScanConnectorsResponse { - return new ScanConnectorsResponse().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ScanConnectorsResponse { - return new ScanConnectorsResponse().fromJsonString(jsonString, options); - } - - static equals(a: ScanConnectorsResponse | PlainMessage | undefined, b: ScanConnectorsResponse | PlainMessage | undefined): boolean { - return proto3.util.equals(ScanConnectorsResponse, a, b); - } -} - -/** - * @generated from message rill.runtime.v1.ScannedConnector - */ -export class ScannedConnector extends Message { - /** - * @generated from field: string name = 1; - */ - name = ""; - - /** - * @generated from field: string type = 2; - */ - type = ""; - - /** - * reports whether access is present without any credentials - * - * @generated from field: bool has_anonymous_access = 3; - */ - hasAnonymousAccess = false; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "rill.runtime.v1.ScannedConnector"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "type", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 3, name: "has_anonymous_access", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ScannedConnector { - return new ScannedConnector().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ScannedConnector { - return new ScannedConnector().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ScannedConnector { - return new ScannedConnector().fromJsonString(jsonString, options); - } - - static equals(a: ScannedConnector | PlainMessage | undefined, b: ScannedConnector | PlainMessage | undefined): boolean { - return proto3.util.equals(ScannedConnector, a, b); - } -} - diff --git a/web-common/src/runtime-client/gen/connector-service/connector-service.ts b/web-common/src/runtime-client/gen/connector-service/connector-service.ts index 8e1394f92a5f..f28ecf9bc841 100644 --- a/web-common/src/runtime-client/gen/connector-service/connector-service.ts +++ b/web-common/src/runtime-client/gen/connector-service/connector-service.ts @@ -19,8 +19,6 @@ import type { ConnectorServiceBigQueryListTablesParams, V1OLAPGetTableResponse, ConnectorServiceOLAPGetTableParams, - V1ScanConnectorsResponse, - ConnectorServiceScanConnectorsParams, V1GCSListObjectsResponse, ConnectorServiceGCSListObjectsParams, V1GCSListBucketsResponse, @@ -228,68 +226,6 @@ export const createConnectorServiceOLAPGetTable = < return query; }; -/** - * @summary ScanConnectors scans the artifacts for connectors and returns information about -the connectors referenced in the artifacts. The information includes name,type and -credentials for the connector. - */ -export const connectorServiceScanConnectors = ( - params?: ConnectorServiceScanConnectorsParams, - signal?: AbortSignal, -) => { - return httpClient({ - url: `/v1/connectors/scan`, - method: "get", - params, - signal, - }); -}; - -export const getConnectorServiceScanConnectorsQueryKey = ( - params?: ConnectorServiceScanConnectorsParams, -) => [`/v1/connectors/scan`, ...(params ? [params] : [])]; - -export type ConnectorServiceScanConnectorsQueryResult = NonNullable< - Awaited> ->; -export type ConnectorServiceScanConnectorsQueryError = ErrorType; - -export const createConnectorServiceScanConnectors = < - TData = Awaited>, - TError = ErrorType, ->( - params?: ConnectorServiceScanConnectorsParams, - options?: { - query?: CreateQueryOptions< - Awaited>, - TError, - TData - >; - }, -): CreateQueryResult & { queryKey: QueryKey } => { - const { query: queryOptions } = options ?? {}; - - const queryKey = - queryOptions?.queryKey ?? getConnectorServiceScanConnectorsQueryKey(params); - - const queryFn: QueryFunction< - Awaited> - > = ({ signal }) => connectorServiceScanConnectors(params, signal); - - const query = createQuery< - Awaited>, - TError, - TData - >({ queryKey, queryFn, ...queryOptions }) as CreateQueryResult< - TData, - TError - > & { queryKey: QueryKey }; - - query.queryKey = queryKey; - - return query; -}; - /** * @summary GCSListObjects lists objects for the given bucket. */ diff --git a/web-common/src/runtime-client/gen/index.schemas.ts b/web-common/src/runtime-client/gen/index.schemas.ts index 2319748b7594..2df6979d9afd 100644 --- a/web-common/src/runtime-client/gen/index.schemas.ts +++ b/web-common/src/runtime-client/gen/index.schemas.ts @@ -462,8 +462,6 @@ export type RuntimeServiceIssueDevJWTParams = { admin?: boolean; }; -export type ConnectorServiceScanConnectorsParams = { instanceId?: string }; - export type ConnectorServiceOLAPGetTableParams = { instanceId?: string; connector?: string; @@ -721,16 +719,6 @@ export interface V1Schedule { timeZone?: string; } -export interface V1ScannedConnector { - name?: string; - type?: string; - hasAnonymousAccess?: boolean; -} - -export interface V1ScanConnectorsResponse { - connectors?: V1ScannedConnector[]; -} - export interface V1S3Object { name?: string; modifiedOn?: string; @@ -791,22 +779,11 @@ export const V1ResourceEvent = { RESOURCE_EVENT_DELETE: "RESOURCE_EVENT_DELETE", } as const; -export interface V1Resource { - meta?: V1ResourceMeta; - projectParser?: V1ProjectParser; - source?: V1SourceV2; - model?: V1ModelV2; - metricsView?: V1MetricsViewV2; - migration?: V1Migration; - report?: V1Report; - alert?: V1Alert; - pullTrigger?: V1PullTrigger; - refreshTrigger?: V1RefreshTrigger; - bucketPlanner?: V1BucketPlanner; - theme?: V1Theme; - chart?: V1Chart; - dashboard?: V1Dashboard; - api?: V1API; +export interface V1ReportState { + nextRunOn?: string; + currentExecution?: V1ReportExecution; + executionHistory?: V1ReportExecution[]; + executionCount?: number; } export type V1ReportSpecAnnotations = { [key: string]: string }; @@ -832,18 +809,29 @@ export interface V1ReportExecution { finishedOn?: string; } -export interface V1ReportState { - nextRunOn?: string; - currentExecution?: V1ReportExecution; - executionHistory?: V1ReportExecution[]; - executionCount?: number; -} - export interface V1Report { spec?: V1ReportSpec; state?: V1ReportState; } +export interface V1Resource { + meta?: V1ResourceMeta; + projectParser?: V1ProjectParser; + source?: V1SourceV2; + model?: V1ModelV2; + metricsView?: V1MetricsViewV2; + migration?: V1Migration; + report?: V1Report; + alert?: V1Alert; + pullTrigger?: V1PullTrigger; + refreshTrigger?: V1RefreshTrigger; + bucketPlanner?: V1BucketPlanner; + theme?: V1Theme; + chart?: V1Chart; + dashboard?: V1Dashboard; + api?: V1API; +} + export interface V1RenameFileResponse { [key: string]: any; } @@ -1060,6 +1048,12 @@ export interface V1PullTrigger { state?: V1PullTriggerState; } +export interface V1ProjectParserState { + parseErrors?: V1ParseError[]; + currentCommitSha?: string; + watching?: boolean; +} + export interface V1ProjectParserSpec { [key: string]: any; } @@ -1087,12 +1081,6 @@ export interface V1ParseError { external?: boolean; } -export interface V1ProjectParserState { - parseErrors?: V1ParseError[]; - currentCommitSha?: string; - watching?: boolean; -} - export type V1Operation = (typeof V1Operation)[keyof typeof V1Operation]; // eslint-disable-next-line @typescript-eslint/no-redeclare @@ -1256,6 +1244,21 @@ export interface V1MetricsViewTimeSeriesResponse { data?: V1TimeSeriesValue[]; } +export interface V1MetricsViewTimeSeriesRequest { + instanceId?: string; + metricsViewName?: string; + measureNames?: string[]; + inlineMeasures?: V1InlineMeasure[]; + timeStart?: string; + timeEnd?: string; + timeGranularity?: V1TimeGrain; + where?: V1Expression; + having?: V1Expression; + timeZone?: string; + priority?: number; + filter?: V1MetricsViewFilter; +} + export interface V1MetricsViewTimeRangeResponse { timeRangeSummary?: V1TimeRangeSummary; } @@ -1321,21 +1324,6 @@ export interface V1MetricsViewFilter { exclude?: MetricsViewFilterCond[]; } -export interface V1MetricsViewTimeSeriesRequest { - instanceId?: string; - metricsViewName?: string; - measureNames?: string[]; - inlineMeasures?: V1InlineMeasure[]; - timeStart?: string; - timeEnd?: string; - timeGranularity?: V1TimeGrain; - where?: V1Expression; - having?: V1Expression; - timeZone?: string; - priority?: number; - filter?: V1MetricsViewFilter; -} - export interface V1MetricsViewRowsRequest { instanceId?: string; metricsViewName?: string; @@ -1415,6 +1403,25 @@ export interface V1MetricsViewComparisonMeasureAlias { alias?: string; } +export interface V1MetricsViewComparisonRequest { + instanceId?: string; + metricsViewName?: string; + dimension?: V1MetricsViewAggregationDimension; + measures?: V1MetricsViewAggregationMeasure[]; + comparisonMeasures?: string[]; + sort?: V1MetricsViewComparisonSort[]; + timeRange?: V1TimeRange; + comparisonTimeRange?: V1TimeRange; + where?: V1Expression; + having?: V1Expression; + aliases?: V1MetricsViewComparisonMeasureAlias[]; + limit?: string; + offset?: string; + priority?: number; + exact?: boolean; + filter?: V1MetricsViewFilter; +} + export interface V1MetricsViewColumn { name?: string; type?: string; @@ -1447,25 +1454,6 @@ export interface V1MetricsViewAggregationDimension { alias?: string; } -export interface V1MetricsViewComparisonRequest { - instanceId?: string; - metricsViewName?: string; - dimension?: V1MetricsViewAggregationDimension; - measures?: V1MetricsViewAggregationMeasure[]; - comparisonMeasures?: string[]; - sort?: V1MetricsViewComparisonSort[]; - timeRange?: V1TimeRange; - comparisonTimeRange?: V1TimeRange; - where?: V1Expression; - having?: V1Expression; - aliases?: V1MetricsViewComparisonMeasureAlias[]; - limit?: string; - offset?: string; - priority?: number; - exact?: boolean; - filter?: V1MetricsViewFilter; -} - export interface V1MetricsViewAggregationRequest { instanceId?: string; metricsView?: string; @@ -1530,6 +1518,11 @@ export interface V1ListResourcesResponse { resources?: V1Resource[]; } +export interface V1ListNotifierConnectorsResponse { + /** Note: In this list, the Connector.config property will always be empty. */ + connectors?: V1Connector[]; +} + export interface V1ListInstancesResponse { instances?: V1Instance[]; nextPageToken?: string; @@ -1543,8 +1536,8 @@ export interface V1ListExamplesResponse { examples?: V1Example[]; } -export interface V1ListConnectorsResponse { - connectors?: V1ConnectorSpec[]; +export interface V1ListConnectorDriversResponse { + connectors?: V1ConnectorDriver[]; } export interface V1ListCatalogEntriesResponse { @@ -1771,26 +1764,6 @@ export type V1CreateInstanceRequestAnnotations = { [key: string]: string }; export type V1CreateInstanceRequestVariables = { [key: string]: string }; -/** - * ConnectorSpec represents a connector available in the runtime. -It should not be confused with a source. - */ -export interface V1ConnectorSpec { - name?: string; - displayName?: string; - description?: string; - properties?: ConnectorSpecProperty[]; -} - -export type V1ConnectorConfig = { [key: string]: string }; - -export interface V1Connector { - /** Type of the connector. One of the infra driver supported. */ - type?: string; - name?: string; - config?: V1ConnectorConfig; -} - /** * Request message for RuntimeService.CreateInstance. See message Instance for field descriptions. @@ -1812,6 +1785,35 @@ export interface V1CreateInstanceRequest { modelMaterializeDelaySeconds?: number; } +/** + * ConnectorDriver represents a connector driver available in the runtime. + */ +export interface V1ConnectorDriver { + name?: string; + configProperties?: ConnectorDriverProperty[]; + sourceProperties?: ConnectorDriverProperty[]; + displayName?: string; + description?: string; + implementsRegistry?: boolean; + implementsCatalog?: boolean; + implementsRepo?: boolean; + implementsAdmin?: boolean; + implementsAi?: boolean; + implementsSqlStore?: boolean; + implementsOlap?: boolean; + implementsObjectStore?: boolean; + implementsFileStore?: boolean; +} + +export type V1ConnectorConfig = { [key: string]: string }; + +export interface V1Connector { + /** Type of the connector. One of the infra driver supported. */ + type?: string; + name?: string; + config?: V1ConnectorConfig; +} + export interface V1Condition { op?: V1Operation; exprs?: V1Expression[]; @@ -2007,10 +2009,6 @@ export interface V1BucketPlannerState { region?: string; } -export interface V1BucketPlannerSpec { - extractPolicy?: V1BucketExtractPolicy; -} - export interface V1BucketPlanner { spec?: V1BucketPlannerSpec; state?: V1BucketPlannerState; @@ -2023,6 +2021,10 @@ export interface V1BucketExtractPolicy { filesLimit?: string; } +export interface V1BucketPlannerSpec { + extractPolicy?: V1BucketExtractPolicy; +} + export interface V1BigQueryListTablesResponse { nextPageToken?: string; names?: string[]; @@ -2052,6 +2054,32 @@ export interface V1AssertionResult { errorMessage?: string; } +export type V1AnalyzedConnectorEnvConfig = { [key: string]: string }; + +export type V1AnalyzedConnectorProjectConfig = { [key: string]: string }; + +export type V1AnalyzedConnectorPresetConfig = { [key: string]: string }; + +export type V1AnalyzedConnectorConfig = { [key: string]: string }; + +/** + * AnalyzedConnector contains information about a connector that is referenced in the project files. + */ +export interface V1AnalyzedConnector { + name?: string; + driver?: V1ConnectorDriver; + config?: V1AnalyzedConnectorConfig; + presetConfig?: V1AnalyzedConnectorPresetConfig; + projectConfig?: V1AnalyzedConnectorProjectConfig; + envConfig?: V1AnalyzedConnectorEnvConfig; + hasAnonymousAccess?: boolean; + usedBy?: V1ResourceName[]; +} + +export interface V1AnalyzeConnectorsResponse { + connectors?: V1AnalyzedConnector[]; +} + export interface V1AlertState { specHash?: string; refsHash?: string; @@ -2289,27 +2317,30 @@ export interface MetricsViewDimension { column?: string; } -export type ConnectorSpecPropertyType = - (typeof ConnectorSpecPropertyType)[keyof typeof ConnectorSpecPropertyType]; +export type ConnectorDriverPropertyType = + (typeof ConnectorDriverPropertyType)[keyof typeof ConnectorDriverPropertyType]; // eslint-disable-next-line @typescript-eslint/no-redeclare -export const ConnectorSpecPropertyType = { +export const ConnectorDriverPropertyType = { TYPE_UNSPECIFIED: "TYPE_UNSPECIFIED", - TYPE_STRING: "TYPE_STRING", TYPE_NUMBER: "TYPE_NUMBER", TYPE_BOOLEAN: "TYPE_BOOLEAN", + TYPE_STRING: "TYPE_STRING", + TYPE_FILE: "TYPE_FILE", TYPE_INFORMATIONAL: "TYPE_INFORMATIONAL", } as const; -export interface ConnectorSpecProperty { +export interface ConnectorDriverProperty { key?: string; + type?: ConnectorDriverPropertyType; + required?: boolean; displayName?: string; description?: string; - placeholder?: string; - type?: ConnectorSpecPropertyType; - nullable?: boolean; + docsUrl?: string; hint?: string; - href?: string; + default?: string; + placeholder?: string; + secret?: boolean; } export interface ColumnTimeSeriesRequestBasicMeasure { diff --git a/web-common/src/runtime-client/gen/runtime-service/runtime-service.ts b/web-common/src/runtime-client/gen/runtime-service/runtime-service.ts index e714182c8cc0..feb68001f9c9 100644 --- a/web-common/src/runtime-client/gen/runtime-service/runtime-service.ts +++ b/web-common/src/runtime-client/gen/runtime-service/runtime-service.ts @@ -14,7 +14,7 @@ import type { QueryKey, } from "@tanstack/svelte-query"; import type { - V1ListConnectorsResponse, + V1ListConnectorDriversResponse, RpcStatus, V1DeleteFileAndReconcileResponse, V1DeleteFileAndReconcileRequest, @@ -34,6 +34,8 @@ import type { RuntimeServiceListCatalogEntriesParams, V1GetCatalogEntryResponse, V1TriggerRefreshResponse, + V1AnalyzeConnectorsResponse, + V1ListNotifierConnectorsResponse, V1ListFilesResponse, RuntimeServiceListFilesParams, V1GetFileResponse, @@ -84,32 +86,32 @@ type AwaitedInput = PromiseLike | T; type Awaited = O extends AwaitedInput ? T : never; /** - * @summary ListConnectors returns a description of all the connectors implemented in the runtime, -including their schema and validation rules + * @summary ListConnectorDrivers returns a description of all the connector drivers registed in the runtime, +including their configuration specs and the capabilities they support. */ -export const runtimeServiceListConnectors = (signal?: AbortSignal) => { - return httpClient({ +export const runtimeServiceListConnectorDrivers = (signal?: AbortSignal) => { + return httpClient({ url: `/v1/connectors/meta`, method: "get", signal, }); }; -export const getRuntimeServiceListConnectorsQueryKey = () => [ +export const getRuntimeServiceListConnectorDriversQueryKey = () => [ `/v1/connectors/meta`, ]; -export type RuntimeServiceListConnectorsQueryResult = NonNullable< - Awaited> +export type RuntimeServiceListConnectorDriversQueryResult = NonNullable< + Awaited> >; -export type RuntimeServiceListConnectorsQueryError = ErrorType; +export type RuntimeServiceListConnectorDriversQueryError = ErrorType; -export const createRuntimeServiceListConnectors = < - TData = Awaited>, +export const createRuntimeServiceListConnectorDrivers = < + TData = Awaited>, TError = ErrorType, >(options?: { query?: CreateQueryOptions< - Awaited>, + Awaited>, TError, TData >; @@ -117,14 +119,14 @@ export const createRuntimeServiceListConnectors = < const { query: queryOptions } = options ?? {}; const queryKey = - queryOptions?.queryKey ?? getRuntimeServiceListConnectorsQueryKey(); + queryOptions?.queryKey ?? getRuntimeServiceListConnectorDriversQueryKey(); const queryFn: QueryFunction< - Awaited> - > = ({ signal }) => runtimeServiceListConnectors(signal); + Awaited> + > = ({ signal }) => runtimeServiceListConnectorDrivers(signal); const query = createQuery< - Awaited>, + Awaited>, TError, TData >({ queryKey, queryFn, ...queryOptions }) as CreateQueryResult< @@ -750,6 +752,132 @@ export const createRuntimeServiceTriggerRefresh = < TContext >(mutationFn, mutationOptions); }; +/** + * @summary AnalyzeConnectors scans all the project files and returns information about all referenced connectors. + */ +export const runtimeServiceAnalyzeConnectors = ( + instanceId: string, + signal?: AbortSignal, +) => { + return httpClient({ + url: `/v1/instances/${instanceId}/connectors/analyze`, + method: "get", + signal, + }); +}; + +export const getRuntimeServiceAnalyzeConnectorsQueryKey = ( + instanceId: string, +) => [`/v1/instances/${instanceId}/connectors/analyze`]; + +export type RuntimeServiceAnalyzeConnectorsQueryResult = NonNullable< + Awaited> +>; +export type RuntimeServiceAnalyzeConnectorsQueryError = ErrorType; + +export const createRuntimeServiceAnalyzeConnectors = < + TData = Awaited>, + TError = ErrorType, +>( + instanceId: string, + options?: { + query?: CreateQueryOptions< + Awaited>, + TError, + TData + >; + }, +): CreateQueryResult & { queryKey: QueryKey } => { + const { query: queryOptions } = options ?? {}; + + const queryKey = + queryOptions?.queryKey ?? + getRuntimeServiceAnalyzeConnectorsQueryKey(instanceId); + + const queryFn: QueryFunction< + Awaited> + > = ({ signal }) => runtimeServiceAnalyzeConnectors(instanceId, signal); + + const query = createQuery< + Awaited>, + TError, + TData + >({ + queryKey, + queryFn, + enabled: !!instanceId, + ...queryOptions, + }) as CreateQueryResult & { queryKey: QueryKey }; + + query.queryKey = queryKey; + + return query; +}; + +/** + * @summary ListNotifierConnectors returns the names of all configured connectors that can be used as notifiers. +This API is much faster than AnalyzeConnectors and can be called without admin-level permissions. + */ +export const runtimeServiceListNotifierConnectors = ( + instanceId: string, + signal?: AbortSignal, +) => { + return httpClient({ + url: `/v1/instances/${instanceId}/connectors/notifiers`, + method: "get", + signal, + }); +}; + +export const getRuntimeServiceListNotifierConnectorsQueryKey = ( + instanceId: string, +) => [`/v1/instances/${instanceId}/connectors/notifiers`]; + +export type RuntimeServiceListNotifierConnectorsQueryResult = NonNullable< + Awaited> +>; +export type RuntimeServiceListNotifierConnectorsQueryError = + ErrorType; + +export const createRuntimeServiceListNotifierConnectors = < + TData = Awaited>, + TError = ErrorType, +>( + instanceId: string, + options?: { + query?: CreateQueryOptions< + Awaited>, + TError, + TData + >; + }, +): CreateQueryResult & { queryKey: QueryKey } => { + const { query: queryOptions } = options ?? {}; + + const queryKey = + queryOptions?.queryKey ?? + getRuntimeServiceListNotifierConnectorsQueryKey(instanceId); + + const queryFn: QueryFunction< + Awaited> + > = ({ signal }) => runtimeServiceListNotifierConnectors(instanceId, signal); + + const query = createQuery< + Awaited>, + TError, + TData + >({ + queryKey, + queryFn, + enabled: !!instanceId, + ...queryOptions, + }) as CreateQueryResult & { queryKey: QueryKey }; + + query.queryKey = queryKey; + + return query; +}; + /** * @summary ListFiles lists all the files matching a glob in a repo. The files are sorted by their full path.